@zephyr3d/device 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/base_types.js +12 -13
  2. package/dist/base_types.js.map +1 -1
  3. package/dist/builder/ast.js +34 -48
  4. package/dist/builder/ast.js.map +1 -1
  5. package/dist/builder/base.js +6 -2
  6. package/dist/builder/base.js.map +1 -1
  7. package/dist/builder/builtinfunc.js +42 -6
  8. package/dist/builder/builtinfunc.js.map +1 -1
  9. package/dist/builder/constructors.js +2 -0
  10. package/dist/builder/constructors.js.map +1 -1
  11. package/dist/builder/errors.js +4 -4
  12. package/dist/builder/errors.js.map +1 -1
  13. package/dist/builder/misc.js +1 -1
  14. package/dist/builder/misc.js.map +1 -1
  15. package/dist/builder/programbuilder.js +18 -27
  16. package/dist/builder/programbuilder.js.map +1 -1
  17. package/dist/builder/reflection.js +1 -1
  18. package/dist/builder/reflection.js.map +1 -1
  19. package/dist/builder/types.js +7 -6
  20. package/dist/builder/types.js.map +1 -1
  21. package/dist/device.js +148 -39
  22. package/dist/device.js.map +1 -1
  23. package/dist/gpuobject.js +2 -1
  24. package/dist/gpuobject.js.map +1 -1
  25. package/dist/helpers/drawtext.js +29 -25
  26. package/dist/helpers/drawtext.js.map +1 -1
  27. package/dist/helpers/font.js.map +1 -1
  28. package/dist/helpers/glyphmanager.js +26 -8
  29. package/dist/helpers/glyphmanager.js.map +1 -1
  30. package/dist/helpers/textureatlas.js +7 -3
  31. package/dist/helpers/textureatlas.js.map +1 -1
  32. package/dist/index.d.ts +290 -266
  33. package/dist/pool.js +15 -6
  34. package/dist/pool.js.map +1 -1
  35. package/dist/timer.js +3 -2
  36. package/dist/timer.js.map +1 -1
  37. package/dist/uniformdata.js +1 -1
  38. package/dist/uniformdata.js.map +1 -1
  39. package/dist/vertexdata.js +2 -2
  40. package/dist/vertexdata.js.map +1 -1
  41. package/package.json +80 -80
@@ -1 +1 @@
1
- {"version":3,"file":"gpuobject.js","sources":["../src/gpuobject.ts"],"sourcesContent":["import type { VectorBase, CubeFace, TypedArray, IDisposable } from '@zephyr3d/base';\r\nimport type { ShaderKind, AbstractDevice } from './base_types';\r\nimport type { PBTypeInfo } from './builder/types';\r\nimport { PBArrayTypeInfo, PBPrimitiveTypeInfo, PBStructTypeInfo, PBPrimitiveType } from './builder/types';\r\nimport type {\r\n TextureType,\r\n CompareFunc,\r\n TextureAddressMode,\r\n TextureFilterMode,\r\n DataType,\r\n PrimitiveType,\r\n TextureFormat\r\n} from './base_types';\r\nimport type { VertexBufferInfo } from './vertexdata';\r\n\r\n/**\r\n * The types of image element that can be uploaded to textures\r\n * @public\r\n */\r\nexport type TextureImageElement = ImageBitmap | HTMLCanvasElement;\r\n\r\n/** @public */\r\nexport const MAX_VERTEX_ATTRIBUTES = 16;\r\n/** @public */\r\nexport const MAX_BINDING_GROUPS = 4;\r\n/** @public */\r\nexport const MAX_TEXCOORD_INDEX_COUNT = 8;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_POSITION = 0;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_NORMAL = 1;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_DIFFUSE = 2;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TANGENT = 3;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD0 = 4;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD1 = 5;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD2 = 6;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD3 = 7;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD4 = 8;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD5 = 9;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD6 = 10;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD7 = 11;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_BLEND_WEIGHT = 12;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_BLEND_INDICES = 13;\r\n\r\n/**\r\n * The vertex format types\r\n * @public\r\n */\r\nexport type VertexAttribFormat =\r\n | 'position_u8normx2'\r\n | 'position_u8normx4'\r\n | 'position_i8normx2'\r\n | 'position_i8normx4'\r\n | 'position_u16x2'\r\n | 'position_u16x4'\r\n | 'position_i16x2'\r\n | 'position_i16x4'\r\n | 'position_u16normx2'\r\n | 'position_u16normx4'\r\n | 'position_i16normx2'\r\n | 'position_i16normx4'\r\n | 'position_f16x2'\r\n | 'position_f16x4'\r\n | 'position_f32'\r\n | 'position_f32x2'\r\n | 'position_f32x3'\r\n | 'position_f32x4'\r\n | 'position_i32'\r\n | 'position_i32x2'\r\n | 'position_i32x3'\r\n | 'position_i32x4'\r\n | 'position_u32'\r\n | 'position_u32x2'\r\n | 'position_u32x3'\r\n | 'position_u32x4'\r\n | 'normal_f16x4'\r\n | 'normal_f32x3'\r\n | 'normal_f32x4'\r\n | 'diffuse_u8normx4'\r\n | 'diffuse_u16x4'\r\n | 'diffuse_u16normx4'\r\n | 'diffuse_f16x4'\r\n | 'diffuse_f32x3'\r\n | 'diffuse_f32x4'\r\n | 'diffuse_u32x3'\r\n | 'diffuse_u32x4'\r\n | 'tangent_f16x4'\r\n | 'tangent_f32x3'\r\n | 'tangent_f32x4'\r\n | 'tex0_u8normx2'\r\n | 'tex0_u8normx4'\r\n | 'tex0_i8normx2'\r\n | 'tex0_i8normx4'\r\n | 'tex0_u16x2'\r\n | 'tex0_u16x4'\r\n | 'tex0_i16x2'\r\n | 'tex0_i16x4'\r\n | 'tex0_u16normx2'\r\n | 'tex0_u16normx4'\r\n | 'tex0_i16normx2'\r\n | 'tex0_i16normx4'\r\n | 'tex0_f16x2'\r\n | 'tex0_f16x4'\r\n | 'tex0_f32'\r\n | 'tex0_f32x2'\r\n | 'tex0_f32x3'\r\n | 'tex0_f32x4'\r\n | 'tex0_i32'\r\n | 'tex0_i32x2'\r\n | 'tex0_i32x3'\r\n | 'tex0_i32x4'\r\n | 'tex0_u32'\r\n | 'tex0_u32x2'\r\n | 'tex0_u32x3'\r\n | 'tex0_u32x4'\r\n | 'tex1_u8normx2'\r\n | 'tex1_u8normx4'\r\n | 'tex1_i8normx2'\r\n | 'tex1_i8normx4'\r\n | 'tex1_u16x2'\r\n | 'tex1_u16x4'\r\n | 'tex1_i16x2'\r\n | 'tex1_i16x4'\r\n | 'tex1_u16normx2'\r\n | 'tex1_u16normx4'\r\n | 'tex1_i16normx2'\r\n | 'tex1_i16normx4'\r\n | 'tex1_f16x2'\r\n | 'tex1_f16x4'\r\n | 'tex1_f32'\r\n | 'tex1_f32x2'\r\n | 'tex1_f32x3'\r\n | 'tex1_f32x4'\r\n | 'tex1_i32'\r\n | 'tex1_i32x2'\r\n | 'tex1_i32x3'\r\n | 'tex1_i32x4'\r\n | 'tex1_u32'\r\n | 'tex1_u32x2'\r\n | 'tex1_u32x3'\r\n | 'tex1_u32x4'\r\n | 'tex2_u8normx2'\r\n | 'tex2_u8normx4'\r\n | 'tex2_i8normx2'\r\n | 'tex2_i8normx4'\r\n | 'tex2_u16x2'\r\n | 'tex2_u16x4'\r\n | 'tex2_i16x2'\r\n | 'tex2_i16x4'\r\n | 'tex2_u16normx2'\r\n | 'tex2_u16normx4'\r\n | 'tex2_i16normx2'\r\n | 'tex2_i16normx4'\r\n | 'tex2_f16x2'\r\n | 'tex2_f16x4'\r\n | 'tex2_f32'\r\n | 'tex2_f32x2'\r\n | 'tex2_f32x3'\r\n | 'tex2_f32x4'\r\n | 'tex2_i32'\r\n | 'tex2_i32x2'\r\n | 'tex2_i32x3'\r\n | 'tex2_i32x4'\r\n | 'tex2_u32'\r\n | 'tex2_u32x2'\r\n | 'tex2_u32x3'\r\n | 'tex2_u32x4'\r\n | 'tex3_u8normx2'\r\n | 'tex3_u8normx4'\r\n | 'tex3_i8normx2'\r\n | 'tex3_i8normx4'\r\n | 'tex3_u16x2'\r\n | 'tex3_u16x4'\r\n | 'tex3_i16x2'\r\n | 'tex3_i16x4'\r\n | 'tex3_u16normx2'\r\n | 'tex3_u16normx4'\r\n | 'tex3_i16normx2'\r\n | 'tex3_i16normx4'\r\n | 'tex3_f16x2'\r\n | 'tex3_f16x4'\r\n | 'tex3_f32'\r\n | 'tex3_f32x2'\r\n | 'tex3_f32x3'\r\n | 'tex3_f32x4'\r\n | 'tex3_i32'\r\n | 'tex3_i32x2'\r\n | 'tex3_i32x3'\r\n | 'tex3_i32x4'\r\n | 'tex3_u32'\r\n | 'tex3_u32x2'\r\n | 'tex3_u32x3'\r\n | 'tex3_u32x4'\r\n | 'tex4_u8normx2'\r\n | 'tex4_u8normx4'\r\n | 'tex4_i8normx2'\r\n | 'tex4_i8normx4'\r\n | 'tex4_u16x2'\r\n | 'tex4_u16x4'\r\n | 'tex4_i16x2'\r\n | 'tex4_i16x4'\r\n | 'tex4_u16normx2'\r\n | 'tex4_u16normx4'\r\n | 'tex4_i16normx2'\r\n | 'tex4_i16normx4'\r\n | 'tex4_f16x2'\r\n | 'tex4_f16x4'\r\n | 'tex4_f32'\r\n | 'tex4_f32x2'\r\n | 'tex4_f32x3'\r\n | 'tex4_f32x4'\r\n | 'tex4_i32'\r\n | 'tex4_i32x2'\r\n | 'tex4_i32x3'\r\n | 'tex4_i32x4'\r\n | 'tex4_u32'\r\n | 'tex4_u32x2'\r\n | 'tex4_u32x3'\r\n | 'tex4_u32x4'\r\n | 'tex5_u8normx2'\r\n | 'tex5_u8normx4'\r\n | 'tex5_i8normx2'\r\n | 'tex5_i8normx4'\r\n | 'tex5_u16x2'\r\n | 'tex5_u16x4'\r\n | 'tex5_i16x2'\r\n | 'tex5_i16x4'\r\n | 'tex5_u16normx2'\r\n | 'tex5_u16normx4'\r\n | 'tex5_i16normx2'\r\n | 'tex5_i16normx4'\r\n | 'tex5_f16x2'\r\n | 'tex5_f16x4'\r\n | 'tex5_f32'\r\n | 'tex5_f32x2'\r\n | 'tex5_f32x3'\r\n | 'tex5_f32x4'\r\n | 'tex5_i32'\r\n | 'tex5_i32x2'\r\n | 'tex5_i32x3'\r\n | 'tex5_i32x4'\r\n | 'tex5_u32'\r\n | 'tex5_u32x2'\r\n | 'tex5_u32x3'\r\n | 'tex5_u32x4'\r\n | 'tex6_u8normx2'\r\n | 'tex6_u8normx4'\r\n | 'tex6_i8normx2'\r\n | 'tex6_i8normx4'\r\n | 'tex6_u16x2'\r\n | 'tex6_u16x4'\r\n | 'tex6_i16x2'\r\n | 'tex6_i16x4'\r\n | 'tex6_u16normx2'\r\n | 'tex6_u16normx4'\r\n | 'tex6_i16normx2'\r\n | 'tex6_i16normx4'\r\n | 'tex6_f16x2'\r\n | 'tex6_f16x4'\r\n | 'tex6_f32'\r\n | 'tex6_f32x2'\r\n | 'tex6_f32x3'\r\n | 'tex6_f32x4'\r\n | 'tex6_i32'\r\n | 'tex6_i32x2'\r\n | 'tex6_i32x3'\r\n | 'tex6_i32x4'\r\n | 'tex6_u32'\r\n | 'tex6_u32x2'\r\n | 'tex6_u32x3'\r\n | 'tex6_u32x4'\r\n | 'tex7_u8normx2'\r\n | 'tex7_u8normx4'\r\n | 'tex7_i8normx2'\r\n | 'tex7_i8normx4'\r\n | 'tex7_u16x2'\r\n | 'tex7_u16x4'\r\n | 'tex7_i16x2'\r\n | 'tex7_i16x4'\r\n | 'tex7_u16normx2'\r\n | 'tex7_u16normx4'\r\n | 'tex7_i16normx2'\r\n | 'tex7_i16normx4'\r\n | 'tex7_f16x2'\r\n | 'tex7_f16x4'\r\n | 'tex7_f32'\r\n | 'tex7_f32x2'\r\n | 'tex7_f32x3'\r\n | 'tex7_f32x4'\r\n | 'tex7_i32'\r\n | 'tex7_i32x2'\r\n | 'tex7_i32x3'\r\n | 'tex7_i32x4'\r\n | 'tex7_u32'\r\n | 'tex7_u32x2'\r\n | 'tex7_u32x3'\r\n | 'tex7_u32x4'\r\n | 'blendweights_f16x1'\r\n | 'blendweights_f32x1'\r\n | 'blendweights_f16x2'\r\n | 'blendweights_f32x2'\r\n | 'blendweights_f16x3'\r\n | 'blendweights_f32x3'\r\n | 'blendweights_f16x4'\r\n | 'blendweights_f32x4'\r\n | 'blendindices_f16x1'\r\n | 'blendindices_u16x1'\r\n | 'blendindices_f32x1'\r\n | 'blendindices_u32x1'\r\n | 'blendindices_f16x2'\r\n | 'blendindices_u16x2'\r\n | 'blendindices_f32x2'\r\n | 'blendindices_u32x2'\r\n | 'blendindices_f16x3'\r\n | 'blendindices_u16x3'\r\n | 'blendindices_f32x3'\r\n | 'blendindices_u32x3'\r\n | 'blendindices_f16x4'\r\n | 'blendindices_u16x4'\r\n | 'blendindices_f32x4'\r\n | 'blendindices_u32x4';\r\n\r\nconst vertexAttribFormatMap = {\r\n position_u8normx2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n position_u8normx4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n position_i8normx2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n position_i8normx4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n position_u16x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n position_u16x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n position_i16x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n position_i16x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n position_u16normx2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n position_u16normx4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n position_i16normx2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n position_i16normx4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n position_f16x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n position_f16x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n position_f32: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F32, 4, 'f32', 1],\r\n position_f32x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n position_f32x3: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n position_f32x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n position_i32: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I32, 4, 'i32', 1],\r\n position_i32x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n position_i32x3: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n position_i32x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n position_u32: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U32, 4, 'u32', 1],\r\n position_u32x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n position_u32x3: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n position_u32x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n normal_f16x4: [VERTEX_ATTRIB_NORMAL, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n normal_f32x3: [VERTEX_ATTRIB_NORMAL, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n normal_f32x4: [VERTEX_ATTRIB_NORMAL, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n diffuse_u8normx4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n diffuse_u16x4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n diffuse_u16normx4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n diffuse_f16x4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n diffuse_f32x3: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n diffuse_f32x4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n diffuse_u32x3: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n diffuse_u32x4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tangent_f16x4: [VERTEX_ATTRIB_TANGENT, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tangent_f32x3: [VERTEX_ATTRIB_TANGENT, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tangent_f32x4: [VERTEX_ATTRIB_TANGENT, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex0_u8normx2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex0_u8normx4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex0_i8normx2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex0_i8normx4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex0_u16x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex0_u16x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex0_i16x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex0_i16x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex0_u16normx2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex0_u16normx4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex0_i16normx2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex0_i16normx4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex0_f16x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex0_f16x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex0_f32: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex0_f32x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex0_f32x3: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex0_f32x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex0_i32: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex0_i32x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex0_i32x3: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex0_i32x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex0_u32: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex0_u32x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex0_u32x3: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex0_u32x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex1_u8normx2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex1_u8normx4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex1_i8normx2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex1_i8normx4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex1_u16x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex1_u16x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex1_i16x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex1_i16x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex1_u16normx2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex1_u16normx4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex1_i16normx2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex1_i16normx4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex1_f16x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex1_f16x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex1_f32: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex1_f32x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex1_f32x3: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex1_f32x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex1_i32: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex1_i32x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex1_i32x3: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex1_i32x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex1_u32: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex1_u32x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex1_u32x3: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex1_u32x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex2_u8normx2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex2_u8normx4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex2_i8normx2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex2_i8normx4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex2_u16x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex2_u16x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex2_i16x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex2_i16x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex2_u16normx2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex2_u16normx4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex2_i16normx2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex2_i16normx4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex2_f16x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex2_f16x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex2_f32: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex2_f32x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex2_f32x3: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex2_f32x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex2_i32: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex2_i32x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex2_i32x3: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex2_i32x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex2_u32: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex2_u32x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex2_u32x3: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex2_u32x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex3_u8normx2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex3_u8normx4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex3_i8normx2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex3_i8normx4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex3_u16x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex3_u16x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex3_i16x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex3_i16x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex3_u16normx2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex3_u16normx4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex3_i16normx2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex3_i16normx4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex3_f16x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex3_f16x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex3_f32: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex3_f32x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex3_f32x3: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex3_f32x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex3_i32: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex3_i32x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex3_i32x3: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex3_i32x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex3_u32: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex3_u32x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex3_u32x3: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex3_u32x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex4_u8normx2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex4_u8normx4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex4_i8normx2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex4_i8normx4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex4_u16x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex4_u16x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex4_i16x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex4_i16x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex4_u16normx2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex4_u16normx4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex4_i16normx2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex4_i16normx4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex4_f16x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex4_f16x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex4_f32: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex4_f32x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex4_f32x3: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex4_f32x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex4_i32: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex4_i32x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex4_i32x3: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex4_i32x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex4_u32: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex4_u32x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex4_u32x3: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex4_u32x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex5_u8normx2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex5_u8normx4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex5_i8normx2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex5_i8normx4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex5_u16x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex5_u16x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex5_i16x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex5_i16x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex5_u16normx2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex5_u16normx4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex5_i16normx2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex5_i16normx4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex5_f16x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex5_f16x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex5_f32: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex5_f32x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex5_f32x3: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex5_f32x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex5_i32: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex5_i32x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex5_i32x3: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex5_i32x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex5_u32: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex5_u32x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex5_u32x3: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex5_u32x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex6_u8normx2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex6_u8normx4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex6_i8normx2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex6_i8normx4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex6_u16x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex6_u16x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex6_i16x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex6_i16x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex6_u16normx2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex6_u16normx4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex6_i16normx2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex6_i16normx4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex6_f16x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex6_f16x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex6_f32: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex6_f32x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex6_f32x3: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex6_f32x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex6_i32: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex6_i32x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex6_i32x3: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex6_i32x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex6_u32: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex6_u32x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex6_u32x3: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex6_u32x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex7_u8normx2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex7_u8normx4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex7_i8normx2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex7_i8normx4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex7_u16x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex7_u16x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex7_i16x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex7_i16x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex7_u16normx2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex7_u16normx4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex7_i16normx2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex7_i16normx4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex7_f16x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex7_f16x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex7_f32: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex7_f32x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex7_f32x3: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex7_f32x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex7_i32: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex7_i32x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex7_i32x3: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex7_i32x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex7_u32: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex7_u32x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex7_u32x3: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex7_u32x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n blendweights_f16x1: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F16, 2, 'f16', 1],\r\n blendweights_f32x1: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F32, 4, 'f32', 1],\r\n blendweights_f16x2: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n blendweights_f32x2: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n blendweights_f16x3: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F16VEC3, 6, 'f16', 3],\r\n blendweights_f32x3: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n blendweights_f16x4: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n blendweights_f32x4: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n blendindices_u16x1: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U16, 2, 'u16', 1],\r\n blendindices_f16x1: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F16, 2, 'f16', 1],\r\n blendindices_f32x1: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F32, 4, 'f32', 1],\r\n blendindices_u32x1: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U32, 4, 'u32', 1],\r\n blendindices_u16x2: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n blendindices_f16x2: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n blendindices_f32x2: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n blendindices_u32x2: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n blendindices_u16x3: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U16VEC3, 6, 'u16', 3],\r\n blendindices_f16x3: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F16VEC3, 6, 'f16', 3],\r\n blendindices_f32x3: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n blendindices_u32x3: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n blendindices_u16x4: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n blendindices_f16x4: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n blendindices_f32x4: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n blendindices_u32x4: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U32VEC4, 16, 'u32', 4]\r\n} as const;\r\n\r\n/**\r\n * The semantic type of vertex\r\n * @public\r\n */\r\nexport type VertexSemantic =\r\n | 'position'\r\n | 'normal'\r\n | 'diffuse'\r\n | 'tangent'\r\n | 'blendIndices'\r\n | 'blendWeights'\r\n | 'texCoord0'\r\n | 'texCoord1'\r\n | 'texCoord2'\r\n | 'texCoord3'\r\n | 'texCoord4'\r\n | 'texCoord5'\r\n | 'texCoord6'\r\n | 'texCoord7';\r\n\r\nconst vertexAttribNameMap = {\r\n position: VERTEX_ATTRIB_POSITION,\r\n normal: VERTEX_ATTRIB_NORMAL,\r\n diffuse: VERTEX_ATTRIB_DIFFUSE,\r\n tangent: VERTEX_ATTRIB_TANGENT,\r\n blendIndices: VERTEX_ATTRIB_BLEND_INDICES,\r\n blendWeights: VERTEX_ATTRIB_BLEND_WEIGHT,\r\n texCoord0: VERTEX_ATTRIB_TEXCOORD0,\r\n texCoord1: VERTEX_ATTRIB_TEXCOORD1,\r\n texCoord2: VERTEX_ATTRIB_TEXCOORD2,\r\n texCoord3: VERTEX_ATTRIB_TEXCOORD3,\r\n texCoord4: VERTEX_ATTRIB_TEXCOORD4,\r\n texCoord5: VERTEX_ATTRIB_TEXCOORD5,\r\n texCoord6: VERTEX_ATTRIB_TEXCOORD6,\r\n texCoord7: VERTEX_ATTRIB_TEXCOORD7\r\n} as const;\r\n\r\nconst vertexAttribNameRevMap = {\r\n [VERTEX_ATTRIB_POSITION]: 'position',\r\n [VERTEX_ATTRIB_NORMAL]: 'normal',\r\n [VERTEX_ATTRIB_DIFFUSE]: 'diffuse',\r\n [VERTEX_ATTRIB_TANGENT]: 'tangent',\r\n [VERTEX_ATTRIB_BLEND_INDICES]: 'blendIndices',\r\n [VERTEX_ATTRIB_BLEND_WEIGHT]: 'blendWeights',\r\n [VERTEX_ATTRIB_TEXCOORD0]: 'texCoord0',\r\n [VERTEX_ATTRIB_TEXCOORD1]: 'texCoord1',\r\n [VERTEX_ATTRIB_TEXCOORD2]: 'texCoord2',\r\n [VERTEX_ATTRIB_TEXCOORD3]: 'texCoord3',\r\n [VERTEX_ATTRIB_TEXCOORD4]: 'texCoord4',\r\n [VERTEX_ATTRIB_TEXCOORD5]: 'texCoord5',\r\n [VERTEX_ATTRIB_TEXCOORD6]: 'texCoord6',\r\n [VERTEX_ATTRIB_TEXCOORD7]: 'texCoord7'\r\n} as const;\r\n\r\n/**\r\n * Options for creating vertex layout\r\n * @public\r\n */\r\nexport type VertexLayoutOptions = {\r\n /**\r\n * vertex buffers in this vertex layout\r\n */\r\n vertexBuffers: {\r\n buffer: StructuredBuffer;\r\n stepMode?: VertexStepMode;\r\n }[];\r\n /**\r\n * optional index buffer in this vertex layout\r\n */\r\n indexBuffer?: IndexBuffer;\r\n};\r\n\r\n/**\r\n * Supported colorspace types for texture\r\n * @public\r\n */\r\nexport type TextureColorSpace = 'srgb' | 'linear';\r\n\r\n/**\r\n * Buffer usage type\r\n * @public\r\n */\r\nexport type BufferUsage = 'vertex' | 'index' | 'uniform' | 'read' | 'write' | 'pack-pixel' | 'unpack-pixel';\r\n\r\n/**\r\n * Common options for createing texture or buffer\r\n * @public\r\n */\r\nexport interface BaseCreationOptions {\r\n /**\r\n * Whether the object should be dynamic, default is false\r\n */\r\n dynamic?: boolean;\r\n}\r\n/**\r\n * Options for creating texture\r\n * @public\r\n */\r\nexport interface TextureCreationOptions extends BaseCreationOptions {\r\n writable?: boolean;\r\n texture?: BaseTexture;\r\n mipmapping?: boolean;\r\n samplerOptions?: SamplerOptions;\r\n}\r\n/**\r\n * Options for creating gpu buffer\r\n * @public\r\n */\r\nexport interface BufferCreationOptions extends BaseCreationOptions {\r\n /** The buffer usage */\r\n usage?: BufferUsage;\r\n /** true if we are creating a storage buffer */\r\n storage?: boolean;\r\n /** Whether the object content should be managed, default true for vertex buffer of index buffer */\r\n managed?: boolean;\r\n}\r\n\r\n/**\r\n * The gpu resource usage flags\r\n * @public\r\n */\r\nexport enum GPUResourceUsageFlags {\r\n TF_LINEAR_COLOR_SPACE = 1 << 1,\r\n TF_NO_MIPMAP = 1 << 2,\r\n TF_WRITABLE = 1 << 3,\r\n TF_NO_GC = 1 << 4,\r\n BF_VERTEX = 1 << 5,\r\n BF_INDEX = 1 << 6,\r\n BF_READ = 1 << 7,\r\n BF_WRITE = 1 << 8,\r\n BF_UNIFORM = 1 << 9,\r\n BF_STORAGE = 1 << 10,\r\n BF_PACK_PIXEL = 1 << 11,\r\n BF_UNPACK_PIXEL = 1 << 12,\r\n DYNAMIC = 1 << 13,\r\n MANAGED = 1 << 14\r\n}\r\n\r\n/**\r\n * Get vertex attribute index by semantic\r\n * @public\r\n */\r\nexport function getVertexAttribByName(name: VertexSemantic): number {\r\n return vertexAttribNameMap[name];\r\n}\r\n\r\n/**\r\n * Get vertex semantic by attribute index\r\n * @public\r\n */\r\nexport function getVertexAttribName(attrib: number): VertexSemantic {\r\n return vertexAttribNameRevMap[attrib];\r\n}\r\n\r\n/**\r\n * Test whether a vertex buffer matches given semantic\r\n * @param buffer - Vertex buffer\r\n * @param name - Semantic to test\r\n * @returns true if the vertex buffer matches given semantic, otherwise false\r\n *\r\n * @public\r\n */\r\nexport function matchVertexBuffer(buffer: StructuredBuffer, name: VertexSemantic): boolean {\r\n if (!buffer) {\r\n return false;\r\n }\r\n const bufferType = buffer.structure.structMembers[0].type;\r\n if (!bufferType.isArrayType()) {\r\n return false;\r\n }\r\n const vertexType = bufferType.elementType;\r\n if (vertexType.isStructType()) {\r\n for (const attrib of vertexType.structMembers) {\r\n if (attrib.name === name) {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return buffer.structure.structMembers[0].name === name;\r\n }\r\n}\r\n\r\n/**\r\n * Get vertex attribute type of specified vertex format\r\n * @param fmt - The vertex format\r\n * @returns Vertex attribute type, possible values are 'f32', 'f16', 'i32', 'u32', 'i16', 'u16', 'i8norm', 'u8norm', 'i16norm', 'u16norm'\r\n *\r\n * @public\r\n */\r\nexport function getVertexAttributeFormat(fmt: VertexAttribFormat) {\r\n return vertexAttribFormatMap[fmt][3];\r\n}\r\n\r\n/**\r\n * Get vertex attribute index of specified vertex format\r\n * @param fmt - The vertex format\r\n * @returns Vertex attribute index\r\n *\r\n * @public\r\n */\r\nexport function getVertexAttributeIndex(fmt: VertexAttribFormat): number {\r\n return vertexAttribFormatMap[fmt][0];\r\n}\r\n\r\n/**\r\n * Get byte size of specified vertex format\r\n *\r\n * @public\r\n */\r\nexport function getVertexFormatSize(fmt: VertexAttribFormat): number {\r\n return vertexAttribFormatMap[fmt][2];\r\n}\r\n\r\n/**\r\n * Get number of components of specified vertex format\r\n *\r\n * @public\r\n */\r\nexport function getVertexFormatComponentCount(fmt: VertexAttribFormat): number {\r\n return vertexAttribFormatMap[fmt][4];\r\n}\r\n\r\n/**\r\n * Get vertex format by semantic and component type and component count\r\n * @param semantic - The vertex semantic\r\n * @param type - Data type of vertex component\r\n * @param count - The count of vertex components\r\n * @returns Vertex format\r\n *\r\n * @public\r\n */\r\nexport function getVertexAttribFormat(\r\n semantic: VertexSemantic,\r\n type: DataType,\r\n count: number\r\n): VertexAttribFormat {\r\n const loc = getVertexAttribByName(semantic);\r\n for (const k in vertexAttribFormatMap) {\r\n const v = vertexAttribFormatMap[k];\r\n if (v[0] === loc && v[3] === type && v[4] === count) {\r\n return k as VertexAttribFormat;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Get the length of a vertex buffer by specified structure type of the vertex buffer\r\n * @param vertexBufferType - The structure type of the vertex buffer\r\n * @returns The length of the vertex buffer\r\n *\r\n * @public\r\n */\r\nexport function getVertexBufferLength(vertexBufferType: PBStructTypeInfo) {\r\n return (vertexBufferType.structMembers[0].type as PBArrayTypeInfo).dimension;\r\n}\r\n\r\n/**\r\n * Get byte stride of a vertex buffer by specified structure type of the vertex buffer\r\n * @param vertexBufferType - The structure type of the vertex buffer\r\n * @returns The byte stride of the vertex buffer\r\n *\r\n * @public\r\n */\r\nexport function getVertexBufferStride(vertexBufferType: PBStructTypeInfo) {\r\n const vertexType = (vertexBufferType.structMembers[0].type as PBArrayTypeInfo).elementType;\r\n if (vertexType.isStructType()) {\r\n let stride = 0;\r\n for (const member of vertexType.structMembers) {\r\n stride += (member.type as PBPrimitiveTypeInfo).getSize();\r\n }\r\n return stride;\r\n } else {\r\n return (vertexType as PBPrimitiveTypeInfo).getSize();\r\n }\r\n}\r\n\r\n/**\r\n * Get primitive type of a vertex attribute by specified vertex semantic\r\n * @param vertexBufferType - The structure type of the vertex buffer\r\n * @param semantic - The vertex semantic\r\n * @returns - The primitive type of the vertex attribute\r\n *\r\n * @public\r\n */\r\nexport function getVertexBufferAttribTypeBySemantic(\r\n vertexBufferType: PBStructTypeInfo,\r\n semantic: VertexSemantic\r\n): PBPrimitiveTypeInfo {\r\n const k = vertexBufferType.structMembers[0];\r\n const vertexType = (k.type as PBArrayTypeInfo).elementType;\r\n if (vertexType.isStructType()) {\r\n for (const member of vertexType.structMembers) {\r\n if (member.name === semantic) {\r\n return member.type as PBPrimitiveTypeInfo;\r\n }\r\n }\r\n return null;\r\n } else {\r\n return k.name === semantic ? (vertexType as PBPrimitiveTypeInfo) : null;\r\n }\r\n}\r\n\r\n/**\r\n * Get primitive type of a vertex attribute by specified vertex attribute index\r\n * @param vertexBufferType - The structure type of the vertex buffer\r\n * @param semantic - The vertex attribute index\r\n * @returns - The primitive type of the vertex attribute\r\n *\r\n * @public\r\n */\r\nexport function getVertexBufferAttribType(\r\n vertexBufferType: PBStructTypeInfo,\r\n attrib: number\r\n): PBPrimitiveTypeInfo {\r\n const attribName = getVertexAttribName(attrib);\r\n if (!attribName) {\r\n return null;\r\n }\r\n return getVertexBufferAttribTypeBySemantic(vertexBufferType, attribName);\r\n}\r\n\r\n/**\r\n * Get the structure type of a vertex buffer by specified vertex attribute formats and the length of the vertex buffer\r\n * @param length - The length of the vertex buffer\r\n * @param attributes - The vertex attributes\r\n * @returns The structure type of the vertex buffer\r\n *\r\n * @public\r\n */\r\nexport function makeVertexBufferType(length: number, ...attributes: VertexAttribFormat[]): PBStructTypeInfo {\r\n if (attributes.length === 0) {\r\n return null;\r\n }\r\n if (attributes.length === 1) {\r\n const format = vertexAttribFormatMap[attributes[0]];\r\n return new PBStructTypeInfo(null, 'packed', [\r\n {\r\n name: getVertexAttribName(format[0]),\r\n type: new PBArrayTypeInfo(PBPrimitiveTypeInfo.getCachedTypeInfo(format[1]), length)\r\n }\r\n ]);\r\n } else {\r\n const vertexType = new PBStructTypeInfo(\r\n null,\r\n 'packed',\r\n attributes.map((attrib) => ({\r\n name: getVertexAttribName(vertexAttribFormatMap[attrib][0]),\r\n type: PBPrimitiveTypeInfo.getCachedTypeInfo(vertexAttribFormatMap[attrib][1])\r\n }))\r\n );\r\n return new PBStructTypeInfo(null, 'packed', [\r\n {\r\n name: 'value',\r\n type: new PBArrayTypeInfo(vertexType, length)\r\n }\r\n ]);\r\n }\r\n}\r\n\r\n/**\r\n * Vertex step mode.\r\n *\r\n * @public\r\n */\r\nexport type VertexStepMode = 'vertex' | 'instance';\r\n\r\n/**\r\n * Vertex semantic list\r\n *\r\n * @public\r\n */\r\nexport const semanticList: string[] = (function () {\r\n const list: string[] = [];\r\n for (let i = 0; i < MAX_VERTEX_ATTRIBUTES; i++) {\r\n list.push(semanticToAttrib(i));\r\n }\r\n return list;\r\n})();\r\n\r\n/** @internal */\r\nexport function semanticToAttrib(semantic: number): string {\r\n switch (semantic) {\r\n case VERTEX_ATTRIB_POSITION:\r\n return 'a_position';\r\n case VERTEX_ATTRIB_NORMAL:\r\n return 'a_normal';\r\n case VERTEX_ATTRIB_DIFFUSE:\r\n return 'a_diffuse';\r\n case VERTEX_ATTRIB_TANGENT:\r\n return 'a_tangent';\r\n case VERTEX_ATTRIB_TEXCOORD0:\r\n return 'a_texcoord0';\r\n case VERTEX_ATTRIB_TEXCOORD1:\r\n return 'a_texcoord1';\r\n case VERTEX_ATTRIB_TEXCOORD2:\r\n return 'a_texcoord2';\r\n case VERTEX_ATTRIB_TEXCOORD3:\r\n return 'a_texcoord3';\r\n case VERTEX_ATTRIB_TEXCOORD4:\r\n return 'a_texcoord4';\r\n case VERTEX_ATTRIB_TEXCOORD5:\r\n return 'a_texcoord5';\r\n case VERTEX_ATTRIB_TEXCOORD6:\r\n return 'a_texcoord6';\r\n case VERTEX_ATTRIB_TEXCOORD7:\r\n return 'a_texcoord7';\r\n case VERTEX_ATTRIB_BLEND_INDICES:\r\n return 'a_indices';\r\n case VERTEX_ATTRIB_BLEND_WEIGHT:\r\n return 'a_weight';\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * A data structure that holds the texture data of a mipmap level\r\n * @public\r\n */\r\nexport interface TextureMipmapLevelData {\r\n /** The texture data */\r\n data: TypedArray;\r\n /** Width of the mipmap level */\r\n width: number;\r\n /** Height of the mipmap level */\r\n height: number;\r\n}\r\n\r\n/**\r\n * A data structure that holds the texture data of all mipmap levels\r\n * @public\r\n */\r\nexport interface TextureMipmapData {\r\n /** Texture width of mipmap level 0 */\r\n width: number;\r\n /** Texture height of mipmap level 0 */\r\n height: number;\r\n /** Texture depth of mipmap level 0 */\r\n depth: number;\r\n /** true if it holds texture data for cube texture */\r\n isCubemap: boolean;\r\n /** true if it holds texture data for 3d texture */\r\n isVolume: boolean;\r\n /** true if it holds texture array */\r\n isArray: boolean;\r\n /** true if the texture data are in compressed format */\r\n isCompressed: boolean;\r\n /** The array size if it holds texture data for array texture */\r\n arraySize: number;\r\n /** How many mipmap levels in the texture data */\r\n mipLevels: number;\r\n /** The texture format */\r\n format: TextureFormat;\r\n /** The mipmap level datas */\r\n mipDatas: TextureMipmapLevelData[][];\r\n}\r\n\r\n/**\r\n * Frame buffer texture attachment information\r\n * @public\r\n */\r\nexport interface FrameBufferTextureAttachment {\r\n /** Texture for this attachment */\r\n texture?: BaseTexture;\r\n /** The attached face index for cube texture */\r\n face?: number;\r\n /** The layer index for array texture */\r\n layer?: number;\r\n /** Which mipmap level is currently attached */\r\n level?: number;\r\n /** Whether automatically generate mipmaps for color attachments */\r\n generateMipmaps?: boolean;\r\n}\r\n\r\n/**\r\n * The frame buffer creation options\r\n * @public\r\n */\r\nexport interface FrameBufferOptions {\r\n /** Sample count of the frame buffer */\r\n sampleCount?: number;\r\n /** Whether to ignore the depth stencil attachment when resolving multisample frame buffer */\r\n ignoreDepthStencil?: boolean;\r\n}\r\n\r\n/**\r\n * The uniform buffer layout\r\n * @public\r\n */\r\nexport interface UniformBufferLayout {\r\n /** Byte size of the uniform buffer */\r\n byteSize: number;\r\n /** Entries for the uniform buffer */\r\n entries: UniformLayout[];\r\n}\r\n\r\n/**\r\n * Layout of a uniform in a uniform buffer\r\n * @public\r\n */\r\nexport interface UniformLayout {\r\n /** Name of the uniform */\r\n name: string;\r\n /** Byte offset of the uniform buffer */\r\n offset: number;\r\n /** Byte size of the uniform */\r\n byteSize: number;\r\n /** The array length if the uniform is array type */\r\n arraySize: number;\r\n /** The primitive type of the uniform */\r\n type: PBPrimitiveType;\r\n /** Layout of the members if the uniform is struct type */\r\n subLayout: UniformBufferLayout;\r\n}\r\n\r\n/**\r\n * Binding layout of a uniform buffer or storage buffer\r\n * @public\r\n */\r\nexport interface BufferBindingLayout {\r\n /** The bind type */\r\n type?: 'uniform' | 'storage' | 'read-only-storage';\r\n /** Whether the buffer should be accessed by a dynamic offset */\r\n hasDynamicOffset: boolean;\r\n /** layout for the buffer */\r\n uniformLayout: UniformBufferLayout;\r\n /** minimum binding size of the buffer */\r\n minBindingSize?: number;\r\n /** dynamic offset index */\r\n dynamicOffsetIndex: number;\r\n}\r\n\r\n/**\r\n * Binding layout of a sampler\r\n * @public\r\n */\r\nexport interface SamplerBindingLayout {\r\n /** The bind type */\r\n type: 'filtering' | 'non-filtering' | 'comparison';\r\n}\r\n\r\n/**\r\n * Binding layout of a texture for sampling\r\n * @public\r\n */\r\nexport interface TextureBindingLayout {\r\n /** Sample type of the texture */\r\n sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';\r\n /** View dimension for the texture */\r\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\r\n /** Whether the textur is a multisampled texture */\r\n multisampled: boolean;\r\n /** name of the default sampler uniform when using WebGPU device */\r\n autoBindSampler: string;\r\n /** name of the default comparison sampler uniform when using WebGPU device */\r\n autoBindSamplerComparison: string;\r\n}\r\n\r\n/**\r\n * Binding layout of a storage texture\r\n * @public\r\n */\r\nexport interface StorageTextureBindingLayout {\r\n /** Access mode */\r\n access: 'write-only';\r\n /** The texture format */\r\n format: TextureFormat;\r\n /** View dimension */\r\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\r\n}\r\n\r\n/**\r\n * Binding layout of an external texture\r\n * @public\r\n */\r\nexport interface ExternalTextureBindingLayout {\r\n /** name of the default sampler uniform when using WebGPU device */\r\n autoBindSampler: string;\r\n}\r\n\r\n/**\r\n * Information of bind group entries\r\n * @public\r\n */\r\nexport interface BindGroupLayoutEntry {\r\n /** The binding location */\r\n binding: number;\r\n /** Name of this binding resource */\r\n name: string;\r\n /** Visibility mask */\r\n visibility: number;\r\n /** Type of the binding resource */\r\n type: PBTypeInfo;\r\n /** Binding layout if the resource is a buffer */\r\n buffer?: BufferBindingLayout;\r\n /** Binding layout if the resource is a sampler */\r\n sampler?: SamplerBindingLayout;\r\n /** Binding layout if the resource is a texture for sampling */\r\n texture?: TextureBindingLayout;\r\n /** Binding layout if the resource is a storage texture */\r\n storageTexture?: StorageTextureBindingLayout;\r\n /** Binding layout if the resource is an external texture */\r\n externalTexture?: ExternalTextureBindingLayout;\r\n}\r\n\r\n/**\r\n * Defines how the resources bound in a {@link BindGroup}\r\n * @public\r\n */\r\nexport interface BindGroupLayout {\r\n /** Label of the layout */\r\n label?: string;\r\n /** The name map */\r\n nameMap?: Record<string, string>;\r\n /** A list of {@link BindGroupLayoutEntry} */\r\n entries: BindGroupLayoutEntry[];\r\n}\r\n\r\n/**\r\n * Binding point information for a uniform\r\n * @public\r\n */\r\nexport interface BindPointInfo {\r\n group: number;\r\n binding: number;\r\n type: PBTypeInfo;\r\n}\r\n\r\n/**\r\n * Sampler creation options\r\n * @public\r\n */\r\nexport interface SamplerOptions {\r\n addressU?: TextureAddressMode;\r\n addressV?: TextureAddressMode;\r\n addressW?: TextureAddressMode;\r\n magFilter?: TextureFilterMode;\r\n minFilter?: TextureFilterMode;\r\n mipFilter?: TextureFilterMode;\r\n lodMin?: number;\r\n lodMax?: number;\r\n compare?: CompareFunc;\r\n maxAnisotropy?: number;\r\n}\r\n\r\n/**\r\n * Base class for a GPU object\r\n * @public\r\n */\r\nexport interface GPUObject<T = unknown> extends IDisposable {\r\n /** The object was created by which device */\r\n readonly device: AbstractDevice;\r\n /** The internal GPU object */\r\n readonly object: T;\r\n /** unique id */\r\n readonly uid: number;\r\n readonly cid: number;\r\n readonly disposed: boolean;\r\n name: string;\r\n restoreHandler: (tex: GPUObject) => void;\r\n isVertexLayout(): this is VertexLayout;\r\n isFramebuffer(): this is FrameBuffer;\r\n isSampler(): this is TextureSampler;\r\n isTexture(): this is BaseTexture;\r\n isTexture2D(): this is Texture2D;\r\n isTexture2DArray(): this is Texture2DArray;\r\n isTexture3D(): this is Texture3D;\r\n isTextureCube(): this is TextureCube;\r\n isTextureVideo(): this is TextureVideo;\r\n isProgram(): this is GPUProgram;\r\n isBuffer(): this is GPUDataBuffer;\r\n isBindGroup(): this is BindGroup;\r\n dispose(): void;\r\n reload(): void;\r\n destroy(): void;\r\n restore(): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for texture sampler\r\n * @public\r\n */\r\nexport interface TextureSampler<T = unknown> extends GPUObject<T> {\r\n readonly addressModeU: TextureAddressMode;\r\n readonly addressModeV: TextureAddressMode;\r\n readonly addressModeW: TextureAddressMode;\r\n readonly magFilter: TextureFilterMode;\r\n readonly minFilter: TextureFilterMode;\r\n readonly mipFilter: TextureFilterMode;\r\n readonly lodMin: number;\r\n readonly lodMax: number;\r\n readonly compare: CompareFunc;\r\n readonly maxAnisotropy: number;\r\n}\r\n\r\n/**\r\n * Abstract interface for texture\r\n * @public\r\n */\r\nexport interface BaseTexture<T = unknown> extends GPUObject<T> {\r\n readonly target: TextureType;\r\n readonly width: number;\r\n readonly height: number;\r\n readonly depth: number;\r\n readonly format: TextureFormat;\r\n readonly mipLevelCount: number;\r\n readonly memCost: number;\r\n samplerOptions: SamplerOptions;\r\n init(): void;\r\n generateMipmaps(): void;\r\n isSRGBFormat(): boolean;\r\n isFloatFormat(): boolean;\r\n isIntegerFormat(): boolean;\r\n isSignedFormat(): boolean;\r\n isCompressedFormat(): boolean;\r\n isFilterable(): boolean;\r\n isDepth(): boolean;\r\n getDefaultSampler(comparison: boolean): TextureSampler;\r\n readPixels(\r\n x: number,\r\n y: number,\r\n w: number,\r\n h: number,\r\n faceOrLayer: number,\r\n mipLevel: number,\r\n buffer: TypedArray\r\n ): Promise<void>;\r\n readPixelsToBuffer(\r\n x: number,\r\n y: number,\r\n w: number,\r\n h: number,\r\n faceOrLayer: number,\r\n mipLevel: number,\r\n buffer: GPUDataBuffer\r\n ): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for 2D texture\r\n * @public\r\n */\r\nexport interface Texture2D<T = unknown> extends BaseTexture<T> {\r\n update(data: TypedArray, xOffset: number, yOffset: number, width: number, height: number): void;\r\n updateFromElement(\r\n data: TextureImageElement,\r\n destX: number,\r\n destY: number,\r\n srcX: number,\r\n srcY: number,\r\n width: number,\r\n height: number\r\n ): void;\r\n loadFromElement(element: TextureImageElement, sRGB: boolean, creationFlags?: number): void;\r\n createWithMipmapData(data: TextureMipmapData, sRGB: boolean, creationFlags?: number): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for 2D array texture\r\n * @public\r\n */\r\nexport interface Texture2DArray<T = unknown> extends BaseTexture<T> {\r\n update(\r\n data: TypedArray,\r\n xOffset: number,\r\n yOffset: number,\r\n zOffset: number,\r\n width: number,\r\n height: number,\r\n depth: number\r\n ): void;\r\n updateFromElement(\r\n data: TextureImageElement,\r\n xOffset: number,\r\n yOffset: number,\r\n layerIndex: number,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number\r\n ): void;\r\n createWithMipmapData(data: TextureMipmapData, creationFlags?: number): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for 3D texture\r\n * @public\r\n */\r\nexport interface Texture3D<T = unknown> extends BaseTexture<T> {\r\n update(\r\n data: TypedArray,\r\n xOffset: number,\r\n yOffset: number,\r\n zOffset: number,\r\n width: number,\r\n height: number,\r\n depth: number\r\n ): void;\r\n createWithMipmapData(data: TextureMipmapData, creationFlags?: number): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for cube texture\r\n * @public\r\n */\r\nexport interface TextureCube<T = unknown> extends BaseTexture<T> {\r\n update(\r\n data: TypedArray,\r\n xOffset: number,\r\n yOffset: number,\r\n width: number,\r\n height: number,\r\n face: CubeFace\r\n ): void;\r\n updateFromElement(\r\n data: TextureImageElement,\r\n xOffset: number,\r\n yOffset: number,\r\n face: number,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number\r\n ): void;\r\n createWithMipmapData(data: TextureMipmapData, sRGB: boolean, creationFlags?: number): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for video texture\r\n * @public\r\n */\r\nexport interface TextureVideo<T = unknown> extends BaseTexture<T> {\r\n readonly source: HTMLVideoElement;\r\n updateVideoFrame(): boolean;\r\n}\r\n\r\n/**\r\n * Abstract interface for GPU buffer\r\n * @public\r\n */\r\nexport interface GPUDataBuffer<T = unknown> extends GPUObject<T> {\r\n readonly byteLength: number;\r\n readonly usage: number;\r\n bufferSubData(dstByteOffset: number, data: TypedArray, srcOffset?: number, srcLength?: number): void;\r\n getBufferSubData(\r\n dstBuffer?: Uint8Array<ArrayBuffer>,\r\n offsetInBytes?: number,\r\n sizeInBytes?: number\r\n ): Promise<Uint8Array<ArrayBuffer>>;\r\n}\r\n\r\n/**\r\n * Abstract interface for index buffer\r\n * @public\r\n */\r\nexport interface IndexBuffer<T = unknown> extends GPUDataBuffer<T> {\r\n readonly indexType: PBPrimitiveTypeInfo;\r\n readonly length: number;\r\n}\r\n\r\n/**\r\n * Abstract interface for structured buffer\r\n * @public\r\n */\r\nexport interface StructuredBuffer<T = unknown> extends GPUDataBuffer<T> {\r\n structure: PBStructTypeInfo;\r\n set(name: string, value: StructuredValue);\r\n}\r\n\r\n/**\r\n * Abstract interface for vertex layout\r\n * @public\r\n */\r\nexport interface VertexLayout<T = unknown> extends GPUObject<T> {\r\n readonly vertexBuffers: {\r\n [semantic: number]: { buffer: StructuredBuffer; offset: number };\r\n };\r\n readonly indexBuffer: IndexBuffer;\r\n setDrawOffset(buffer: StructuredBuffer, byteOffset: number): void;\r\n getVertexBuffer(semantic: VertexSemantic): StructuredBuffer;\r\n getVertexBufferInfo(semantic: VertexSemantic): VertexBufferInfo;\r\n getIndexBuffer(): IndexBuffer;\r\n bind(): void;\r\n draw(primitiveType: PrimitiveType, first: number, count: number): void;\r\n drawInstanced(primitiveType: PrimitiveType, first: number, count: number, numInstances: number);\r\n}\r\n\r\n/**\r\n * Abstract interface for frame buffer\r\n * @public\r\n */\r\nexport interface FrameBuffer<T = unknown> extends GPUObject<T> {\r\n getWidth(): number;\r\n getHeight(): number;\r\n getSampleCount(): number;\r\n getHash(): string;\r\n setColorAttachmentCubeFace(index: number, face: CubeFace): void;\r\n getColorAttachmentCubeFace(index: number): CubeFace;\r\n setColorAttachmentMipLevel(index: number, level: number): void;\r\n getColorAttachmentMipLevel(index: number): number;\r\n setColorAttachmentLayer(index: number, layer: number): void;\r\n getColorAttachmentLayer(index: number): number;\r\n setColorAttachmentGenerateMipmaps(index: number, generateMipmaps: boolean): void;\r\n getColorAttachmentGenerateMipmaps(index: number): boolean;\r\n setDepthAttachmentCubeFace(face: CubeFace): void;\r\n getDepthAttachmentCubeFace(): CubeFace;\r\n setDepthAttachmentLayer(layer: number): void;\r\n getDepthAttachmentLayer(): number;\r\n getColorAttachments(): BaseTexture[];\r\n getDepthAttachment(): BaseTexture;\r\n getColorAttachment<T extends BaseTexture = BaseTexture>(index: number): T;\r\n bind(): boolean;\r\n unbind(): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for GPU program\r\n * @public\r\n */\r\nexport interface GPUProgram<T = unknown> extends GPUObject<T> {\r\n readonly bindGroupLayouts: BindGroupLayout[];\r\n readonly type: 'render' | 'compute';\r\n getShaderSource(kind: ShaderKind): string;\r\n getCompileError(): string;\r\n getBindingInfo(name: string): BindPointInfo;\r\n createUniformBuffer(uniform: string): StructuredBuffer;\r\n use(): void;\r\n}\r\n\r\n/**\r\n * Type of values that can be set to a structured buffer\r\n * @public\r\n */\r\nexport type StructuredValue = number | TypedArray | VectorBase | { [name: string]: StructuredValue };\r\n\r\n/**\r\n * Abstract interface for bind group\r\n * @public\r\n */\r\nexport interface BindGroup extends GPUObject<unknown> {\r\n getLayout(): BindGroupLayout;\r\n getDynamicOffsets(): number[];\r\n getGPUId(): string;\r\n getBuffer(name: string, nocreate?: boolean): GPUDataBuffer;\r\n getTexture(name: string): BaseTexture;\r\n setBuffer(\r\n name: string,\r\n buffer: GPUDataBuffer,\r\n offset?: number,\r\n bindOffset?: number,\r\n bindSize?: number\r\n ): void;\r\n setValue(name: string, value: StructuredValue);\r\n setRawData(name: string, byteOffset: number, data: TypedArray, srcPos?: number, srcLength?: number);\r\n setTexture(name: string, texture: BaseTexture, sampler?: TextureSampler);\r\n setTextureView(\r\n name: string,\r\n value: BaseTexture,\r\n level?: number,\r\n face?: number,\r\n mipCount?: number,\r\n sampler?: TextureSampler\r\n );\r\n setSampler(name: string, sampler: TextureSampler);\r\n}\r\n\r\n/**\r\n * Render bundle\r\n * @public\r\n */\r\nexport type RenderBundle = unknown;\r\n\r\n/**\r\n * Creates the default name for the type of given gpu object\r\n * @param obj - The gpu object\r\n * @returns The default name\r\n * @public\r\n */\r\nexport function genDefaultName(obj: GPUObject) {\r\n if (obj.isTexture2D()) {\r\n return 'texture_2d';\r\n } else if (obj.isTexture2DArray()) {\r\n return 'texture_2darray';\r\n } else if (obj.isTexture3D()) {\r\n return 'texture_3d';\r\n } else if (obj.isTextureCube()) {\r\n return 'texture_cube';\r\n } else if (obj.isTextureVideo()) {\r\n return 'texture_video';\r\n } else if (obj.isBuffer()) {\r\n return 'buffer';\r\n } else if (obj.isFramebuffer()) {\r\n return 'framebuffer';\r\n } else if (obj.isProgram()) {\r\n return 'program';\r\n } else if (obj.isSampler()) {\r\n return 'sampler';\r\n } else if (obj.isVertexLayout()) {\r\n return 'vbo';\r\n } else {\r\n return 'unknown';\r\n }\r\n}\r\n"],"names":["MAX_VERTEX_ATTRIBUTES","MAX_BINDING_GROUPS","MAX_TEXCOORD_INDEX_COUNT","VERTEX_ATTRIB_POSITION","VERTEX_ATTRIB_NORMAL","VERTEX_ATTRIB_DIFFUSE","VERTEX_ATTRIB_TANGENT","VERTEX_ATTRIB_TEXCOORD0","VERTEX_ATTRIB_TEXCOORD1","VERTEX_ATTRIB_TEXCOORD2","VERTEX_ATTRIB_TEXCOORD3","VERTEX_ATTRIB_TEXCOORD4","VERTEX_ATTRIB_TEXCOORD5","VERTEX_ATTRIB_TEXCOORD6","VERTEX_ATTRIB_TEXCOORD7","VERTEX_ATTRIB_BLEND_WEIGHT","VERTEX_ATTRIB_BLEND_INDICES","vertexAttribFormatMap","position_u8normx2","PBPrimitiveType","U8VEC2_NORM","position_u8normx4","U8VEC4_NORM","position_i8normx2","I8VEC2_NORM","position_i8normx4","I8VEC4_NORM","position_u16x2","U16VEC2","position_u16x4","U16VEC4","position_i16x2","I16VEC2","position_i16x4","I16VEC4","position_u16normx2","U16VEC2_NORM","position_u16normx4","U16VEC4_NORM","position_i16normx2","I16VEC2_NORM","position_i16normx4","I16VEC4_NORM","position_f16x2","F16VEC2","position_f16x4","F16VEC4","position_f32","F32","position_f32x2","F32VEC2","position_f32x3","F32VEC3","position_f32x4","F32VEC4","position_i32","I32","position_i32x2","I32VEC2","position_i32x3","I32VEC3","position_i32x4","I32VEC4","position_u32","U32","position_u32x2","U32VEC2","position_u32x3","U32VEC3","position_u32x4","U32VEC4","normal_f16x4","normal_f32x3","normal_f32x4","diffuse_u8normx4","diffuse_u16x4","diffuse_u16normx4","diffuse_f16x4","diffuse_f32x3","diffuse_f32x4","diffuse_u32x3","diffuse_u32x4","tangent_f16x4","tangent_f32x3","tangent_f32x4","tex0_u8normx2","tex0_u8normx4","tex0_i8normx2","tex0_i8normx4","tex0_u16x2","tex0_u16x4","tex0_i16x2","tex0_i16x4","tex0_u16normx2","tex0_u16normx4","tex0_i16normx2","tex0_i16normx4","tex0_f16x2","tex0_f16x4","tex0_f32","tex0_f32x2","tex0_f32x3","tex0_f32x4","tex0_i32","tex0_i32x2","tex0_i32x3","tex0_i32x4","tex0_u32","tex0_u32x2","tex0_u32x3","tex0_u32x4","tex1_u8normx2","tex1_u8normx4","tex1_i8normx2","tex1_i8normx4","tex1_u16x2","tex1_u16x4","tex1_i16x2","tex1_i16x4","tex1_u16normx2","tex1_u16normx4","tex1_i16normx2","tex1_i16normx4","tex1_f16x2","tex1_f16x4","tex1_f32","tex1_f32x2","tex1_f32x3","tex1_f32x4","tex1_i32","tex1_i32x2","tex1_i32x3","tex1_i32x4","tex1_u32","tex1_u32x2","tex1_u32x3","tex1_u32x4","tex2_u8normx2","tex2_u8normx4","tex2_i8normx2","tex2_i8normx4","tex2_u16x2","tex2_u16x4","tex2_i16x2","tex2_i16x4","tex2_u16normx2","tex2_u16normx4","tex2_i16normx2","tex2_i16normx4","tex2_f16x2","tex2_f16x4","tex2_f32","tex2_f32x2","tex2_f32x3","tex2_f32x4","tex2_i32","tex2_i32x2","tex2_i32x3","tex2_i32x4","tex2_u32","tex2_u32x2","tex2_u32x3","tex2_u32x4","tex3_u8normx2","tex3_u8normx4","tex3_i8normx2","tex3_i8normx4","tex3_u16x2","tex3_u16x4","tex3_i16x2","tex3_i16x4","tex3_u16normx2","tex3_u16normx4","tex3_i16normx2","tex3_i16normx4","tex3_f16x2","tex3_f16x4","tex3_f32","tex3_f32x2","tex3_f32x3","tex3_f32x4","tex3_i32","tex3_i32x2","tex3_i32x3","tex3_i32x4","tex3_u32","tex3_u32x2","tex3_u32x3","tex3_u32x4","tex4_u8normx2","tex4_u8normx4","tex4_i8normx2","tex4_i8normx4","tex4_u16x2","tex4_u16x4","tex4_i16x2","tex4_i16x4","tex4_u16normx2","tex4_u16normx4","tex4_i16normx2","tex4_i16normx4","tex4_f16x2","tex4_f16x4","tex4_f32","tex4_f32x2","tex4_f32x3","tex4_f32x4","tex4_i32","tex4_i32x2","tex4_i32x3","tex4_i32x4","tex4_u32","tex4_u32x2","tex4_u32x3","tex4_u32x4","tex5_u8normx2","tex5_u8normx4","tex5_i8normx2","tex5_i8normx4","tex5_u16x2","tex5_u16x4","tex5_i16x2","tex5_i16x4","tex5_u16normx2","tex5_u16normx4","tex5_i16normx2","tex5_i16normx4","tex5_f16x2","tex5_f16x4","tex5_f32","tex5_f32x2","tex5_f32x3","tex5_f32x4","tex5_i32","tex5_i32x2","tex5_i32x3","tex5_i32x4","tex5_u32","tex5_u32x2","tex5_u32x3","tex5_u32x4","tex6_u8normx2","tex6_u8normx4","tex6_i8normx2","tex6_i8normx4","tex6_u16x2","tex6_u16x4","tex6_i16x2","tex6_i16x4","tex6_u16normx2","tex6_u16normx4","tex6_i16normx2","tex6_i16normx4","tex6_f16x2","tex6_f16x4","tex6_f32","tex6_f32x2","tex6_f32x3","tex6_f32x4","tex6_i32","tex6_i32x2","tex6_i32x3","tex6_i32x4","tex6_u32","tex6_u32x2","tex6_u32x3","tex6_u32x4","tex7_u8normx2","tex7_u8normx4","tex7_i8normx2","tex7_i8normx4","tex7_u16x2","tex7_u16x4","tex7_i16x2","tex7_i16x4","tex7_u16normx2","tex7_u16normx4","tex7_i16normx2","tex7_i16normx4","tex7_f16x2","tex7_f16x4","tex7_f32","tex7_f32x2","tex7_f32x3","tex7_f32x4","tex7_i32","tex7_i32x2","tex7_i32x3","tex7_i32x4","tex7_u32","tex7_u32x2","tex7_u32x3","tex7_u32x4","blendweights_f16x1","F16","blendweights_f32x1","blendweights_f16x2","blendweights_f32x2","blendweights_f16x3","F16VEC3","blendweights_f32x3","blendweights_f16x4","blendweights_f32x4","blendindices_u16x1","U16","blendindices_f16x1","blendindices_f32x1","blendindices_u32x1","blendindices_u16x2","blendindices_f16x2","blendindices_f32x2","blendindices_u32x2","blendindices_u16x3","U16VEC3","blendindices_f16x3","blendindices_f32x3","blendindices_u32x3","blendindices_u16x4","blendindices_f16x4","blendindices_f32x4","blendindices_u32x4","vertexAttribNameMap","position","normal","diffuse","tangent","blendIndices","blendWeights","texCoord0","texCoord1","texCoord2","texCoord3","texCoord4","texCoord5","texCoord6","texCoord7","vertexAttribNameRevMap","GPUResourceUsageFlags","getVertexAttribByName","name","getVertexAttribName","attrib","matchVertexBuffer","buffer","bufferType","structure","structMembers","type","isArrayType","vertexType","elementType","isStructType","getVertexAttributeFormat","fmt","getVertexAttributeIndex","getVertexFormatSize","getVertexFormatComponentCount","getVertexAttribFormat","semantic","count","loc","k","v","getVertexBufferLength","vertexBufferType","dimension","getVertexBufferStride","stride","member","getSize","getVertexBufferAttribTypeBySemantic","getVertexBufferAttribType","attribName","makeVertexBufferType","length","attributes","format","PBStructTypeInfo","PBArrayTypeInfo","PBPrimitiveTypeInfo","getCachedTypeInfo","map","semanticList","list","i","push","semanticToAttrib","genDefaultName","obj","isTexture2D","isTexture2DArray","isTexture3D","isTextureCube","isTextureVideo","isBuffer","isFramebuffer","isProgram","isSampler","isVertexLayout"],"mappings":"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"}
1
+ {"version":3,"file":"gpuobject.js","sources":["../src/gpuobject.ts"],"sourcesContent":["import type { VectorBase, CubeFace, TypedArray, IDisposable, Nullable, Immutable } from '@zephyr3d/base';\r\nimport type { ShaderKind, AbstractDevice } from './base_types';\r\nimport type { PBTypeInfo } from './builder/types';\r\nimport { PBArrayTypeInfo, PBPrimitiveTypeInfo, PBStructTypeInfo, PBPrimitiveType } from './builder/types';\r\nimport type {\r\n TextureType,\r\n CompareFunc,\r\n TextureAddressMode,\r\n TextureFilterMode,\r\n DataType,\r\n PrimitiveType,\r\n TextureFormat\r\n} from './base_types';\r\nimport type { VertexBufferInfo } from './vertexdata';\r\n\r\n/**\r\n * The types of image element that can be uploaded to textures\r\n * @public\r\n */\r\nexport type TextureImageElement = ImageBitmap | HTMLCanvasElement;\r\n\r\n/** @public */\r\nexport const MAX_VERTEX_ATTRIBUTES = 16;\r\n/** @public */\r\nexport const MAX_BINDING_GROUPS = 4;\r\n/** @public */\r\nexport const MAX_TEXCOORD_INDEX_COUNT = 8;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_POSITION = 0;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_NORMAL = 1;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_DIFFUSE = 2;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TANGENT = 3;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD0 = 4;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD1 = 5;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD2 = 6;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD3 = 7;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD4 = 8;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD5 = 9;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD6 = 10;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_TEXCOORD7 = 11;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_BLEND_WEIGHT = 12;\r\n/** @public */\r\nexport const VERTEX_ATTRIB_BLEND_INDICES = 13;\r\n\r\n/**\r\n * The vertex format types\r\n * @public\r\n */\r\nexport type VertexAttribFormat =\r\n | 'position_u8normx2'\r\n | 'position_u8normx4'\r\n | 'position_i8normx2'\r\n | 'position_i8normx4'\r\n | 'position_u16x2'\r\n | 'position_u16x4'\r\n | 'position_i16x2'\r\n | 'position_i16x4'\r\n | 'position_u16normx2'\r\n | 'position_u16normx4'\r\n | 'position_i16normx2'\r\n | 'position_i16normx4'\r\n | 'position_f16x2'\r\n | 'position_f16x4'\r\n | 'position_f32'\r\n | 'position_f32x2'\r\n | 'position_f32x3'\r\n | 'position_f32x4'\r\n | 'position_i32'\r\n | 'position_i32x2'\r\n | 'position_i32x3'\r\n | 'position_i32x4'\r\n | 'position_u32'\r\n | 'position_u32x2'\r\n | 'position_u32x3'\r\n | 'position_u32x4'\r\n | 'normal_f16x4'\r\n | 'normal_f32x3'\r\n | 'normal_f32x4'\r\n | 'diffuse_u8normx4'\r\n | 'diffuse_u16x4'\r\n | 'diffuse_u16normx4'\r\n | 'diffuse_f16x4'\r\n | 'diffuse_f32x3'\r\n | 'diffuse_f32x4'\r\n | 'diffuse_u32x3'\r\n | 'diffuse_u32x4'\r\n | 'tangent_f16x4'\r\n | 'tangent_f32x3'\r\n | 'tangent_f32x4'\r\n | 'tex0_u8normx2'\r\n | 'tex0_u8normx4'\r\n | 'tex0_i8normx2'\r\n | 'tex0_i8normx4'\r\n | 'tex0_u16x2'\r\n | 'tex0_u16x4'\r\n | 'tex0_i16x2'\r\n | 'tex0_i16x4'\r\n | 'tex0_u16normx2'\r\n | 'tex0_u16normx4'\r\n | 'tex0_i16normx2'\r\n | 'tex0_i16normx4'\r\n | 'tex0_f16x2'\r\n | 'tex0_f16x4'\r\n | 'tex0_f32'\r\n | 'tex0_f32x2'\r\n | 'tex0_f32x3'\r\n | 'tex0_f32x4'\r\n | 'tex0_i32'\r\n | 'tex0_i32x2'\r\n | 'tex0_i32x3'\r\n | 'tex0_i32x4'\r\n | 'tex0_u32'\r\n | 'tex0_u32x2'\r\n | 'tex0_u32x3'\r\n | 'tex0_u32x4'\r\n | 'tex1_u8normx2'\r\n | 'tex1_u8normx4'\r\n | 'tex1_i8normx2'\r\n | 'tex1_i8normx4'\r\n | 'tex1_u16x2'\r\n | 'tex1_u16x4'\r\n | 'tex1_i16x2'\r\n | 'tex1_i16x4'\r\n | 'tex1_u16normx2'\r\n | 'tex1_u16normx4'\r\n | 'tex1_i16normx2'\r\n | 'tex1_i16normx4'\r\n | 'tex1_f16x2'\r\n | 'tex1_f16x4'\r\n | 'tex1_f32'\r\n | 'tex1_f32x2'\r\n | 'tex1_f32x3'\r\n | 'tex1_f32x4'\r\n | 'tex1_i32'\r\n | 'tex1_i32x2'\r\n | 'tex1_i32x3'\r\n | 'tex1_i32x4'\r\n | 'tex1_u32'\r\n | 'tex1_u32x2'\r\n | 'tex1_u32x3'\r\n | 'tex1_u32x4'\r\n | 'tex2_u8normx2'\r\n | 'tex2_u8normx4'\r\n | 'tex2_i8normx2'\r\n | 'tex2_i8normx4'\r\n | 'tex2_u16x2'\r\n | 'tex2_u16x4'\r\n | 'tex2_i16x2'\r\n | 'tex2_i16x4'\r\n | 'tex2_u16normx2'\r\n | 'tex2_u16normx4'\r\n | 'tex2_i16normx2'\r\n | 'tex2_i16normx4'\r\n | 'tex2_f16x2'\r\n | 'tex2_f16x4'\r\n | 'tex2_f32'\r\n | 'tex2_f32x2'\r\n | 'tex2_f32x3'\r\n | 'tex2_f32x4'\r\n | 'tex2_i32'\r\n | 'tex2_i32x2'\r\n | 'tex2_i32x3'\r\n | 'tex2_i32x4'\r\n | 'tex2_u32'\r\n | 'tex2_u32x2'\r\n | 'tex2_u32x3'\r\n | 'tex2_u32x4'\r\n | 'tex3_u8normx2'\r\n | 'tex3_u8normx4'\r\n | 'tex3_i8normx2'\r\n | 'tex3_i8normx4'\r\n | 'tex3_u16x2'\r\n | 'tex3_u16x4'\r\n | 'tex3_i16x2'\r\n | 'tex3_i16x4'\r\n | 'tex3_u16normx2'\r\n | 'tex3_u16normx4'\r\n | 'tex3_i16normx2'\r\n | 'tex3_i16normx4'\r\n | 'tex3_f16x2'\r\n | 'tex3_f16x4'\r\n | 'tex3_f32'\r\n | 'tex3_f32x2'\r\n | 'tex3_f32x3'\r\n | 'tex3_f32x4'\r\n | 'tex3_i32'\r\n | 'tex3_i32x2'\r\n | 'tex3_i32x3'\r\n | 'tex3_i32x4'\r\n | 'tex3_u32'\r\n | 'tex3_u32x2'\r\n | 'tex3_u32x3'\r\n | 'tex3_u32x4'\r\n | 'tex4_u8normx2'\r\n | 'tex4_u8normx4'\r\n | 'tex4_i8normx2'\r\n | 'tex4_i8normx4'\r\n | 'tex4_u16x2'\r\n | 'tex4_u16x4'\r\n | 'tex4_i16x2'\r\n | 'tex4_i16x4'\r\n | 'tex4_u16normx2'\r\n | 'tex4_u16normx4'\r\n | 'tex4_i16normx2'\r\n | 'tex4_i16normx4'\r\n | 'tex4_f16x2'\r\n | 'tex4_f16x4'\r\n | 'tex4_f32'\r\n | 'tex4_f32x2'\r\n | 'tex4_f32x3'\r\n | 'tex4_f32x4'\r\n | 'tex4_i32'\r\n | 'tex4_i32x2'\r\n | 'tex4_i32x3'\r\n | 'tex4_i32x4'\r\n | 'tex4_u32'\r\n | 'tex4_u32x2'\r\n | 'tex4_u32x3'\r\n | 'tex4_u32x4'\r\n | 'tex5_u8normx2'\r\n | 'tex5_u8normx4'\r\n | 'tex5_i8normx2'\r\n | 'tex5_i8normx4'\r\n | 'tex5_u16x2'\r\n | 'tex5_u16x4'\r\n | 'tex5_i16x2'\r\n | 'tex5_i16x4'\r\n | 'tex5_u16normx2'\r\n | 'tex5_u16normx4'\r\n | 'tex5_i16normx2'\r\n | 'tex5_i16normx4'\r\n | 'tex5_f16x2'\r\n | 'tex5_f16x4'\r\n | 'tex5_f32'\r\n | 'tex5_f32x2'\r\n | 'tex5_f32x3'\r\n | 'tex5_f32x4'\r\n | 'tex5_i32'\r\n | 'tex5_i32x2'\r\n | 'tex5_i32x3'\r\n | 'tex5_i32x4'\r\n | 'tex5_u32'\r\n | 'tex5_u32x2'\r\n | 'tex5_u32x3'\r\n | 'tex5_u32x4'\r\n | 'tex6_u8normx2'\r\n | 'tex6_u8normx4'\r\n | 'tex6_i8normx2'\r\n | 'tex6_i8normx4'\r\n | 'tex6_u16x2'\r\n | 'tex6_u16x4'\r\n | 'tex6_i16x2'\r\n | 'tex6_i16x4'\r\n | 'tex6_u16normx2'\r\n | 'tex6_u16normx4'\r\n | 'tex6_i16normx2'\r\n | 'tex6_i16normx4'\r\n | 'tex6_f16x2'\r\n | 'tex6_f16x4'\r\n | 'tex6_f32'\r\n | 'tex6_f32x2'\r\n | 'tex6_f32x3'\r\n | 'tex6_f32x4'\r\n | 'tex6_i32'\r\n | 'tex6_i32x2'\r\n | 'tex6_i32x3'\r\n | 'tex6_i32x4'\r\n | 'tex6_u32'\r\n | 'tex6_u32x2'\r\n | 'tex6_u32x3'\r\n | 'tex6_u32x4'\r\n | 'tex7_u8normx2'\r\n | 'tex7_u8normx4'\r\n | 'tex7_i8normx2'\r\n | 'tex7_i8normx4'\r\n | 'tex7_u16x2'\r\n | 'tex7_u16x4'\r\n | 'tex7_i16x2'\r\n | 'tex7_i16x4'\r\n | 'tex7_u16normx2'\r\n | 'tex7_u16normx4'\r\n | 'tex7_i16normx2'\r\n | 'tex7_i16normx4'\r\n | 'tex7_f16x2'\r\n | 'tex7_f16x4'\r\n | 'tex7_f32'\r\n | 'tex7_f32x2'\r\n | 'tex7_f32x3'\r\n | 'tex7_f32x4'\r\n | 'tex7_i32'\r\n | 'tex7_i32x2'\r\n | 'tex7_i32x3'\r\n | 'tex7_i32x4'\r\n | 'tex7_u32'\r\n | 'tex7_u32x2'\r\n | 'tex7_u32x3'\r\n | 'tex7_u32x4'\r\n | 'blendweights_f16x1'\r\n | 'blendweights_f32x1'\r\n | 'blendweights_f16x2'\r\n | 'blendweights_f32x2'\r\n | 'blendweights_f16x3'\r\n | 'blendweights_f32x3'\r\n | 'blendweights_f16x4'\r\n | 'blendweights_f32x4'\r\n | 'blendindices_f16x1'\r\n | 'blendindices_u16x1'\r\n | 'blendindices_f32x1'\r\n | 'blendindices_u32x1'\r\n | 'blendindices_f16x2'\r\n | 'blendindices_u16x2'\r\n | 'blendindices_f32x2'\r\n | 'blendindices_u32x2'\r\n | 'blendindices_f16x3'\r\n | 'blendindices_u16x3'\r\n | 'blendindices_f32x3'\r\n | 'blendindices_u32x3'\r\n | 'blendindices_f16x4'\r\n | 'blendindices_u16x4'\r\n | 'blendindices_f32x4'\r\n | 'blendindices_u32x4';\r\n\r\nconst vertexAttribFormatMap = {\r\n position_u8normx2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n position_u8normx4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n position_i8normx2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n position_i8normx4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n position_u16x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n position_u16x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n position_i16x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n position_i16x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n position_u16normx2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n position_u16normx4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n position_i16normx2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n position_i16normx4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n position_f16x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n position_f16x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n position_f32: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F32, 4, 'f32', 1],\r\n position_f32x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n position_f32x3: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n position_f32x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n position_i32: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I32, 4, 'i32', 1],\r\n position_i32x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n position_i32x3: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n position_i32x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n position_u32: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U32, 4, 'u32', 1],\r\n position_u32x2: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n position_u32x3: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n position_u32x4: [VERTEX_ATTRIB_POSITION, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n normal_f16x4: [VERTEX_ATTRIB_NORMAL, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n normal_f32x3: [VERTEX_ATTRIB_NORMAL, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n normal_f32x4: [VERTEX_ATTRIB_NORMAL, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n diffuse_u8normx4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n diffuse_u16x4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n diffuse_u16normx4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n diffuse_f16x4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n diffuse_f32x3: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n diffuse_f32x4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n diffuse_u32x3: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n diffuse_u32x4: [VERTEX_ATTRIB_DIFFUSE, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tangent_f16x4: [VERTEX_ATTRIB_TANGENT, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tangent_f32x3: [VERTEX_ATTRIB_TANGENT, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tangent_f32x4: [VERTEX_ATTRIB_TANGENT, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex0_u8normx2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex0_u8normx4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex0_i8normx2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex0_i8normx4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex0_u16x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex0_u16x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex0_i16x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex0_i16x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex0_u16normx2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex0_u16normx4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex0_i16normx2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex0_i16normx4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex0_f16x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex0_f16x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex0_f32: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex0_f32x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex0_f32x3: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex0_f32x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex0_i32: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex0_i32x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex0_i32x3: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex0_i32x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex0_u32: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex0_u32x2: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex0_u32x3: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex0_u32x4: [VERTEX_ATTRIB_TEXCOORD0, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex1_u8normx2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex1_u8normx4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex1_i8normx2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex1_i8normx4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex1_u16x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex1_u16x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex1_i16x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex1_i16x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex1_u16normx2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex1_u16normx4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex1_i16normx2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex1_i16normx4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex1_f16x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex1_f16x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex1_f32: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex1_f32x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex1_f32x3: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex1_f32x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex1_i32: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex1_i32x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex1_i32x3: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex1_i32x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex1_u32: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex1_u32x2: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex1_u32x3: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex1_u32x4: [VERTEX_ATTRIB_TEXCOORD1, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex2_u8normx2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex2_u8normx4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex2_i8normx2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex2_i8normx4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex2_u16x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex2_u16x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex2_i16x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex2_i16x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex2_u16normx2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex2_u16normx4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex2_i16normx2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex2_i16normx4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex2_f16x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex2_f16x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex2_f32: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex2_f32x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex2_f32x3: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex2_f32x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex2_i32: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex2_i32x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex2_i32x3: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex2_i32x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex2_u32: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex2_u32x2: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex2_u32x3: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex2_u32x4: [VERTEX_ATTRIB_TEXCOORD2, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex3_u8normx2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex3_u8normx4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex3_i8normx2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex3_i8normx4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex3_u16x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex3_u16x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex3_i16x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex3_i16x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex3_u16normx2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex3_u16normx4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex3_i16normx2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex3_i16normx4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex3_f16x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex3_f16x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex3_f32: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex3_f32x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex3_f32x3: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex3_f32x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex3_i32: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex3_i32x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex3_i32x3: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex3_i32x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex3_u32: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex3_u32x2: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex3_u32x3: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex3_u32x4: [VERTEX_ATTRIB_TEXCOORD3, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex4_u8normx2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex4_u8normx4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex4_i8normx2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex4_i8normx4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex4_u16x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex4_u16x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex4_i16x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex4_i16x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex4_u16normx2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex4_u16normx4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex4_i16normx2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex4_i16normx4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex4_f16x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex4_f16x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex4_f32: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex4_f32x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex4_f32x3: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex4_f32x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex4_i32: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex4_i32x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex4_i32x3: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex4_i32x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex4_u32: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex4_u32x2: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex4_u32x3: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex4_u32x4: [VERTEX_ATTRIB_TEXCOORD4, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex5_u8normx2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex5_u8normx4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex5_i8normx2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex5_i8normx4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex5_u16x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex5_u16x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex5_i16x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex5_i16x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex5_u16normx2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex5_u16normx4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex5_i16normx2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex5_i16normx4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex5_f16x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex5_f16x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex5_f32: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex5_f32x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex5_f32x3: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex5_f32x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex5_i32: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex5_i32x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex5_i32x3: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex5_i32x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex5_u32: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex5_u32x2: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex5_u32x3: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex5_u32x4: [VERTEX_ATTRIB_TEXCOORD5, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex6_u8normx2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex6_u8normx4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex6_i8normx2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex6_i8normx4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex6_u16x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex6_u16x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex6_i16x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex6_i16x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex6_u16normx2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex6_u16normx4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex6_i16normx2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex6_i16normx4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex6_f16x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex6_f16x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex6_f32: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex6_f32x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex6_f32x3: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex6_f32x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex6_i32: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex6_i32x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex6_i32x3: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex6_i32x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex6_u32: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex6_u32x2: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex6_u32x3: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex6_u32x4: [VERTEX_ATTRIB_TEXCOORD6, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n tex7_u8normx2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U8VEC2_NORM, 2, 'u8norm', 2],\r\n tex7_u8normx4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U8VEC4_NORM, 4, 'u8norm', 4],\r\n tex7_i8normx2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I8VEC2_NORM, 2, 'i8norm', 2],\r\n tex7_i8normx4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I8VEC4_NORM, 4, 'i8norm', 4],\r\n tex7_u16x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n tex7_u16x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n tex7_i16x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I16VEC2, 4, 'i16', 2],\r\n tex7_i16x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I16VEC4, 8, 'i16', 4],\r\n tex7_u16normx2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U16VEC2_NORM, 4, 'u16norm', 2],\r\n tex7_u16normx4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U16VEC4_NORM, 8, 'u16norm', 4],\r\n tex7_i16normx2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I16VEC2_NORM, 4, 'i16norm', 2],\r\n tex7_i16normx4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I16VEC4_NORM, 8, 'i16norm', 4],\r\n tex7_f16x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n tex7_f16x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n tex7_f32: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F32, 4, 'f32', 1],\r\n tex7_f32x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n tex7_f32x3: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n tex7_f32x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n tex7_i32: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I32, 4, 'i32', 1],\r\n tex7_i32x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I32VEC2, 8, 'i32', 2],\r\n tex7_i32x3: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I32VEC3, 12, 'i32', 3],\r\n tex7_i32x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.I32VEC4, 16, 'i32', 4],\r\n tex7_u32: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U32, 4, 'u32', 1],\r\n tex7_u32x2: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n tex7_u32x3: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n tex7_u32x4: [VERTEX_ATTRIB_TEXCOORD7, PBPrimitiveType.U32VEC4, 16, 'u32', 4],\r\n blendweights_f16x1: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F16, 2, 'f16', 1],\r\n blendweights_f32x1: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F32, 4, 'f32', 1],\r\n blendweights_f16x2: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n blendweights_f32x2: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n blendweights_f16x3: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F16VEC3, 6, 'f16', 3],\r\n blendweights_f32x3: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n blendweights_f16x4: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n blendweights_f32x4: [VERTEX_ATTRIB_BLEND_WEIGHT, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n blendindices_u16x1: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U16, 2, 'u16', 1],\r\n blendindices_f16x1: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F16, 2, 'f16', 1],\r\n blendindices_f32x1: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F32, 4, 'f32', 1],\r\n blendindices_u32x1: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U32, 4, 'u32', 1],\r\n blendindices_u16x2: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U16VEC2, 4, 'u16', 2],\r\n blendindices_f16x2: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F16VEC2, 4, 'f16', 2],\r\n blendindices_f32x2: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F32VEC2, 8, 'f32', 2],\r\n blendindices_u32x2: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U32VEC2, 8, 'u32', 2],\r\n blendindices_u16x3: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U16VEC3, 6, 'u16', 3],\r\n blendindices_f16x3: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F16VEC3, 6, 'f16', 3],\r\n blendindices_f32x3: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F32VEC3, 12, 'f32', 3],\r\n blendindices_u32x3: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U32VEC3, 12, 'u32', 3],\r\n blendindices_u16x4: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U16VEC4, 8, 'u16', 4],\r\n blendindices_f16x4: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F16VEC4, 8, 'f16', 4],\r\n blendindices_f32x4: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.F32VEC4, 16, 'f32', 4],\r\n blendindices_u32x4: [VERTEX_ATTRIB_BLEND_INDICES, PBPrimitiveType.U32VEC4, 16, 'u32', 4]\r\n} as const;\r\n\r\n/**\r\n * The semantic type of vertex\r\n * @public\r\n */\r\nexport type VertexSemantic =\r\n | 'position'\r\n | 'normal'\r\n | 'diffuse'\r\n | 'tangent'\r\n | 'blendIndices'\r\n | 'blendWeights'\r\n | 'texCoord0'\r\n | 'texCoord1'\r\n | 'texCoord2'\r\n | 'texCoord3'\r\n | 'texCoord4'\r\n | 'texCoord5'\r\n | 'texCoord6'\r\n | 'texCoord7';\r\n\r\nconst vertexAttribNameMap = {\r\n position: VERTEX_ATTRIB_POSITION,\r\n normal: VERTEX_ATTRIB_NORMAL,\r\n diffuse: VERTEX_ATTRIB_DIFFUSE,\r\n tangent: VERTEX_ATTRIB_TANGENT,\r\n blendIndices: VERTEX_ATTRIB_BLEND_INDICES,\r\n blendWeights: VERTEX_ATTRIB_BLEND_WEIGHT,\r\n texCoord0: VERTEX_ATTRIB_TEXCOORD0,\r\n texCoord1: VERTEX_ATTRIB_TEXCOORD1,\r\n texCoord2: VERTEX_ATTRIB_TEXCOORD2,\r\n texCoord3: VERTEX_ATTRIB_TEXCOORD3,\r\n texCoord4: VERTEX_ATTRIB_TEXCOORD4,\r\n texCoord5: VERTEX_ATTRIB_TEXCOORD5,\r\n texCoord6: VERTEX_ATTRIB_TEXCOORD6,\r\n texCoord7: VERTEX_ATTRIB_TEXCOORD7\r\n} as const;\r\n\r\nconst vertexAttribNameRevMap = {\r\n [VERTEX_ATTRIB_POSITION]: 'position',\r\n [VERTEX_ATTRIB_NORMAL]: 'normal',\r\n [VERTEX_ATTRIB_DIFFUSE]: 'diffuse',\r\n [VERTEX_ATTRIB_TANGENT]: 'tangent',\r\n [VERTEX_ATTRIB_BLEND_INDICES]: 'blendIndices',\r\n [VERTEX_ATTRIB_BLEND_WEIGHT]: 'blendWeights',\r\n [VERTEX_ATTRIB_TEXCOORD0]: 'texCoord0',\r\n [VERTEX_ATTRIB_TEXCOORD1]: 'texCoord1',\r\n [VERTEX_ATTRIB_TEXCOORD2]: 'texCoord2',\r\n [VERTEX_ATTRIB_TEXCOORD3]: 'texCoord3',\r\n [VERTEX_ATTRIB_TEXCOORD4]: 'texCoord4',\r\n [VERTEX_ATTRIB_TEXCOORD5]: 'texCoord5',\r\n [VERTEX_ATTRIB_TEXCOORD6]: 'texCoord6',\r\n [VERTEX_ATTRIB_TEXCOORD7]: 'texCoord7'\r\n} as const;\r\n\r\n/**\r\n * Options for creating vertex layout\r\n * @public\r\n */\r\nexport type VertexLayoutOptions = {\r\n /**\r\n * vertex buffers in this vertex layout\r\n */\r\n vertexBuffers: {\r\n buffer: StructuredBuffer;\r\n stepMode?: VertexStepMode;\r\n }[];\r\n /**\r\n * optional index buffer in this vertex layout\r\n */\r\n indexBuffer?: Nullable<IndexBuffer>;\r\n};\r\n\r\n/**\r\n * Supported colorspace types for texture\r\n * @public\r\n */\r\nexport type TextureColorSpace = 'srgb' | 'linear';\r\n\r\n/**\r\n * Buffer usage type\r\n * @public\r\n */\r\nexport type BufferUsage = 'vertex' | 'index' | 'uniform' | 'read' | 'write' | 'pack-pixel' | 'unpack-pixel';\r\n\r\n/**\r\n * Common options for createing texture or buffer\r\n * @public\r\n */\r\nexport interface BaseCreationOptions {\r\n /**\r\n * Whether the object should be dynamic, default is false\r\n */\r\n dynamic?: boolean;\r\n}\r\n/**\r\n * Options for creating texture\r\n * @public\r\n */\r\nexport interface TextureCreationOptions extends BaseCreationOptions {\r\n writable?: boolean;\r\n texture?: Nullable<BaseTexture>;\r\n mipmapping?: boolean;\r\n samplerOptions?: Nullable<SamplerOptions>;\r\n}\r\n/**\r\n * Options for creating gpu buffer\r\n * @public\r\n */\r\nexport interface BufferCreationOptions extends BaseCreationOptions {\r\n /** The buffer usage */\r\n usage?: BufferUsage;\r\n /** true if we are creating a storage buffer */\r\n storage?: boolean;\r\n /** Whether the object content should be managed, default true for vertex buffer of index buffer */\r\n managed?: boolean;\r\n}\r\n\r\n/**\r\n * The gpu resource usage flags\r\n * @public\r\n */\r\nexport enum GPUResourceUsageFlags {\r\n TF_LINEAR_COLOR_SPACE = 1 << 1,\r\n TF_NO_MIPMAP = 1 << 2,\r\n TF_WRITABLE = 1 << 3,\r\n TF_NO_GC = 1 << 4,\r\n BF_VERTEX = 1 << 5,\r\n BF_INDEX = 1 << 6,\r\n BF_READ = 1 << 7,\r\n BF_WRITE = 1 << 8,\r\n BF_UNIFORM = 1 << 9,\r\n BF_STORAGE = 1 << 10,\r\n BF_PACK_PIXEL = 1 << 11,\r\n BF_UNPACK_PIXEL = 1 << 12,\r\n DYNAMIC = 1 << 13,\r\n MANAGED = 1 << 14\r\n}\r\n\r\n/**\r\n * Get vertex attribute index by semantic\r\n * @public\r\n */\r\nexport function getVertexAttribByName(name: Nullable<VertexSemantic>) {\r\n return name ? vertexAttribNameMap[name] : undefined;\r\n}\r\n\r\n/**\r\n * Get vertex semantic by attribute index\r\n * @public\r\n */\r\nexport function getVertexAttribName(attrib: number) {\r\n return vertexAttribNameRevMap[attrib as keyof typeof vertexAttribNameRevMap] as VertexSemantic;\r\n}\r\n\r\n/**\r\n * Test whether a vertex buffer matches given semantic\r\n * @param buffer - Vertex buffer\r\n * @param name - Semantic to test\r\n * @returns true if the vertex buffer matches given semantic, otherwise false\r\n *\r\n * @public\r\n */\r\nexport function matchVertexBuffer(buffer: StructuredBuffer, name: VertexSemantic) {\r\n if (!buffer) {\r\n return false;\r\n }\r\n const bufferType = buffer.structure.structMembers[0].type;\r\n if (!bufferType.isArrayType()) {\r\n return false;\r\n }\r\n const vertexType = bufferType.elementType;\r\n if (vertexType.isStructType()) {\r\n for (const attrib of vertexType.structMembers) {\r\n if (attrib.name === name) {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return buffer.structure.structMembers[0].name === name;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Get vertex attribute type of specified vertex format\r\n * @param fmt - The vertex format\r\n * @returns Vertex attribute type, possible values are 'f32', 'f16', 'i32', 'u32', 'i16', 'u16', 'i8norm', 'u8norm', 'i16norm', 'u16norm'\r\n *\r\n * @public\r\n */\r\nexport function getVertexAttributeFormat(fmt: VertexAttribFormat) {\r\n return vertexAttribFormatMap[fmt][3];\r\n}\r\n\r\n/**\r\n * Get vertex attribute index of specified vertex format\r\n * @param fmt - The vertex format\r\n * @returns Vertex attribute index\r\n *\r\n * @public\r\n */\r\nexport function getVertexAttributeIndex(fmt: VertexAttribFormat) {\r\n return vertexAttribFormatMap[fmt][0];\r\n}\r\n\r\n/**\r\n * Get byte size of specified vertex format\r\n *\r\n * @public\r\n */\r\nexport function getVertexFormatSize(fmt: VertexAttribFormat) {\r\n return vertexAttribFormatMap[fmt][2];\r\n}\r\n\r\n/**\r\n * Get number of components of specified vertex format\r\n *\r\n * @public\r\n */\r\nexport function getVertexFormatComponentCount(fmt: VertexAttribFormat) {\r\n return vertexAttribFormatMap[fmt][4];\r\n}\r\n\r\n/**\r\n * Get vertex format by semantic and component type and component count\r\n * @param semantic - The vertex semantic\r\n * @param type - Data type of vertex component\r\n * @param count - The count of vertex components\r\n * @returns Vertex format\r\n *\r\n * @public\r\n */\r\nexport function getVertexAttribFormat(semantic: VertexSemantic, type: DataType, count: number) {\r\n const loc = getVertexAttribByName(semantic);\r\n for (const k in vertexAttribFormatMap) {\r\n const v = vertexAttribFormatMap[k as keyof typeof vertexAttribFormatMap];\r\n if (v[0] === loc && v[3] === type && v[4] === count) {\r\n return k as VertexAttribFormat;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Get the length of a vertex buffer by specified structure type of the vertex buffer\r\n * @param vertexBufferType - The structure type of the vertex buffer\r\n * @returns The length of the vertex buffer\r\n *\r\n * @public\r\n */\r\nexport function getVertexBufferLength(vertexBufferType: PBStructTypeInfo) {\r\n return (vertexBufferType.structMembers[0].type as PBArrayTypeInfo).dimension;\r\n}\r\n\r\n/**\r\n * Get byte stride of a vertex buffer by specified structure type of the vertex buffer\r\n * @param vertexBufferType - The structure type of the vertex buffer\r\n * @returns The byte stride of the vertex buffer\r\n *\r\n * @public\r\n */\r\nexport function getVertexBufferStride(vertexBufferType: Immutable<PBStructTypeInfo>) {\r\n const vertexType = (vertexBufferType.structMembers[0].type as PBArrayTypeInfo).elementType;\r\n if (vertexType.isStructType()) {\r\n let stride = 0;\r\n for (const member of vertexType.structMembers) {\r\n stride += (member.type as PBPrimitiveTypeInfo).getSize();\r\n }\r\n return stride;\r\n } else {\r\n return (vertexType as PBPrimitiveTypeInfo).getSize();\r\n }\r\n}\r\n\r\n/**\r\n * Get primitive type of a vertex attribute by specified vertex semantic\r\n * @param vertexBufferType - The structure type of the vertex buffer\r\n * @param semantic - The vertex semantic\r\n * @returns - The primitive type of the vertex attribute\r\n *\r\n * @public\r\n */\r\nexport function getVertexBufferAttribTypeBySemantic(\r\n vertexBufferType: Immutable<PBStructTypeInfo>,\r\n semantic: VertexSemantic\r\n) {\r\n const k = vertexBufferType.structMembers[0];\r\n const vertexType = (k.type as PBArrayTypeInfo).elementType;\r\n if (vertexType.isStructType()) {\r\n for (const member of vertexType.structMembers) {\r\n if (member.name === semantic) {\r\n return member.type as PBPrimitiveTypeInfo;\r\n }\r\n }\r\n return null;\r\n } else {\r\n return k.name === semantic ? (vertexType as PBPrimitiveTypeInfo) : null;\r\n }\r\n}\r\n\r\n/**\r\n * Get primitive type of a vertex attribute by specified vertex attribute index\r\n * @param vertexBufferType - The structure type of the vertex buffer\r\n * @param semantic - The vertex attribute index\r\n * @returns - The primitive type of the vertex attribute\r\n *\r\n * @public\r\n */\r\nexport function getVertexBufferAttribType(vertexBufferType: Immutable<PBStructTypeInfo>, attrib: number) {\r\n const attribName = getVertexAttribName(attrib);\r\n if (!attribName) {\r\n return null;\r\n }\r\n return getVertexBufferAttribTypeBySemantic(vertexBufferType, attribName);\r\n}\r\n\r\n/**\r\n * Get the structure type of a vertex buffer by specified vertex attribute formats and the length of the vertex buffer\r\n * @param length - The length of the vertex buffer\r\n * @param attributes - The vertex attributes\r\n * @returns The structure type of the vertex buffer\r\n *\r\n * @public\r\n */\r\nexport function makeVertexBufferType(length: number, ...attributes: Immutable<VertexAttribFormat[]>) {\r\n if (attributes.length === 0) {\r\n return null;\r\n }\r\n if (attributes.length === 1) {\r\n const format = vertexAttribFormatMap[attributes[0]];\r\n return new PBStructTypeInfo(null, 'packed', [\r\n {\r\n name: getVertexAttribName(format[0]),\r\n type: new PBArrayTypeInfo(PBPrimitiveTypeInfo.getCachedTypeInfo(format[1]), length)\r\n }\r\n ]);\r\n } else {\r\n const vertexType = new PBStructTypeInfo(\r\n null,\r\n 'packed',\r\n attributes.map((attrib) => ({\r\n name: getVertexAttribName(vertexAttribFormatMap[attrib][0]),\r\n type: PBPrimitiveTypeInfo.getCachedTypeInfo(vertexAttribFormatMap[attrib][1])\r\n }))\r\n );\r\n return new PBStructTypeInfo(null, 'packed', [\r\n {\r\n name: 'value',\r\n type: new PBArrayTypeInfo(vertexType, length)\r\n }\r\n ]);\r\n }\r\n}\r\n\r\n/**\r\n * Vertex step mode.\r\n *\r\n * @public\r\n */\r\nexport type VertexStepMode = 'vertex' | 'instance';\r\n\r\n/**\r\n * Vertex semantic list\r\n *\r\n * @public\r\n */\r\nexport const semanticList: string[] = (function () {\r\n const list: string[] = [];\r\n for (let i = 0; i < MAX_VERTEX_ATTRIBUTES; i++) {\r\n list.push(semanticToAttrib(i)!);\r\n }\r\n return list;\r\n})();\r\n\r\n/** @internal */\r\nexport function semanticToAttrib(semantic: number) {\r\n switch (semantic) {\r\n case VERTEX_ATTRIB_POSITION:\r\n return 'a_position';\r\n case VERTEX_ATTRIB_NORMAL:\r\n return 'a_normal';\r\n case VERTEX_ATTRIB_DIFFUSE:\r\n return 'a_diffuse';\r\n case VERTEX_ATTRIB_TANGENT:\r\n return 'a_tangent';\r\n case VERTEX_ATTRIB_TEXCOORD0:\r\n return 'a_texcoord0';\r\n case VERTEX_ATTRIB_TEXCOORD1:\r\n return 'a_texcoord1';\r\n case VERTEX_ATTRIB_TEXCOORD2:\r\n return 'a_texcoord2';\r\n case VERTEX_ATTRIB_TEXCOORD3:\r\n return 'a_texcoord3';\r\n case VERTEX_ATTRIB_TEXCOORD4:\r\n return 'a_texcoord4';\r\n case VERTEX_ATTRIB_TEXCOORD5:\r\n return 'a_texcoord5';\r\n case VERTEX_ATTRIB_TEXCOORD6:\r\n return 'a_texcoord6';\r\n case VERTEX_ATTRIB_TEXCOORD7:\r\n return 'a_texcoord7';\r\n case VERTEX_ATTRIB_BLEND_INDICES:\r\n return 'a_indices';\r\n case VERTEX_ATTRIB_BLEND_WEIGHT:\r\n return 'a_weight';\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * A data structure that holds the texture data of a mipmap level\r\n * @public\r\n */\r\nexport interface TextureMipmapLevelData {\r\n /** The texture data */\r\n data: TypedArray;\r\n /** Width of the mipmap level */\r\n width: number;\r\n /** Height of the mipmap level */\r\n height: number;\r\n}\r\n\r\n/**\r\n * A data structure that holds the texture data of all mipmap levels\r\n * @public\r\n */\r\nexport interface TextureMipmapData {\r\n /** Texture width of mipmap level 0 */\r\n width: number;\r\n /** Texture height of mipmap level 0 */\r\n height: number;\r\n /** Texture depth of mipmap level 0 */\r\n depth: number;\r\n /** true if it holds texture data for cube texture */\r\n isCubemap: boolean;\r\n /** true if it holds texture data for 3d texture */\r\n isVolume: boolean;\r\n /** true if it holds texture array */\r\n isArray: boolean;\r\n /** true if the texture data are in compressed format */\r\n isCompressed: boolean;\r\n /** The array size if it holds texture data for array texture */\r\n arraySize: number;\r\n /** How many mipmap levels in the texture data */\r\n mipLevels: number;\r\n /** The texture format */\r\n format: TextureFormat;\r\n /** The mipmap level datas */\r\n mipDatas: TextureMipmapLevelData[][];\r\n}\r\n\r\n/**\r\n * Frame buffer texture attachment information\r\n * @public\r\n */\r\nexport interface FrameBufferTextureAttachment {\r\n /** Texture for this attachment */\r\n texture?: BaseTexture;\r\n /** The attached face index for cube texture */\r\n face?: number;\r\n /** The layer index for array texture */\r\n layer?: number;\r\n /** Which mipmap level is currently attached */\r\n level?: number;\r\n /** Whether automatically generate mipmaps for color attachments */\r\n generateMipmaps?: boolean;\r\n}\r\n\r\n/**\r\n * The frame buffer creation options\r\n * @public\r\n */\r\nexport interface FrameBufferOptions {\r\n /** Sample count of the frame buffer */\r\n sampleCount?: number;\r\n /** Whether to ignore the depth stencil attachment when resolving multisample frame buffer */\r\n ignoreDepthStencil?: boolean;\r\n}\r\n\r\n/**\r\n * The uniform buffer layout\r\n * @public\r\n */\r\nexport interface UniformBufferLayout {\r\n /** Byte size of the uniform buffer */\r\n byteSize: number;\r\n /** Entries for the uniform buffer */\r\n entries: UniformLayout[];\r\n}\r\n\r\n/**\r\n * Layout of a uniform in a uniform buffer\r\n * @public\r\n */\r\nexport interface UniformLayout {\r\n /** Name of the uniform */\r\n name: string;\r\n /** Byte offset of the uniform buffer */\r\n offset: number;\r\n /** Byte size of the uniform */\r\n byteSize: number;\r\n /** The array length if the uniform is array type */\r\n arraySize: number;\r\n /** The primitive type of the uniform */\r\n type: PBPrimitiveType;\r\n /** Layout of the members if the uniform is struct type */\r\n subLayout: Nullable<UniformBufferLayout>;\r\n}\r\n\r\n/**\r\n * Binding layout of a uniform buffer or storage buffer\r\n * @public\r\n */\r\nexport interface BufferBindingLayout {\r\n /** The bind type */\r\n type?: 'uniform' | 'storage' | 'read-only-storage';\r\n /** Whether the buffer should be accessed by a dynamic offset */\r\n hasDynamicOffset: boolean;\r\n /** layout for the buffer */\r\n uniformLayout: UniformBufferLayout;\r\n /** minimum binding size of the buffer */\r\n minBindingSize?: number;\r\n /** dynamic offset index */\r\n dynamicOffsetIndex: number;\r\n}\r\n\r\n/**\r\n * Binding layout of a sampler\r\n * @public\r\n */\r\nexport interface SamplerBindingLayout {\r\n /** The bind type */\r\n type: 'filtering' | 'non-filtering' | 'comparison';\r\n}\r\n\r\n/**\r\n * Binding layout of a texture for sampling\r\n * @public\r\n */\r\nexport interface TextureBindingLayout {\r\n /** Sample type of the texture */\r\n sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';\r\n /** View dimension for the texture */\r\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\r\n /** Whether the textur is a multisampled texture */\r\n multisampled: boolean;\r\n /** name of the default sampler uniform when using WebGPU device */\r\n autoBindSampler: Nullable<string>;\r\n /** name of the default comparison sampler uniform when using WebGPU device */\r\n autoBindSamplerComparison: Nullable<string>;\r\n}\r\n\r\n/**\r\n * Binding layout of a storage texture\r\n * @public\r\n */\r\nexport interface StorageTextureBindingLayout {\r\n /** Access mode */\r\n access: 'write-only';\r\n /** The texture format */\r\n format: TextureFormat;\r\n /** View dimension */\r\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\r\n}\r\n\r\n/**\r\n * Binding layout of an external texture\r\n * @public\r\n */\r\nexport interface ExternalTextureBindingLayout {\r\n /** name of the default sampler uniform when using WebGPU device */\r\n autoBindSampler: Nullable<string>;\r\n}\r\n\r\n/**\r\n * Information of bind group entries\r\n * @public\r\n */\r\nexport interface BindGroupLayoutEntry {\r\n /** The binding location */\r\n binding: number;\r\n /** Name of this binding resource */\r\n name: string;\r\n /** Visibility mask */\r\n visibility: number;\r\n /** Type of the binding resource */\r\n type: PBTypeInfo;\r\n /** Binding layout if the resource is a buffer */\r\n buffer?: BufferBindingLayout;\r\n /** Binding layout if the resource is a sampler */\r\n sampler?: SamplerBindingLayout;\r\n /** Binding layout if the resource is a texture for sampling */\r\n texture?: TextureBindingLayout;\r\n /** Binding layout if the resource is a storage texture */\r\n storageTexture?: StorageTextureBindingLayout;\r\n /** Binding layout if the resource is an external texture */\r\n externalTexture?: ExternalTextureBindingLayout;\r\n}\r\n\r\n/**\r\n * Defines how the resources bound in a {@link BindGroup}\r\n * @public\r\n */\r\nexport interface BindGroupLayout {\r\n /** Label of the layout */\r\n label?: string;\r\n /** The name map */\r\n nameMap?: Record<string, string>;\r\n /** A list of {@link BindGroupLayoutEntry} */\r\n entries: BindGroupLayoutEntry[];\r\n}\r\n\r\n/**\r\n * Binding point information for a uniform\r\n * @public\r\n */\r\nexport interface BindPointInfo {\r\n group: number;\r\n binding: number;\r\n type: PBTypeInfo;\r\n}\r\n\r\n/**\r\n * Sampler creation options\r\n * @public\r\n */\r\nexport interface SamplerOptions {\r\n addressU?: TextureAddressMode;\r\n addressV?: TextureAddressMode;\r\n addressW?: TextureAddressMode;\r\n magFilter?: TextureFilterMode;\r\n minFilter?: TextureFilterMode;\r\n mipFilter?: TextureFilterMode;\r\n lodMin?: number;\r\n lodMax?: number;\r\n compare?: Nullable<CompareFunc>;\r\n maxAnisotropy?: number;\r\n}\r\n\r\n/**\r\n * Base class for a GPU object\r\n * @public\r\n */\r\nexport interface GPUObject<T = unknown> extends IDisposable {\r\n /** The object was created by which device */\r\n readonly device: AbstractDevice;\r\n /** The internal GPU object */\r\n readonly object: Nullable<T>;\r\n /** unique id */\r\n readonly uid: number;\r\n readonly cid: number;\r\n readonly disposed: boolean;\r\n name: string;\r\n restoreHandler: Nullable<(tex: GPUObject) => void>;\r\n isVertexLayout(): this is VertexLayout;\r\n isFramebuffer(): this is FrameBuffer;\r\n isSampler(): this is TextureSampler;\r\n isTexture(): this is BaseTexture;\r\n isTexture2D(): this is Texture2D;\r\n isTexture2DArray(): this is Texture2DArray;\r\n isTexture3D(): this is Texture3D;\r\n isTextureCube(): this is TextureCube;\r\n isTextureVideo(): this is TextureVideo;\r\n isProgram(): this is GPUProgram;\r\n isBuffer(): this is GPUDataBuffer;\r\n isBindGroup(): this is BindGroup;\r\n dispose(): void;\r\n reload(): void;\r\n destroy(): void;\r\n restore(): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for texture sampler\r\n * @public\r\n */\r\nexport interface TextureSampler<T = unknown> extends GPUObject<T> {\r\n readonly addressModeU: TextureAddressMode;\r\n readonly addressModeV: TextureAddressMode;\r\n readonly addressModeW: TextureAddressMode;\r\n readonly magFilter: TextureFilterMode;\r\n readonly minFilter: TextureFilterMode;\r\n readonly mipFilter: TextureFilterMode;\r\n readonly lodMin: number;\r\n readonly lodMax: number;\r\n readonly compare: Nullable<CompareFunc>;\r\n readonly maxAnisotropy: number;\r\n}\r\n\r\n/**\r\n * Abstract interface for texture\r\n * @public\r\n */\r\nexport interface BaseTexture<T = unknown> extends GPUObject<T> {\r\n readonly target: TextureType;\r\n readonly width: number;\r\n readonly height: number;\r\n readonly depth: number;\r\n readonly format: TextureFormat;\r\n readonly mipLevelCount: number;\r\n readonly memCost: number;\r\n samplerOptions: Nullable<Immutable<SamplerOptions>>;\r\n init(): void;\r\n generateMipmaps(): void;\r\n isSRGBFormat(): boolean;\r\n isFloatFormat(): boolean;\r\n isIntegerFormat(): boolean;\r\n isSignedFormat(): boolean;\r\n isCompressedFormat(): boolean;\r\n isFilterable(): boolean;\r\n isDepth(): boolean;\r\n getDefaultSampler(comparison: boolean): TextureSampler;\r\n readPixels(\r\n x: number,\r\n y: number,\r\n w: number,\r\n h: number,\r\n faceOrLayer: number,\r\n mipLevel: number,\r\n buffer: TypedArray\r\n ): Promise<void>;\r\n readPixelsToBuffer(\r\n x: number,\r\n y: number,\r\n w: number,\r\n h: number,\r\n faceOrLayer: number,\r\n mipLevel: number,\r\n buffer: GPUDataBuffer\r\n ): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for 2D texture\r\n * @public\r\n */\r\nexport interface Texture2D<T = unknown> extends BaseTexture<T> {\r\n update(data: TypedArray, xOffset: number, yOffset: number, width: number, height: number): void;\r\n updateFromElement(\r\n data: TextureImageElement,\r\n destX: number,\r\n destY: number,\r\n srcX: number,\r\n srcY: number,\r\n width: number,\r\n height: number\r\n ): void;\r\n loadFromElement(element: TextureImageElement, sRGB: boolean, creationFlags?: number): void;\r\n createWithMipmapData(data: TextureMipmapData, sRGB: boolean, creationFlags?: number): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for 2D array texture\r\n * @public\r\n */\r\nexport interface Texture2DArray<T = unknown> extends BaseTexture<T> {\r\n update(\r\n data: TypedArray,\r\n xOffset: number,\r\n yOffset: number,\r\n zOffset: number,\r\n width: number,\r\n height: number,\r\n depth: number\r\n ): void;\r\n updateFromElement(\r\n data: TextureImageElement,\r\n xOffset: number,\r\n yOffset: number,\r\n layerIndex: number,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number\r\n ): void;\r\n createWithMipmapData(data: TextureMipmapData, creationFlags?: number): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for 3D texture\r\n * @public\r\n */\r\nexport interface Texture3D<T = unknown> extends BaseTexture<T> {\r\n update(\r\n data: TypedArray,\r\n xOffset: number,\r\n yOffset: number,\r\n zOffset: number,\r\n width: number,\r\n height: number,\r\n depth: number\r\n ): void;\r\n createWithMipmapData(data: TextureMipmapData, creationFlags?: number): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for cube texture\r\n * @public\r\n */\r\nexport interface TextureCube<T = unknown> extends BaseTexture<T> {\r\n update(\r\n data: TypedArray,\r\n xOffset: number,\r\n yOffset: number,\r\n width: number,\r\n height: number,\r\n face: CubeFace\r\n ): void;\r\n updateFromElement(\r\n data: TextureImageElement,\r\n xOffset: number,\r\n yOffset: number,\r\n face: number,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number\r\n ): void;\r\n createWithMipmapData(data: TextureMipmapData, sRGB: boolean, creationFlags?: number): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for video texture\r\n * @public\r\n */\r\nexport interface TextureVideo<T = unknown> extends BaseTexture<T> {\r\n readonly source: HTMLVideoElement;\r\n updateVideoFrame(): boolean;\r\n}\r\n\r\n/**\r\n * Abstract interface for GPU buffer\r\n * @public\r\n */\r\nexport interface GPUDataBuffer<T = unknown> extends GPUObject<T> {\r\n readonly byteLength: number;\r\n readonly usage: number;\r\n bufferSubData(dstByteOffset: number, data: TypedArray, srcOffset?: number, srcLength?: number): void;\r\n getBufferSubData(\r\n dstBuffer?: Nullable<Uint8Array<ArrayBuffer>>,\r\n offsetInBytes?: number,\r\n sizeInBytes?: number\r\n ): Promise<Uint8Array<ArrayBuffer>>;\r\n}\r\n\r\n/**\r\n * Abstract interface for index buffer\r\n * @public\r\n */\r\nexport interface IndexBuffer<T = unknown> extends GPUDataBuffer<T> {\r\n readonly indexType: PBPrimitiveTypeInfo;\r\n readonly length: number;\r\n}\r\n\r\n/**\r\n * Abstract interface for structured buffer\r\n * @public\r\n */\r\nexport interface StructuredBuffer<T = unknown> extends GPUDataBuffer<T> {\r\n structure: Immutable<PBStructTypeInfo>;\r\n set(name: string, value: StructuredValue): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for vertex layout\r\n * @public\r\n */\r\nexport interface VertexLayout<T = unknown> extends GPUObject<T> {\r\n readonly vertexBuffers: {\r\n [semantic: number]: Nullable<{ buffer: StructuredBuffer; offset: number }>;\r\n };\r\n readonly indexBuffer: Nullable<IndexBuffer>;\r\n setDrawOffset(buffer: StructuredBuffer, byteOffset: number): void;\r\n getVertexBuffer(semantic: VertexSemantic): Nullable<StructuredBuffer>;\r\n getVertexBufferInfo(semantic: VertexSemantic): Nullable<VertexBufferInfo>;\r\n getIndexBuffer(): Nullable<IndexBuffer>;\r\n bind(): void;\r\n draw(primitiveType: PrimitiveType, first: number, count: number): void;\r\n drawInstanced(primitiveType: PrimitiveType, first: number, count: number, numInstances: number): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for frame buffer\r\n * @public\r\n */\r\nexport interface FrameBuffer<T = unknown> extends GPUObject<T> {\r\n getWidth(): number;\r\n getHeight(): number;\r\n getSampleCount(): number;\r\n getHash(): string;\r\n setColorAttachmentCubeFace(index: number, face: CubeFace): void;\r\n getColorAttachmentCubeFace(index: number): CubeFace;\r\n setColorAttachmentMipLevel(index: number, level: number): void;\r\n getColorAttachmentMipLevel(index: number): number;\r\n setColorAttachmentLayer(index: number, layer: number): void;\r\n getColorAttachmentLayer(index: number): number;\r\n setColorAttachmentGenerateMipmaps(index: number, generateMipmaps: boolean): void;\r\n getColorAttachmentGenerateMipmaps(index: number): boolean;\r\n setDepthAttachmentCubeFace(face: CubeFace): void;\r\n getDepthAttachmentCubeFace(): CubeFace;\r\n setDepthAttachmentLayer(layer: number): void;\r\n getDepthAttachmentLayer(): number;\r\n getColorAttachments(): BaseTexture[];\r\n getDepthAttachment(): Nullable<BaseTexture>;\r\n getColorAttachment<T extends BaseTexture = BaseTexture>(index: number): T;\r\n bind(): boolean;\r\n unbind(): void;\r\n}\r\n\r\n/**\r\n * Abstract interface for GPU program\r\n * @public\r\n */\r\nexport interface GPUProgram<T = unknown> extends GPUObject<T> {\r\n readonly bindGroupLayouts: Immutable<BindGroupLayout[]>;\r\n readonly type: 'render' | 'compute';\r\n getShaderSource(kind: ShaderKind): Nullable<string>;\r\n getCompileError(): Nullable<string>;\r\n getBindingInfo(name: string): Nullable<BindPointInfo>;\r\n createUniformBuffer(uniform: string): Nullable<StructuredBuffer>;\r\n use(): void;\r\n}\r\n\r\n/**\r\n * Type of values that can be set to a structured buffer\r\n * @public\r\n */\r\nexport type StructuredValue = number | TypedArray | VectorBase | { [name: string]: StructuredValue };\r\n\r\n/**\r\n * Abstract interface for bind group\r\n * @public\r\n */\r\nexport interface BindGroup extends GPUObject<unknown> {\r\n getLayout(): Immutable<BindGroupLayout>;\r\n getDynamicOffsets(): Nullable<Immutable<number[]>>;\r\n getGPUId(): string;\r\n getBuffer(name: string, nocreate?: boolean): Nullable<GPUDataBuffer>;\r\n getTexture(name: string): Nullable<BaseTexture>;\r\n setBuffer(\r\n name: string,\r\n buffer: GPUDataBuffer,\r\n offset?: number,\r\n bindOffset?: number,\r\n bindSize?: number\r\n ): void;\r\n setValue(name: string, value: StructuredValue): void;\r\n setRawData(name: string, byteOffset: number, data: TypedArray, srcPos?: number, srcLength?: number): void;\r\n setTexture(name: string, texture: BaseTexture, sampler?: Nullable<TextureSampler>): void;\r\n setTextureView(\r\n name: string,\r\n value: BaseTexture,\r\n level?: number,\r\n face?: number,\r\n mipCount?: number,\r\n sampler?: Nullable<TextureSampler>\r\n ): void;\r\n setSampler(name: string, sampler: TextureSampler): void;\r\n}\r\n\r\n/**\r\n * Render bundle\r\n * @public\r\n */\r\nexport type RenderBundle = unknown;\r\n\r\n/**\r\n * Creates the default name for the type of given gpu object\r\n * @param obj - The gpu object\r\n * @returns The default name\r\n * @public\r\n */\r\nexport function genDefaultName(obj: GPUObject) {\r\n if (obj.isTexture2D()) {\r\n return 'texture_2d';\r\n } else if (obj.isTexture2DArray()) {\r\n return 'texture_2darray';\r\n } else if (obj.isTexture3D()) {\r\n return 'texture_3d';\r\n } else if (obj.isTextureCube()) {\r\n return 'texture_cube';\r\n } else if (obj.isTextureVideo()) {\r\n return 'texture_video';\r\n } else if (obj.isBuffer()) {\r\n return 'buffer';\r\n } else if (obj.isFramebuffer()) {\r\n return 'framebuffer';\r\n } else if (obj.isProgram()) {\r\n return 'program';\r\n } else if (obj.isSampler()) {\r\n return 'sampler';\r\n } else if (obj.isVertexLayout()) {\r\n return 'vbo';\r\n } else {\r\n return 'unknown';\r\n }\r\n}\r\n"],"names":["MAX_VERTEX_ATTRIBUTES","MAX_BINDING_GROUPS","MAX_TEXCOORD_INDEX_COUNT","VERTEX_ATTRIB_POSITION","VERTEX_ATTRIB_NORMAL","VERTEX_ATTRIB_DIFFUSE","VERTEX_ATTRIB_TANGENT","VERTEX_ATTRIB_TEXCOORD0","VERTEX_ATTRIB_TEXCOORD1","VERTEX_ATTRIB_TEXCOORD2","VERTEX_ATTRIB_TEXCOORD3","VERTEX_ATTRIB_TEXCOORD4","VERTEX_ATTRIB_TEXCOORD5","VERTEX_ATTRIB_TEXCOORD6","VERTEX_ATTRIB_TEXCOORD7","VERTEX_ATTRIB_BLEND_WEIGHT","VERTEX_ATTRIB_BLEND_INDICES","vertexAttribFormatMap","position_u8normx2","PBPrimitiveType","U8VEC2_NORM","position_u8normx4","U8VEC4_NORM","position_i8normx2","I8VEC2_NORM","position_i8normx4","I8VEC4_NORM","position_u16x2","U16VEC2","position_u16x4","U16VEC4","position_i16x2","I16VEC2","position_i16x4","I16VEC4","position_u16normx2","U16VEC2_NORM","position_u16normx4","U16VEC4_NORM","position_i16normx2","I16VEC2_NORM","position_i16normx4","I16VEC4_NORM","position_f16x2","F16VEC2","position_f16x4","F16VEC4","position_f32","F32","position_f32x2","F32VEC2","position_f32x3","F32VEC3","position_f32x4","F32VEC4","position_i32","I32","position_i32x2","I32VEC2","position_i32x3","I32VEC3","position_i32x4","I32VEC4","position_u32","U32","position_u32x2","U32VEC2","position_u32x3","U32VEC3","position_u32x4","U32VEC4","normal_f16x4","normal_f32x3","normal_f32x4","diffuse_u8normx4","diffuse_u16x4","diffuse_u16normx4","diffuse_f16x4","diffuse_f32x3","diffuse_f32x4","diffuse_u32x3","diffuse_u32x4","tangent_f16x4","tangent_f32x3","tangent_f32x4","tex0_u8normx2","tex0_u8normx4","tex0_i8normx2","tex0_i8normx4","tex0_u16x2","tex0_u16x4","tex0_i16x2","tex0_i16x4","tex0_u16normx2","tex0_u16normx4","tex0_i16normx2","tex0_i16normx4","tex0_f16x2","tex0_f16x4","tex0_f32","tex0_f32x2","tex0_f32x3","tex0_f32x4","tex0_i32","tex0_i32x2","tex0_i32x3","tex0_i32x4","tex0_u32","tex0_u32x2","tex0_u32x3","tex0_u32x4","tex1_u8normx2","tex1_u8normx4","tex1_i8normx2","tex1_i8normx4","tex1_u16x2","tex1_u16x4","tex1_i16x2","tex1_i16x4","tex1_u16normx2","tex1_u16normx4","tex1_i16normx2","tex1_i16normx4","tex1_f16x2","tex1_f16x4","tex1_f32","tex1_f32x2","tex1_f32x3","tex1_f32x4","tex1_i32","tex1_i32x2","tex1_i32x3","tex1_i32x4","tex1_u32","tex1_u32x2","tex1_u32x3","tex1_u32x4","tex2_u8normx2","tex2_u8normx4","tex2_i8normx2","tex2_i8normx4","tex2_u16x2","tex2_u16x4","tex2_i16x2","tex2_i16x4","tex2_u16normx2","tex2_u16normx4","tex2_i16normx2","tex2_i16normx4","tex2_f16x2","tex2_f16x4","tex2_f32","tex2_f32x2","tex2_f32x3","tex2_f32x4","tex2_i32","tex2_i32x2","tex2_i32x3","tex2_i32x4","tex2_u32","tex2_u32x2","tex2_u32x3","tex2_u32x4","tex3_u8normx2","tex3_u8normx4","tex3_i8normx2","tex3_i8normx4","tex3_u16x2","tex3_u16x4","tex3_i16x2","tex3_i16x4","tex3_u16normx2","tex3_u16normx4","tex3_i16normx2","tex3_i16normx4","tex3_f16x2","tex3_f16x4","tex3_f32","tex3_f32x2","tex3_f32x3","tex3_f32x4","tex3_i32","tex3_i32x2","tex3_i32x3","tex3_i32x4","tex3_u32","tex3_u32x2","tex3_u32x3","tex3_u32x4","tex4_u8normx2","tex4_u8normx4","tex4_i8normx2","tex4_i8normx4","tex4_u16x2","tex4_u16x4","tex4_i16x2","tex4_i16x4","tex4_u16normx2","tex4_u16normx4","tex4_i16normx2","tex4_i16normx4","tex4_f16x2","tex4_f16x4","tex4_f32","tex4_f32x2","tex4_f32x3","tex4_f32x4","tex4_i32","tex4_i32x2","tex4_i32x3","tex4_i32x4","tex4_u32","tex4_u32x2","tex4_u32x3","tex4_u32x4","tex5_u8normx2","tex5_u8normx4","tex5_i8normx2","tex5_i8normx4","tex5_u16x2","tex5_u16x4","tex5_i16x2","tex5_i16x4","tex5_u16normx2","tex5_u16normx4","tex5_i16normx2","tex5_i16normx4","tex5_f16x2","tex5_f16x4","tex5_f32","tex5_f32x2","tex5_f32x3","tex5_f32x4","tex5_i32","tex5_i32x2","tex5_i32x3","tex5_i32x4","tex5_u32","tex5_u32x2","tex5_u32x3","tex5_u32x4","tex6_u8normx2","tex6_u8normx4","tex6_i8normx2","tex6_i8normx4","tex6_u16x2","tex6_u16x4","tex6_i16x2","tex6_i16x4","tex6_u16normx2","tex6_u16normx4","tex6_i16normx2","tex6_i16normx4","tex6_f16x2","tex6_f16x4","tex6_f32","tex6_f32x2","tex6_f32x3","tex6_f32x4","tex6_i32","tex6_i32x2","tex6_i32x3","tex6_i32x4","tex6_u32","tex6_u32x2","tex6_u32x3","tex6_u32x4","tex7_u8normx2","tex7_u8normx4","tex7_i8normx2","tex7_i8normx4","tex7_u16x2","tex7_u16x4","tex7_i16x2","tex7_i16x4","tex7_u16normx2","tex7_u16normx4","tex7_i16normx2","tex7_i16normx4","tex7_f16x2","tex7_f16x4","tex7_f32","tex7_f32x2","tex7_f32x3","tex7_f32x4","tex7_i32","tex7_i32x2","tex7_i32x3","tex7_i32x4","tex7_u32","tex7_u32x2","tex7_u32x3","tex7_u32x4","blendweights_f16x1","F16","blendweights_f32x1","blendweights_f16x2","blendweights_f32x2","blendweights_f16x3","F16VEC3","blendweights_f32x3","blendweights_f16x4","blendweights_f32x4","blendindices_u16x1","U16","blendindices_f16x1","blendindices_f32x1","blendindices_u32x1","blendindices_u16x2","blendindices_f16x2","blendindices_f32x2","blendindices_u32x2","blendindices_u16x3","U16VEC3","blendindices_f16x3","blendindices_f32x3","blendindices_u32x3","blendindices_u16x4","blendindices_f16x4","blendindices_f32x4","blendindices_u32x4","vertexAttribNameMap","position","normal","diffuse","tangent","blendIndices","blendWeights","texCoord0","texCoord1","texCoord2","texCoord3","texCoord4","texCoord5","texCoord6","texCoord7","vertexAttribNameRevMap","GPUResourceUsageFlags","getVertexAttribByName","name","undefined","getVertexAttribName","attrib","matchVertexBuffer","buffer","bufferType","structure","structMembers","type","isArrayType","vertexType","elementType","isStructType","getVertexAttributeFormat","fmt","getVertexAttributeIndex","getVertexFormatSize","getVertexFormatComponentCount","getVertexAttribFormat","semantic","count","loc","k","v","getVertexBufferLength","vertexBufferType","dimension","getVertexBufferStride","stride","member","getSize","getVertexBufferAttribTypeBySemantic","getVertexBufferAttribType","attribName","makeVertexBufferType","length","attributes","format","PBStructTypeInfo","PBArrayTypeInfo","PBPrimitiveTypeInfo","getCachedTypeInfo","map","semanticList","list","i","push","semanticToAttrib","genDefaultName","obj","isTexture2D","isTexture2DArray","isTexture3D","isTextureCube","isTextureVideo","isBuffer","isFramebuffer","isProgram","isSampler","isVertexLayout"],"mappings":"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"}