committed by
Rémi Verschelde
parent
14d7775217
commit
34ed66ec1a
@ -1275,15 +1275,21 @@ RID TextureStorage::texture_create_from_native_handle(RS::TextureType p_type, Im
|
||||
break;
|
||||
|
||||
case Image::FORMAT_ASTC_4x4:
|
||||
case Image::FORMAT_ASTC_4x4_HDR:
|
||||
format = RD::DATA_FORMAT_ASTC_4x4_UNORM_BLOCK;
|
||||
break;
|
||||
|
||||
case Image::FORMAT_ASTC_4x4_HDR:
|
||||
format = RD::DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK;
|
||||
break;
|
||||
|
||||
case Image::FORMAT_ASTC_8x8:
|
||||
case Image::FORMAT_ASTC_8x8_HDR:
|
||||
format = RD::DATA_FORMAT_ASTC_8x8_UNORM_BLOCK;
|
||||
break;
|
||||
|
||||
case Image::FORMAT_ASTC_8x8_HDR:
|
||||
format = RD::DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK;
|
||||
break;
|
||||
|
||||
default:
|
||||
// Arbitrary fallback.
|
||||
format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
|
||||
@ -2197,24 +2203,16 @@ Ref<Image> TextureStorage::_validate_texture_format(const Ref<Image> &p_image, T
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_ZERO;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_ONE;
|
||||
} break;
|
||||
case Image::FORMAT_ASTC_4x4:
|
||||
case Image::FORMAT_ASTC_4x4_HDR: {
|
||||
case Image::FORMAT_ASTC_4x4: {
|
||||
if (RD::get_singleton()->texture_is_format_supported_for_usage(RD::DATA_FORMAT_ASTC_4x4_UNORM_BLOCK, RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT)) {
|
||||
r_format.format = RD::DATA_FORMAT_ASTC_4x4_UNORM_BLOCK;
|
||||
if (p_image->get_format() == Image::FORMAT_ASTC_4x4) {
|
||||
r_format.format_srgb = RD::DATA_FORMAT_ASTC_4x4_SRGB_BLOCK;
|
||||
}
|
||||
r_format.format_srgb = RD::DATA_FORMAT_ASTC_4x4_SRGB_BLOCK;
|
||||
} else {
|
||||
//not supported, reconvert
|
||||
image->decompress();
|
||||
if (p_image->get_format() == Image::FORMAT_ASTC_4x4) {
|
||||
r_format.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
|
||||
r_format.format_srgb = RD::DATA_FORMAT_R8G8B8A8_SRGB;
|
||||
image->convert(Image::FORMAT_RGBA8);
|
||||
} else {
|
||||
r_format.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
|
||||
image->convert(Image::FORMAT_RGBAH);
|
||||
}
|
||||
r_format.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
|
||||
r_format.format_srgb = RD::DATA_FORMAT_R8G8B8A8_SRGB;
|
||||
image->convert(Image::FORMAT_RGBA8);
|
||||
}
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G;
|
||||
@ -2222,24 +2220,31 @@ Ref<Image> TextureStorage::_validate_texture_format(const Ref<Image> &p_image, T
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
|
||||
} break; // astc 4x4
|
||||
case Image::FORMAT_ASTC_8x8:
|
||||
case Image::FORMAT_ASTC_8x8_HDR: {
|
||||
if (RD::get_singleton()->texture_is_format_supported_for_usage(RD::DATA_FORMAT_ASTC_8x8_UNORM_BLOCK, RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT)) {
|
||||
r_format.format = RD::DATA_FORMAT_ASTC_8x8_UNORM_BLOCK;
|
||||
if (p_image->get_format() == Image::FORMAT_ASTC_8x8) {
|
||||
r_format.format_srgb = RD::DATA_FORMAT_ASTC_8x8_SRGB_BLOCK;
|
||||
}
|
||||
case Image::FORMAT_ASTC_4x4_HDR: {
|
||||
if (RD::get_singleton()->texture_is_format_supported_for_usage(RD::DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK, RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT)) {
|
||||
r_format.format = RD::DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK;
|
||||
} else {
|
||||
//not supported, reconvert
|
||||
image->decompress();
|
||||
if (p_image->get_format() == Image::FORMAT_ASTC_8x8) {
|
||||
r_format.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
|
||||
r_format.format_srgb = RD::DATA_FORMAT_R8G8B8A8_SRGB;
|
||||
image->convert(Image::FORMAT_RGBA8);
|
||||
} else {
|
||||
r_format.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
|
||||
image->convert(Image::FORMAT_RGBAH);
|
||||
}
|
||||
r_format.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
|
||||
image->convert(Image::FORMAT_RGBAH);
|
||||
}
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G;
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
|
||||
} break; // astc 4x4 HDR
|
||||
case Image::FORMAT_ASTC_8x8: {
|
||||
if (RD::get_singleton()->texture_is_format_supported_for_usage(RD::DATA_FORMAT_ASTC_8x8_UNORM_BLOCK, RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT)) {
|
||||
r_format.format = RD::DATA_FORMAT_ASTC_8x8_UNORM_BLOCK;
|
||||
r_format.format_srgb = RD::DATA_FORMAT_ASTC_8x8_SRGB_BLOCK;
|
||||
} else {
|
||||
//not supported, reconvert
|
||||
image->decompress();
|
||||
r_format.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
|
||||
r_format.format_srgb = RD::DATA_FORMAT_R8G8B8A8_SRGB;
|
||||
image->convert(Image::FORMAT_RGBA8);
|
||||
}
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G;
|
||||
@ -2247,6 +2252,21 @@ Ref<Image> TextureStorage::_validate_texture_format(const Ref<Image> &p_image, T
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
|
||||
} break; // astc 8x8
|
||||
case Image::FORMAT_ASTC_8x8_HDR: {
|
||||
if (RD::get_singleton()->texture_is_format_supported_for_usage(RD::DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK, RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT)) {
|
||||
r_format.format = RD::DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK;
|
||||
} else {
|
||||
//not supported, reconvert
|
||||
image->decompress();
|
||||
r_format.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
|
||||
image->convert(Image::FORMAT_RGBAH);
|
||||
}
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G;
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
|
||||
} break; // astc 8x8 HDR
|
||||
|
||||
default: {
|
||||
}
|
||||
@ -2589,7 +2609,7 @@ void TextureStorage::_texture_format_from_rd(RD::DataFormat p_rd_format, Texture
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
} break;
|
||||
case RD::DATA_FORMAT_ASTC_4x4_SRGB_BLOCK: {
|
||||
r_format.image_format = Image::FORMAT_ASTC_4x4_HDR;
|
||||
r_format.image_format = Image::FORMAT_ASTC_4x4;
|
||||
r_format.rd_format = RD::DATA_FORMAT_ASTC_4x4_UNORM_BLOCK;
|
||||
r_format.rd_format_srgb = RD::DATA_FORMAT_ASTC_4x4_SRGB_BLOCK;
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
@ -2597,6 +2617,14 @@ void TextureStorage::_texture_format_from_rd(RD::DataFormat p_rd_format, Texture
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
|
||||
} break;
|
||||
case RD::DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK: {
|
||||
r_format.image_format = Image::FORMAT_ASTC_4x4_HDR;
|
||||
r_format.rd_format = RD::DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK;
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G;
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
} break; // astc 4x4
|
||||
case RD::DATA_FORMAT_ASTC_8x8_UNORM_BLOCK: {
|
||||
// Q: Do we do as we do below, just create the sRGB variant?
|
||||
@ -2608,14 +2636,21 @@ void TextureStorage::_texture_format_from_rd(RD::DataFormat p_rd_format, Texture
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
} break;
|
||||
case RD::DATA_FORMAT_ASTC_8x8_SRGB_BLOCK: {
|
||||
r_format.image_format = Image::FORMAT_ASTC_8x8_HDR;
|
||||
r_format.image_format = Image::FORMAT_ASTC_8x8;
|
||||
r_format.rd_format = RD::DATA_FORMAT_ASTC_8x8_UNORM_BLOCK;
|
||||
r_format.rd_format_srgb = RD::DATA_FORMAT_ASTC_8x8_SRGB_BLOCK;
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G;
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
|
||||
} break;
|
||||
case RD::DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK: {
|
||||
r_format.image_format = Image::FORMAT_ASTC_8x8_HDR;
|
||||
r_format.rd_format = RD::DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK;
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G;
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
} break; // astc 8x8
|
||||
|
||||
default: {
|
||||
|
||||
@ -7680,6 +7680,20 @@ void RenderingDevice::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_G16_B16_R16_3PLANE_422_UNORM);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_G16_B16R16_2PLANE_422_UNORM);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_G16_B16_R16_3PLANE_444_UNORM);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_5x4_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_5x5_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_6x5_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_6x6_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_8x5_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_8x6_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_10x5_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_10x6_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_10x8_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_10x10_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_12x10_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_ASTC_12x12_SFLOAT_BLOCK);
|
||||
BIND_ENUM_CONSTANT(DATA_FORMAT_MAX);
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
|
||||
@ -253,6 +253,20 @@ const char *const RenderingDeviceCommons::FORMAT_NAMES[DATA_FORMAT_MAX] = {
|
||||
"G16_B16_R16_3Plane_422_Unorm",
|
||||
"G16_B16R16_2Plane_422_Unorm",
|
||||
"G16_B16_R16_3Plane_444_Unorm",
|
||||
"Astc_4X4_Sfloat_Block",
|
||||
"Astc_5X4_Sfloat_Block",
|
||||
"Astc_5X5_Sfloat_Block",
|
||||
"Astc_6X5_Sfloat_Block",
|
||||
"Astc_6X6_Sfloat_Block",
|
||||
"Astc_8X5_Sfloat_Block",
|
||||
"Astc_8X6_Sfloat_Block",
|
||||
"Astc_8X8_Sfloat_Block",
|
||||
"Astc_10X5_Sfloat_Block",
|
||||
"Astc_10X6_Sfloat_Block",
|
||||
"Astc_10X8_Sfloat_Block",
|
||||
"Astc_10X10_Sfloat_Block",
|
||||
"Astc_12X10_Sfloat_Block",
|
||||
"Astc_12X12_Sfloat_Block",
|
||||
};
|
||||
|
||||
/*****************/
|
||||
@ -477,6 +491,20 @@ uint32_t RenderingDeviceCommons::get_image_format_pixel_size(DataFormat p_format
|
||||
case DATA_FORMAT_ASTC_12x10_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x12_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x12_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x4_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x6_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x6_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x6_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x8_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x10_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x10_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x12_SFLOAT_BLOCK:
|
||||
return 1;
|
||||
case DATA_FORMAT_G8B8G8R8_422_UNORM:
|
||||
case DATA_FORMAT_B8G8R8G8_422_UNORM:
|
||||
@ -554,42 +582,56 @@ void RenderingDeviceCommons::get_compressed_image_format_block_dimensions(DataFo
|
||||
case DATA_FORMAT_EAC_R11G11_UNORM_BLOCK:
|
||||
case DATA_FORMAT_EAC_R11G11_SNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_4x4_UNORM_BLOCK: // Again, not sure about astc.
|
||||
case DATA_FORMAT_ASTC_4x4_SRGB_BLOCK: {
|
||||
case DATA_FORMAT_ASTC_4x4_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK: {
|
||||
r_w = 4;
|
||||
r_h = 4;
|
||||
} break;
|
||||
case DATA_FORMAT_ASTC_5x4_UNORM_BLOCK: // Unsupported
|
||||
case DATA_FORMAT_ASTC_5x4_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x4_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x5_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x5_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x5_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x5_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x6_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x6_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x6_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x5_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x5_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x6_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x6_SRGB_BLOCK: {
|
||||
case DATA_FORMAT_ASTC_8x6_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x6_SFLOAT_BLOCK: {
|
||||
r_w = 4;
|
||||
r_h = 4;
|
||||
} break;
|
||||
case DATA_FORMAT_ASTC_8x8_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x8_SRGB_BLOCK: {
|
||||
case DATA_FORMAT_ASTC_8x8_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK: {
|
||||
r_w = 8;
|
||||
r_h = 8;
|
||||
} break;
|
||||
case DATA_FORMAT_ASTC_10x5_UNORM_BLOCK: // Unsupported
|
||||
case DATA_FORMAT_ASTC_10x5_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x6_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x6_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x6_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x8_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x8_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x8_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x10_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x10_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x10_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x10_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x10_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x10_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x12_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x12_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x12_SFLOAT_BLOCK:
|
||||
r_w = 4;
|
||||
r_h = 4;
|
||||
return;
|
||||
@ -642,32 +684,46 @@ uint32_t RenderingDeviceCommons::get_compressed_image_format_block_byte_size(Dat
|
||||
return 16;
|
||||
case DATA_FORMAT_ASTC_4x4_UNORM_BLOCK: // Again, not sure about astc.
|
||||
case DATA_FORMAT_ASTC_4x4_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x4_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x4_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x4_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x5_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x5_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_5x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x5_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x5_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x6_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x6_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_6x6_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x5_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x5_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x6_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x6_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x6_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x8_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x8_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x5_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x5_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x5_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x6_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x6_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x6_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x8_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x8_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x8_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x10_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x10_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_10x10_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x10_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x10_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x10_SFLOAT_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x12_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x12_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_12x12_SFLOAT_BLOCK:
|
||||
return 16;
|
||||
default: {
|
||||
}
|
||||
@ -691,7 +747,8 @@ uint32_t RenderingDeviceCommons::get_compressed_image_format_pixel_rshift(DataFo
|
||||
case DATA_FORMAT_EAC_R11_SNORM_BLOCK:
|
||||
return 1;
|
||||
case DATA_FORMAT_ASTC_8x8_SRGB_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x8_UNORM_BLOCK: {
|
||||
case DATA_FORMAT_ASTC_8x8_UNORM_BLOCK:
|
||||
case DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK: {
|
||||
return 2;
|
||||
}
|
||||
default: {
|
||||
|
||||
@ -270,6 +270,20 @@ public:
|
||||
DATA_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
|
||||
DATA_FORMAT_G16_B16R16_2PLANE_422_UNORM,
|
||||
DATA_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
|
||||
DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_5x4_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_5x5_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_6x5_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_6x6_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_8x5_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_8x6_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_10x5_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_10x6_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_10x8_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_10x10_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_12x10_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_ASTC_12x12_SFLOAT_BLOCK, // HDR variant.
|
||||
DATA_FORMAT_MAX,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user