@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":"types.js","sources":["../../src/builder/types.ts"],"sourcesContent":["import { ASSERT } from '@zephyr3d/base';\r\nimport type { TextureFormat } from '../base_types';\r\nimport type { UniformBufferLayout } from '../gpuobject';\r\n\r\nconst F16_BITMASK = 1;\r\nconst F32_BITMASK = 2;\r\nconst BOOL_BITMASK = 3;\r\nconst I8_BITMASK = 4;\r\nconst I16_BITMASK = 5;\r\nconst I32_BITMASK = 6;\r\nconst U8_BITMASK = 7;\r\nconst U16_BITMASK = 8;\r\nconst U32_BITMASK = 9;\r\nconst SCALAR_TYPE_BITMASK = 15;\r\nconst ROWS_BITMASK = 7;\r\nconst ROWS_BITSHIFT = 4;\r\nconst COLS_BITMASK = 7;\r\nconst COLS_BITSHIFT = 7;\r\nconst NORM_BITMASK = 1;\r\nconst NORM_BITSHIFT = 10;\r\n\r\ntype LayoutableType =\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBStructTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo;\r\n\r\nfunction align(n: number, alignment: number): number {\r\n return (n + alignment - 1) & ~(alignment - 1);\r\n}\r\n\r\nfunction getAlignment(type: LayoutableType): number {\r\n if (type.isPrimitiveType()) {\r\n return type.isScalarType() ? 4 : 1 << Math.min(4, type.cols + 1);\r\n } else if (type.isAtomicI32() || type.isAtomicU32()) {\r\n return 4;\r\n } else if (type.isArrayType()) {\r\n return type.elementType.isAnyType() ? 1 : getAlignment(type.elementType);\r\n } else {\r\n let alignment = 0;\r\n for (const member of type.structMembers) {\r\n alignment = Math.max(alignment, getAlignment(member.type));\r\n }\r\n return Math.max(alignment, 16);\r\n }\r\n}\r\nfunction getAlignmentPacked(_type: LayoutableType): number {\r\n return 1;\r\n}\r\nfunction getSize(type: LayoutableType): number {\r\n if (type.isPrimitiveType()) {\r\n return type.isMatrixType()\r\n ? type.rows * getAlignment(PBPrimitiveTypeInfo.getCachedTypeInfo(type.resizeType(1, type.cols)))\r\n : 4 * type.cols;\r\n } else if (type.isArrayType()) {\r\n return type.elementType.isAnyType()\r\n ? 0\r\n : type.dimension * align(getSize(type.elementType), getAlignment(type.elementType));\r\n } else if (type.isAtomicI32() || type.isAtomicU32()) {\r\n return 4;\r\n } else {\r\n let size = 0;\r\n let structAlignment = 0;\r\n for (const member of type.structMembers) {\r\n const memberAlignment = getAlignment(member.type);\r\n size = align(size, memberAlignment);\r\n size += getSize(member.type);\r\n structAlignment = Math.max(structAlignment, memberAlignment);\r\n }\r\n return align(size, structAlignment);\r\n }\r\n}\r\nfunction getSizePacked(type: LayoutableType): number {\r\n if (type.isPrimitiveType()) {\r\n let scalarSize: number;\r\n switch (type.scalarType) {\r\n case PBPrimitiveType.U8:\r\n case PBPrimitiveType.U8_NORM:\r\n case PBPrimitiveType.I8:\r\n case PBPrimitiveType.I8_NORM:\r\n scalarSize = 1;\r\n break;\r\n case PBPrimitiveType.F16:\r\n case PBPrimitiveType.I16:\r\n case PBPrimitiveType.I16_NORM:\r\n case PBPrimitiveType.U16:\r\n case PBPrimitiveType.U16_NORM:\r\n scalarSize = 2;\r\n break;\r\n default:\r\n scalarSize = 4;\r\n break;\r\n }\r\n return type.rows * type.cols * scalarSize;\r\n } else if (type.isArrayType()) {\r\n return type.elementType.isAnyType() ? 0 : type.dimension * getSizePacked(type.elementType);\r\n } else if (type.isAtomicI32() || type.isAtomicU32()) {\r\n return 4;\r\n } else {\r\n let size = 0;\r\n for (const member of type.structMembers) {\r\n size += getSizePacked(member.type);\r\n }\r\n return size;\r\n }\r\n}\r\n\r\nfunction makePrimitiveType(scalarTypeMask: number, rows: number, cols: number, norm: 0 | 1): PBPrimitiveType {\r\n return scalarTypeMask | (rows << ROWS_BITSHIFT) | (cols << COLS_BITSHIFT) | (norm << NORM_BITSHIFT);\r\n}\r\n\r\nfunction typeToTypedArray(type: LayoutableType): PBPrimitiveType {\r\n if (type.isPrimitiveType()) {\r\n return type.scalarType;\r\n } else if (type.isArrayType()) {\r\n return type.elementType.isAnyType() ? null : typeToTypedArray(type.elementType);\r\n } else {\r\n return PBPrimitiveType.U8;\r\n }\r\n}\r\n\r\n/**\r\n * Struct layout types\r\n * @public\r\n */\r\nexport type PBStructLayout = 'default' | 'std140' | 'std430' | 'packed';\r\n\r\n/**\r\n * Primitive types\r\n * @public\r\n */\r\nexport enum PBPrimitiveType {\r\n NONE = 0,\r\n F16 = makePrimitiveType(F16_BITMASK, 1, 1, 0),\r\n F16VEC2 = makePrimitiveType(F16_BITMASK, 1, 2, 0),\r\n F16VEC3 = makePrimitiveType(F16_BITMASK, 1, 3, 0),\r\n F16VEC4 = makePrimitiveType(F16_BITMASK, 1, 4, 0),\r\n F32 = makePrimitiveType(F32_BITMASK, 1, 1, 0),\r\n F32VEC2 = makePrimitiveType(F32_BITMASK, 1, 2, 0),\r\n F32VEC3 = makePrimitiveType(F32_BITMASK, 1, 3, 0),\r\n F32VEC4 = makePrimitiveType(F32_BITMASK, 1, 4, 0),\r\n BOOL = makePrimitiveType(BOOL_BITMASK, 1, 1, 0),\r\n BVEC2 = makePrimitiveType(BOOL_BITMASK, 1, 2, 0),\r\n BVEC3 = makePrimitiveType(BOOL_BITMASK, 1, 3, 0),\r\n BVEC4 = makePrimitiveType(BOOL_BITMASK, 1, 4, 0),\r\n I8 = makePrimitiveType(I8_BITMASK, 1, 1, 0),\r\n I8VEC2 = makePrimitiveType(I8_BITMASK, 1, 2, 0),\r\n I8VEC3 = makePrimitiveType(I8_BITMASK, 1, 3, 0),\r\n I8VEC4 = makePrimitiveType(I8_BITMASK, 1, 4, 0),\r\n I8_NORM = makePrimitiveType(I8_BITMASK, 1, 1, 1),\r\n I8VEC2_NORM = makePrimitiveType(I8_BITMASK, 1, 2, 1),\r\n I8VEC3_NORM = makePrimitiveType(I8_BITMASK, 1, 3, 1),\r\n I8VEC4_NORM = makePrimitiveType(I8_BITMASK, 1, 4, 1),\r\n I16 = makePrimitiveType(I16_BITMASK, 1, 1, 0),\r\n I16VEC2 = makePrimitiveType(I16_BITMASK, 1, 2, 0),\r\n I16VEC3 = makePrimitiveType(I16_BITMASK, 1, 3, 0),\r\n I16VEC4 = makePrimitiveType(I16_BITMASK, 1, 4, 0),\r\n I16_NORM = makePrimitiveType(I16_BITMASK, 1, 1, 1),\r\n I16VEC2_NORM = makePrimitiveType(I16_BITMASK, 1, 2, 1),\r\n I16VEC3_NORM = makePrimitiveType(I16_BITMASK, 1, 3, 1),\r\n I16VEC4_NORM = makePrimitiveType(I16_BITMASK, 1, 4, 1),\r\n I32 = makePrimitiveType(I32_BITMASK, 1, 1, 0),\r\n I32VEC2 = makePrimitiveType(I32_BITMASK, 1, 2, 0),\r\n I32VEC3 = makePrimitiveType(I32_BITMASK, 1, 3, 0),\r\n I32VEC4 = makePrimitiveType(I32_BITMASK, 1, 4, 0),\r\n I32_NORM = makePrimitiveType(I32_BITMASK, 1, 1, 1),\r\n I32VEC2_NORM = makePrimitiveType(I32_BITMASK, 1, 2, 1),\r\n I32VEC3_NORM = makePrimitiveType(I32_BITMASK, 1, 3, 1),\r\n I32VEC4_NORM = makePrimitiveType(I32_BITMASK, 1, 4, 1),\r\n U8 = makePrimitiveType(U8_BITMASK, 1, 1, 0),\r\n U8VEC2 = makePrimitiveType(U8_BITMASK, 1, 2, 0),\r\n U8VEC3 = makePrimitiveType(U8_BITMASK, 1, 3, 0),\r\n U8VEC4 = makePrimitiveType(U8_BITMASK, 1, 4, 0),\r\n U8_NORM = makePrimitiveType(U8_BITMASK, 1, 1, 1),\r\n U8VEC2_NORM = makePrimitiveType(U8_BITMASK, 1, 2, 1),\r\n U8VEC3_NORM = makePrimitiveType(U8_BITMASK, 1, 3, 1),\r\n U8VEC4_NORM = makePrimitiveType(U8_BITMASK, 1, 4, 1),\r\n U16 = makePrimitiveType(U16_BITMASK, 1, 1, 0),\r\n U16VEC2 = makePrimitiveType(U16_BITMASK, 1, 2, 0),\r\n U16VEC3 = makePrimitiveType(U16_BITMASK, 1, 3, 0),\r\n U16VEC4 = makePrimitiveType(U16_BITMASK, 1, 4, 0),\r\n U16_NORM = makePrimitiveType(U16_BITMASK, 1, 1, 1),\r\n U16VEC2_NORM = makePrimitiveType(U16_BITMASK, 1, 2, 1),\r\n U16VEC3_NORM = makePrimitiveType(U16_BITMASK, 1, 3, 1),\r\n U16VEC4_NORM = makePrimitiveType(U16_BITMASK, 1, 4, 1),\r\n U32 = makePrimitiveType(U32_BITMASK, 1, 1, 0),\r\n U32VEC2 = makePrimitiveType(U32_BITMASK, 1, 2, 0),\r\n U32VEC3 = makePrimitiveType(U32_BITMASK, 1, 3, 0),\r\n U32VEC4 = makePrimitiveType(U32_BITMASK, 1, 4, 0),\r\n U32_NORM = makePrimitiveType(U32_BITMASK, 1, 1, 1),\r\n U32VEC2_NORM = makePrimitiveType(U32_BITMASK, 1, 2, 1),\r\n U32VEC3_NORM = makePrimitiveType(U32_BITMASK, 1, 3, 1),\r\n U32VEC4_NORM = makePrimitiveType(U32_BITMASK, 1, 4, 1),\r\n MAT2 = makePrimitiveType(F32_BITMASK, 2, 2, 0),\r\n MAT2x3 = makePrimitiveType(F32_BITMASK, 2, 3, 0),\r\n MAT2x4 = makePrimitiveType(F32_BITMASK, 2, 4, 0),\r\n MAT3x2 = makePrimitiveType(F32_BITMASK, 3, 2, 0),\r\n MAT3 = makePrimitiveType(F32_BITMASK, 3, 3, 0),\r\n MAT3x4 = makePrimitiveType(F32_BITMASK, 3, 4, 0),\r\n MAT4x2 = makePrimitiveType(F32_BITMASK, 4, 2, 0),\r\n MAT4x3 = makePrimitiveType(F32_BITMASK, 4, 3, 0),\r\n MAT4 = makePrimitiveType(F32_BITMASK, 4, 4, 0)\r\n}\r\n\r\nconst primitiveTypeMapWebGL = {\r\n [PBPrimitiveType.F32]: 'float',\r\n [PBPrimitiveType.F32VEC2]: 'vec2',\r\n [PBPrimitiveType.F32VEC3]: 'vec3',\r\n [PBPrimitiveType.F32VEC4]: 'vec4',\r\n [PBPrimitiveType.BOOL]: 'bool',\r\n [PBPrimitiveType.BVEC2]: 'bvec2',\r\n [PBPrimitiveType.BVEC3]: 'bvec3',\r\n [PBPrimitiveType.BVEC4]: 'bvec4',\r\n [PBPrimitiveType.I32]: 'int',\r\n [PBPrimitiveType.I32VEC2]: 'ivec2',\r\n [PBPrimitiveType.I32VEC3]: 'ivec3',\r\n [PBPrimitiveType.I32VEC4]: 'ivec4',\r\n [PBPrimitiveType.U32]: 'uint',\r\n [PBPrimitiveType.U32VEC2]: 'uvec2',\r\n [PBPrimitiveType.U32VEC3]: 'uvec3',\r\n [PBPrimitiveType.U32VEC4]: 'uvec4',\r\n [PBPrimitiveType.MAT2]: 'mat2',\r\n [PBPrimitiveType.MAT2x3]: 'mat2x3',\r\n [PBPrimitiveType.MAT2x4]: 'mat2x4',\r\n [PBPrimitiveType.MAT3x2]: 'mat3x2',\r\n [PBPrimitiveType.MAT3]: 'mat3',\r\n [PBPrimitiveType.MAT3x4]: 'mat3x4',\r\n [PBPrimitiveType.MAT4x2]: 'mat4x2',\r\n [PBPrimitiveType.MAT4x3]: 'mat4x3',\r\n [PBPrimitiveType.MAT4]: 'mat4'\r\n};\r\n\r\nconst primitiveTypeMapWGSL = {\r\n [PBPrimitiveType.F32]: 'f32',\r\n [PBPrimitiveType.F32VEC2]: 'vec2<f32>',\r\n [PBPrimitiveType.F32VEC3]: 'vec3<f32>',\r\n [PBPrimitiveType.F32VEC4]: 'vec4<f32>',\r\n [PBPrimitiveType.BOOL]: 'bool',\r\n [PBPrimitiveType.BVEC2]: 'vec2<bool>',\r\n [PBPrimitiveType.BVEC3]: 'vec3<bool>',\r\n [PBPrimitiveType.BVEC4]: 'vec4<bool>',\r\n [PBPrimitiveType.I32]: 'i32',\r\n [PBPrimitiveType.I32VEC2]: 'vec2<i32>',\r\n [PBPrimitiveType.I32VEC3]: 'vec3<i32>',\r\n [PBPrimitiveType.I32VEC4]: 'vec4<i32>',\r\n [PBPrimitiveType.U32]: 'u32',\r\n [PBPrimitiveType.U32VEC2]: 'vec2<u32>',\r\n [PBPrimitiveType.U32VEC3]: 'vec3<u32>',\r\n [PBPrimitiveType.U32VEC4]: 'vec4<u32>',\r\n [PBPrimitiveType.MAT2]: 'mat2x2<f32>',\r\n [PBPrimitiveType.MAT2x3]: 'mat2x3<f32>',\r\n [PBPrimitiveType.MAT2x4]: 'mat2x4<f32>',\r\n [PBPrimitiveType.MAT3x2]: 'mat3x2<f32>',\r\n [PBPrimitiveType.MAT3]: 'mat3x3<f32>',\r\n [PBPrimitiveType.MAT3x4]: 'mat3x4<f32>',\r\n [PBPrimitiveType.MAT4x2]: 'mat4x2<f32>',\r\n [PBPrimitiveType.MAT4x3]: 'mat4x3<f32>',\r\n [PBPrimitiveType.MAT4]: 'mat4x4<f32>'\r\n};\r\n\r\nconst BITFLAG_1D = 1 << 0;\r\nconst BITFLAG_2D = 1 << 1;\r\nconst BITFLAG_3D = 1 << 2;\r\nconst BITFLAG_CUBE = 1 << 3;\r\nconst BITFLAG_ARRAY = 1 << 4;\r\nconst BITFLAG_MULTISAMPLED = 1 << 5;\r\nconst BITFLAG_STORAGE = 1 << 6;\r\nconst BITFLAG_DEPTH = 1 << 7;\r\nconst BITFLAG_FLOAT = 1 << 8;\r\nconst BITFLAG_INT = 1 << 9;\r\nconst BITFLAG_UINT = 1 << 10;\r\nconst BITFLAG_EXTERNAL = 1 << 11;\r\n\r\n/**\r\n * Texture types\r\n * @public\r\n */\r\nexport enum PBTextureType {\r\n TEX_1D = BITFLAG_1D | BITFLAG_FLOAT,\r\n ITEX_1D = BITFLAG_1D | BITFLAG_INT,\r\n UTEX_1D = BITFLAG_1D | BITFLAG_UINT,\r\n TEX_2D = BITFLAG_2D | BITFLAG_FLOAT,\r\n ITEX_2D = BITFLAG_2D | BITFLAG_INT,\r\n UTEX_2D = BITFLAG_2D | BITFLAG_UINT,\r\n TEX_2D_ARRAY = BITFLAG_2D | BITFLAG_FLOAT | BITFLAG_ARRAY,\r\n ITEX_2D_ARRAY = BITFLAG_2D | BITFLAG_INT | BITFLAG_ARRAY,\r\n UTEX_2D_ARRAY = BITFLAG_2D | BITFLAG_UINT | BITFLAG_ARRAY,\r\n TEX_3D = BITFLAG_3D | BITFLAG_FLOAT,\r\n ITEX_3D = BITFLAG_3D | BITFLAG_INT,\r\n UTEX_3D = BITFLAG_3D | BITFLAG_UINT,\r\n TEX_CUBE = BITFLAG_CUBE | BITFLAG_FLOAT,\r\n ITEX_CUBE = BITFLAG_CUBE | BITFLAG_INT,\r\n UTEX_CUBE = BITFLAG_CUBE | BITFLAG_UINT,\r\n TEX_CUBE_ARRAY = BITFLAG_CUBE | BITFLAG_FLOAT | BITFLAG_ARRAY,\r\n ITEX_CUBE_ARRAY = BITFLAG_CUBE | BITFLAG_INT | BITFLAG_ARRAY,\r\n UTEX_CUBE_ARRAY = BITFLAG_CUBE | BITFLAG_UINT | BITFLAG_ARRAY,\r\n TEX_MULTISAMPLED_2D = BITFLAG_2D | BITFLAG_FLOAT | BITFLAG_MULTISAMPLED,\r\n ITEX_MULTISAMPLED_2D = BITFLAG_2D | BITFLAG_INT | BITFLAG_MULTISAMPLED,\r\n UTEX_MULTISAMPLED_2D = BITFLAG_2D | BITFLAG_UINT | BITFLAG_MULTISAMPLED,\r\n TEX_STORAGE_1D = BITFLAG_1D | BITFLAG_STORAGE,\r\n TEX_STORAGE_2D = BITFLAG_2D | BITFLAG_STORAGE,\r\n TEX_STORAGE_2D_ARRAY = BITFLAG_2D | BITFLAG_ARRAY | BITFLAG_STORAGE,\r\n TEX_STORAGE_3D = BITFLAG_3D | BITFLAG_STORAGE,\r\n TEX_DEPTH_2D = BITFLAG_2D | BITFLAG_DEPTH,\r\n TEX_DEPTH_2D_ARRAY = BITFLAG_2D | BITFLAG_ARRAY | BITFLAG_DEPTH,\r\n TEX_DEPTH_CUBE = BITFLAG_CUBE | BITFLAG_DEPTH,\r\n TEX_DEPTH_CUBE_ARRAY = BITFLAG_CUBE | BITFLAG_ARRAY | BITFLAG_DEPTH,\r\n TEX_DEPTH_MULTISAMPLED_2D = BITFLAG_2D | BITFLAG_MULTISAMPLED | BITFLAG_DEPTH,\r\n TEX_EXTERNAL = BITFLAG_EXTERNAL\r\n}\r\n\r\nconst textureTypeMapWebGL = {\r\n [PBTextureType.TEX_1D]: 'highp sampler2D',\r\n [PBTextureType.TEX_2D]: 'highp sampler2D',\r\n [PBTextureType.TEX_CUBE]: 'highp samplerCube',\r\n [PBTextureType.TEX_EXTERNAL]: 'highp sampler2D'\r\n};\r\n\r\nconst textureTypeMapWebGL2 = {\r\n [PBTextureType.TEX_1D]: 'highp sampler2D',\r\n [PBTextureType.TEX_2D]: 'highp sampler2D',\r\n [PBTextureType.ITEX_1D]: 'highp isampler2D',\r\n [PBTextureType.ITEX_2D]: 'highp isampler2D',\r\n [PBTextureType.UTEX_1D]: 'highp usampler2D',\r\n [PBTextureType.UTEX_2D]: 'highp usampler2D',\r\n [PBTextureType.TEX_2D_ARRAY]: 'highp sampler2DArray',\r\n [PBTextureType.ITEX_2D_ARRAY]: 'highp isampler2DArray',\r\n [PBTextureType.UTEX_2D_ARRAY]: 'highp usampler2DArray',\r\n [PBTextureType.TEX_3D]: 'highp sampler3D',\r\n [PBTextureType.ITEX_3D]: 'highp isampler3D',\r\n [PBTextureType.UTEX_3D]: 'highp usampler3D',\r\n [PBTextureType.TEX_CUBE]: 'highp samplerCube',\r\n [PBTextureType.ITEX_CUBE]: 'highp isamplerCube',\r\n [PBTextureType.UTEX_CUBE]: 'highp usamplerCube',\r\n [PBTextureType.TEX_DEPTH_2D]: 'highp sampler2DShadow',\r\n [PBTextureType.TEX_DEPTH_2D_ARRAY]: 'highp sampler2DArrayShadow',\r\n [PBTextureType.TEX_DEPTH_CUBE]: 'highp samplerCubeShadow',\r\n [PBTextureType.TEX_EXTERNAL]: 'highp sampler2D'\r\n};\r\n\r\nconst textureTypeMapWGSL = {\r\n [PBTextureType.TEX_1D]: 'texture_1d<f32>',\r\n [PBTextureType.ITEX_1D]: 'texture_1d<i32>',\r\n [PBTextureType.UTEX_1D]: 'texture_1d<u32>',\r\n [PBTextureType.TEX_2D]: 'texture_2d<f32>',\r\n [PBTextureType.ITEX_2D]: 'texture_2d<i32>',\r\n [PBTextureType.UTEX_2D]: 'texture_2d<u32>',\r\n [PBTextureType.TEX_2D_ARRAY]: 'texture_2d_array<f32>',\r\n [PBTextureType.ITEX_2D_ARRAY]: 'texture_2d_array<i32>',\r\n [PBTextureType.UTEX_2D_ARRAY]: 'texture_2d_array<u32>',\r\n [PBTextureType.TEX_3D]: 'texture_3d<f32>',\r\n [PBTextureType.ITEX_3D]: 'texture_3d<i32>',\r\n [PBTextureType.UTEX_3D]: 'texture_3d<u32>',\r\n [PBTextureType.TEX_CUBE]: 'texture_cube<f32>',\r\n [PBTextureType.ITEX_CUBE]: 'texture_cube<i32>',\r\n [PBTextureType.UTEX_CUBE]: 'texture_cube<u32>',\r\n [PBTextureType.TEX_CUBE_ARRAY]: 'texture_cube_array<f32>',\r\n [PBTextureType.ITEX_CUBE_ARRAY]: 'texture_cube_array<i32>',\r\n [PBTextureType.UTEX_CUBE_ARRAY]: 'texture_cube_array<u32>',\r\n [PBTextureType.TEX_MULTISAMPLED_2D]: 'texture_multisampled_2d<f32>',\r\n [PBTextureType.ITEX_MULTISAMPLED_2D]: 'texture_multisampled_2d<i32>',\r\n [PBTextureType.UTEX_MULTISAMPLED_2D]: 'texture_multisampled_2d<u32>',\r\n [PBTextureType.TEX_STORAGE_1D]: 'texture_storage_1d',\r\n [PBTextureType.TEX_STORAGE_2D]: 'texture_storage_2d',\r\n [PBTextureType.TEX_STORAGE_2D_ARRAY]: 'texture_storage_2d_array',\r\n [PBTextureType.TEX_STORAGE_3D]: 'texture_storage_3d',\r\n [PBTextureType.TEX_DEPTH_2D]: 'texture_depth_2d',\r\n [PBTextureType.TEX_DEPTH_2D_ARRAY]: 'texture_depth_2d_array',\r\n [PBTextureType.TEX_DEPTH_CUBE]: 'texture_depth_cube',\r\n [PBTextureType.TEX_DEPTH_CUBE_ARRAY]: 'texture_depth_cube_array',\r\n [PBTextureType.TEX_DEPTH_MULTISAMPLED_2D]: 'texture_depth_multisampled_2d',\r\n [PBTextureType.TEX_EXTERNAL]: 'texture_external'\r\n};\r\n\r\nconst storageTexelFormatMap = {\r\n rgba8unorm: 'rgba8unorm',\r\n rgba8snorm: 'rgba8snorm',\r\n bgra8unorm: 'bgra8unorm',\r\n rgba8ui: 'rgba8uint',\r\n rgba8i: 'rgba8sint',\r\n rgba16ui: 'rgba16uint',\r\n rgba16i: 'rgba16sint',\r\n rgba16f: 'rgba16float',\r\n r32f: 'r32float',\r\n r32ui: 'r32uint',\r\n r32i: 'r32sint',\r\n rg32f: 'rg32float',\r\n rg32ui: 'rg32uint',\r\n rg32i: 'rg32sint',\r\n rgba32f: 'rgba32float',\r\n rgba32ui: 'rgba32uint',\r\n rgba32i: 'rgba32sint'\r\n} as const;\r\n\r\n/**\r\n * Sampler access mode\r\n * @public\r\n */\r\nexport enum PBSamplerAccessMode {\r\n UNKNOWN = 0,\r\n SAMPLE,\r\n COMPARISON\r\n}\r\n\r\n/**\r\n * Shader variable address space\r\n * @public\r\n */\r\nexport enum PBAddressSpace {\r\n UNKNOWN = 'unknown',\r\n FUNCTION = 'function',\r\n PRIVATE = 'private',\r\n WORKGROUP = 'workgroup',\r\n UNIFORM = 'uniform',\r\n STORAGE = 'storage'\r\n}\r\n\r\nenum PBTypeClass {\r\n UNKNOWN = 0,\r\n PLAIN,\r\n ARRAY,\r\n POINTER,\r\n ATOMIC_I32,\r\n ATOMIC_U32,\r\n TEXTURE,\r\n SAMPLER,\r\n FUNCTION,\r\n VOID,\r\n ANY\r\n}\r\n\r\n/**\r\n * Type detail information\r\n * @public\r\n */\r\nexport type TypeDetailInfo =\r\n | PrimitiveTypeDetail\r\n | StructTypeDetail\r\n | ArrayTypeDetail\r\n | PointerTypeDetail\r\n | AtomicTypeInfoDetail\r\n | SamplerTypeDetail\r\n | TextureTypeDetail\r\n | FunctionTypeDetail\r\n | null;\r\n\r\n/**\r\n * Detail informations for primitive type\r\n * @public\r\n */\r\nexport interface PrimitiveTypeDetail {\r\n primitiveType?: PBPrimitiveType;\r\n}\r\n\r\n/**\r\n * Detail informations for struct type\r\n * @public\r\n */\r\nexport interface StructTypeDetail {\r\n /** Layout of the struct type */\r\n layout: PBStructLayout;\r\n /** Name of the struct type */\r\n structName?: string;\r\n /** Members of the struct type */\r\n structMembers?: {\r\n /** Name of the struct member */\r\n name: string;\r\n /** Type of the struct member */\r\n type:\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo\r\n | PBStructTypeInfo;\r\n /** Alignment of the struct member */\r\n alignment: number;\r\n /** Byte size of the struct member */\r\n size: number;\r\n /** @internal */\r\n defaultAlignment: number;\r\n /** @internal */\r\n defaultSize: number;\r\n }[];\r\n}\r\n\r\n/**\r\n * Detail informations for array type\r\n * @public\r\n */\r\nexport interface ArrayTypeDetail {\r\n /** Type of array elements */\r\n elementType:\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBStructTypeInfo\r\n | PBAnyTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo;\r\n /** Array dimension */\r\n dimension: number;\r\n}\r\n\r\n/**\r\n * Detail informations for pointer type\r\n * @public\r\n */\r\nexport interface PointerTypeDetail {\r\n /** Type of the pointer */\r\n pointerType: PBTypeInfo;\r\n /** Address space of the pointer */\r\n addressSpace: PBAddressSpace;\r\n}\r\n\r\n/**\r\n * Detail information for atomic type\r\n * @public\r\n */\r\nexport interface AtomicTypeInfoDetail {\r\n /** Primitive type of the atomic type */\r\n type: PBPrimitiveType;\r\n}\r\n\r\n/**\r\n * Detail informations for sampler type\r\n * @public\r\n */\r\nexport interface SamplerTypeDetail {\r\n /** Access mode of the sampler type */\r\n accessMode: PBSamplerAccessMode;\r\n}\r\n\r\n/**\r\n * Detail informations for texture type\r\n * @public\r\n */\r\nexport interface TextureTypeDetail {\r\n /** type of the texture */\r\n textureType: PBTextureType;\r\n /** texture format if this is a storage texture */\r\n storageTexelFormat: TextureFormat;\r\n /** true if this is a readable storage texture type */\r\n readable: boolean;\r\n /** true if this is a writable storage texture type */\r\n writable: boolean;\r\n}\r\n\r\n/**\r\n * Detail information for a function type\r\n * @public\r\n */\r\nexport interface FunctionTypeDetail {\r\n /** The function name */\r\n name: string;\r\n /** Return type of the function */\r\n returnType: PBTypeInfo;\r\n /** Type information for function arguments */\r\n argTypes: {\r\n /** Type of the argument */\r\n type: PBTypeInfo;\r\n /** true if this argument will be passed by reference */\r\n byRef?: boolean;\r\n }[];\r\n}\r\n\r\n/**\r\n * Abstract base class for any type\r\n * @public\r\n */\r\nexport abstract class PBTypeInfo<DetailType extends TypeDetailInfo = TypeDetailInfo> {\r\n /** @internal */\r\n cls: PBTypeClass;\r\n /** @internal */\r\n detail: DetailType;\r\n /** @internal */\r\n protected id: string;\r\n /** @internal */\r\n constructor(cls: PBTypeClass, detail: DetailType) {\r\n this.cls = cls;\r\n this.detail = detail;\r\n this.id = null;\r\n }\r\n /** Get unique id for this type */\r\n get typeId(): string {\r\n if (!this.id) {\r\n this.id = this.genTypeId();\r\n }\r\n return this.id;\r\n }\r\n /** returns true if this is a void type */\r\n isVoidType(): this is PBVoidTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is an any type */\r\n isAnyType(): this is PBAnyTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is a primitive type */\r\n isPrimitiveType(): this is PBPrimitiveTypeInfo {\r\n return false;\r\n }\r\n /** Wether this type have atomic members */\r\n haveAtomicMembers(): boolean {\r\n return false;\r\n }\r\n /** returns true if this is a struct type */\r\n isStructType(): this is PBStructTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is an array type */\r\n isArrayType(): this is PBArrayTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is a pointer type */\r\n isPointerType(): this is PBPointerTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is an atomic int type */\r\n isAtomicI32(): this is PBAtomicI32TypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is an atomic uint type */\r\n isAtomicU32(): this is PBAtomicU32TypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is a sampler type */\r\n isSamplerType(): this is PBSamplerTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is a texture type */\r\n isTextureType(): this is PBTextureTypeInfo {\r\n return false;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return false;\r\n }\r\n /** @internal */\r\n isConstructible(): boolean {\r\n return false;\r\n }\r\n /** @internal */\r\n isStorable(): boolean {\r\n return false;\r\n }\r\n /** @internal */\r\n getConstructorOverloads(_deviceType: string): PBFunctionTypeInfo[] {\r\n return [];\r\n }\r\n /**\r\n * Check whether a given type is compatible with this type\r\n * @param other - The type to be checked\r\n * @returns true if the given type is compatible with this type, othewise false\r\n */\r\n isCompatibleType(other: PBTypeInfo): boolean {\r\n return other.typeId === this.typeId;\r\n }\r\n /**\r\n * Creates a buffer layout from this type\r\n * @param offset - Byte offset of the layout\r\n * @param layout - Type of the layout\r\n * @returns The created buffer layout\r\n */\r\n abstract toBufferLayout(offset: number, layout: PBStructLayout): UniformBufferLayout;\r\n /** @internal */\r\n abstract toTypeName(deviceType?: string, varName?: string): string;\r\n /** @internal */\r\n protected abstract genTypeId(): string;\r\n}\r\n\r\n/**\r\n * The void type info\r\n * @public\r\n */\r\nexport class PBVoidTypeInfo extends PBTypeInfo<null> {\r\n constructor() {\r\n super(PBTypeClass.VOID, null);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isVoidType} */\r\n isVoidType(): this is PBVoidTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(): string {\r\n return 'void';\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return 'void';\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * The void type info\r\n * @public\r\n */\r\nexport class PBAnyTypeInfo extends PBTypeInfo<null> {\r\n constructor() {\r\n super(PBTypeClass.ANY, null);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isAnyType} */\r\n isAnyType(): this is PBAnyTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(): string {\r\n return 'any';\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return 'any';\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n /** {@inheritDoc PBTypeInfo.isCompatibleType} */\r\n isCompatibleType(_other: PBTypeInfo<TypeDetailInfo>): boolean {\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * The primitive type info\r\n * @public\r\n */\r\nexport class PBPrimitiveTypeInfo extends PBTypeInfo<PrimitiveTypeDetail> {\r\n /** @internal */\r\n private static cachedTypes: Record<number, PBPrimitiveTypeInfo> = {};\r\n /** @internal */\r\n private static cachedCtorOverloads: {\r\n [deviceType: string]: Record<number, PBFunctionTypeInfo[]>;\r\n } = {};\r\n constructor(type: PBPrimitiveType) {\r\n super(PBTypeClass.PLAIN, { primitiveType: type });\r\n }\r\n /** Get or create a PBPrimitiveTypeInfo instance for a given prmitive type */\r\n static getCachedTypeInfo(primitiveType: PBPrimitiveType): PBPrimitiveTypeInfo {\r\n let typeinfo = this.cachedTypes[primitiveType];\r\n if (!typeinfo) {\r\n typeinfo = new PBPrimitiveTypeInfo(primitiveType);\r\n this.cachedTypes[primitiveType] = typeinfo;\r\n }\r\n return typeinfo;\r\n }\r\n /** @internal */\r\n static getCachedOverloads(deviceType: string, primitiveType: PBPrimitiveType): PBFunctionTypeInfo[] {\r\n let deviceOverloads = this.cachedCtorOverloads[deviceType];\r\n if (!deviceOverloads) {\r\n deviceOverloads = {};\r\n this.cachedCtorOverloads[deviceType] = deviceOverloads;\r\n }\r\n let result = deviceOverloads[primitiveType];\r\n if (!result) {\r\n const typeinfo = this.getCachedTypeInfo(primitiveType);\r\n const name = typeinfo.toTypeName(deviceType);\r\n result = [new PBFunctionTypeInfo(name, typeinfo, [])];\r\n if (typeinfo.isScalarType()) {\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [{ type: this.getCachedTypeInfo(PBPrimitiveType.F32) }])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [{ type: this.getCachedTypeInfo(PBPrimitiveType.I32) }])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [{ type: this.getCachedTypeInfo(PBPrimitiveType.U32) }])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [{ type: this.getCachedTypeInfo(PBPrimitiveType.BOOL) }])\r\n );\r\n } else if (typeinfo.isVectorType()) {\r\n const scalarTypeInfo = { type: this.getCachedTypeInfo(typeinfo.scalarType) };\r\n const vec2TypeInfo = { type: this.getCachedTypeInfo(typeinfo.resizeType(1, 2)) };\r\n const vec3TypeInfo = { type: this.getCachedTypeInfo(typeinfo.resizeType(1, 3)) };\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo]));\r\n switch (typeinfo.cols) {\r\n case 2:\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, scalarTypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeF32Vec2 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeI32Vec2 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeU32Vec2 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeBVec2 }]));\r\n break;\r\n case 3:\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, scalarTypeInfo, scalarTypeInfo])\r\n );\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, vec2TypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [vec2TypeInfo, scalarTypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeF32Vec3 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeI32Vec3 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeU32Vec3 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeBVec3 }]));\r\n break;\r\n case 4:\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [\r\n scalarTypeInfo,\r\n scalarTypeInfo,\r\n scalarTypeInfo,\r\n scalarTypeInfo\r\n ])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, scalarTypeInfo, vec2TypeInfo])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, vec2TypeInfo, scalarTypeInfo])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [vec2TypeInfo, scalarTypeInfo, scalarTypeInfo])\r\n );\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [vec2TypeInfo, vec2TypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, vec3TypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [vec3TypeInfo, scalarTypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeF32Vec4 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeI32Vec4 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeU32Vec4 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeBVec4 }]));\r\n }\r\n } else if (typeinfo.isMatrixType()) {\r\n const colType = this.getCachedTypeInfo(typeinfo.resizeType(1, typeinfo.cols));\r\n result.push(\r\n new PBFunctionTypeInfo(\r\n name,\r\n typeinfo,\r\n Array.from({ length: typeinfo.rows }).map(() => ({ type: colType }))\r\n )\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(\r\n name,\r\n typeinfo,\r\n Array.from({ length: typeinfo.rows * typeinfo.cols }).map(() => ({ type: typeF32 }))\r\n )\r\n );\r\n }\r\n deviceOverloads[primitiveType] = result;\r\n }\r\n return result;\r\n }\r\n /** Get the primitive type */\r\n get primitiveType(): PBPrimitiveType {\r\n return this.detail.primitiveType;\r\n }\r\n /** Whether the type is signed or unsigned integer scalar or vector */\r\n isInteger(): boolean {\r\n const st = this.primitiveType & SCALAR_TYPE_BITMASK;\r\n return (\r\n st === I8_BITMASK ||\r\n st === U8_BITMASK ||\r\n st === I16_BITMASK ||\r\n st === U16_BITMASK ||\r\n st === I32_BITMASK ||\r\n st === U32_BITMASK\r\n );\r\n }\r\n /** Get the scalar type */\r\n get scalarType(): PBPrimitiveType {\r\n return this.resizeType(1, 1);\r\n }\r\n /** Get number of rows */\r\n get rows(): number {\r\n return (this.primitiveType >> ROWS_BITSHIFT) & ROWS_BITMASK;\r\n }\r\n /** Get number of columns */\r\n get cols(): number {\r\n return (this.primitiveType >> COLS_BITSHIFT) & COLS_BITMASK;\r\n }\r\n /** Get if this is a normalized primitive type */\r\n get normalized(): boolean {\r\n return !!((this.primitiveType >> NORM_BITSHIFT) & NORM_BITMASK);\r\n }\r\n /** @internal */\r\n getLayoutAlignment(layout: PBStructLayout): number {\r\n return layout === 'packed' ? 1 : this.isScalarType() ? 4 : 1 << Math.min(4, this.cols + 1);\r\n }\r\n /** @internal */\r\n getLayoutSize(): number {\r\n return this.getSize();\r\n }\r\n /** @internal */\r\n getSize(): number {\r\n let scalarSize: number;\r\n switch (this.scalarType) {\r\n case PBPrimitiveType.BOOL:\r\n case PBPrimitiveType.I32:\r\n case PBPrimitiveType.I32_NORM:\r\n case PBPrimitiveType.U32:\r\n case PBPrimitiveType.U32_NORM:\r\n case PBPrimitiveType.F32:\r\n scalarSize = 4;\r\n break;\r\n case PBPrimitiveType.F16:\r\n case PBPrimitiveType.I16:\r\n case PBPrimitiveType.I16_NORM:\r\n case PBPrimitiveType.U16:\r\n case PBPrimitiveType.U16_NORM:\r\n scalarSize = 2;\r\n break;\r\n default:\r\n scalarSize = 1;\r\n break;\r\n }\r\n return scalarSize * this.cols * this.rows;\r\n }\r\n /**\r\n * Creates a new primitive type info by changing row and column of this type\r\n * @param rows - The new value of row\r\n * @param cols - The new value of column\r\n * @returns The new primitive type\r\n */\r\n resizeType(rows: number, cols: number): PBPrimitiveType {\r\n return makePrimitiveType(this.primitiveType & SCALAR_TYPE_BITMASK, rows, cols, this.normalized ? 1 : 0);\r\n }\r\n /** Returns true if this is a scalar type */\r\n isScalarType(): boolean {\r\n return this.rows === 1 && this.cols === 1;\r\n }\r\n /** Returns true if this is a vector type */\r\n isVectorType(): boolean {\r\n return this.rows === 1 && this.cols > 1;\r\n }\r\n /** Returns true if this is a matrix type */\r\n isMatrixType(): boolean {\r\n return this.rows > 1 && this.cols > 1;\r\n }\r\n /** {@inheritDoc PBTypeInfo.isPrimitiveType} */\r\n isPrimitiveType(): this is PBPrimitiveTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return this.scalarType !== PBPrimitiveType.BOOL;\r\n }\r\n /** @internal */\r\n isConstructible(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isStorable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n getConstructorOverloads(deviceType: string): PBFunctionTypeInfo[] {\r\n return PBPrimitiveTypeInfo.getCachedOverloads(deviceType, this.primitiveType);\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const typename = primitiveTypeMapWGSL[this.primitiveType];\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n const typename = primitiveTypeMapWebGL[this.primitiveType];\r\n return varName ? `${typename} ${varName}` : typename;\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return `PRIM:${this.primitiveType}`;\r\n }\r\n}\r\n\r\n/**\r\n * The struct type info\r\n * @public\r\n */\r\nexport class PBStructTypeInfo extends PBTypeInfo<StructTypeDetail> {\r\n constructor(\r\n name: string,\r\n layout: PBStructLayout,\r\n members: {\r\n name: string;\r\n type:\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo\r\n | PBStructTypeInfo;\r\n }[]\r\n ) {\r\n super(PBTypeClass.PLAIN, {\r\n layout: layout || 'default',\r\n structName: name,\r\n structMembers: members.map((val) => {\r\n const defaultAlignment = getAlignment(val.type);\r\n const defaultSize = getSize(val.type);\r\n return {\r\n name: val.name,\r\n type: val.type,\r\n alignment: defaultAlignment,\r\n size: defaultSize,\r\n defaultAlignment: defaultAlignment,\r\n defaultSize: defaultSize\r\n };\r\n })\r\n });\r\n if (this.layout === 'std140') {\r\n this.calcAlignmentAndSizeSTD140();\r\n } else if (this.layout === 'std430') {\r\n this.calcAlignmentAndSizePacked();\r\n }\r\n }\r\n /** Get the layout type */\r\n get layout(): PBStructLayout {\r\n return this.detail.layout;\r\n }\r\n /** Get name of the struct type */\r\n get structName(): string {\r\n return this.detail.structName;\r\n }\r\n set structName(val: string) {\r\n this.detail.structName = val;\r\n }\r\n /** Get member types of the struct type */\r\n get structMembers() {\r\n return this.detail.structMembers;\r\n }\r\n /** Whether this struct has atomic members */\r\n haveAtomicMembers(): boolean {\r\n for (const member of this.structMembers) {\r\n if (member.type.isStructType() && member.type.haveAtomicMembers()) {\r\n return true;\r\n } else if (member.type.isArrayType() && member.type.haveAtomicMembers()) {\r\n return true;\r\n } else {\r\n return member.type.isAtomicI32() || member.type.isAtomicU32();\r\n }\r\n }\r\n }\r\n /**\r\n * Creates a new struct type by extending this type\r\n * @param name - Name of the new struct type\r\n * @param members - additional struct members\r\n * @returns The new struct type\r\n */\r\n extends(\r\n name: string,\r\n members: { name: string; type: PBPrimitiveTypeInfo | PBArrayTypeInfo | PBStructTypeInfo }[]\r\n ): PBStructTypeInfo {\r\n const oldMembers = this.structMembers.map((member) => ({ name: member.name, type: member.type }));\r\n return new PBStructTypeInfo(name, this.layout, [...oldMembers, ...members]);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isStructType} */\r\n isStructType(): this is PBStructTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return this.detail.structMembers.every((val) => val.type.isHostSharable());\r\n }\r\n /** @internal */\r\n isConstructible(): boolean {\r\n return this.detail.structMembers.every((val) => val.type.isConstructible());\r\n }\r\n /** @internal */\r\n isStorable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n getConstructorOverloads(): PBFunctionTypeInfo[] {\r\n const result: PBFunctionTypeInfo[] = [new PBFunctionTypeInfo(this.structName, this, [])];\r\n if (this.isConstructible()) {\r\n result.push(\r\n new PBFunctionTypeInfo(\r\n this.structName,\r\n this,\r\n this.structMembers.map((val) => ({ type: val.type }))\r\n )\r\n );\r\n }\r\n return result;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n return varName ? `${varName}: ${this.structName}` : this.structName;\r\n } else {\r\n return varName ? `${this.structName} ${varName}` : this.structName;\r\n }\r\n }\r\n /** @internal */\r\n getLayoutAlignment(layout: PBStructLayout): number {\r\n if (layout === 'packed') {\r\n return 1;\r\n }\r\n let alignment = 0;\r\n for (const member of this.structMembers) {\r\n alignment = Math.max(alignment, member.type.getLayoutAlignment(layout));\r\n }\r\n if (layout === 'std140') {\r\n alignment = align(alignment, 16);\r\n }\r\n return alignment;\r\n }\r\n /** @internal */\r\n getLayoutSize(layout: PBStructLayout): number {\r\n let size = 0;\r\n let structAlignment = 0;\r\n for (const member of this.structMembers) {\r\n const memberAlignment = member.type.getLayoutAlignment(layout);\r\n size = align(size, memberAlignment);\r\n size += member.type.getLayoutSize(layout);\r\n structAlignment = Math.max(structAlignment, memberAlignment);\r\n }\r\n return align(size, structAlignment);\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(offset: number, layout: PBStructLayout): UniformBufferLayout {\r\n const bufferLayout: UniformBufferLayout = {\r\n byteSize: 0,\r\n entries: []\r\n };\r\n const start = offset;\r\n for (const member of this.structMembers) {\r\n offset = align(offset, member.type.getLayoutAlignment(layout));\r\n const size = member.type.getLayoutSize(layout);\r\n bufferLayout.entries.push({\r\n name: member.name,\r\n offset: offset,\r\n byteSize: size,\r\n type: typeToTypedArray(member.type),\r\n subLayout: member.type.isStructType() ? member.type.toBufferLayout(offset, layout) : null,\r\n arraySize: member.type.isArrayType() ? member.type.dimension : 0\r\n });\r\n offset += size;\r\n }\r\n bufferLayout.byteSize = layout === 'std140' ? align(offset - start, 16) : offset - start;\r\n return bufferLayout;\r\n }\r\n /** @internal */\r\n clone(newName?: string): PBStructTypeInfo {\r\n return new PBStructTypeInfo(newName || this.structName, this.layout, this.structMembers);\r\n }\r\n /** @internal */\r\n reset(\r\n name: string,\r\n layout: PBStructLayout,\r\n members: { name: string; type: PBPrimitiveTypeInfo | PBArrayTypeInfo | PBStructTypeInfo }[]\r\n ) {\r\n this.detail = {\r\n layout: layout || 'default',\r\n structName: name,\r\n structMembers: members.map((val) => {\r\n const defaultAlignment = getAlignment(val.type);\r\n const defaultSize = getSize(val.type);\r\n return {\r\n name: val.name,\r\n type: val.type,\r\n alignment: defaultAlignment,\r\n size: defaultSize,\r\n defaultAlignment: defaultAlignment,\r\n defaultSize: defaultSize\r\n };\r\n })\r\n };\r\n if (this.layout === 'std140') {\r\n this.calcAlignmentAndSizeSTD140();\r\n } else if (this.layout === 'std430') {\r\n this.calcAlignmentAndSizePacked();\r\n }\r\n this.id = null;\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return `STRUCT:${this.structName}:${this.layout}:${this.structMembers\r\n .map((val) => `${val.name}(${val.type.typeId})`)\r\n .join(':')}`;\r\n }\r\n /** @internal */\r\n private calcAlignmentAndSizeSTD140() {\r\n for (const member of this.structMembers) {\r\n if (member.type.isPrimitiveType()) {\r\n if (member.type.isMatrixType() && member.type.cols === 2) {\r\n throw new Error(`matrix${member.type.rows}x${member.type.cols} can not be used in std140 layout`);\r\n }\r\n } else if (\r\n member.type.isArrayType() &&\r\n (member.type.elementType.isAnyType() || getAlignment(member.type.elementType) !== 16)\r\n ) {\r\n throw new Error('array element must be 16 bytes aligned in std140 layout');\r\n } else if (member.type.isStructType()) {\r\n member.alignment = 16;\r\n member.size = align(member.defaultSize, 16);\r\n }\r\n }\r\n }\r\n /** @internal */\r\n private calcAlignmentAndSizePacked() {\r\n for (const member of this.structMembers) {\r\n member.alignment = getAlignmentPacked(member.type);\r\n member.size = getSizePacked(member.type);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * The array type info\r\n * @public\r\n */\r\nexport class PBArrayTypeInfo extends PBTypeInfo<ArrayTypeDetail> {\r\n constructor(\r\n elementType:\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBStructTypeInfo\r\n | PBAnyTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo,\r\n dimension?: number\r\n ) {\r\n super(PBTypeClass.ARRAY, {\r\n elementType: elementType,\r\n dimension: Number(dimension) || 0\r\n });\r\n }\r\n /** Get the element type */\r\n get elementType():\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBStructTypeInfo\r\n | PBAnyTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo {\r\n return this.detail.elementType;\r\n }\r\n /** Get dimension of the array type */\r\n get dimension(): number {\r\n return this.detail.dimension;\r\n }\r\n /** Wether array have atomic members */\r\n haveAtomicMembers(): boolean {\r\n if (this.elementType.isStructType() || this.elementType.isArrayType()) {\r\n return this.elementType.haveAtomicMembers();\r\n } else {\r\n return this.elementType.isAtomicI32() || this.elementType.isAtomicU32();\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.isArrayType} */\r\n isArrayType(): this is PBArrayTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return this.detail.elementType.isHostSharable();\r\n }\r\n /** @internal */\r\n isConstructible(): boolean {\r\n return this.dimension && this.detail.elementType.isConstructible();\r\n }\r\n /** @internal */\r\n isStorable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n getConstructorOverloads(deviceType: string): PBFunctionTypeInfo[] {\r\n const name = this.toTypeName(deviceType);\r\n const result: PBFunctionTypeInfo[] = [new PBFunctionTypeInfo(name, this, [])];\r\n if (deviceType !== 'webgl' && this.isConstructible()) {\r\n result.push(\r\n new PBFunctionTypeInfo(\r\n name,\r\n this,\r\n Array.from({ length: this.dimension }).map(() => ({ type: this.elementType }))\r\n )\r\n );\r\n }\r\n return result;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const elementTypeName = this.elementType.toTypeName(deviceType);\r\n const typename = `array<${elementTypeName}${this.dimension ? ', ' + this.dimension : ''}>`;\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n ASSERT(!!this.dimension, 'runtime-sized array not supported for webgl');\r\n ASSERT(!this.elementType.isArrayType(), 'multi-dimensional arrays not supported for webgl');\r\n const elementTypeName = this.elementType.toTypeName(deviceType, varName);\r\n return `${elementTypeName}[${this.dimension}]`;\r\n }\r\n }\r\n /** @internal */\r\n getLayoutAlignment(layout: PBStructLayout): number {\r\n return layout === 'packed' || this.elementType.isAnyType()\r\n ? 1\r\n : layout === 'std430'\r\n ? this.elementType.getLayoutAlignment(layout)\r\n : align(this.elementType.getLayoutAlignment(layout), 16);\r\n }\r\n /** @internal */\r\n getLayoutSize(layout: PBStructLayout): number {\r\n const elementAlignment = this.elementType.isAnyType() ? 1 : this.elementType.getLayoutAlignment(layout);\r\n if (layout === 'std140' && !!(elementAlignment & 15)) {\r\n // array element stride of std140 layout must be multiple of 16\r\n throw new Error('Error: array element stride of std140 must be multiple of 16');\r\n }\r\n return this.elementType.isAnyType()\r\n ? 0\r\n : this.dimension * align(this.elementType.getLayoutSize(layout), elementAlignment);\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n isCompatibleType(other: PBTypeInfo<TypeDetailInfo>): boolean {\r\n if (!other.isArrayType()) {\r\n return false;\r\n }\r\n if (this.dimension !== 0 && other.dimension !== this.dimension) {\r\n return false;\r\n }\r\n return this.elementType.isCompatibleType(other.elementType);\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return `ARRAY:(${this.elementType.typeId})[${this.dimension}]`;\r\n }\r\n}\r\n\r\n/**\r\n * The pointer type info\r\n * @public\r\n */\r\nexport class PBPointerTypeInfo extends PBTypeInfo<PointerTypeDetail> {\r\n /** @internal */\r\n writable: boolean;\r\n constructor(pointerType: PBTypeInfo, addressSpace: PBAddressSpace) {\r\n super(PBTypeClass.POINTER, {\r\n pointerType,\r\n addressSpace\r\n });\r\n ASSERT(pointerType.isStorable(), 'the pointee type must be storable');\r\n this.writable = false;\r\n }\r\n /** Get type of the pointer */\r\n get pointerType(): PBTypeInfo {\r\n return this.detail.pointerType;\r\n }\r\n /** Get address space of the pointer */\r\n get addressSpace(): PBAddressSpace {\r\n return this.detail.addressSpace;\r\n }\r\n set addressSpace(val: PBAddressSpace) {\r\n if (this.detail.addressSpace !== val) {\r\n this.detail.addressSpace = val;\r\n this.id = null;\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.haveAtomicMembers} */\r\n haveAtomicMembers(): boolean {\r\n return this.pointerType.haveAtomicMembers();\r\n }\r\n /** {@inheritDoc PBTypeInfo.isPointerType} */\r\n isPointerType(): this is PBPointerTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(device: string, varName?: string): string {\r\n if (device === 'webgpu') {\r\n const addressSpace =\r\n this.addressSpace === PBAddressSpace.UNKNOWN ? PBAddressSpace.FUNCTION : this.addressSpace;\r\n /*\r\n const mode = addressSpace === PBAddressSpace.UNIFORM || (addressSpace === PBAddressSpace.STORAGE && !this.writable) ? 'read' : 'read_write'\r\n const typename = `ptr<${addressSpace}, ${this.pointerType.toTypeName(device)}, ${mode}>`;\r\n */\r\n /* WGSL spec:\r\n When writing a variable declaration or a pointer type in WGSL source:\r\n For the storage address space, the access mode is optional, and defaults to read.\r\n For other address spaces, the access mode must not be written.\r\n */\r\n const mode = addressSpace === PBAddressSpace.STORAGE && this.writable ? ', read_write' : '';\r\n const typename = `ptr<${addressSpace}, ${this.pointerType.toTypeName(device)} ${mode}>`;\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n throw new Error('pointer type not supported for webgl');\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return `PTR:(${this.pointerType.typeId})`;\r\n }\r\n}\r\n\r\n/**\r\n * The atomic int type info\r\n * @public\r\n */\r\nexport class PBAtomicI32TypeInfo extends PBTypeInfo<null> {\r\n constructor() {\r\n super(PBTypeClass.ATOMIC_I32, null);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isPointerType} */\r\n haveAtomicMembers(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isAtomicI32(): this is PBAtomicI32TypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isStorable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const typename = 'atomic<i32>';\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n throw new Error('atomic type not supported for webgl');\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n /** @internal */\r\n getLayoutAlignment(_layout: PBStructLayout): number {\r\n return 4;\r\n }\r\n /** @internal */\r\n getLayoutSize(): number {\r\n return this.getSize();\r\n }\r\n /** @internal */\r\n getSize(): number {\r\n return 4;\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return `ATOMICI32`;\r\n }\r\n}\r\n\r\n/**\r\n * The atomic int type info\r\n * @public\r\n */\r\nexport class PBAtomicU32TypeInfo extends PBTypeInfo<null> {\r\n constructor() {\r\n super(PBTypeClass.ATOMIC_U32, null);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isPointerType} */\r\n haveAtomicMembers(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isAtomicU32(): this is PBAtomicU32TypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isStorable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const typename = 'atomic<u32>';\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n throw new Error('atomic type not supported for webgl');\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n /** @internal */\r\n getLayoutAlignment(_layout: PBStructLayout): number {\r\n return 4;\r\n }\r\n /** @internal */\r\n getLayoutSize(): number {\r\n return this.getSize();\r\n }\r\n /** @internal */\r\n getSize(): number {\r\n return 4;\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return `ATOMICU32`;\r\n }\r\n}\r\n\r\n/**\r\n * The sampler type info\r\n * @public\r\n */\r\nexport class PBSamplerTypeInfo extends PBTypeInfo<SamplerTypeDetail> {\r\n constructor(accessMode: PBSamplerAccessMode) {\r\n super(PBTypeClass.SAMPLER, {\r\n accessMode: accessMode\r\n });\r\n }\r\n /** Get the access mode */\r\n get accessMode(): PBSamplerAccessMode {\r\n return this.detail.accessMode;\r\n }\r\n /** @internal */\r\n isSamplerType(): this is PBSamplerTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isStorable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const typename = this.accessMode === PBSamplerAccessMode.SAMPLE ? 'sampler' : 'sampler_comparison';\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n throw new Error('sampler type not supported for webgl');\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return `SAMPLER:${this.accessMode}`;\r\n }\r\n}\r\n\r\n/**\r\n * The texture type info\r\n * @public\r\n */\r\nexport class PBTextureTypeInfo extends PBTypeInfo<TextureTypeDetail> {\r\n constructor(\r\n textureType: PBTextureType,\r\n texelFormat?: TextureFormat,\r\n readable?: boolean,\r\n writable?: boolean\r\n ) {\r\n super(PBTypeClass.TEXTURE, {\r\n textureType: textureType,\r\n readable,\r\n writable,\r\n storageTexelFormat: texelFormat || null\r\n });\r\n ASSERT(!!textureTypeMapWGSL[textureType], 'unsupported texture type');\r\n ASSERT(\r\n !(textureType & BITFLAG_STORAGE) || !!storageTexelFormatMap[texelFormat],\r\n 'invalid texel format for storage texture'\r\n );\r\n }\r\n /** Get the texture type */\r\n get textureType(): PBTextureType {\r\n return this.detail.textureType;\r\n }\r\n /** Get texture format if this is a storage texture */\r\n get storageTexelFormat(): TextureFormat {\r\n return this.detail.storageTexelFormat;\r\n }\r\n /** Returns true if this is a readable storage texture type */\r\n get readable(): boolean {\r\n return this.detail.readable;\r\n }\r\n set readable(val: boolean) {\r\n this.detail.readable = !!val;\r\n }\r\n /** Returns true if this is a writable storage texture type */\r\n get writable(): boolean {\r\n return this.detail.writable;\r\n }\r\n set writable(val: boolean) {\r\n this.detail.writable = !!val;\r\n }\r\n /** @internal */\r\n isStorable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n is1DTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_1D);\r\n }\r\n /** Returns true if this is a 2D texture type */\r\n is2DTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_2D);\r\n }\r\n /** Returns true if this is a 3D texture type */\r\n is3DTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_3D);\r\n }\r\n /** Returns true if this is a cube texture type */\r\n isCubeTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_CUBE);\r\n }\r\n /** Returns true if this is an array texture type */\r\n isArrayTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_ARRAY);\r\n }\r\n /** Returns true if this is a storage texture type */\r\n isStorageTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_STORAGE);\r\n }\r\n /** Return s true if this is a depth texture type */\r\n isDepthTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_DEPTH);\r\n }\r\n /** Returns true if this is a multisampled texture type */\r\n isMultisampledTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_MULTISAMPLED);\r\n }\r\n /** Returns true if this is an external texture type */\r\n isExternalTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_EXTERNAL);\r\n }\r\n /** Returns true if the texture format is of type integer */\r\n isIntTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_INT);\r\n }\r\n /** Returns true if the texture format is of type unsigned integer */\r\n isUIntTexture(): boolean {\r\n return !!(this.detail.textureType & BITFLAG_UINT);\r\n }\r\n /** @internal */\r\n isTextureType(): this is PBTextureTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n let typename = textureTypeMapWGSL[this.textureType];\r\n if (this.isStorageTexture()) {\r\n const storageTexelFormat = storageTexelFormatMap[this.storageTexelFormat];\r\n // storage textures currently only support 'write' access control\r\n const accessMode = this.writable ? (this.readable ? 'read_write' : 'write') : 'read'; // this.readable ? (this.writable ? 'read_write' : 'read') : 'write';\r\n typename = `${typename}<${storageTexelFormat}, ${accessMode}>`;\r\n }\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n const typename = (deviceType === 'webgl' ? textureTypeMapWebGL : textureTypeMapWebGL2)[\r\n this.textureType\r\n ];\r\n ASSERT(!!typename, 'unsupported texture type');\r\n return varName ? `${typename} ${varName}` : typename;\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return `TEXTURE:${this.textureType}:${this.textureType & BITFLAG_STORAGE ? this.storageTexelFormat : ''}`;\r\n }\r\n}\r\n\r\n/**\r\n * The function type info\r\n * @public\r\n */\r\nexport class PBFunctionTypeInfo extends PBTypeInfo<FunctionTypeDetail> {\r\n constructor(name: string, returnType: PBTypeInfo, argTypes: { type: PBTypeInfo; byRef?: boolean }[]) {\r\n super(PBTypeClass.FUNCTION, {\r\n name,\r\n returnType,\r\n argTypes\r\n });\r\n }\r\n /** Get name of the function */\r\n get name(): string {\r\n return this.detail.name;\r\n }\r\n /** Get return type of the function */\r\n get returnType(): PBTypeInfo {\r\n return this.detail.returnType;\r\n }\r\n /** Get all the argument types for this function */\r\n get argTypes(): { type: PBTypeInfo; byRef?: boolean }[] {\r\n return this.detail.argTypes;\r\n }\r\n /** Get hash for parameter types */\r\n get argHash(): string {\r\n return this.argTypes.map((val) => val.type.typeId).join(',');\r\n }\r\n /** @internal */\r\n protected genTypeId(): string {\r\n return `fn(${this.argHash}):${this.returnType.typeId}`;\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number): UniformBufferLayout {\r\n return null;\r\n }\r\n /** @internal */\r\n toTypeName(): string {\r\n throw new Error('not supported');\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const typeF16 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F16);\r\n/** @internal */\r\nexport const typeF16Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F16VEC2);\r\n/** @internal */\r\nexport const typeF16Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F16VEC3);\r\n/** @internal */\r\nexport const typeF16Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F16VEC4);\r\n/** @internal */\r\nexport const typeF32 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F32);\r\n/** @internal */\r\nexport const typeF32Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F32VEC2);\r\n/** @internal */\r\nexport const typeF32Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F32VEC3);\r\n/** @internal */\r\nexport const typeF32Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F32VEC4);\r\n/** @internal */\r\nexport const typeI8 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8);\r\n/** @internal */\r\nexport const typeI8Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC2);\r\n/** @internal */\r\nexport const typeI8Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC3);\r\n/** @internal */\r\nexport const typeI8Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC4);\r\n/** @internal */\r\nexport const typeI8_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8_NORM);\r\n/** @internal */\r\nexport const typeI8Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC2_NORM);\r\n/** @internal */\r\nexport const typeI8Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC3_NORM);\r\n/** @internal */\r\nexport const typeI8Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC4_NORM);\r\n/** @internal */\r\nexport const typeI16 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16);\r\n/** @internal */\r\nexport const typeI16Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC2);\r\n/** @internal */\r\nexport const typeI16Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC3);\r\n/** @internal */\r\nexport const typeI16Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC4);\r\n/** @internal */\r\nexport const typeI16_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16_NORM);\r\n/** @internal */\r\nexport const typeI16Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC2_NORM);\r\n/** @internal */\r\nexport const typeI16Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC3_NORM);\r\n/** @internal */\r\nexport const typeI16Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC4_NORM);\r\n/** @internal */\r\nexport const typeAtomicI32 = new PBAtomicI32TypeInfo();\r\n/** @internal */\r\nexport const typeAtomicU32 = new PBAtomicU32TypeInfo();\r\n/** @internal */\r\nexport const typeI32 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32);\r\n/** @internal */\r\nexport const typeI32Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC2);\r\n/** @internal */\r\nexport const typeI32Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC3);\r\n/** @internal */\r\nexport const typeI32Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC4);\r\n/** @internal */\r\nexport const typeI32_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32);\r\n/** @internal */\r\nexport const typeI32Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC2_NORM);\r\n/** @internal */\r\nexport const typeI32Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC3_NORM);\r\n/** @internal */\r\nexport const typeI32Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC4_NORM);\r\n/** @internal */\r\nexport const typeU8 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8);\r\n/** @internal */\r\nexport const typeU8Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC2);\r\n/** @internal */\r\nexport const typeU8Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC3);\r\n/** @internal */\r\nexport const typeU8Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC4);\r\n/** @internal */\r\nexport const typeU8_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8_NORM);\r\n/** @internal */\r\nexport const typeU8Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC2_NORM);\r\n/** @internal */\r\nexport const typeU8Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC3_NORM);\r\n/** @internal */\r\nexport const typeU8Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC4_NORM);\r\n/** @internal */\r\nexport const typeU16 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16);\r\n/** @internal */\r\nexport const typeU16Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC2);\r\n/** @internal */\r\nexport const typeU16Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC3);\r\n/** @internal */\r\nexport const typeU16Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC4);\r\n/** @internal */\r\nexport const typeU16_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16_NORM);\r\n/** @internal */\r\nexport const typeU16Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC2_NORM);\r\n/** @internal */\r\nexport const typeU16Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC3_NORM);\r\n/** @internal */\r\nexport const typeU16Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC4_NORM);\r\n/** @internal */\r\nexport const typeU32 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32);\r\n/** @internal */\r\nexport const typeU32Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC2);\r\n/** @internal */\r\nexport const typeU32Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC3);\r\n/** @internal */\r\nexport const typeU32Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC4);\r\n/** @internal */\r\nexport const typeU32_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32_NORM);\r\n/** @internal */\r\nexport const typeU32Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC2_NORM);\r\n/** @internal */\r\nexport const typeU32Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC3_NORM);\r\n/** @internal */\r\nexport const typeU32Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC4_NORM);\r\n/** @internal */\r\nexport const typeBool = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.BOOL);\r\n/** @internal */\r\nexport const typeBVec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.BVEC2);\r\n/** @internal */\r\nexport const typeBVec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.BVEC3);\r\n/** @internal */\r\nexport const typeBVec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.BVEC4);\r\n/** @internal */\r\nexport const typeMat2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT2);\r\n/** @internal */\r\nexport const typeMat2x3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT2x3);\r\n/** @internal */\r\nexport const typeMat2x4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT2x4);\r\n/** @internal */\r\nexport const typeMat3x2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT3x2);\r\n/** @internal */\r\nexport const typeMat3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT3);\r\n/** @internal */\r\nexport const typeMat3x4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT3x4);\r\n/** @internal */\r\nexport const typeMat4x2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT4x2);\r\n/** @internal */\r\nexport const typeMat4x3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT4x3);\r\n/** @internal */\r\nexport const typeMat4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT4);\r\n/** @internal */\r\nexport const typeTex1D = new PBTextureTypeInfo(PBTextureType.TEX_1D);\r\n/** @internal */\r\nexport const typeITex1D = new PBTextureTypeInfo(PBTextureType.ITEX_1D);\r\n/** @internal */\r\nexport const typeUTex1D = new PBTextureTypeInfo(PBTextureType.UTEX_1D);\r\n/** @internal */\r\nexport const typeTex2D = new PBTextureTypeInfo(PBTextureType.TEX_2D);\r\n/** @internal */\r\nexport const typeITex2D = new PBTextureTypeInfo(PBTextureType.ITEX_2D);\r\n/** @internal */\r\nexport const typeUTex2D = new PBTextureTypeInfo(PBTextureType.UTEX_2D);\r\n/** @internal */\r\nexport const typeTex2DArray = new PBTextureTypeInfo(PBTextureType.TEX_2D_ARRAY);\r\n/** @internal */\r\nexport const typeITex2DArray = new PBTextureTypeInfo(PBTextureType.ITEX_2D_ARRAY);\r\n/** @internal */\r\nexport const typeUTex2DArray = new PBTextureTypeInfo(PBTextureType.UTEX_2D_ARRAY);\r\n/** @internal */\r\nexport const typeTex3D = new PBTextureTypeInfo(PBTextureType.TEX_3D);\r\n/** @internal */\r\nexport const typeITex3D = new PBTextureTypeInfo(PBTextureType.ITEX_3D);\r\n/** @internal */\r\nexport const typeUTex3D = new PBTextureTypeInfo(PBTextureType.UTEX_3D);\r\n/** @internal */\r\nexport const typeTexCube = new PBTextureTypeInfo(PBTextureType.TEX_CUBE);\r\n/** @internal */\r\nexport const typeITexCube = new PBTextureTypeInfo(PBTextureType.ITEX_CUBE);\r\n/** @internal */\r\nexport const typeUTexCube = new PBTextureTypeInfo(PBTextureType.UTEX_CUBE);\r\n/** @internal */\r\nexport const typeTexExternal = new PBTextureTypeInfo(PBTextureType.TEX_EXTERNAL);\r\n/** @internal */\r\nexport const typeTexCubeArray = new PBTextureTypeInfo(PBTextureType.TEX_CUBE_ARRAY);\r\n/** @internal */\r\nexport const typeITexCubeArray = new PBTextureTypeInfo(PBTextureType.ITEX_CUBE_ARRAY);\r\n/** @internal */\r\nexport const typeUTexCubeArray = new PBTextureTypeInfo(PBTextureType.UTEX_CUBE_ARRAY);\r\n/** @internal */\r\nexport const typeTexMultisampled2D = new PBTextureTypeInfo(PBTextureType.TEX_MULTISAMPLED_2D);\r\n/** @internal */\r\nexport const typeITexMultisampled2D = new PBTextureTypeInfo(PBTextureType.ITEX_MULTISAMPLED_2D);\r\n/** @internal */\r\nexport const typeUTexMultisampled2D = new PBTextureTypeInfo(PBTextureType.UTEX_MULTISAMPLED_2D);\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8unorm');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba8snorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8snorm');\r\n/** @internal */\r\nexport const typeTexStorage1D_bgra8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8unorm');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba8uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba8sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8i');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba16uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba16ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba16sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba16i');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba16float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba16f');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba32ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba32i');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba32f');\r\n/** @internal */\r\nexport const typeTexStorage1D_rg32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rg32ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_rg32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rg32i');\r\n/** @internal */\r\nexport const typeTexStorage1D_rg32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rg32f');\r\n/** @internal */\r\nexport const typeTexStorage1D_r32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'r32ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_r32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'r32i');\r\n/** @internal */\r\nexport const typeTexStorage1D_r32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'r32f');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba8unorm');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba8snorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba8snorm');\r\n/** @internal */\r\nexport const typeTexStorage2D_bgra8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'bgra8unorm');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba8uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba8ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba8sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba8i');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba16uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba16ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba16sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba16i');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba16float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba16f');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba32ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba32i');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba32f');\r\n/** @internal */\r\nexport const typeTexStorage2D_rg32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rg32ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_rg32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rg32i');\r\n/** @internal */\r\nexport const typeTexStorage2D_rg32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rg32f');\r\n/** @internal */\r\nexport const typeTexStorage2D_r32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'r32ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_r32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'r32i');\r\n/** @internal */\r\nexport const typeTexStorage2D_r32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'r32f');\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba8unorm = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba8unorm'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba8snorm = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba8snorm'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_bgra8unorm = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'bgra8unorm'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba8uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba8ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba8sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba8i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba16uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba16ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba16sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba16i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba16float = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba16f'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba32uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba32ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba32sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba32i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba32float = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba32f'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rg32uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rg32ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rg32sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rg32i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rg32float = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rg32f'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_r32uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'r32ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_r32sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'r32i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_r32float = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'r32f'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba8unorm');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba8snorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba8snorm');\r\n/** @internal */\r\nexport const typeTexStorage3D_bgra8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'bgra8unorm');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba8uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba8ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba8sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba8i');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba16uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba16ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba16sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba16i');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba16float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba16f');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba32ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba32i');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba32f');\r\n/** @internal */\r\nexport const typeTexStorage3D_rg32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rg32ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_rg32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rg32i');\r\n/** @internal */\r\nexport const typeTexStorage3D_rg32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rg32f');\r\n/** @internal */\r\nexport const typeTexStorage3D_r32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'r32ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_r32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'r32i');\r\n/** @internal */\r\nexport const typeTexStorage3D_r32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'r32f');\r\n/** @internal */\r\nexport const typeTexDepth2D = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_2D);\r\n/** @internal */\r\nexport const typeTexDepth2DArray = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_2D_ARRAY);\r\n/** @internal */\r\nexport const typeTexDepthCube = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_CUBE);\r\n/** @internal */\r\nexport const typeTexDepthCubeArray = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_CUBE_ARRAY);\r\n/** @internal */\r\nexport const typeTexDepthMultisampled2D = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_MULTISAMPLED_2D);\r\n/** @internal */\r\nexport const typeSampler = new PBSamplerTypeInfo(PBSamplerAccessMode.SAMPLE);\r\n/** @internal */\r\nexport const typeSamplerComparison = new PBSamplerTypeInfo(PBSamplerAccessMode.COMPARISON);\r\n/** @internal */\r\nexport const typeVoid = new PBVoidTypeInfo();\r\n/** @internal */\r\nexport const typeAny = new PBAnyTypeInfo();\r\n/** @internal */\r\nexport const typeFrexpResult = new PBStructTypeInfo('FrexpResult', 'default', [\r\n { name: 'sig', type: typeF32 },\r\n { name: 'exp', type: typeI32 }\r\n]);\r\n/** @internal */\r\nexport const typeFrexpResultVec2 = new PBStructTypeInfo('FrexpResultVec2', 'default', [\r\n { name: 'sig', type: typeF32Vec2 },\r\n { name: 'exp', type: typeI32Vec2 }\r\n]);\r\n/** @internal */\r\nexport const typeFrexpResultVec3 = new PBStructTypeInfo('FrexpResultVec3', 'default', [\r\n { name: 'sig', type: typeF32Vec3 },\r\n { name: 'exp', type: typeI32Vec3 }\r\n]);\r\n/** @internal */\r\nexport const typeFrexpResultVec4 = new PBStructTypeInfo('FrexpResultVec4', 'default', [\r\n { name: 'sig', type: typeF32Vec4 },\r\n { name: 'exp', type: typeI32Vec4 }\r\n]);\r\n"],"names":["F16_BITMASK","F32_BITMASK","BOOL_BITMASK","I8_BITMASK","I16_BITMASK","I32_BITMASK","U8_BITMASK","U16_BITMASK","U32_BITMASK","SCALAR_TYPE_BITMASK","ROWS_BITMASK","ROWS_BITSHIFT","COLS_BITMASK","COLS_BITSHIFT","NORM_BITMASK","NORM_BITSHIFT","align","n","alignment","getAlignment","type","isPrimitiveType","isScalarType","Math","min","cols","isAtomicI32","isAtomicU32","isArrayType","elementType","isAnyType","member","structMembers","max","getAlignmentPacked","_type","getSize","isMatrixType","rows","PBPrimitiveTypeInfo","getCachedTypeInfo","resizeType","dimension","size","structAlignment","memberAlignment","getSizePacked","scalarSize","scalarType","PBPrimitiveType","U8","U8_NORM","I8","I8_NORM","F16","I16","I16_NORM","U16","U16_NORM","makePrimitiveType","scalarTypeMask","norm","typeToTypedArray","primitiveTypeMapWebGL","F32","F32VEC2","F32VEC3","F32VEC4","BOOL","BVEC2","BVEC3","BVEC4","I32","I32VEC2","I32VEC3","I32VEC4","U32","U32VEC2","U32VEC3","U32VEC4","MAT2","MAT2x3","MAT2x4","MAT3x2","MAT3","MAT3x4","MAT4x2","MAT4x3","MAT4","primitiveTypeMapWGSL","BITFLAG_1D","BITFLAG_2D","BITFLAG_3D","BITFLAG_CUBE","BITFLAG_ARRAY","BITFLAG_MULTISAMPLED","BITFLAG_STORAGE","BITFLAG_DEPTH","BITFLAG_FLOAT","BITFLAG_INT","BITFLAG_UINT","BITFLAG_EXTERNAL","PBTextureType","textureTypeMapWebGL","TEX_1D","TEX_2D","TEX_CUBE","TEX_EXTERNAL","textureTypeMapWebGL2","ITEX_1D","ITEX_2D","UTEX_1D","UTEX_2D","TEX_2D_ARRAY","ITEX_2D_ARRAY","UTEX_2D_ARRAY","TEX_3D","ITEX_3D","UTEX_3D","ITEX_CUBE","UTEX_CUBE","TEX_DEPTH_2D","TEX_DEPTH_2D_ARRAY","TEX_DEPTH_CUBE","textureTypeMapWGSL","TEX_CUBE_ARRAY","ITEX_CUBE_ARRAY","UTEX_CUBE_ARRAY","TEX_MULTISAMPLED_2D","ITEX_MULTISAMPLED_2D","UTEX_MULTISAMPLED_2D","TEX_STORAGE_1D","TEX_STORAGE_2D","TEX_STORAGE_2D_ARRAY","TEX_STORAGE_3D","TEX_DEPTH_CUBE_ARRAY","TEX_DEPTH_MULTISAMPLED_2D","storageTexelFormatMap","rgba8unorm","rgba8snorm","bgra8unorm","rgba8ui","rgba8i","rgba16ui","rgba16i","rgba16f","r32f","r32ui","r32i","rg32f","rg32ui","rg32i","rgba32f","rgba32ui","rgba32i","PBSamplerAccessMode","PBAddressSpace","PBTypeInfo","cls","detail","id","typeId","genTypeId","isVoidType","haveAtomicMembers","isStructType","isPointerType","isSamplerType","isTextureType","isHostSharable","isConstructible","isStorable","getConstructorOverloads","_deviceType","isCompatibleType","other","PBVoidTypeInfo","toTypeName","toBufferLayout","_offset","PBAnyTypeInfo","_other","cachedTypes","cachedCtorOverloads","primitiveType","typeinfo","getCachedOverloads","deviceType","deviceOverloads","result","name","PBFunctionTypeInfo","push","isVectorType","scalarTypeInfo","vec2TypeInfo","vec3TypeInfo","typeF32Vec2","typeI32Vec2","typeU32Vec2","typeBVec2","typeF32Vec3","typeI32Vec3","typeU32Vec3","typeBVec3","typeF32Vec4","typeI32Vec4","typeU32Vec4","typeBVec4","colType","Array","from","length","map","typeF32","isInteger","st","normalized","getLayoutAlignment","layout","getLayoutSize","I32_NORM","U32_NORM","varName","typename","PBStructTypeInfo","members","structName","val","defaultAlignment","defaultSize","calcAlignmentAndSizeSTD140","calcAlignmentAndSizePacked","extends","oldMembers","every","offset","bufferLayout","byteSize","entries","start","subLayout","arraySize","clone","newName","reset","join","Error","PBArrayTypeInfo","Number","elementTypeName","ASSERT","elementAlignment","PBPointerTypeInfo","writable","pointerType","addressSpace","device","mode","PBAtomicI32TypeInfo","_layout","PBAtomicU32TypeInfo","PBSamplerTypeInfo","accessMode","PBTextureTypeInfo","textureType","texelFormat","readable","storageTexelFormat","is1DTexture","is2DTexture","is3DTexture","isCubeTexture","isArrayTexture","isStorageTexture","isDepthTexture","isMultisampledTexture","isExternalTexture","isIntTexture","isUIntTexture","returnType","argTypes","argHash","typeF16","typeF16Vec2","F16VEC2","typeF16Vec3","F16VEC3","typeF16Vec4","F16VEC4","typeI8","typeI8Vec2","I8VEC2","typeI8Vec3","I8VEC3","typeI8Vec4","I8VEC4","typeI8_Norm","typeI8Vec2_Norm","I8VEC2_NORM","typeI8Vec3_Norm","I8VEC3_NORM","typeI8Vec4_Norm","I8VEC4_NORM","typeI16","typeI16Vec2","I16VEC2","typeI16Vec3","I16VEC3","typeI16Vec4","I16VEC4","typeI16_Norm","typeI16Vec2_Norm","I16VEC2_NORM","typeI16Vec3_Norm","I16VEC3_NORM","typeI16Vec4_Norm","I16VEC4_NORM","typeAtomicI32","typeAtomicU32","typeI32","typeI32_Norm","typeI32Vec2_Norm","I32VEC2_NORM","typeI32Vec3_Norm","I32VEC3_NORM","typeI32Vec4_Norm","I32VEC4_NORM","typeU8","typeU8Vec2","U8VEC2","typeU8Vec3","U8VEC3","typeU8Vec4","U8VEC4","typeU8_Norm","typeU8Vec2_Norm","U8VEC2_NORM","typeU8Vec3_Norm","U8VEC3_NORM","typeU8Vec4_Norm","U8VEC4_NORM","typeU16","typeU16Vec2","U16VEC2","typeU16Vec3","U16VEC3","typeU16Vec4","U16VEC4","typeU16_Norm","typeU16Vec2_Norm","U16VEC2_NORM","typeU16Vec3_Norm","U16VEC3_NORM","typeU16Vec4_Norm","U16VEC4_NORM","typeU32","typeU32_Norm","typeU32Vec2_Norm","U32VEC2_NORM","typeU32Vec3_Norm","U32VEC3_NORM","typeU32Vec4_Norm","U32VEC4_NORM","typeBool","typeMat2","typeMat2x3","typeMat2x4","typeMat3x2","typeMat3","typeMat3x4","typeMat4x2","typeMat4x3","typeMat4","typeTex1D","typeITex1D","typeUTex1D","typeTex2D","typeITex2D","typeUTex2D","typeTex2DArray","typeITex2DArray","typeUTex2DArray","typeTex3D","typeITex3D","typeUTex3D","typeTexCube","typeITexCube","typeUTexCube","typeTexExternal","typeTexCubeArray","typeITexCubeArray","typeUTexCubeArray","typeTexMultisampled2D","typeITexMultisampled2D","typeUTexMultisampled2D","typeTexStorage1D_rgba8unorm","typeTexStorage1D_rgba8snorm","typeTexStorage1D_bgra8unorm","typeTexStorage1D_rgba8uint","typeTexStorage1D_rgba8sint","typeTexStorage1D_rgba16uint","typeTexStorage1D_rgba16sint","typeTexStorage1D_rgba16float","typeTexStorage1D_rgba32uint","typeTexStorage1D_rgba32sint","typeTexStorage1D_rgba32float","typeTexStorage1D_rg32uint","typeTexStorage1D_rg32sint","typeTexStorage1D_rg32float","typeTexStorage1D_r32uint","typeTexStorage1D_r32sint","typeTexStorage1D_r32float","typeTexStorage2D_rgba8unorm","typeTexStorage2D_rgba8snorm","typeTexStorage2D_bgra8unorm","typeTexStorage2D_rgba8uint","typeTexStorage2D_rgba8sint","typeTexStorage2D_rgba16uint","typeTexStorage2D_rgba16sint","typeTexStorage2D_rgba16float","typeTexStorage2D_rgba32uint","typeTexStorage2D_rgba32sint","typeTexStorage2D_rgba32float","typeTexStorage2D_rg32uint","typeTexStorage2D_rg32sint","typeTexStorage2D_rg32float","typeTexStorage2D_r32uint","typeTexStorage2D_r32sint","typeTexStorage2D_r32float","typeTexStorage2DArray_rgba8unorm","typeTexStorage2DArray_rgba8snorm","typeTexStorage2DArray_bgra8unorm","typeTexStorage2DArray_rgba8uint","typeTexStorage2DArray_rgba8sint","typeTexStorage2DArray_rgba16uint","typeTexStorage2DArray_rgba16sint","typeTexStorage2DArray_rgba16float","typeTexStorage2DArray_rgba32uint","typeTexStorage2DArray_rgba32sint","typeTexStorage2DArray_rgba32float","typeTexStorage2DArray_rg32uint","typeTexStorage2DArray_rg32sint","typeTexStorage2DArray_rg32float","typeTexStorage2DArray_r32uint","typeTexStorage2DArray_r32sint","typeTexStorage2DArray_r32float","typeTexStorage3D_rgba8unorm","typeTexStorage3D_rgba8snorm","typeTexStorage3D_bgra8unorm","typeTexStorage3D_rgba8uint","typeTexStorage3D_rgba8sint","typeTexStorage3D_rgba16uint","typeTexStorage3D_rgba16sint","typeTexStorage3D_rgba16float","typeTexStorage3D_rgba32uint","typeTexStorage3D_rgba32sint","typeTexStorage3D_rgba32float","typeTexStorage3D_rg32uint","typeTexStorage3D_rg32sint","typeTexStorage3D_rg32float","typeTexStorage3D_r32uint","typeTexStorage3D_r32sint","typeTexStorage3D_r32float","typeTexDepth2D","typeTexDepth2DArray","typeTexDepthCube","typeTexDepthCubeArray","typeTexDepthMultisampled2D","typeSampler","typeSamplerComparison","typeVoid","typeAny","typeFrexpResult","typeFrexpResultVec2","typeFrexpResultVec3","typeFrexpResultVec4"],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sources":["../../src/builder/types.ts"],"sourcesContent":["import type { Nullable } from '@zephyr3d/base';\r\nimport { ASSERT } from '@zephyr3d/base';\r\nimport type { TextureFormat } from '../base_types';\r\nimport type { UniformBufferLayout } from '../gpuobject';\r\n\r\nconst F16_BITMASK = 1;\r\nconst F32_BITMASK = 2;\r\nconst BOOL_BITMASK = 3;\r\nconst I8_BITMASK = 4;\r\nconst I16_BITMASK = 5;\r\nconst I32_BITMASK = 6;\r\nconst U8_BITMASK = 7;\r\nconst U16_BITMASK = 8;\r\nconst U32_BITMASK = 9;\r\nconst SCALAR_TYPE_BITMASK = 15;\r\nconst ROWS_BITMASK = 7;\r\nconst ROWS_BITSHIFT = 4;\r\nconst COLS_BITMASK = 7;\r\nconst COLS_BITSHIFT = 7;\r\nconst NORM_BITMASK = 1;\r\nconst NORM_BITSHIFT = 10;\r\n\r\ntype LayoutableType =\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBStructTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo;\r\n\r\nfunction align(n: number, alignment: number) {\r\n return (n + alignment - 1) & ~(alignment - 1);\r\n}\r\n\r\nfunction getAlignment(type: LayoutableType): number {\r\n if (type.isPrimitiveType()) {\r\n return type.isScalarType() ? 4 : 1 << Math.min(4, type.cols + 1);\r\n } else if (type.isAtomicI32() || type.isAtomicU32()) {\r\n return 4;\r\n } else if (type.isArrayType()) {\r\n return type.elementType.isAnyType() ? 1 : getAlignment(type.elementType);\r\n } else {\r\n let alignment = 0;\r\n for (const member of type.structMembers) {\r\n alignment = Math.max(alignment, getAlignment(member.type));\r\n }\r\n return Math.max(alignment, 16);\r\n }\r\n}\r\nfunction getAlignmentPacked(_type: LayoutableType) {\r\n return 1;\r\n}\r\nfunction getSize(type: LayoutableType): number {\r\n if (type.isPrimitiveType()) {\r\n return type.isMatrixType()\r\n ? type.rows * getAlignment(PBPrimitiveTypeInfo.getCachedTypeInfo(type.resizeType(1, type.cols)))\r\n : 4 * type.cols;\r\n } else if (type.isArrayType()) {\r\n return type.elementType.isAnyType()\r\n ? 0\r\n : type.dimension * align(getSize(type.elementType), getAlignment(type.elementType));\r\n } else if (type.isAtomicI32() || type.isAtomicU32()) {\r\n return 4;\r\n } else {\r\n let size = 0;\r\n let structAlignment = 0;\r\n for (const member of type.structMembers) {\r\n const memberAlignment = getAlignment(member.type);\r\n size = align(size, memberAlignment);\r\n size += getSize(member.type);\r\n structAlignment = Math.max(structAlignment, memberAlignment);\r\n }\r\n return align(size, structAlignment);\r\n }\r\n}\r\nfunction getSizePacked(type: LayoutableType): number {\r\n if (type.isPrimitiveType()) {\r\n let scalarSize: number;\r\n switch (type.scalarType) {\r\n case PBPrimitiveType.U8:\r\n case PBPrimitiveType.U8_NORM:\r\n case PBPrimitiveType.I8:\r\n case PBPrimitiveType.I8_NORM:\r\n scalarSize = 1;\r\n break;\r\n case PBPrimitiveType.F16:\r\n case PBPrimitiveType.I16:\r\n case PBPrimitiveType.I16_NORM:\r\n case PBPrimitiveType.U16:\r\n case PBPrimitiveType.U16_NORM:\r\n scalarSize = 2;\r\n break;\r\n default:\r\n scalarSize = 4;\r\n break;\r\n }\r\n return type.rows * type.cols * scalarSize;\r\n } else if (type.isArrayType()) {\r\n return type.elementType.isAnyType() ? 0 : type.dimension * getSizePacked(type.elementType);\r\n } else if (type.isAtomicI32() || type.isAtomicU32()) {\r\n return 4;\r\n } else {\r\n let size = 0;\r\n for (const member of type.structMembers) {\r\n size += getSizePacked(member.type);\r\n }\r\n return size;\r\n }\r\n}\r\n\r\nfunction makePrimitiveType(scalarTypeMask: number, rows: number, cols: number, norm: 0 | 1): PBPrimitiveType {\r\n return scalarTypeMask | (rows << ROWS_BITSHIFT) | (cols << COLS_BITSHIFT) | (norm << NORM_BITSHIFT);\r\n}\r\n\r\nfunction typeToTypedArray(type: LayoutableType): Nullable<PBPrimitiveType> {\r\n if (type.isPrimitiveType()) {\r\n return type.scalarType;\r\n } else if (type.isArrayType()) {\r\n return type.elementType.isAnyType() ? null : typeToTypedArray(type.elementType);\r\n } else {\r\n return PBPrimitiveType.U8;\r\n }\r\n}\r\n\r\n/**\r\n * Struct layout types\r\n * @public\r\n */\r\nexport type PBStructLayout = 'default' | 'std140' | 'std430' | 'packed';\r\n\r\n/**\r\n * Primitive types\r\n * @public\r\n */\r\nexport enum PBPrimitiveType {\r\n NONE = 0,\r\n F16 = makePrimitiveType(F16_BITMASK, 1, 1, 0),\r\n F16VEC2 = makePrimitiveType(F16_BITMASK, 1, 2, 0),\r\n F16VEC3 = makePrimitiveType(F16_BITMASK, 1, 3, 0),\r\n F16VEC4 = makePrimitiveType(F16_BITMASK, 1, 4, 0),\r\n F32 = makePrimitiveType(F32_BITMASK, 1, 1, 0),\r\n F32VEC2 = makePrimitiveType(F32_BITMASK, 1, 2, 0),\r\n F32VEC3 = makePrimitiveType(F32_BITMASK, 1, 3, 0),\r\n F32VEC4 = makePrimitiveType(F32_BITMASK, 1, 4, 0),\r\n BOOL = makePrimitiveType(BOOL_BITMASK, 1, 1, 0),\r\n BVEC2 = makePrimitiveType(BOOL_BITMASK, 1, 2, 0),\r\n BVEC3 = makePrimitiveType(BOOL_BITMASK, 1, 3, 0),\r\n BVEC4 = makePrimitiveType(BOOL_BITMASK, 1, 4, 0),\r\n I8 = makePrimitiveType(I8_BITMASK, 1, 1, 0),\r\n I8VEC2 = makePrimitiveType(I8_BITMASK, 1, 2, 0),\r\n I8VEC3 = makePrimitiveType(I8_BITMASK, 1, 3, 0),\r\n I8VEC4 = makePrimitiveType(I8_BITMASK, 1, 4, 0),\r\n I8_NORM = makePrimitiveType(I8_BITMASK, 1, 1, 1),\r\n I8VEC2_NORM = makePrimitiveType(I8_BITMASK, 1, 2, 1),\r\n I8VEC3_NORM = makePrimitiveType(I8_BITMASK, 1, 3, 1),\r\n I8VEC4_NORM = makePrimitiveType(I8_BITMASK, 1, 4, 1),\r\n I16 = makePrimitiveType(I16_BITMASK, 1, 1, 0),\r\n I16VEC2 = makePrimitiveType(I16_BITMASK, 1, 2, 0),\r\n I16VEC3 = makePrimitiveType(I16_BITMASK, 1, 3, 0),\r\n I16VEC4 = makePrimitiveType(I16_BITMASK, 1, 4, 0),\r\n I16_NORM = makePrimitiveType(I16_BITMASK, 1, 1, 1),\r\n I16VEC2_NORM = makePrimitiveType(I16_BITMASK, 1, 2, 1),\r\n I16VEC3_NORM = makePrimitiveType(I16_BITMASK, 1, 3, 1),\r\n I16VEC4_NORM = makePrimitiveType(I16_BITMASK, 1, 4, 1),\r\n I32 = makePrimitiveType(I32_BITMASK, 1, 1, 0),\r\n I32VEC2 = makePrimitiveType(I32_BITMASK, 1, 2, 0),\r\n I32VEC3 = makePrimitiveType(I32_BITMASK, 1, 3, 0),\r\n I32VEC4 = makePrimitiveType(I32_BITMASK, 1, 4, 0),\r\n I32_NORM = makePrimitiveType(I32_BITMASK, 1, 1, 1),\r\n I32VEC2_NORM = makePrimitiveType(I32_BITMASK, 1, 2, 1),\r\n I32VEC3_NORM = makePrimitiveType(I32_BITMASK, 1, 3, 1),\r\n I32VEC4_NORM = makePrimitiveType(I32_BITMASK, 1, 4, 1),\r\n U8 = makePrimitiveType(U8_BITMASK, 1, 1, 0),\r\n U8VEC2 = makePrimitiveType(U8_BITMASK, 1, 2, 0),\r\n U8VEC3 = makePrimitiveType(U8_BITMASK, 1, 3, 0),\r\n U8VEC4 = makePrimitiveType(U8_BITMASK, 1, 4, 0),\r\n U8_NORM = makePrimitiveType(U8_BITMASK, 1, 1, 1),\r\n U8VEC2_NORM = makePrimitiveType(U8_BITMASK, 1, 2, 1),\r\n U8VEC3_NORM = makePrimitiveType(U8_BITMASK, 1, 3, 1),\r\n U8VEC4_NORM = makePrimitiveType(U8_BITMASK, 1, 4, 1),\r\n U16 = makePrimitiveType(U16_BITMASK, 1, 1, 0),\r\n U16VEC2 = makePrimitiveType(U16_BITMASK, 1, 2, 0),\r\n U16VEC3 = makePrimitiveType(U16_BITMASK, 1, 3, 0),\r\n U16VEC4 = makePrimitiveType(U16_BITMASK, 1, 4, 0),\r\n U16_NORM = makePrimitiveType(U16_BITMASK, 1, 1, 1),\r\n U16VEC2_NORM = makePrimitiveType(U16_BITMASK, 1, 2, 1),\r\n U16VEC3_NORM = makePrimitiveType(U16_BITMASK, 1, 3, 1),\r\n U16VEC4_NORM = makePrimitiveType(U16_BITMASK, 1, 4, 1),\r\n U32 = makePrimitiveType(U32_BITMASK, 1, 1, 0),\r\n U32VEC2 = makePrimitiveType(U32_BITMASK, 1, 2, 0),\r\n U32VEC3 = makePrimitiveType(U32_BITMASK, 1, 3, 0),\r\n U32VEC4 = makePrimitiveType(U32_BITMASK, 1, 4, 0),\r\n U32_NORM = makePrimitiveType(U32_BITMASK, 1, 1, 1),\r\n U32VEC2_NORM = makePrimitiveType(U32_BITMASK, 1, 2, 1),\r\n U32VEC3_NORM = makePrimitiveType(U32_BITMASK, 1, 3, 1),\r\n U32VEC4_NORM = makePrimitiveType(U32_BITMASK, 1, 4, 1),\r\n MAT2 = makePrimitiveType(F32_BITMASK, 2, 2, 0),\r\n MAT2x3 = makePrimitiveType(F32_BITMASK, 2, 3, 0),\r\n MAT2x4 = makePrimitiveType(F32_BITMASK, 2, 4, 0),\r\n MAT3x2 = makePrimitiveType(F32_BITMASK, 3, 2, 0),\r\n MAT3 = makePrimitiveType(F32_BITMASK, 3, 3, 0),\r\n MAT3x4 = makePrimitiveType(F32_BITMASK, 3, 4, 0),\r\n MAT4x2 = makePrimitiveType(F32_BITMASK, 4, 2, 0),\r\n MAT4x3 = makePrimitiveType(F32_BITMASK, 4, 3, 0),\r\n MAT4 = makePrimitiveType(F32_BITMASK, 4, 4, 0)\r\n}\r\n\r\nconst primitiveTypeMapWebGL = {\r\n [PBPrimitiveType.F32]: 'float',\r\n [PBPrimitiveType.F32VEC2]: 'vec2',\r\n [PBPrimitiveType.F32VEC3]: 'vec3',\r\n [PBPrimitiveType.F32VEC4]: 'vec4',\r\n [PBPrimitiveType.BOOL]: 'bool',\r\n [PBPrimitiveType.BVEC2]: 'bvec2',\r\n [PBPrimitiveType.BVEC3]: 'bvec3',\r\n [PBPrimitiveType.BVEC4]: 'bvec4',\r\n [PBPrimitiveType.I32]: 'int',\r\n [PBPrimitiveType.I32VEC2]: 'ivec2',\r\n [PBPrimitiveType.I32VEC3]: 'ivec3',\r\n [PBPrimitiveType.I32VEC4]: 'ivec4',\r\n [PBPrimitiveType.U32]: 'uint',\r\n [PBPrimitiveType.U32VEC2]: 'uvec2',\r\n [PBPrimitiveType.U32VEC3]: 'uvec3',\r\n [PBPrimitiveType.U32VEC4]: 'uvec4',\r\n [PBPrimitiveType.MAT2]: 'mat2',\r\n [PBPrimitiveType.MAT2x3]: 'mat2x3',\r\n [PBPrimitiveType.MAT2x4]: 'mat2x4',\r\n [PBPrimitiveType.MAT3x2]: 'mat3x2',\r\n [PBPrimitiveType.MAT3]: 'mat3',\r\n [PBPrimitiveType.MAT3x4]: 'mat3x4',\r\n [PBPrimitiveType.MAT4x2]: 'mat4x2',\r\n [PBPrimitiveType.MAT4x3]: 'mat4x3',\r\n [PBPrimitiveType.MAT4]: 'mat4'\r\n};\r\n\r\nconst primitiveTypeMapWGSL = {\r\n [PBPrimitiveType.F32]: 'f32',\r\n [PBPrimitiveType.F32VEC2]: 'vec2<f32>',\r\n [PBPrimitiveType.F32VEC3]: 'vec3<f32>',\r\n [PBPrimitiveType.F32VEC4]: 'vec4<f32>',\r\n [PBPrimitiveType.BOOL]: 'bool',\r\n [PBPrimitiveType.BVEC2]: 'vec2<bool>',\r\n [PBPrimitiveType.BVEC3]: 'vec3<bool>',\r\n [PBPrimitiveType.BVEC4]: 'vec4<bool>',\r\n [PBPrimitiveType.I32]: 'i32',\r\n [PBPrimitiveType.I32VEC2]: 'vec2<i32>',\r\n [PBPrimitiveType.I32VEC3]: 'vec3<i32>',\r\n [PBPrimitiveType.I32VEC4]: 'vec4<i32>',\r\n [PBPrimitiveType.U32]: 'u32',\r\n [PBPrimitiveType.U32VEC2]: 'vec2<u32>',\r\n [PBPrimitiveType.U32VEC3]: 'vec3<u32>',\r\n [PBPrimitiveType.U32VEC4]: 'vec4<u32>',\r\n [PBPrimitiveType.MAT2]: 'mat2x2<f32>',\r\n [PBPrimitiveType.MAT2x3]: 'mat2x3<f32>',\r\n [PBPrimitiveType.MAT2x4]: 'mat2x4<f32>',\r\n [PBPrimitiveType.MAT3x2]: 'mat3x2<f32>',\r\n [PBPrimitiveType.MAT3]: 'mat3x3<f32>',\r\n [PBPrimitiveType.MAT3x4]: 'mat3x4<f32>',\r\n [PBPrimitiveType.MAT4x2]: 'mat4x2<f32>',\r\n [PBPrimitiveType.MAT4x3]: 'mat4x3<f32>',\r\n [PBPrimitiveType.MAT4]: 'mat4x4<f32>'\r\n};\r\n\r\nconst BITFLAG_1D = 1 << 0;\r\nconst BITFLAG_2D = 1 << 1;\r\nconst BITFLAG_3D = 1 << 2;\r\nconst BITFLAG_CUBE = 1 << 3;\r\nconst BITFLAG_ARRAY = 1 << 4;\r\nconst BITFLAG_MULTISAMPLED = 1 << 5;\r\nconst BITFLAG_STORAGE = 1 << 6;\r\nconst BITFLAG_DEPTH = 1 << 7;\r\nconst BITFLAG_FLOAT = 1 << 8;\r\nconst BITFLAG_INT = 1 << 9;\r\nconst BITFLAG_UINT = 1 << 10;\r\nconst BITFLAG_EXTERNAL = 1 << 11;\r\n\r\n/**\r\n * Texture types\r\n * @public\r\n */\r\nexport enum PBTextureType {\r\n TEX_1D = BITFLAG_1D | BITFLAG_FLOAT,\r\n ITEX_1D = BITFLAG_1D | BITFLAG_INT,\r\n UTEX_1D = BITFLAG_1D | BITFLAG_UINT,\r\n TEX_2D = BITFLAG_2D | BITFLAG_FLOAT,\r\n ITEX_2D = BITFLAG_2D | BITFLAG_INT,\r\n UTEX_2D = BITFLAG_2D | BITFLAG_UINT,\r\n TEX_2D_ARRAY = BITFLAG_2D | BITFLAG_FLOAT | BITFLAG_ARRAY,\r\n ITEX_2D_ARRAY = BITFLAG_2D | BITFLAG_INT | BITFLAG_ARRAY,\r\n UTEX_2D_ARRAY = BITFLAG_2D | BITFLAG_UINT | BITFLAG_ARRAY,\r\n TEX_3D = BITFLAG_3D | BITFLAG_FLOAT,\r\n ITEX_3D = BITFLAG_3D | BITFLAG_INT,\r\n UTEX_3D = BITFLAG_3D | BITFLAG_UINT,\r\n TEX_CUBE = BITFLAG_CUBE | BITFLAG_FLOAT,\r\n ITEX_CUBE = BITFLAG_CUBE | BITFLAG_INT,\r\n UTEX_CUBE = BITFLAG_CUBE | BITFLAG_UINT,\r\n TEX_CUBE_ARRAY = BITFLAG_CUBE | BITFLAG_FLOAT | BITFLAG_ARRAY,\r\n ITEX_CUBE_ARRAY = BITFLAG_CUBE | BITFLAG_INT | BITFLAG_ARRAY,\r\n UTEX_CUBE_ARRAY = BITFLAG_CUBE | BITFLAG_UINT | BITFLAG_ARRAY,\r\n TEX_MULTISAMPLED_2D = BITFLAG_2D | BITFLAG_FLOAT | BITFLAG_MULTISAMPLED,\r\n ITEX_MULTISAMPLED_2D = BITFLAG_2D | BITFLAG_INT | BITFLAG_MULTISAMPLED,\r\n UTEX_MULTISAMPLED_2D = BITFLAG_2D | BITFLAG_UINT | BITFLAG_MULTISAMPLED,\r\n TEX_STORAGE_1D = BITFLAG_1D | BITFLAG_STORAGE,\r\n TEX_STORAGE_2D = BITFLAG_2D | BITFLAG_STORAGE,\r\n TEX_STORAGE_2D_ARRAY = BITFLAG_2D | BITFLAG_ARRAY | BITFLAG_STORAGE,\r\n TEX_STORAGE_3D = BITFLAG_3D | BITFLAG_STORAGE,\r\n TEX_DEPTH_2D = BITFLAG_2D | BITFLAG_DEPTH,\r\n TEX_DEPTH_2D_ARRAY = BITFLAG_2D | BITFLAG_ARRAY | BITFLAG_DEPTH,\r\n TEX_DEPTH_CUBE = BITFLAG_CUBE | BITFLAG_DEPTH,\r\n TEX_DEPTH_CUBE_ARRAY = BITFLAG_CUBE | BITFLAG_ARRAY | BITFLAG_DEPTH,\r\n TEX_DEPTH_MULTISAMPLED_2D = BITFLAG_2D | BITFLAG_MULTISAMPLED | BITFLAG_DEPTH,\r\n TEX_EXTERNAL = BITFLAG_EXTERNAL\r\n}\r\n\r\nconst textureTypeMapWebGL = {\r\n [PBTextureType.TEX_1D]: 'highp sampler2D',\r\n [PBTextureType.TEX_2D]: 'highp sampler2D',\r\n [PBTextureType.TEX_CUBE]: 'highp samplerCube',\r\n [PBTextureType.TEX_EXTERNAL]: 'highp sampler2D'\r\n};\r\n\r\nconst textureTypeMapWebGL2 = {\r\n [PBTextureType.TEX_1D]: 'highp sampler2D',\r\n [PBTextureType.TEX_2D]: 'highp sampler2D',\r\n [PBTextureType.ITEX_1D]: 'highp isampler2D',\r\n [PBTextureType.ITEX_2D]: 'highp isampler2D',\r\n [PBTextureType.UTEX_1D]: 'highp usampler2D',\r\n [PBTextureType.UTEX_2D]: 'highp usampler2D',\r\n [PBTextureType.TEX_2D_ARRAY]: 'highp sampler2DArray',\r\n [PBTextureType.ITEX_2D_ARRAY]: 'highp isampler2DArray',\r\n [PBTextureType.UTEX_2D_ARRAY]: 'highp usampler2DArray',\r\n [PBTextureType.TEX_3D]: 'highp sampler3D',\r\n [PBTextureType.ITEX_3D]: 'highp isampler3D',\r\n [PBTextureType.UTEX_3D]: 'highp usampler3D',\r\n [PBTextureType.TEX_CUBE]: 'highp samplerCube',\r\n [PBTextureType.ITEX_CUBE]: 'highp isamplerCube',\r\n [PBTextureType.UTEX_CUBE]: 'highp usamplerCube',\r\n [PBTextureType.TEX_DEPTH_2D]: 'highp sampler2DShadow',\r\n [PBTextureType.TEX_DEPTH_2D_ARRAY]: 'highp sampler2DArrayShadow',\r\n [PBTextureType.TEX_DEPTH_CUBE]: 'highp samplerCubeShadow',\r\n [PBTextureType.TEX_EXTERNAL]: 'highp sampler2D'\r\n};\r\n\r\nconst textureTypeMapWGSL = {\r\n [PBTextureType.TEX_1D]: 'texture_1d<f32>',\r\n [PBTextureType.ITEX_1D]: 'texture_1d<i32>',\r\n [PBTextureType.UTEX_1D]: 'texture_1d<u32>',\r\n [PBTextureType.TEX_2D]: 'texture_2d<f32>',\r\n [PBTextureType.ITEX_2D]: 'texture_2d<i32>',\r\n [PBTextureType.UTEX_2D]: 'texture_2d<u32>',\r\n [PBTextureType.TEX_2D_ARRAY]: 'texture_2d_array<f32>',\r\n [PBTextureType.ITEX_2D_ARRAY]: 'texture_2d_array<i32>',\r\n [PBTextureType.UTEX_2D_ARRAY]: 'texture_2d_array<u32>',\r\n [PBTextureType.TEX_3D]: 'texture_3d<f32>',\r\n [PBTextureType.ITEX_3D]: 'texture_3d<i32>',\r\n [PBTextureType.UTEX_3D]: 'texture_3d<u32>',\r\n [PBTextureType.TEX_CUBE]: 'texture_cube<f32>',\r\n [PBTextureType.ITEX_CUBE]: 'texture_cube<i32>',\r\n [PBTextureType.UTEX_CUBE]: 'texture_cube<u32>',\r\n [PBTextureType.TEX_CUBE_ARRAY]: 'texture_cube_array<f32>',\r\n [PBTextureType.ITEX_CUBE_ARRAY]: 'texture_cube_array<i32>',\r\n [PBTextureType.UTEX_CUBE_ARRAY]: 'texture_cube_array<u32>',\r\n [PBTextureType.TEX_MULTISAMPLED_2D]: 'texture_multisampled_2d<f32>',\r\n [PBTextureType.ITEX_MULTISAMPLED_2D]: 'texture_multisampled_2d<i32>',\r\n [PBTextureType.UTEX_MULTISAMPLED_2D]: 'texture_multisampled_2d<u32>',\r\n [PBTextureType.TEX_STORAGE_1D]: 'texture_storage_1d',\r\n [PBTextureType.TEX_STORAGE_2D]: 'texture_storage_2d',\r\n [PBTextureType.TEX_STORAGE_2D_ARRAY]: 'texture_storage_2d_array',\r\n [PBTextureType.TEX_STORAGE_3D]: 'texture_storage_3d',\r\n [PBTextureType.TEX_DEPTH_2D]: 'texture_depth_2d',\r\n [PBTextureType.TEX_DEPTH_2D_ARRAY]: 'texture_depth_2d_array',\r\n [PBTextureType.TEX_DEPTH_CUBE]: 'texture_depth_cube',\r\n [PBTextureType.TEX_DEPTH_CUBE_ARRAY]: 'texture_depth_cube_array',\r\n [PBTextureType.TEX_DEPTH_MULTISAMPLED_2D]: 'texture_depth_multisampled_2d',\r\n [PBTextureType.TEX_EXTERNAL]: 'texture_external'\r\n};\r\n\r\nconst storageTexelFormatMap = {\r\n rgba8unorm: 'rgba8unorm',\r\n rgba8snorm: 'rgba8snorm',\r\n bgra8unorm: 'bgra8unorm',\r\n rgba8ui: 'rgba8uint',\r\n rgba8i: 'rgba8sint',\r\n rgba16ui: 'rgba16uint',\r\n rgba16i: 'rgba16sint',\r\n rgba16f: 'rgba16float',\r\n r32f: 'r32float',\r\n r32ui: 'r32uint',\r\n r32i: 'r32sint',\r\n rg32f: 'rg32float',\r\n rg32ui: 'rg32uint',\r\n rg32i: 'rg32sint',\r\n rgba32f: 'rgba32float',\r\n rgba32ui: 'rgba32uint',\r\n rgba32i: 'rgba32sint'\r\n} as const;\r\n\r\n/**\r\n * Sampler access mode\r\n * @public\r\n */\r\nexport enum PBSamplerAccessMode {\r\n UNKNOWN = 0,\r\n SAMPLE,\r\n COMPARISON\r\n}\r\n\r\n/**\r\n * Shader variable address space\r\n * @public\r\n */\r\nexport enum PBAddressSpace {\r\n UNKNOWN = 'unknown',\r\n FUNCTION = 'function',\r\n PRIVATE = 'private',\r\n WORKGROUP = 'workgroup',\r\n UNIFORM = 'uniform',\r\n STORAGE = 'storage'\r\n}\r\n\r\nenum PBTypeClass {\r\n UNKNOWN = 0,\r\n PLAIN,\r\n ARRAY,\r\n POINTER,\r\n ATOMIC_I32,\r\n ATOMIC_U32,\r\n TEXTURE,\r\n SAMPLER,\r\n FUNCTION,\r\n VOID,\r\n ANY\r\n}\r\n\r\n/**\r\n * Type detail information\r\n * @public\r\n */\r\nexport type TypeDetailInfo =\r\n | PrimitiveTypeDetail\r\n | StructTypeDetail\r\n | ArrayTypeDetail\r\n | PointerTypeDetail\r\n | AtomicTypeInfoDetail\r\n | SamplerTypeDetail\r\n | TextureTypeDetail\r\n | FunctionTypeDetail\r\n | null;\r\n\r\n/**\r\n * Detail informations for primitive type\r\n * @public\r\n */\r\nexport interface PrimitiveTypeDetail {\r\n primitiveType: PBPrimitiveType;\r\n}\r\n\r\n/**\r\n * Detail informations for struct type\r\n * @public\r\n */\r\nexport interface StructTypeDetail {\r\n /** Layout of the struct type */\r\n layout: PBStructLayout;\r\n /** Name of the struct type */\r\n structName: Nullable<string>;\r\n /** Members of the struct type */\r\n structMembers: {\r\n /** Name of the struct member */\r\n name: string;\r\n /** Type of the struct member */\r\n type:\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo\r\n | PBStructTypeInfo;\r\n /** Alignment of the struct member */\r\n alignment: number;\r\n /** Byte size of the struct member */\r\n size: number;\r\n /** @internal */\r\n defaultAlignment: number;\r\n /** @internal */\r\n defaultSize: number;\r\n }[];\r\n}\r\n\r\n/**\r\n * Detail informations for array type\r\n * @public\r\n */\r\nexport interface ArrayTypeDetail {\r\n /** Type of array elements */\r\n elementType:\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBStructTypeInfo\r\n | PBAnyTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo;\r\n /** Array dimension */\r\n dimension: number;\r\n}\r\n\r\n/**\r\n * Detail informations for pointer type\r\n * @public\r\n */\r\nexport interface PointerTypeDetail {\r\n /** Type of the pointer */\r\n pointerType: PBTypeInfo;\r\n /** Address space of the pointer */\r\n addressSpace: PBAddressSpace;\r\n}\r\n\r\n/**\r\n * Detail information for atomic type\r\n * @public\r\n */\r\nexport interface AtomicTypeInfoDetail {\r\n /** Primitive type of the atomic type */\r\n type: PBPrimitiveType;\r\n}\r\n\r\n/**\r\n * Detail informations for sampler type\r\n * @public\r\n */\r\nexport interface SamplerTypeDetail {\r\n /** Access mode of the sampler type */\r\n accessMode: PBSamplerAccessMode;\r\n}\r\n\r\n/**\r\n * Detail informations for texture type\r\n * @public\r\n */\r\nexport interface TextureTypeDetail {\r\n /** type of the texture */\r\n textureType: PBTextureType;\r\n /** texture format if this is a storage texture */\r\n storageTexelFormat: Nullable<TextureFormat>;\r\n /** true if this is a readable storage texture type */\r\n readable: boolean;\r\n /** true if this is a writable storage texture type */\r\n writable: boolean;\r\n}\r\n\r\n/**\r\n * Detail information for a function type\r\n * @public\r\n */\r\nexport interface FunctionTypeDetail {\r\n /** The function name */\r\n name: string;\r\n /** Return type of the function */\r\n returnType: PBTypeInfo;\r\n /** Type information for function arguments */\r\n argTypes: {\r\n /** Type of the argument */\r\n type: PBTypeInfo;\r\n /** true if this argument will be passed by reference */\r\n byRef?: boolean;\r\n }[];\r\n}\r\n\r\n/**\r\n * Abstract base class for any type\r\n * @public\r\n */\r\nexport abstract class PBTypeInfo<DetailType extends TypeDetailInfo = TypeDetailInfo> {\r\n /** @internal */\r\n cls: PBTypeClass;\r\n /** @internal */\r\n detail: DetailType;\r\n /** @internal */\r\n protected id: Nullable<string>;\r\n /** @internal */\r\n constructor(cls: PBTypeClass, detail: DetailType) {\r\n this.cls = cls;\r\n this.detail = detail;\r\n this.id = null;\r\n }\r\n /** Get unique id for this type */\r\n get typeId(): string {\r\n if (!this.id) {\r\n this.id = this.genTypeId();\r\n }\r\n return this.id;\r\n }\r\n /** returns true if this is a void type */\r\n isVoidType(): this is PBVoidTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is an any type */\r\n isAnyType(): this is PBAnyTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is a primitive type */\r\n isPrimitiveType(): this is PBPrimitiveTypeInfo {\r\n return false;\r\n }\r\n /** Wether this type have atomic members */\r\n haveAtomicMembers(): boolean {\r\n return false;\r\n }\r\n /** returns true if this is a struct type */\r\n isStructType(): this is PBStructTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is an array type */\r\n isArrayType(): this is PBArrayTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is a pointer type */\r\n isPointerType(): this is PBPointerTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is an atomic int type */\r\n isAtomicI32(): this is PBAtomicI32TypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is an atomic uint type */\r\n isAtomicU32(): this is PBAtomicU32TypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is a sampler type */\r\n isSamplerType(): this is PBSamplerTypeInfo {\r\n return false;\r\n }\r\n /** returns true if this is a texture type */\r\n isTextureType(): this is PBTextureTypeInfo {\r\n return false;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return false;\r\n }\r\n /** @internal */\r\n isConstructible(): boolean {\r\n return false;\r\n }\r\n /** @internal */\r\n isStorable() {\r\n return false;\r\n }\r\n /** @internal */\r\n getConstructorOverloads(_deviceType: string): PBFunctionTypeInfo[] {\r\n return [];\r\n }\r\n /**\r\n * Check whether a given type is compatible with this type\r\n * @param other - The type to be checked\r\n * @returns true if the given type is compatible with this type, othewise false\r\n */\r\n isCompatibleType(other: PBTypeInfo): boolean {\r\n return other.typeId === this.typeId;\r\n }\r\n /**\r\n * Creates a buffer layout from this type\r\n * @param offset - Byte offset of the layout\r\n * @param layout - Type of the layout\r\n * @returns The created buffer layout\r\n */\r\n abstract toBufferLayout(offset: number, layout: PBStructLayout): Nullable<UniformBufferLayout>;\r\n /** @internal */\r\n abstract toTypeName(deviceType?: string, varName?: string): string;\r\n /** @internal */\r\n protected abstract genTypeId(): string;\r\n}\r\n\r\n/**\r\n * The void type info\r\n * @public\r\n */\r\nexport class PBVoidTypeInfo extends PBTypeInfo<null> {\r\n constructor() {\r\n super(PBTypeClass.VOID, null);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isVoidType} */\r\n isVoidType(): this is PBVoidTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName() {\r\n return 'void';\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return 'void';\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * The void type info\r\n * @public\r\n */\r\nexport class PBAnyTypeInfo extends PBTypeInfo<null> {\r\n constructor() {\r\n super(PBTypeClass.ANY, null);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isAnyType} */\r\n isAnyType(): this is PBAnyTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName() {\r\n return 'any';\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return 'any';\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n /** {@inheritDoc PBTypeInfo.isCompatibleType} */\r\n isCompatibleType(_other: PBTypeInfo<TypeDetailInfo>): boolean {\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * The primitive type info\r\n * @public\r\n */\r\nexport class PBPrimitiveTypeInfo extends PBTypeInfo<PrimitiveTypeDetail> {\r\n /** @internal */\r\n private static cachedTypes: Record<number, PBPrimitiveTypeInfo> = {};\r\n /** @internal */\r\n private static cachedCtorOverloads: {\r\n [deviceType: string]: Record<number, PBFunctionTypeInfo[]>;\r\n } = {};\r\n constructor(type: PBPrimitiveType) {\r\n super(PBTypeClass.PLAIN, { primitiveType: type });\r\n }\r\n /** Get or create a PBPrimitiveTypeInfo instance for a given prmitive type */\r\n static getCachedTypeInfo(primitiveType: PBPrimitiveType) {\r\n let typeinfo = this.cachedTypes[primitiveType];\r\n if (!typeinfo) {\r\n typeinfo = new PBPrimitiveTypeInfo(primitiveType);\r\n this.cachedTypes[primitiveType] = typeinfo;\r\n }\r\n return typeinfo;\r\n }\r\n /** @internal */\r\n static getCachedOverloads(deviceType: string, primitiveType: PBPrimitiveType) {\r\n let deviceOverloads = this.cachedCtorOverloads[deviceType];\r\n if (!deviceOverloads) {\r\n deviceOverloads = {};\r\n this.cachedCtorOverloads[deviceType] = deviceOverloads;\r\n }\r\n let result = deviceOverloads[primitiveType];\r\n if (!result) {\r\n const typeinfo = this.getCachedTypeInfo(primitiveType);\r\n const name = typeinfo.toTypeName(deviceType);\r\n result = [new PBFunctionTypeInfo(name, typeinfo, [])];\r\n if (typeinfo.isScalarType()) {\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [{ type: this.getCachedTypeInfo(PBPrimitiveType.F32) }])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [{ type: this.getCachedTypeInfo(PBPrimitiveType.I32) }])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [{ type: this.getCachedTypeInfo(PBPrimitiveType.U32) }])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [{ type: this.getCachedTypeInfo(PBPrimitiveType.BOOL) }])\r\n );\r\n } else if (typeinfo.isVectorType()) {\r\n const scalarTypeInfo = { type: this.getCachedTypeInfo(typeinfo.scalarType) };\r\n const vec2TypeInfo = { type: this.getCachedTypeInfo(typeinfo.resizeType(1, 2)) };\r\n const vec3TypeInfo = { type: this.getCachedTypeInfo(typeinfo.resizeType(1, 3)) };\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo]));\r\n switch (typeinfo.cols) {\r\n case 2:\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, scalarTypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeF32Vec2 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeI32Vec2 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeU32Vec2 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeBVec2 }]));\r\n break;\r\n case 3:\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, scalarTypeInfo, scalarTypeInfo])\r\n );\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, vec2TypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [vec2TypeInfo, scalarTypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeF32Vec3 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeI32Vec3 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeU32Vec3 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeBVec3 }]));\r\n break;\r\n case 4:\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [\r\n scalarTypeInfo,\r\n scalarTypeInfo,\r\n scalarTypeInfo,\r\n scalarTypeInfo\r\n ])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, scalarTypeInfo, vec2TypeInfo])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, vec2TypeInfo, scalarTypeInfo])\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(name, typeinfo, [vec2TypeInfo, scalarTypeInfo, scalarTypeInfo])\r\n );\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [vec2TypeInfo, vec2TypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [scalarTypeInfo, vec3TypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [vec3TypeInfo, scalarTypeInfo]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeF32Vec4 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeI32Vec4 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeU32Vec4 }]));\r\n result.push(new PBFunctionTypeInfo(name, typeinfo, [{ type: typeBVec4 }]));\r\n }\r\n } else if (typeinfo.isMatrixType()) {\r\n const colType = this.getCachedTypeInfo(typeinfo.resizeType(1, typeinfo.cols));\r\n result.push(\r\n new PBFunctionTypeInfo(\r\n name,\r\n typeinfo,\r\n Array.from({ length: typeinfo.rows }).map(() => ({ type: colType }))\r\n )\r\n );\r\n result.push(\r\n new PBFunctionTypeInfo(\r\n name,\r\n typeinfo,\r\n Array.from({ length: typeinfo.rows * typeinfo.cols }).map(() => ({ type: typeF32 }))\r\n )\r\n );\r\n }\r\n deviceOverloads[primitiveType] = result;\r\n }\r\n return result;\r\n }\r\n /** Get the primitive type */\r\n get primitiveType() {\r\n return this.detail.primitiveType;\r\n }\r\n /** Whether the type is signed or unsigned integer scalar or vector */\r\n isInteger() {\r\n const st = this.primitiveType & SCALAR_TYPE_BITMASK;\r\n return (\r\n st === I8_BITMASK ||\r\n st === U8_BITMASK ||\r\n st === I16_BITMASK ||\r\n st === U16_BITMASK ||\r\n st === I32_BITMASK ||\r\n st === U32_BITMASK\r\n );\r\n }\r\n /** Get the scalar type */\r\n get scalarType() {\r\n return this.resizeType(1, 1);\r\n }\r\n /** Get number of rows */\r\n get rows() {\r\n return (this.primitiveType >> ROWS_BITSHIFT) & ROWS_BITMASK;\r\n }\r\n /** Get number of columns */\r\n get cols() {\r\n return (this.primitiveType >> COLS_BITSHIFT) & COLS_BITMASK;\r\n }\r\n /** Get if this is a normalized primitive type */\r\n get normalized() {\r\n return !!((this.primitiveType >> NORM_BITSHIFT) & NORM_BITMASK);\r\n }\r\n /** @internal */\r\n getLayoutAlignment(layout: PBStructLayout): number {\r\n return layout === 'packed' ? 1 : this.isScalarType() ? 4 : 1 << Math.min(4, this.cols + 1);\r\n }\r\n /** @internal */\r\n getLayoutSize(): number {\r\n return this.getSize();\r\n }\r\n /** @internal */\r\n getSize() {\r\n let scalarSize: number;\r\n switch (this.scalarType) {\r\n case PBPrimitiveType.BOOL:\r\n case PBPrimitiveType.I32:\r\n case PBPrimitiveType.I32_NORM:\r\n case PBPrimitiveType.U32:\r\n case PBPrimitiveType.U32_NORM:\r\n case PBPrimitiveType.F32:\r\n scalarSize = 4;\r\n break;\r\n case PBPrimitiveType.F16:\r\n case PBPrimitiveType.I16:\r\n case PBPrimitiveType.I16_NORM:\r\n case PBPrimitiveType.U16:\r\n case PBPrimitiveType.U16_NORM:\r\n scalarSize = 2;\r\n break;\r\n default:\r\n scalarSize = 1;\r\n break;\r\n }\r\n return scalarSize * this.cols * this.rows;\r\n }\r\n /**\r\n * Creates a new primitive type info by changing row and column of this type\r\n * @param rows - The new value of row\r\n * @param cols - The new value of column\r\n * @returns The new primitive type\r\n */\r\n resizeType(rows: number, cols: number) {\r\n return makePrimitiveType(this.primitiveType & SCALAR_TYPE_BITMASK, rows, cols, this.normalized ? 1 : 0);\r\n }\r\n /** Returns true if this is a scalar type */\r\n isScalarType() {\r\n return this.rows === 1 && this.cols === 1;\r\n }\r\n /** Returns true if this is a vector type */\r\n isVectorType() {\r\n return this.rows === 1 && this.cols > 1;\r\n }\r\n /** Returns true if this is a matrix type */\r\n isMatrixType() {\r\n return this.rows > 1 && this.cols > 1;\r\n }\r\n /** {@inheritDoc PBTypeInfo.isPrimitiveType} */\r\n isPrimitiveType(): this is PBPrimitiveTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return this.scalarType !== PBPrimitiveType.BOOL;\r\n }\r\n /** @internal */\r\n isConstructible(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isStorable() {\r\n return true;\r\n }\r\n /** @internal */\r\n getConstructorOverloads(deviceType: string) {\r\n return PBPrimitiveTypeInfo.getCachedOverloads(deviceType, this.primitiveType);\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const typename = primitiveTypeMapWGSL[this.primitiveType];\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n const typename = primitiveTypeMapWebGL[this.primitiveType];\r\n return varName ? `${typename} ${varName}` : typename;\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return `PRIM:${this.primitiveType}`;\r\n }\r\n}\r\n\r\n/**\r\n * The struct type info\r\n * @public\r\n */\r\nexport class PBStructTypeInfo extends PBTypeInfo<StructTypeDetail> {\r\n constructor(\r\n name: Nullable<string>,\r\n layout: PBStructLayout,\r\n members: {\r\n name: string;\r\n type:\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo\r\n | PBStructTypeInfo;\r\n }[]\r\n ) {\r\n super(PBTypeClass.PLAIN, {\r\n layout: layout || 'default',\r\n structName: name,\r\n structMembers: members.map((val) => {\r\n const defaultAlignment = getAlignment(val.type);\r\n const defaultSize = getSize(val.type);\r\n return {\r\n name: val.name,\r\n type: val.type,\r\n alignment: defaultAlignment,\r\n size: defaultSize,\r\n defaultAlignment: defaultAlignment,\r\n defaultSize: defaultSize\r\n };\r\n })\r\n });\r\n if (this.layout === 'std140') {\r\n this.calcAlignmentAndSizeSTD140();\r\n } else if (this.layout === 'std430') {\r\n this.calcAlignmentAndSizePacked();\r\n }\r\n }\r\n /** Get the layout type */\r\n get layout() {\r\n return this.detail.layout;\r\n }\r\n /** Get name of the struct type */\r\n get structName() {\r\n return this.detail.structName;\r\n }\r\n set structName(val) {\r\n this.detail.structName = val;\r\n }\r\n /** Get member types of the struct type */\r\n get structMembers() {\r\n return this.detail.structMembers;\r\n }\r\n /** Whether this struct has atomic members */\r\n haveAtomicMembers(): boolean {\r\n for (const member of this.structMembers) {\r\n if (member.type.isStructType() && member.type.haveAtomicMembers()) {\r\n return true;\r\n } else if (member.type.isArrayType() && member.type.haveAtomicMembers()) {\r\n return true;\r\n } else {\r\n return member.type.isAtomicI32() || member.type.isAtomicU32();\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * Creates a new struct type by extending this type\r\n * @param name - Name of the new struct type\r\n * @param members - additional struct members\r\n * @returns The new struct type\r\n */\r\n extends(\r\n name: string,\r\n members: { name: string; type: PBPrimitiveTypeInfo | PBArrayTypeInfo | PBStructTypeInfo }[]\r\n ) {\r\n const oldMembers = this.structMembers.map((member) => ({ name: member.name, type: member.type }));\r\n return new PBStructTypeInfo(name, this.layout, [...oldMembers, ...members]);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isStructType} */\r\n isStructType(): this is PBStructTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return this.detail.structMembers.every((val) => val.type.isHostSharable());\r\n }\r\n /** @internal */\r\n isConstructible(): boolean {\r\n return this.detail.structMembers.every((val) => val.type.isConstructible());\r\n }\r\n /** @internal */\r\n isStorable() {\r\n return true;\r\n }\r\n /** @internal */\r\n getConstructorOverloads() {\r\n const result: PBFunctionTypeInfo[] = [new PBFunctionTypeInfo(this.structName!, this, [])];\r\n if (this.isConstructible()) {\r\n result.push(\r\n new PBFunctionTypeInfo(\r\n this.structName!,\r\n this,\r\n this.structMembers.map((val) => ({ type: val.type }))\r\n )\r\n );\r\n }\r\n return result;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n return varName ? `${varName}: ${this.structName}` : this.structName!;\r\n } else {\r\n return varName ? `${this.structName} ${varName}` : this.structName!;\r\n }\r\n }\r\n /** @internal */\r\n getLayoutAlignment(layout: PBStructLayout): number {\r\n if (layout === 'packed') {\r\n return 1;\r\n }\r\n let alignment = 0;\r\n for (const member of this.structMembers) {\r\n alignment = Math.max(alignment, member.type.getLayoutAlignment(layout));\r\n }\r\n if (layout === 'std140') {\r\n alignment = align(alignment, 16);\r\n }\r\n return alignment;\r\n }\r\n /** @internal */\r\n getLayoutSize(layout: PBStructLayout): number {\r\n let size = 0;\r\n let structAlignment = 0;\r\n for (const member of this.structMembers) {\r\n const memberAlignment = member.type.getLayoutAlignment(layout);\r\n size = align(size, memberAlignment);\r\n size += member.type.getLayoutSize(layout);\r\n structAlignment = Math.max(structAlignment, memberAlignment);\r\n }\r\n return align(size, structAlignment);\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(offset: number, layout: PBStructLayout) {\r\n const bufferLayout: UniformBufferLayout = {\r\n byteSize: 0,\r\n entries: []\r\n };\r\n const start = offset;\r\n for (const member of this.structMembers) {\r\n offset = align(offset, member.type.getLayoutAlignment(layout));\r\n const size = member.type.getLayoutSize(layout);\r\n bufferLayout.entries.push({\r\n name: member.name,\r\n offset: offset,\r\n byteSize: size,\r\n type: typeToTypedArray(member.type)!,\r\n subLayout: member.type.isStructType() ? member.type.toBufferLayout(offset, layout) : null,\r\n arraySize: member.type.isArrayType() ? member.type.dimension : 0\r\n });\r\n offset += size;\r\n }\r\n bufferLayout.byteSize = layout === 'std140' ? align(offset - start, 16) : offset - start;\r\n return bufferLayout;\r\n }\r\n /** @internal */\r\n clone(newName?: string) {\r\n return new PBStructTypeInfo(newName || this.structName, this.layout, this.structMembers);\r\n }\r\n /** @internal */\r\n reset(\r\n name: string,\r\n layout: PBStructLayout,\r\n members: { name: string; type: PBPrimitiveTypeInfo | PBArrayTypeInfo | PBStructTypeInfo }[]\r\n ) {\r\n this.detail = {\r\n layout: layout || 'default',\r\n structName: name,\r\n structMembers: members.map((val) => {\r\n const defaultAlignment = getAlignment(val.type);\r\n const defaultSize = getSize(val.type);\r\n return {\r\n name: val.name,\r\n type: val.type,\r\n alignment: defaultAlignment,\r\n size: defaultSize,\r\n defaultAlignment: defaultAlignment,\r\n defaultSize: defaultSize\r\n };\r\n })\r\n };\r\n if (this.layout === 'std140') {\r\n this.calcAlignmentAndSizeSTD140();\r\n } else if (this.layout === 'std430') {\r\n this.calcAlignmentAndSizePacked();\r\n }\r\n this.id = null;\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return `STRUCT:${this.structName}:${this.layout}:${this.structMembers\r\n .map((val) => `${val.name}(${val.type.typeId})`)\r\n .join(':')}`;\r\n }\r\n /** @internal */\r\n private calcAlignmentAndSizeSTD140() {\r\n for (const member of this.structMembers) {\r\n if (member.type.isPrimitiveType()) {\r\n if (member.type.isMatrixType() && member.type.cols === 2) {\r\n throw new Error(`matrix${member.type.rows}x${member.type.cols} can not be used in std140 layout`);\r\n }\r\n } else if (\r\n member.type.isArrayType() &&\r\n (member.type.elementType.isAnyType() || getAlignment(member.type.elementType) !== 16)\r\n ) {\r\n throw new Error('array element must be 16 bytes aligned in std140 layout');\r\n } else if (member.type.isStructType()) {\r\n member.alignment = 16;\r\n member.size = align(member.defaultSize, 16);\r\n }\r\n }\r\n }\r\n /** @internal */\r\n private calcAlignmentAndSizePacked() {\r\n for (const member of this.structMembers) {\r\n member.alignment = getAlignmentPacked(member.type);\r\n member.size = getSizePacked(member.type);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * The array type info\r\n * @public\r\n */\r\nexport class PBArrayTypeInfo extends PBTypeInfo<ArrayTypeDetail> {\r\n constructor(\r\n elementType:\r\n | PBPrimitiveTypeInfo\r\n | PBArrayTypeInfo\r\n | PBStructTypeInfo\r\n | PBAnyTypeInfo\r\n | PBAtomicI32TypeInfo\r\n | PBAtomicU32TypeInfo,\r\n dimension?: number\r\n ) {\r\n super(PBTypeClass.ARRAY, {\r\n elementType: elementType,\r\n dimension: Number(dimension) || 0\r\n });\r\n }\r\n /** Get the element type */\r\n get elementType() {\r\n return this.detail.elementType;\r\n }\r\n /** Get dimension of the array type */\r\n get dimension() {\r\n return this.detail.dimension;\r\n }\r\n /** Wether array have atomic members */\r\n haveAtomicMembers(): boolean {\r\n if (this.elementType.isStructType() || this.elementType.isArrayType()) {\r\n return this.elementType.haveAtomicMembers();\r\n } else {\r\n return this.elementType.isAtomicI32() || this.elementType.isAtomicU32();\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.isArrayType} */\r\n isArrayType(): this is PBArrayTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return this.detail.elementType.isHostSharable();\r\n }\r\n /** @internal */\r\n isConstructible(): boolean {\r\n return !!this.dimension && this.detail.elementType.isConstructible();\r\n }\r\n /** @internal */\r\n isStorable() {\r\n return true;\r\n }\r\n /** @internal */\r\n getConstructorOverloads(deviceType: string) {\r\n const name = this.toTypeName(deviceType);\r\n const result: PBFunctionTypeInfo[] = [new PBFunctionTypeInfo(name, this, [])];\r\n if (deviceType !== 'webgl' && this.isConstructible()) {\r\n result.push(\r\n new PBFunctionTypeInfo(\r\n name,\r\n this,\r\n Array.from({ length: this.dimension }).map(() => ({ type: this.elementType }))\r\n )\r\n );\r\n }\r\n return result;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const elementTypeName = this.elementType.toTypeName(deviceType);\r\n const typename = `array<${elementTypeName}${this.dimension ? ', ' + this.dimension : ''}>`;\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n ASSERT(!!this.dimension, 'runtime-sized array not supported for webgl');\r\n ASSERT(!this.elementType.isArrayType(), 'multi-dimensional arrays not supported for webgl');\r\n const elementTypeName = this.elementType.toTypeName(deviceType, varName);\r\n return `${elementTypeName}[${this.dimension}]`;\r\n }\r\n }\r\n /** @internal */\r\n getLayoutAlignment(layout: PBStructLayout): number {\r\n return layout === 'packed' || this.elementType.isAnyType()\r\n ? 1\r\n : layout === 'std430'\r\n ? this.elementType.getLayoutAlignment(layout)\r\n : align(this.elementType.getLayoutAlignment(layout), 16);\r\n }\r\n /** @internal */\r\n getLayoutSize(layout: PBStructLayout): number {\r\n const elementAlignment = this.elementType.isAnyType() ? 1 : this.elementType.getLayoutAlignment(layout);\r\n if (layout === 'std140' && !!(elementAlignment & 15)) {\r\n // array element stride of std140 layout must be multiple of 16\r\n throw new Error('Error: array element stride of std140 must be multiple of 16');\r\n }\r\n return this.elementType.isAnyType()\r\n ? 0\r\n : this.dimension * align(this.elementType.getLayoutSize(layout), elementAlignment);\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n isCompatibleType(other: PBTypeInfo<TypeDetailInfo>): boolean {\r\n if (!other.isArrayType()) {\r\n return false;\r\n }\r\n if (this.dimension !== 0 && other.dimension !== this.dimension) {\r\n return false;\r\n }\r\n return this.elementType.isCompatibleType(other.elementType);\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return `ARRAY:(${this.elementType.typeId})[${this.dimension}]`;\r\n }\r\n}\r\n\r\n/**\r\n * The pointer type info\r\n * @public\r\n */\r\nexport class PBPointerTypeInfo extends PBTypeInfo<PointerTypeDetail> {\r\n /** @internal */\r\n writable: boolean;\r\n constructor(pointerType: PBTypeInfo, addressSpace: PBAddressSpace) {\r\n super(PBTypeClass.POINTER, {\r\n pointerType,\r\n addressSpace\r\n });\r\n ASSERT(pointerType.isStorable(), 'the pointee type must be storable');\r\n this.writable = false;\r\n }\r\n /** Get type of the pointer */\r\n get pointerType() {\r\n return this.detail.pointerType;\r\n }\r\n /** Get address space of the pointer */\r\n get addressSpace() {\r\n return this.detail.addressSpace;\r\n }\r\n set addressSpace(val) {\r\n if (this.detail.addressSpace !== val) {\r\n this.detail.addressSpace = val;\r\n this.id = null;\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.haveAtomicMembers} */\r\n haveAtomicMembers(): boolean {\r\n return this.pointerType.haveAtomicMembers();\r\n }\r\n /** {@inheritDoc PBTypeInfo.isPointerType} */\r\n isPointerType(): this is PBPointerTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(device: string, varName?: string): string {\r\n if (device === 'webgpu') {\r\n const addressSpace =\r\n this.addressSpace === PBAddressSpace.UNKNOWN ? PBAddressSpace.FUNCTION : this.addressSpace;\r\n /*\r\n const mode = addressSpace === PBAddressSpace.UNIFORM || (addressSpace === PBAddressSpace.STORAGE && !this.writable) ? 'read' : 'read_write'\r\n const typename = `ptr<${addressSpace}, ${this.pointerType.toTypeName(device)}, ${mode}>`;\r\n */\r\n /* WGSL spec:\r\n When writing a variable declaration or a pointer type in WGSL source:\r\n For the storage address space, the access mode is optional, and defaults to read.\r\n For other address spaces, the access mode must not be written.\r\n */\r\n const mode = addressSpace === PBAddressSpace.STORAGE && this.writable ? ', read_write' : '';\r\n const typename = `ptr<${addressSpace}, ${this.pointerType.toTypeName(device)} ${mode}>`;\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n throw new Error('pointer type not supported for webgl');\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return `PTR:(${this.pointerType.typeId})`;\r\n }\r\n}\r\n\r\n/**\r\n * The atomic int type info\r\n * @public\r\n */\r\nexport class PBAtomicI32TypeInfo extends PBTypeInfo<null> {\r\n constructor() {\r\n super(PBTypeClass.ATOMIC_I32, null);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isPointerType} */\r\n haveAtomicMembers(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isAtomicI32(): this is PBAtomicI32TypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isStorable() {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const typename = 'atomic<i32>';\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n throw new Error('atomic type not supported for webgl');\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n /** @internal */\r\n getLayoutAlignment(_layout: PBStructLayout): number {\r\n return 4;\r\n }\r\n /** @internal */\r\n getLayoutSize(): number {\r\n return this.getSize();\r\n }\r\n /** @internal */\r\n getSize() {\r\n return 4;\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return `ATOMICI32`;\r\n }\r\n}\r\n\r\n/**\r\n * The atomic int type info\r\n * @public\r\n */\r\nexport class PBAtomicU32TypeInfo extends PBTypeInfo<null> {\r\n constructor() {\r\n super(PBTypeClass.ATOMIC_U32, null);\r\n }\r\n /** {@inheritDoc PBTypeInfo.isPointerType} */\r\n haveAtomicMembers(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isAtomicU32(): this is PBAtomicU32TypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isHostSharable(): boolean {\r\n return true;\r\n }\r\n /** @internal */\r\n isStorable() {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const typename = 'atomic<u32>';\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n throw new Error('atomic type not supported for webgl');\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n /** @internal */\r\n getLayoutAlignment(_layout: PBStructLayout): number {\r\n return 4;\r\n }\r\n /** @internal */\r\n getLayoutSize(): number {\r\n return this.getSize();\r\n }\r\n /** @internal */\r\n getSize() {\r\n return 4;\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return `ATOMICU32`;\r\n }\r\n}\r\n\r\n/**\r\n * The sampler type info\r\n * @public\r\n */\r\nexport class PBSamplerTypeInfo extends PBTypeInfo<SamplerTypeDetail> {\r\n constructor(accessMode: PBSamplerAccessMode) {\r\n super(PBTypeClass.SAMPLER, {\r\n accessMode: accessMode\r\n });\r\n }\r\n /** Get the access mode */\r\n get accessMode() {\r\n return this.detail.accessMode;\r\n }\r\n /** @internal */\r\n isSamplerType(): this is PBSamplerTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n isStorable() {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n const typename = this.accessMode === PBSamplerAccessMode.SAMPLE ? 'sampler' : 'sampler_comparison';\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n throw new Error('sampler type not supported for webgl');\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return `SAMPLER:${this.accessMode}`;\r\n }\r\n}\r\n\r\n/**\r\n * The texture type info\r\n * @public\r\n */\r\nexport class PBTextureTypeInfo extends PBTypeInfo<TextureTypeDetail> {\r\n constructor(\r\n textureType: PBTextureType,\r\n texelFormat?: TextureFormat,\r\n readable?: boolean,\r\n writable?: boolean\r\n ) {\r\n super(PBTypeClass.TEXTURE, {\r\n textureType: textureType,\r\n readable: readable ?? false,\r\n writable: writable ?? false,\r\n storageTexelFormat: texelFormat ?? null\r\n });\r\n ASSERT(!!textureTypeMapWGSL[textureType], 'unsupported texture type');\r\n ASSERT(\r\n !(textureType & BITFLAG_STORAGE) || (!!texelFormat && texelFormat in storageTexelFormatMap),\r\n `invalid texel format for storage texture: ${texelFormat}`\r\n );\r\n }\r\n /** Get the texture type */\r\n get textureType() {\r\n return this.detail.textureType;\r\n }\r\n /** Get texture format if this is a storage texture */\r\n get storageTexelFormat() {\r\n return this.detail.storageTexelFormat;\r\n }\r\n /** Returns true if this is a readable storage texture type */\r\n get readable() {\r\n return this.detail.readable;\r\n }\r\n set readable(val) {\r\n this.detail.readable = !!val;\r\n }\r\n /** Returns true if this is a writable storage texture type */\r\n get writable() {\r\n return this.detail.writable;\r\n }\r\n set writable(val) {\r\n this.detail.writable = !!val;\r\n }\r\n /** @internal */\r\n isStorable() {\r\n return true;\r\n }\r\n /** @internal */\r\n is1DTexture() {\r\n return !!(this.detail.textureType & BITFLAG_1D);\r\n }\r\n /** Returns true if this is a 2D texture type */\r\n is2DTexture() {\r\n return !!(this.detail.textureType & BITFLAG_2D);\r\n }\r\n /** Returns true if this is a 3D texture type */\r\n is3DTexture() {\r\n return !!(this.detail.textureType & BITFLAG_3D);\r\n }\r\n /** Returns true if this is a cube texture type */\r\n isCubeTexture() {\r\n return !!(this.detail.textureType & BITFLAG_CUBE);\r\n }\r\n /** Returns true if this is an array texture type */\r\n isArrayTexture() {\r\n return !!(this.detail.textureType & BITFLAG_ARRAY);\r\n }\r\n /** Returns true if this is a storage texture type */\r\n isStorageTexture() {\r\n return !!(this.detail.textureType & BITFLAG_STORAGE);\r\n }\r\n /** Return s true if this is a depth texture type */\r\n isDepthTexture() {\r\n return !!(this.detail.textureType & BITFLAG_DEPTH);\r\n }\r\n /** Returns true if this is a multisampled texture type */\r\n isMultisampledTexture() {\r\n return !!(this.detail.textureType & BITFLAG_MULTISAMPLED);\r\n }\r\n /** Returns true if this is an external texture type */\r\n isExternalTexture() {\r\n return !!(this.detail.textureType & BITFLAG_EXTERNAL);\r\n }\r\n /** Returns true if the texture format is of type integer */\r\n isIntTexture() {\r\n return !!(this.detail.textureType & BITFLAG_INT);\r\n }\r\n /** Returns true if the texture format is of type unsigned integer */\r\n isUIntTexture() {\r\n return !!(this.detail.textureType & BITFLAG_UINT);\r\n }\r\n /** @internal */\r\n isTextureType(): this is PBTextureTypeInfo {\r\n return true;\r\n }\r\n /** @internal */\r\n toTypeName(deviceType: string, varName?: string): string {\r\n if (deviceType === 'webgpu') {\r\n let typename = textureTypeMapWGSL[this.textureType];\r\n if (this.isStorageTexture()) {\r\n const storageTexelFormat =\r\n storageTexelFormatMap[this.storageTexelFormat as keyof typeof storageTexelFormatMap];\r\n // storage textures currently only support 'write' access control\r\n const accessMode = this.writable ? (this.readable ? 'read_write' : 'write') : 'read'; // this.readable ? (this.writable ? 'read_write' : 'read') : 'write';\r\n typename = `${typename}<${storageTexelFormat}, ${accessMode}>`;\r\n }\r\n return varName ? `${varName}: ${typename}` : typename;\r\n } else {\r\n const typename =\r\n deviceType === 'webgl'\r\n ? textureTypeMapWebGL[this.textureType as keyof typeof textureTypeMapWebGL]\r\n : textureTypeMapWebGL2[this.textureType as keyof typeof textureTypeMapWebGL2];\r\n ASSERT(!!typename, 'unsupported texture type');\r\n return varName ? `${typename} ${varName}` : typename;\r\n }\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return `TEXTURE:${this.textureType}:${this.textureType & BITFLAG_STORAGE ? this.storageTexelFormat : ''}`;\r\n }\r\n}\r\n\r\n/**\r\n * The function type info\r\n * @public\r\n */\r\nexport class PBFunctionTypeInfo extends PBTypeInfo<FunctionTypeDetail> {\r\n constructor(name: string, returnType: PBTypeInfo, argTypes: { type: PBTypeInfo; byRef?: boolean }[]) {\r\n super(PBTypeClass.FUNCTION, {\r\n name,\r\n returnType,\r\n argTypes\r\n });\r\n }\r\n /** Get name of the function */\r\n get name() {\r\n return this.detail.name;\r\n }\r\n /** Get return type of the function */\r\n get returnType() {\r\n return this.detail.returnType;\r\n }\r\n /** Get all the argument types for this function */\r\n get argTypes() {\r\n return this.detail.argTypes;\r\n }\r\n /** Get hash for parameter types */\r\n get argHash() {\r\n return this.argTypes.map((val) => val.type.typeId).join(',');\r\n }\r\n /** @internal */\r\n protected genTypeId() {\r\n return `fn(${this.argHash}):${this.returnType.typeId}`;\r\n }\r\n /** {@inheritDoc PBTypeInfo.toBufferLayout} */\r\n toBufferLayout(_offset: number) {\r\n return null;\r\n }\r\n /** @internal */\r\n toTypeName(): string {\r\n throw new Error('not supported');\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const typeF16 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F16);\r\n/** @internal */\r\nexport const typeF16Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F16VEC2);\r\n/** @internal */\r\nexport const typeF16Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F16VEC3);\r\n/** @internal */\r\nexport const typeF16Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F16VEC4);\r\n/** @internal */\r\nexport const typeF32 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F32);\r\n/** @internal */\r\nexport const typeF32Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F32VEC2);\r\n/** @internal */\r\nexport const typeF32Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F32VEC3);\r\n/** @internal */\r\nexport const typeF32Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.F32VEC4);\r\n/** @internal */\r\nexport const typeI8 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8);\r\n/** @internal */\r\nexport const typeI8Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC2);\r\n/** @internal */\r\nexport const typeI8Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC3);\r\n/** @internal */\r\nexport const typeI8Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC4);\r\n/** @internal */\r\nexport const typeI8_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8_NORM);\r\n/** @internal */\r\nexport const typeI8Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC2_NORM);\r\n/** @internal */\r\nexport const typeI8Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC3_NORM);\r\n/** @internal */\r\nexport const typeI8Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I8VEC4_NORM);\r\n/** @internal */\r\nexport const typeI16 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16);\r\n/** @internal */\r\nexport const typeI16Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC2);\r\n/** @internal */\r\nexport const typeI16Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC3);\r\n/** @internal */\r\nexport const typeI16Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC4);\r\n/** @internal */\r\nexport const typeI16_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16_NORM);\r\n/** @internal */\r\nexport const typeI16Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC2_NORM);\r\n/** @internal */\r\nexport const typeI16Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC3_NORM);\r\n/** @internal */\r\nexport const typeI16Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I16VEC4_NORM);\r\n/** @internal */\r\nexport const typeAtomicI32 = new PBAtomicI32TypeInfo();\r\n/** @internal */\r\nexport const typeAtomicU32 = new PBAtomicU32TypeInfo();\r\n/** @internal */\r\nexport const typeI32 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32);\r\n/** @internal */\r\nexport const typeI32Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC2);\r\n/** @internal */\r\nexport const typeI32Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC3);\r\n/** @internal */\r\nexport const typeI32Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC4);\r\n/** @internal */\r\nexport const typeI32_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32);\r\n/** @internal */\r\nexport const typeI32Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC2_NORM);\r\n/** @internal */\r\nexport const typeI32Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC3_NORM);\r\n/** @internal */\r\nexport const typeI32Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.I32VEC4_NORM);\r\n/** @internal */\r\nexport const typeU8 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8);\r\n/** @internal */\r\nexport const typeU8Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC2);\r\n/** @internal */\r\nexport const typeU8Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC3);\r\n/** @internal */\r\nexport const typeU8Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC4);\r\n/** @internal */\r\nexport const typeU8_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8_NORM);\r\n/** @internal */\r\nexport const typeU8Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC2_NORM);\r\n/** @internal */\r\nexport const typeU8Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC3_NORM);\r\n/** @internal */\r\nexport const typeU8Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U8VEC4_NORM);\r\n/** @internal */\r\nexport const typeU16 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16);\r\n/** @internal */\r\nexport const typeU16Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC2);\r\n/** @internal */\r\nexport const typeU16Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC3);\r\n/** @internal */\r\nexport const typeU16Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC4);\r\n/** @internal */\r\nexport const typeU16_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16_NORM);\r\n/** @internal */\r\nexport const typeU16Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC2_NORM);\r\n/** @internal */\r\nexport const typeU16Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC3_NORM);\r\n/** @internal */\r\nexport const typeU16Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U16VEC4_NORM);\r\n/** @internal */\r\nexport const typeU32 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32);\r\n/** @internal */\r\nexport const typeU32Vec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC2);\r\n/** @internal */\r\nexport const typeU32Vec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC3);\r\n/** @internal */\r\nexport const typeU32Vec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC4);\r\n/** @internal */\r\nexport const typeU32_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32_NORM);\r\n/** @internal */\r\nexport const typeU32Vec2_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC2_NORM);\r\n/** @internal */\r\nexport const typeU32Vec3_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC3_NORM);\r\n/** @internal */\r\nexport const typeU32Vec4_Norm = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.U32VEC4_NORM);\r\n/** @internal */\r\nexport const typeBool = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.BOOL);\r\n/** @internal */\r\nexport const typeBVec2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.BVEC2);\r\n/** @internal */\r\nexport const typeBVec3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.BVEC3);\r\n/** @internal */\r\nexport const typeBVec4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.BVEC4);\r\n/** @internal */\r\nexport const typeMat2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT2);\r\n/** @internal */\r\nexport const typeMat2x3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT2x3);\r\n/** @internal */\r\nexport const typeMat2x4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT2x4);\r\n/** @internal */\r\nexport const typeMat3x2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT3x2);\r\n/** @internal */\r\nexport const typeMat3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT3);\r\n/** @internal */\r\nexport const typeMat3x4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT3x4);\r\n/** @internal */\r\nexport const typeMat4x2 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT4x2);\r\n/** @internal */\r\nexport const typeMat4x3 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT4x3);\r\n/** @internal */\r\nexport const typeMat4 = PBPrimitiveTypeInfo.getCachedTypeInfo(PBPrimitiveType.MAT4);\r\n/** @internal */\r\nexport const typeTex1D = new PBTextureTypeInfo(PBTextureType.TEX_1D);\r\n/** @internal */\r\nexport const typeITex1D = new PBTextureTypeInfo(PBTextureType.ITEX_1D);\r\n/** @internal */\r\nexport const typeUTex1D = new PBTextureTypeInfo(PBTextureType.UTEX_1D);\r\n/** @internal */\r\nexport const typeTex2D = new PBTextureTypeInfo(PBTextureType.TEX_2D);\r\n/** @internal */\r\nexport const typeITex2D = new PBTextureTypeInfo(PBTextureType.ITEX_2D);\r\n/** @internal */\r\nexport const typeUTex2D = new PBTextureTypeInfo(PBTextureType.UTEX_2D);\r\n/** @internal */\r\nexport const typeTex2DArray = new PBTextureTypeInfo(PBTextureType.TEX_2D_ARRAY);\r\n/** @internal */\r\nexport const typeITex2DArray = new PBTextureTypeInfo(PBTextureType.ITEX_2D_ARRAY);\r\n/** @internal */\r\nexport const typeUTex2DArray = new PBTextureTypeInfo(PBTextureType.UTEX_2D_ARRAY);\r\n/** @internal */\r\nexport const typeTex3D = new PBTextureTypeInfo(PBTextureType.TEX_3D);\r\n/** @internal */\r\nexport const typeITex3D = new PBTextureTypeInfo(PBTextureType.ITEX_3D);\r\n/** @internal */\r\nexport const typeUTex3D = new PBTextureTypeInfo(PBTextureType.UTEX_3D);\r\n/** @internal */\r\nexport const typeTexCube = new PBTextureTypeInfo(PBTextureType.TEX_CUBE);\r\n/** @internal */\r\nexport const typeITexCube = new PBTextureTypeInfo(PBTextureType.ITEX_CUBE);\r\n/** @internal */\r\nexport const typeUTexCube = new PBTextureTypeInfo(PBTextureType.UTEX_CUBE);\r\n/** @internal */\r\nexport const typeTexExternal = new PBTextureTypeInfo(PBTextureType.TEX_EXTERNAL);\r\n/** @internal */\r\nexport const typeTexCubeArray = new PBTextureTypeInfo(PBTextureType.TEX_CUBE_ARRAY);\r\n/** @internal */\r\nexport const typeITexCubeArray = new PBTextureTypeInfo(PBTextureType.ITEX_CUBE_ARRAY);\r\n/** @internal */\r\nexport const typeUTexCubeArray = new PBTextureTypeInfo(PBTextureType.UTEX_CUBE_ARRAY);\r\n/** @internal */\r\nexport const typeTexMultisampled2D = new PBTextureTypeInfo(PBTextureType.TEX_MULTISAMPLED_2D);\r\n/** @internal */\r\nexport const typeITexMultisampled2D = new PBTextureTypeInfo(PBTextureType.ITEX_MULTISAMPLED_2D);\r\n/** @internal */\r\nexport const typeUTexMultisampled2D = new PBTextureTypeInfo(PBTextureType.UTEX_MULTISAMPLED_2D);\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8unorm');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba8snorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8snorm');\r\n/** @internal */\r\nexport const typeTexStorage1D_bgra8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8unorm');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba8uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba8sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba8i');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba16uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba16ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba16sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba16i');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba16float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba16f');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba32ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba32i');\r\n/** @internal */\r\nexport const typeTexStorage1D_rgba32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rgba32f');\r\n/** @internal */\r\nexport const typeTexStorage1D_rg32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rg32ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_rg32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rg32i');\r\n/** @internal */\r\nexport const typeTexStorage1D_rg32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'rg32f');\r\n/** @internal */\r\nexport const typeTexStorage1D_r32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'r32ui');\r\n/** @internal */\r\nexport const typeTexStorage1D_r32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'r32i');\r\n/** @internal */\r\nexport const typeTexStorage1D_r32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_1D, 'r32f');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba8unorm');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba8snorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba8snorm');\r\n/** @internal */\r\nexport const typeTexStorage2D_bgra8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'bgra8unorm');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba8uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba8ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba8sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba8i');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba16uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba16ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba16sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba16i');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba16float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba16f');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba32ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba32i');\r\n/** @internal */\r\nexport const typeTexStorage2D_rgba32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rgba32f');\r\n/** @internal */\r\nexport const typeTexStorage2D_rg32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rg32ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_rg32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rg32i');\r\n/** @internal */\r\nexport const typeTexStorage2D_rg32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'rg32f');\r\n/** @internal */\r\nexport const typeTexStorage2D_r32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'r32ui');\r\n/** @internal */\r\nexport const typeTexStorage2D_r32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'r32i');\r\n/** @internal */\r\nexport const typeTexStorage2D_r32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_2D, 'r32f');\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba8unorm = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba8unorm'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba8snorm = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba8snorm'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_bgra8unorm = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'bgra8unorm'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba8uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba8ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba8sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba8i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba16uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba16ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba16sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba16i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba16float = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba16f'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba32uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba32ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba32sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba32i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rgba32float = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rgba32f'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rg32uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rg32ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rg32sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rg32i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_rg32float = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'rg32f'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_r32uint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'r32ui'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_r32sint = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'r32i'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage2DArray_r32float = new PBTextureTypeInfo(\r\n PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n 'r32f'\r\n);\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba8unorm');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba8snorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba8snorm');\r\n/** @internal */\r\nexport const typeTexStorage3D_bgra8unorm = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'bgra8unorm');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba8uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba8ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba8sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba8i');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba16uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba16ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba16sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba16i');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba16float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba16f');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba32ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba32i');\r\n/** @internal */\r\nexport const typeTexStorage3D_rgba32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rgba32f');\r\n/** @internal */\r\nexport const typeTexStorage3D_rg32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rg32ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_rg32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rg32i');\r\n/** @internal */\r\nexport const typeTexStorage3D_rg32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'rg32f');\r\n/** @internal */\r\nexport const typeTexStorage3D_r32uint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'r32ui');\r\n/** @internal */\r\nexport const typeTexStorage3D_r32sint = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'r32i');\r\n/** @internal */\r\nexport const typeTexStorage3D_r32float = new PBTextureTypeInfo(PBTextureType.TEX_STORAGE_3D, 'r32f');\r\n/** @internal */\r\nexport const typeTexDepth2D = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_2D);\r\n/** @internal */\r\nexport const typeTexDepth2DArray = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_2D_ARRAY);\r\n/** @internal */\r\nexport const typeTexDepthCube = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_CUBE);\r\n/** @internal */\r\nexport const typeTexDepthCubeArray = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_CUBE_ARRAY);\r\n/** @internal */\r\nexport const typeTexDepthMultisampled2D = new PBTextureTypeInfo(PBTextureType.TEX_DEPTH_MULTISAMPLED_2D);\r\n/** @internal */\r\nexport const typeSampler = new PBSamplerTypeInfo(PBSamplerAccessMode.SAMPLE);\r\n/** @internal */\r\nexport const typeSamplerComparison = new PBSamplerTypeInfo(PBSamplerAccessMode.COMPARISON);\r\n/** @internal */\r\nexport const typeVoid = new PBVoidTypeInfo();\r\n/** @internal */\r\nexport const typeAny = new PBAnyTypeInfo();\r\n/** @internal */\r\nexport const typeFrexpResult = new PBStructTypeInfo('FrexpResult', 'default', [\r\n { name: 'sig', type: typeF32 },\r\n { name: 'exp', type: typeI32 }\r\n]);\r\n/** @internal */\r\nexport const typeFrexpResultVec2 = new PBStructTypeInfo('FrexpResultVec2', 'default', [\r\n { name: 'sig', type: typeF32Vec2 },\r\n { name: 'exp', type: typeI32Vec2 }\r\n]);\r\n/** @internal */\r\nexport const typeFrexpResultVec3 = new PBStructTypeInfo('FrexpResultVec3', 'default', [\r\n { name: 'sig', type: typeF32Vec3 },\r\n { name: 'exp', type: typeI32Vec3 }\r\n]);\r\n/** @internal */\r\nexport const typeFrexpResultVec4 = new PBStructTypeInfo('FrexpResultVec4', 'default', [\r\n { name: 'sig', type: typeF32Vec4 },\r\n { name: 'exp', type: typeI32Vec4 }\r\n]);\r\n"],"names":["F16_BITMASK","F32_BITMASK","BOOL_BITMASK","I8_BITMASK","I16_BITMASK","I32_BITMASK","U8_BITMASK","U16_BITMASK","U32_BITMASK","SCALAR_TYPE_BITMASK","ROWS_BITMASK","ROWS_BITSHIFT","COLS_BITMASK","COLS_BITSHIFT","NORM_BITMASK","NORM_BITSHIFT","align","n","alignment","getAlignment","type","isPrimitiveType","isScalarType","Math","min","cols","isAtomicI32","isAtomicU32","isArrayType","elementType","isAnyType","member","structMembers","max","getAlignmentPacked","_type","getSize","isMatrixType","rows","PBPrimitiveTypeInfo","getCachedTypeInfo","resizeType","dimension","size","structAlignment","memberAlignment","getSizePacked","scalarSize","scalarType","PBPrimitiveType","U8","U8_NORM","I8","I8_NORM","F16","I16","I16_NORM","U16","U16_NORM","makePrimitiveType","scalarTypeMask","norm","typeToTypedArray","primitiveTypeMapWebGL","F32","F32VEC2","F32VEC3","F32VEC4","BOOL","BVEC2","BVEC3","BVEC4","I32","I32VEC2","I32VEC3","I32VEC4","U32","U32VEC2","U32VEC3","U32VEC4","MAT2","MAT2x3","MAT2x4","MAT3x2","MAT3","MAT3x4","MAT4x2","MAT4x3","MAT4","primitiveTypeMapWGSL","BITFLAG_1D","BITFLAG_2D","BITFLAG_3D","BITFLAG_CUBE","BITFLAG_ARRAY","BITFLAG_MULTISAMPLED","BITFLAG_STORAGE","BITFLAG_DEPTH","BITFLAG_FLOAT","BITFLAG_INT","BITFLAG_UINT","BITFLAG_EXTERNAL","PBTextureType","textureTypeMapWebGL","TEX_1D","TEX_2D","TEX_CUBE","TEX_EXTERNAL","textureTypeMapWebGL2","ITEX_1D","ITEX_2D","UTEX_1D","UTEX_2D","TEX_2D_ARRAY","ITEX_2D_ARRAY","UTEX_2D_ARRAY","TEX_3D","ITEX_3D","UTEX_3D","ITEX_CUBE","UTEX_CUBE","TEX_DEPTH_2D","TEX_DEPTH_2D_ARRAY","TEX_DEPTH_CUBE","textureTypeMapWGSL","TEX_CUBE_ARRAY","ITEX_CUBE_ARRAY","UTEX_CUBE_ARRAY","TEX_MULTISAMPLED_2D","ITEX_MULTISAMPLED_2D","UTEX_MULTISAMPLED_2D","TEX_STORAGE_1D","TEX_STORAGE_2D","TEX_STORAGE_2D_ARRAY","TEX_STORAGE_3D","TEX_DEPTH_CUBE_ARRAY","TEX_DEPTH_MULTISAMPLED_2D","storageTexelFormatMap","rgba8unorm","rgba8snorm","bgra8unorm","rgba8ui","rgba8i","rgba16ui","rgba16i","rgba16f","r32f","r32ui","r32i","rg32f","rg32ui","rg32i","rgba32f","rgba32ui","rgba32i","PBSamplerAccessMode","PBAddressSpace","PBTypeInfo","cls","detail","id","typeId","genTypeId","isVoidType","haveAtomicMembers","isStructType","isPointerType","isSamplerType","isTextureType","isHostSharable","isConstructible","isStorable","getConstructorOverloads","_deviceType","isCompatibleType","other","PBVoidTypeInfo","toTypeName","toBufferLayout","_offset","PBAnyTypeInfo","_other","cachedTypes","cachedCtorOverloads","primitiveType","typeinfo","getCachedOverloads","deviceType","deviceOverloads","result","name","PBFunctionTypeInfo","push","isVectorType","scalarTypeInfo","vec2TypeInfo","vec3TypeInfo","typeF32Vec2","typeI32Vec2","typeU32Vec2","typeBVec2","typeF32Vec3","typeI32Vec3","typeU32Vec3","typeBVec3","typeF32Vec4","typeI32Vec4","typeU32Vec4","typeBVec4","colType","Array","from","length","map","typeF32","isInteger","st","normalized","getLayoutAlignment","layout","getLayoutSize","I32_NORM","U32_NORM","varName","typename","PBStructTypeInfo","members","structName","val","defaultAlignment","defaultSize","calcAlignmentAndSizeSTD140","calcAlignmentAndSizePacked","extends","oldMembers","every","offset","bufferLayout","byteSize","entries","start","subLayout","arraySize","clone","newName","reset","join","Error","PBArrayTypeInfo","Number","elementTypeName","ASSERT","elementAlignment","PBPointerTypeInfo","writable","pointerType","addressSpace","device","mode","PBAtomicI32TypeInfo","_layout","PBAtomicU32TypeInfo","PBSamplerTypeInfo","accessMode","PBTextureTypeInfo","textureType","texelFormat","readable","storageTexelFormat","is1DTexture","is2DTexture","is3DTexture","isCubeTexture","isArrayTexture","isStorageTexture","isDepthTexture","isMultisampledTexture","isExternalTexture","isIntTexture","isUIntTexture","returnType","argTypes","argHash","typeF16","typeF16Vec2","F16VEC2","typeF16Vec3","F16VEC3","typeF16Vec4","F16VEC4","typeI8","typeI8Vec2","I8VEC2","typeI8Vec3","I8VEC3","typeI8Vec4","I8VEC4","typeI8_Norm","typeI8Vec2_Norm","I8VEC2_NORM","typeI8Vec3_Norm","I8VEC3_NORM","typeI8Vec4_Norm","I8VEC4_NORM","typeI16","typeI16Vec2","I16VEC2","typeI16Vec3","I16VEC3","typeI16Vec4","I16VEC4","typeI16_Norm","typeI16Vec2_Norm","I16VEC2_NORM","typeI16Vec3_Norm","I16VEC3_NORM","typeI16Vec4_Norm","I16VEC4_NORM","typeAtomicI32","typeAtomicU32","typeI32","typeI32_Norm","typeI32Vec2_Norm","I32VEC2_NORM","typeI32Vec3_Norm","I32VEC3_NORM","typeI32Vec4_Norm","I32VEC4_NORM","typeU8","typeU8Vec2","U8VEC2","typeU8Vec3","U8VEC3","typeU8Vec4","U8VEC4","typeU8_Norm","typeU8Vec2_Norm","U8VEC2_NORM","typeU8Vec3_Norm","U8VEC3_NORM","typeU8Vec4_Norm","U8VEC4_NORM","typeU16","typeU16Vec2","U16VEC2","typeU16Vec3","U16VEC3","typeU16Vec4","U16VEC4","typeU16_Norm","typeU16Vec2_Norm","U16VEC2_NORM","typeU16Vec3_Norm","U16VEC3_NORM","typeU16Vec4_Norm","U16VEC4_NORM","typeU32","typeU32_Norm","typeU32Vec2_Norm","U32VEC2_NORM","typeU32Vec3_Norm","U32VEC3_NORM","typeU32Vec4_Norm","U32VEC4_NORM","typeBool","typeMat2","typeMat2x3","typeMat2x4","typeMat3x2","typeMat3","typeMat3x4","typeMat4x2","typeMat4x3","typeMat4","typeTex1D","typeITex1D","typeUTex1D","typeTex2D","typeITex2D","typeUTex2D","typeTex2DArray","typeITex2DArray","typeUTex2DArray","typeTex3D","typeITex3D","typeUTex3D","typeTexCube","typeITexCube","typeUTexCube","typeTexExternal","typeTexCubeArray","typeITexCubeArray","typeUTexCubeArray","typeTexMultisampled2D","typeITexMultisampled2D","typeUTexMultisampled2D","typeTexStorage1D_rgba8unorm","typeTexStorage1D_rgba8snorm","typeTexStorage1D_bgra8unorm","typeTexStorage1D_rgba8uint","typeTexStorage1D_rgba8sint","typeTexStorage1D_rgba16uint","typeTexStorage1D_rgba16sint","typeTexStorage1D_rgba16float","typeTexStorage1D_rgba32uint","typeTexStorage1D_rgba32sint","typeTexStorage1D_rgba32float","typeTexStorage1D_rg32uint","typeTexStorage1D_rg32sint","typeTexStorage1D_rg32float","typeTexStorage1D_r32uint","typeTexStorage1D_r32sint","typeTexStorage1D_r32float","typeTexStorage2D_rgba8unorm","typeTexStorage2D_rgba8snorm","typeTexStorage2D_bgra8unorm","typeTexStorage2D_rgba8uint","typeTexStorage2D_rgba8sint","typeTexStorage2D_rgba16uint","typeTexStorage2D_rgba16sint","typeTexStorage2D_rgba16float","typeTexStorage2D_rgba32uint","typeTexStorage2D_rgba32sint","typeTexStorage2D_rgba32float","typeTexStorage2D_rg32uint","typeTexStorage2D_rg32sint","typeTexStorage2D_rg32float","typeTexStorage2D_r32uint","typeTexStorage2D_r32sint","typeTexStorage2D_r32float","typeTexStorage2DArray_rgba8unorm","typeTexStorage2DArray_rgba8snorm","typeTexStorage2DArray_bgra8unorm","typeTexStorage2DArray_rgba8uint","typeTexStorage2DArray_rgba8sint","typeTexStorage2DArray_rgba16uint","typeTexStorage2DArray_rgba16sint","typeTexStorage2DArray_rgba16float","typeTexStorage2DArray_rgba32uint","typeTexStorage2DArray_rgba32sint","typeTexStorage2DArray_rgba32float","typeTexStorage2DArray_rg32uint","typeTexStorage2DArray_rg32sint","typeTexStorage2DArray_rg32float","typeTexStorage2DArray_r32uint","typeTexStorage2DArray_r32sint","typeTexStorage2DArray_r32float","typeTexStorage3D_rgba8unorm","typeTexStorage3D_rgba8snorm","typeTexStorage3D_bgra8unorm","typeTexStorage3D_rgba8uint","typeTexStorage3D_rgba8sint","typeTexStorage3D_rgba16uint","typeTexStorage3D_rgba16sint","typeTexStorage3D_rgba16float","typeTexStorage3D_rgba32uint","typeTexStorage3D_rgba32sint","typeTexStorage3D_rgba32float","typeTexStorage3D_rg32uint","typeTexStorage3D_rg32sint","typeTexStorage3D_rg32float","typeTexStorage3D_r32uint","typeTexStorage3D_r32sint","typeTexStorage3D_r32float","typeTexDepth2D","typeTexDepth2DArray","typeTexDepthCube","typeTexDepthCubeArray","typeTexDepthMultisampled2D","typeSampler","typeSamplerComparison","typeVoid","typeAny","typeFrexpResult","typeFrexpResultVec2","typeFrexpResultVec3","typeFrexpResultVec4"],"mappings":"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"}