@@ -28,6 +28,10 @@ import {
2828 RGB_ETC2_Format ,
2929 RGB_PVRTC_4BPPV1_Format ,
3030 RGB_S3TC_DXT1_Format ,
31+ SIGNED_RED_GREEN_RGTC2_Format ,
32+ SIGNED_RED_RGTC1_Format ,
33+ RED_GREEN_RGTC2_Format ,
34+ RED_RGTC1_Format ,
3135 RGBFormat ,
3236 RGFormat ,
3337 RedFormat ,
@@ -57,6 +61,8 @@ import {
5761 VK_FORMAT_BC1_RGB_UNORM_BLOCK ,
5862 VK_FORMAT_BC3_SRGB_BLOCK ,
5963 VK_FORMAT_BC3_UNORM_BLOCK ,
64+ VK_FORMAT_BC4_SNORM_BLOCK ,
65+ VK_FORMAT_BC4_UNORM_BLOCK ,
6066 VK_FORMAT_BC5_SNORM_BLOCK ,
6167 VK_FORMAT_BC5_UNORM_BLOCK ,
6268 VK_FORMAT_BC7_SRGB_BLOCK ,
@@ -930,42 +936,45 @@ const UNCOMPRESSED_FORMATS = new Set( [ RGBAFormat, RGBFormat, RGFormat, RedForm
930936const FORMAT_MAP = {
931937
932938 [ VK_FORMAT_R32G32B32A32_SFLOAT ] : RGBAFormat ,
933- [ VK_FORMAT_R16G16B16A16_SFLOAT ] : RGBAFormat ,
934- [ VK_FORMAT_R8G8B8A8_UNORM ] : RGBAFormat ,
935- [ VK_FORMAT_R8G8B8A8_SRGB ] : RGBAFormat ,
936-
937939 [ VK_FORMAT_R32G32_SFLOAT ] : RGFormat ,
938- [ VK_FORMAT_R16G16_SFLOAT ] : RGFormat ,
939- [ VK_FORMAT_R8G8_UNORM ] : RGFormat ,
940- [ VK_FORMAT_R8G8_SRGB ] : RGFormat ,
941-
942940 [ VK_FORMAT_R32_SFLOAT ] : RedFormat ,
941+
942+ [ VK_FORMAT_R16G16B16A16_SFLOAT ] : RGBAFormat ,
943+ [ VK_FORMAT_R16G16_SFLOAT ] : RGFormat ,
943944 [ VK_FORMAT_R16_SFLOAT ] : RedFormat ,
945+
946+ [ VK_FORMAT_R8G8B8A8_SRGB ] : RGBAFormat ,
947+ [ VK_FORMAT_R8G8B8A8_UNORM ] : RGBAFormat ,
948+ [ VK_FORMAT_R8G8_SRGB ] : RGFormat ,
949+ [ VK_FORMAT_R8G8_UNORM ] : RGFormat ,
944950 [ VK_FORMAT_R8_SRGB ] : RedFormat ,
945951 [ VK_FORMAT_R8_UNORM ] : RedFormat ,
946952
947953 [ VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 ] : RGBFormat ,
948954 [ VK_FORMAT_B10G11R11_UFLOAT_PACK32 ] : RGBFormat ,
949955
950- [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ] : RGB_ETC2_Format ,
951956 [ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ] : RGBA_ETC2_EAC_Format ,
957+ [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ] : RGB_ETC2_Format ,
952958
953959 [ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ] : RGBA_ASTC_4x4_Format ,
954960 [ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ] : RGBA_ASTC_4x4_Format ,
955961 [ VK_FORMAT_ASTC_4x4_UNORM_BLOCK ] : RGBA_ASTC_4x4_Format ,
956962 [ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ] : RGBA_ASTC_6x6_Format ,
957963 [ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ] : RGBA_ASTC_6x6_Format ,
958964
959- [ VK_FORMAT_BC1_RGBA_UNORM_BLOCK ] : RGBA_S3TC_DXT1_Format ,
960965 [ VK_FORMAT_BC1_RGBA_SRGB_BLOCK ] : RGBA_S3TC_DXT1_Format ,
961- [ VK_FORMAT_BC1_RGB_UNORM_BLOCK ] : RGB_S3TC_DXT1_Format ,
966+ [ VK_FORMAT_BC1_RGBA_UNORM_BLOCK ] : RGBA_S3TC_DXT1_Format ,
962967 [ VK_FORMAT_BC1_RGB_SRGB_BLOCK ] : RGB_S3TC_DXT1_Format ,
968+ [ VK_FORMAT_BC1_RGB_UNORM_BLOCK ] : RGB_S3TC_DXT1_Format ,
963969
964970 [ VK_FORMAT_BC3_SRGB_BLOCK ] : RGBA_S3TC_DXT3_Format ,
965971 [ VK_FORMAT_BC3_UNORM_BLOCK ] : RGBA_S3TC_DXT3_Format ,
966972
967- [ VK_FORMAT_BC5_SNORM_BLOCK ] : RGBA_S3TC_DXT5_Format ,
968- [ VK_FORMAT_BC5_UNORM_BLOCK ] : RGBA_S3TC_DXT5_Format ,
973+ [ VK_FORMAT_BC4_SNORM_BLOCK ] : SIGNED_RED_RGTC1_Format ,
974+ [ VK_FORMAT_BC4_UNORM_BLOCK ] : RED_RGTC1_Format ,
975+
976+ [ VK_FORMAT_BC5_SNORM_BLOCK ] : SIGNED_RED_GREEN_RGTC2_Format ,
977+ [ VK_FORMAT_BC5_UNORM_BLOCK ] : RED_GREEN_RGTC2_Format ,
969978
970979 [ VK_FORMAT_BC7_SRGB_BLOCK ] : RGBA_BPTC_Format ,
971980 [ VK_FORMAT_BC7_UNORM_BLOCK ] : RGBA_BPTC_Format ,
@@ -975,30 +984,49 @@ const FORMAT_MAP = {
975984const TYPE_MAP = {
976985
977986 [ VK_FORMAT_R32G32B32A32_SFLOAT ] : FloatType ,
978- [ VK_FORMAT_R16G16B16A16_SFLOAT ] : HalfFloatType ,
979- [ VK_FORMAT_R8G8B8A8_UNORM ] : UnsignedByteType ,
980- [ VK_FORMAT_R8G8B8A8_SRGB ] : UnsignedByteType ,
981-
982987 [ VK_FORMAT_R32G32_SFLOAT ] : FloatType ,
983- [ VK_FORMAT_R16G16_SFLOAT ] : HalfFloatType ,
984- [ VK_FORMAT_R8G8_UNORM ] : UnsignedByteType ,
985- [ VK_FORMAT_R8G8_SRGB ] : UnsignedByteType ,
986-
987988 [ VK_FORMAT_R32_SFLOAT ] : FloatType ,
989+
990+ [ VK_FORMAT_R16G16B16A16_SFLOAT ] : HalfFloatType ,
991+ [ VK_FORMAT_R16G16_SFLOAT ] : HalfFloatType ,
988992 [ VK_FORMAT_R16_SFLOAT ] : HalfFloatType ,
993+
994+ [ VK_FORMAT_R8G8B8A8_SRGB ] : UnsignedByteType ,
995+ [ VK_FORMAT_R8G8B8A8_UNORM ] : UnsignedByteType ,
996+ [ VK_FORMAT_R8G8_SRGB ] : UnsignedByteType ,
997+ [ VK_FORMAT_R8G8_UNORM ] : UnsignedByteType ,
989998 [ VK_FORMAT_R8_SRGB ] : UnsignedByteType ,
990999 [ VK_FORMAT_R8_UNORM ] : UnsignedByteType ,
9911000
9921001 [ VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 ] : UnsignedInt5999Type ,
9931002 [ VK_FORMAT_B10G11R11_UFLOAT_PACK32 ] : UnsignedInt101111Type ,
9941003
995- [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ] : UnsignedByteType ,
9961004 [ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ] : UnsignedByteType ,
1005+ [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ] : UnsignedByteType ,
9971006
9981007 [ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ] : HalfFloatType ,
1008+ [ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ] : UnsignedByteType ,
1009+ [ VK_FORMAT_ASTC_4x4_UNORM_BLOCK ] : UnsignedByteType ,
9991010 [ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ] : UnsignedByteType ,
10001011 [ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ] : UnsignedByteType ,
10011012
1013+ [ VK_FORMAT_BC1_RGBA_SRGB_BLOCK ] : UnsignedByteType ,
1014+ [ VK_FORMAT_BC1_RGBA_UNORM_BLOCK ] : UnsignedByteType ,
1015+ [ VK_FORMAT_BC1_RGB_SRGB_BLOCK ] : UnsignedByteType ,
1016+ [ VK_FORMAT_BC1_RGB_UNORM_BLOCK ] : UnsignedByteType ,
1017+
1018+ [ VK_FORMAT_BC3_SRGB_BLOCK ] : UnsignedByteType ,
1019+ [ VK_FORMAT_BC3_UNORM_BLOCK ] : UnsignedByteType ,
1020+
1021+ [ VK_FORMAT_BC4_SNORM_BLOCK ] : UnsignedByteType ,
1022+ [ VK_FORMAT_BC4_UNORM_BLOCK ] : UnsignedByteType ,
1023+
1024+ [ VK_FORMAT_BC5_SNORM_BLOCK ] : UnsignedByteType ,
1025+ [ VK_FORMAT_BC5_UNORM_BLOCK ] : UnsignedByteType ,
1026+
1027+ [ VK_FORMAT_BC7_SRGB_BLOCK ] : UnsignedByteType ,
1028+ [ VK_FORMAT_BC7_UNORM_BLOCK ] : UnsignedByteType ,
1029+
10021030} ;
10031031
10041032async function createRawTexture ( container ) {
@@ -1007,7 +1035,14 @@ async function createRawTexture( container ) {
10071035
10081036 if ( FORMAT_MAP [ vkFormat ] === undefined ) {
10091037
1010- throw new Error ( 'THREE.KTX2Loader: Unsupported vkFormat.' ) ;
1038+ throw new Error ( 'THREE.KTX2Loader: Unsupported vkFormat: ' + vkFormat ) ;
1039+
1040+ }
1041+
1042+ // TODO: Merge the TYPE_MAP warning into the thrown error above, after r190.
1043+ if ( TYPE_MAP [ vkFormat ] === undefined ) {
1044+
1045+ console . warn ( 'THREE.KTX2Loader: Missing ".type" for vkFormat: ' + vkFormat ) ;
10111046
10121047 }
10131048
0 commit comments