@zephyr3d/device 0.2.8 → 0.2.10
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.
- package/dist/base_types.js.map +1 -1
- package/dist/builder/programbuilder.js +5 -3
- package/dist/builder/programbuilder.js.map +1 -1
- package/dist/builder/types.js +2 -2
- package/dist/builder/types.js.map +1 -1
- package/dist/device.js +26 -19
- package/dist/device.js.map +1 -1
- package/dist/helpers/drawtext.js +204 -40
- package/dist/helpers/drawtext.js.map +1 -1
- package/dist/helpers/textureatlas.js +21 -6
- package/dist/helpers/textureatlas.js.map +1 -1
- package/dist/index.d.ts +71 -9
- package/package.json +2 -2
package/dist/base_types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_types.js","sources":["../src/base_types.ts"],"sourcesContent":["import type { TypedArray, Vector4, IEventTarget, Nullable, Immutable } from '@zephyr3d/base';\r\nimport { float2half } from '@zephyr3d/base';\r\nimport type { PBComputeOptions, PBRenderOptions, PBStructTypeInfo, ProgramBuilder } from './builder';\r\nimport type {\r\n BaseTexture,\r\n BindGroup,\r\n BindGroupLayout,\r\n BufferCreationOptions,\r\n FrameBuffer,\r\n FrameBufferOptions,\r\n GPUDataBuffer,\r\n GPUObject,\r\n GPUProgram,\r\n IndexBuffer,\r\n RenderBundle,\r\n SamplerOptions,\r\n StructuredBuffer,\r\n Texture2D,\r\n Texture2DArray,\r\n Texture3D,\r\n TextureCreationOptions,\r\n TextureCube,\r\n TextureImageElement,\r\n TextureMipmapData,\r\n TextureSampler,\r\n TextureVideo,\r\n VertexAttribFormat,\r\n VertexLayout,\r\n VertexLayoutOptions,\r\n VertexSemantic\r\n} from './gpuobject';\r\nimport type {\r\n BlendingState,\r\n ColorState,\r\n DepthState,\r\n RasterizerState,\r\n RenderStateSet,\r\n StencilState\r\n} from './render_states';\r\nimport type { Pool } from './pool';\r\nimport type { ITimer } from './timer';\r\n\r\n/**\r\n * The webgl context type\r\n * @public\r\n */\r\nexport type WebGLContext = WebGLRenderingContext | WebGL2RenderingContext;\r\n\r\n/**\r\n * The texture type\r\n * @public\r\n */\r\nexport type TextureType = '2d' | '3d' | 'cube' | '2darray';\r\n\r\n/**\r\n * The comparison function type\r\n * @public\r\n */\r\nexport type CompareFunc = 'always' | 'le' | 'ge' | 'lt' | 'gt' | 'eq' | 'ne' | 'never';\r\n\r\n/**\r\n * The texture address mode\r\n * @public\r\n */\r\nexport type TextureAddressMode = 'repeat' | 'mirrored-repeat' | 'clamp';\r\n\r\n/**\r\n * The texture filter mode\r\n * @public\r\n */\r\nexport type TextureFilterMode = 'none' | 'nearest' | 'linear';\r\n\r\n/**\r\n * Scalar data type\r\n * @public\r\n */\r\nexport type DataType =\r\n | 'u8'\r\n | 'u8norm'\r\n | 'i8'\r\n | 'i8norm'\r\n | 'u16'\r\n | 'u16norm'\r\n | 'i16'\r\n | 'i16norm'\r\n | 'u32'\r\n | 'i32'\r\n | 'f16'\r\n | 'f32';\r\n\r\nconst RED_SHIFT = 0;\r\nconst GREEN_SHIFT = 1;\r\nconst BLUE_SHIFT = 2;\r\nconst ALPHA_SHIFT = 3;\r\nconst DEPTH_SHIFT = 4;\r\nconst STENCIL_SHIFT = 5;\r\nconst FLOAT_SHIFT = 6;\r\nconst INTEGER_SHIFT = 7;\r\nconst SIGNED_SHIFT = 8;\r\nconst SRGB_SHIFT = 9;\r\nconst BGR_SHIFT = 10;\r\nconst BLOCK_SIZE_SHIFT = 11;\r\nconst BLOCK_SIZE_MASK = 0x1f << BLOCK_SIZE_SHIFT;\r\nconst BLOCK_WIDTH_SHIFT = 16;\r\nconst BLOCK_WIDTH_MASK = 0xf << BLOCK_WIDTH_SHIFT;\r\nconst BLOCK_HEIGHT_SHIFT = 20;\r\nconst BLOCK_HEIGHT_MASK = 0xf << BLOCK_HEIGHT_SHIFT;\r\nconst COMPRESSED_FORMAT_SHIFT = 24;\r\n\r\nconst COMPRESSION_FORMAT_BC1 = 1 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC2 = 2 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC3 = 3 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC4 = 4 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC5 = 5 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC6H = 6 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC7 = 7 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC = 8 << COMPRESSED_FORMAT_SHIFT;\r\n/*\r\nconst COMPRESSION_FORMAT_ETC2_RGB8 = 8 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ETC2_RGB8_A1 = 9 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ETC2_RGBA8 = 10 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_4x4 = 11 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_5x4 = 12 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_5x5 = 13 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_6x5 = 14 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_6x6 = 15 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_8x5 = 16 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_8x6 = 17 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_8x8 = 18 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_10x5 = 19 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_10x6 = 20 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_10x8 = 21 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_10x10 = 22 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_12x10 = 23 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_12x12 = 24 << COMPRESSED_FORMAT_SHIFT;\r\n*/\r\nconst COMPRESSION_FORMAT_BITMASK = 0x1f << COMPRESSED_FORMAT_SHIFT;\r\nconst RED_BITMASK = 1 << RED_SHIFT;\r\nconst GREEN_BITMASK = 1 << GREEN_SHIFT;\r\nconst BLUE_BITMASK = 1 << BLUE_SHIFT;\r\nconst ALPHA_BITMASK = 1 << ALPHA_SHIFT;\r\nconst DEPTH_BITMASK = 1 << DEPTH_SHIFT;\r\nconst STENCIL_BITMASK = 1 << STENCIL_SHIFT;\r\nconst FLOAT_BITMASK = 1 << FLOAT_SHIFT;\r\nconst INTEGER_BITMASK = 1 << INTEGER_SHIFT;\r\nconst SIGNED_BITMASK = 1 << SIGNED_SHIFT;\r\nconst SRGB_BITMASK = 1 << SRGB_SHIFT;\r\nconst BGR_BITMASK = 1 << BGR_SHIFT;\r\n\r\nfunction makeTextureFormat(\r\n compression: number,\r\n r: boolean,\r\n g: boolean,\r\n b: boolean,\r\n a: boolean,\r\n depth: boolean,\r\n stencil: boolean,\r\n float: boolean,\r\n integer: boolean,\r\n signed: boolean,\r\n srgb: boolean,\r\n bgr: boolean,\r\n blockWidth: number,\r\n blockHeight: number,\r\n blockSize: number\r\n) {\r\n const compressionBits = compression;\r\n const colorBits =\r\n (r ? RED_BITMASK : 0) | (g ? GREEN_BITMASK : 0) | (b ? BLUE_BITMASK : 0) | (a ? ALPHA_BITMASK : 0);\r\n const depthStencilBits = (depth ? DEPTH_BITMASK : 0) | (stencil ? STENCIL_BITMASK : 0);\r\n const floatBits = float ? FLOAT_BITMASK : 0;\r\n const integerBits = integer ? INTEGER_BITMASK : 0;\r\n const signedBits = signed ? SIGNED_BITMASK : 0;\r\n const srgbBits = srgb ? SRGB_BITMASK : 0;\r\n const bgrBits = bgr ? BGR_BITMASK : 0;\r\n const blockBits =\r\n (blockWidth << BLOCK_WIDTH_SHIFT) | (blockHeight << BLOCK_HEIGHT_SHIFT) | (blockSize << BLOCK_SIZE_SHIFT);\r\n return (\r\n compressionBits |\r\n colorBits |\r\n depthStencilBits |\r\n floatBits |\r\n integerBits |\r\n signedBits |\r\n srgbBits |\r\n bgrBits |\r\n blockBits\r\n );\r\n}\r\n\r\n/**\r\n * Texture format type\r\n * @public\r\n */\r\nexport type TextureFormat =\r\n | 'r8unorm'\r\n | 'r8snorm'\r\n | 'r16f'\r\n | 'r32f'\r\n | 'r8ui'\r\n | 'r8i'\r\n | 'r16ui'\r\n | 'r16i'\r\n | 'r32ui'\r\n | 'r32i'\r\n | 'rg8unorm'\r\n | 'rg8snorm'\r\n | 'rg16f'\r\n | 'rg32f'\r\n | 'rg8ui'\r\n | 'rg8i'\r\n | 'rg16ui'\r\n | 'rg16i'\r\n | 'rg32ui'\r\n | 'rg32i'\r\n | 'rgba8unorm'\r\n | 'rgba8unorm-srgb'\r\n | 'rgba8snorm'\r\n | 'bgra8unorm'\r\n | 'bgra8unorm-srgb'\r\n | 'rgba16f'\r\n | 'rgba32f'\r\n | 'rgba8ui'\r\n | 'rgba8i'\r\n | 'rgba16ui'\r\n | 'rgba16i'\r\n | 'rgba32ui'\r\n | 'rgba32i'\r\n | 'rg11b10uf'\r\n | 'd16'\r\n | 'd24'\r\n | 'd32f'\r\n | 'd24s8'\r\n | 'd32fs8'\r\n | 'dxt1'\r\n | 'dxt1-srgb'\r\n | 'dxt3'\r\n | 'dxt3-srgb'\r\n | 'dxt5'\r\n | 'dxt5-srgb'\r\n | 'bc4'\r\n | 'bc4-signed'\r\n | 'bc5'\r\n | 'bc5-signed'\r\n | 'bc7'\r\n | 'bc7-srgb'\r\n | 'bc6h'\r\n | 'bc6h-signed'\r\n | 'astc-4x4'\r\n | 'astc-4x4-srgb'\r\n | 'astc-5x4'\r\n | 'astc-5x4-srgb'\r\n | 'astc-5x5'\r\n | 'astc-5x5-srgb'\r\n | 'astc-6x5'\r\n | 'astc-6x5-srgb'\r\n | 'astc-6x6'\r\n | 'astc-6x6-srgb'\r\n | 'astc-8x5'\r\n | 'astc-8x5-srgb'\r\n | 'astc-8x6'\r\n | 'astc-8x6-srgb'\r\n | 'astc-8x8'\r\n | 'astc-8x8-srgb'\r\n | 'astc-10x5'\r\n | 'astc-10x5-srgb'\r\n | 'astc-10x6'\r\n | 'astc-10x6-srgb'\r\n | 'astc-10x8'\r\n | 'astc-10x8-srgb'\r\n | 'astc-10x10'\r\n | 'astc-10x10-srgb'\r\n | 'astc-12x10'\r\n | 'astc-12x10-srgb'\r\n | 'astc-12x12'\r\n | 'astc-12x12-srgb';\r\n\r\nconst textureFormatMap: Record<TextureFormat, number> = {\r\n r8unorm: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 1\r\n ),\r\n r8snorm: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 1\r\n ),\r\n r16f: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n r32f: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n r8ui: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 1\r\n ),\r\n r8i: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 1\r\n ),\r\n r16ui: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n r16i: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n r32ui: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n r32i: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rg8unorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n rg8snorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n rg16f: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rg32f: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rg8ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n rg8i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n rg16ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rg16i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rg32ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rg32i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rgba8unorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n 'rgba8unorm-srgb': makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rgba8snorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n bgra8unorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n 'bgra8unorm-srgb': makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rgba16f: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rgba32f: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 16\r\n ),\r\n rgba8ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rgba8i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rgba16ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rgba16i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rgba32ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 16\r\n ),\r\n rgba32i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 16\r\n ),\r\n rg11b10uf: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n d16: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n d24: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 0,\r\n 0,\r\n 0\r\n ),\r\n d32f: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n d24s8: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n d32fs8: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 5\r\n ),\r\n // compressed texture formats\r\n dxt1: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC1,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 8\r\n ),\r\n 'dxt1-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC1,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 8\r\n ),\r\n dxt3: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC2,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'dxt3-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC2,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n dxt5: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC3,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'dxt5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC3,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n bc4: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC4,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 8\r\n ),\r\n 'bc4-signed': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC4,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 8\r\n ),\r\n bc5: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC5,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'bc5-signed': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC5,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n bc6h: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC6H,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'bc6h-signed': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC6H,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n bc7: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC7,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'bc7-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC7,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'astc-4x4': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'astc-4x4-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'astc-5x4': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 5,\r\n 4,\r\n 16\r\n ),\r\n 'astc-5x4-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 5,\r\n 4,\r\n 16\r\n ),\r\n 'astc-5x5': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 5,\r\n 5,\r\n 16\r\n ),\r\n 'astc-5x5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 5,\r\n 5,\r\n 16\r\n ),\r\n 'astc-6x5': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 6,\r\n 5,\r\n 16\r\n ),\r\n 'astc-6x5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 6,\r\n 5,\r\n 16\r\n ),\r\n 'astc-6x6': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 6,\r\n 6,\r\n 16\r\n ),\r\n 'astc-6x6-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 6,\r\n 6,\r\n 16\r\n ),\r\n 'astc-8x5': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 8,\r\n 5,\r\n 16\r\n ),\r\n 'astc-8x5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 8,\r\n 5,\r\n 16\r\n ),\r\n 'astc-8x6': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 8,\r\n 6,\r\n 16\r\n ),\r\n 'astc-8x6-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 8,\r\n 6,\r\n 16\r\n ),\r\n 'astc-8x8': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 8,\r\n 8,\r\n 16\r\n ),\r\n 'astc-8x8-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 8,\r\n 8,\r\n 16\r\n ),\r\n 'astc-10x5': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 10,\r\n 5,\r\n 16\r\n ),\r\n 'astc-10x5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 10,\r\n 5,\r\n 16\r\n ),\r\n 'astc-10x6': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 10,\r\n 6,\r\n 16\r\n ),\r\n 'astc-10x6-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 10,\r\n 6,\r\n 16\r\n ),\r\n 'astc-10x8': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 10,\r\n 8,\r\n 16\r\n ),\r\n 'astc-10x8-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 10,\r\n 8,\r\n 16\r\n ),\r\n 'astc-10x10': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 10,\r\n 10,\r\n 16\r\n ),\r\n 'astc-10x10-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 10,\r\n 10,\r\n 16\r\n ),\r\n 'astc-12x10': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 12,\r\n 10,\r\n 16\r\n ),\r\n 'astc-12x10-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 12,\r\n 10,\r\n 16\r\n ),\r\n 'astc-12x12': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 12,\r\n 12,\r\n 16\r\n ),\r\n 'astc-12x12-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 12,\r\n 12,\r\n 16\r\n )\r\n};\r\n\r\n/**\r\n * Converts a non-sRGB texture format to the corresponding sRGB texture format\r\n * @param format - The texture format to be converted\r\n * @returns The sRGB texture format\r\n * @public\r\n */\r\nexport function linearTextureFormatToSRGB(format: TextureFormat) {\r\n switch (format) {\r\n case 'rgba8unorm':\r\n return 'rgba8unorm-srgb';\r\n case 'bgra8unorm':\r\n return 'bgra8unorm-srgb';\r\n case 'dxt1':\r\n return 'dxt1-srgb';\r\n case 'dxt3':\r\n return 'dxt3-srgb';\r\n case 'dxt5':\r\n return 'dxt5-srgb';\r\n case 'bc7':\r\n return 'bc7-srgb';\r\n case 'astc-4x4':\r\n return 'astc-4x4-srgb';\r\n case 'astc-5x4':\r\n return 'astc-5x4-srgb';\r\n case 'astc-5x5':\r\n return 'astc-5x5-srgb';\r\n case 'astc-6x5':\r\n return 'astc-6x5-srgb';\r\n case 'astc-6x6':\r\n return 'astc-6x6-srgb';\r\n case 'astc-8x5':\r\n return 'astc-8x5-srgb';\r\n case 'astc-8x6':\r\n return 'astc-8x6-srgb';\r\n case 'astc-8x8':\r\n return 'astc-8x8-srgb';\r\n case 'astc-10x5':\r\n return 'astc-10x5-srgb';\r\n case 'astc-10x6':\r\n return 'astc-10x6-srgb';\r\n case 'astc-10x8':\r\n return 'astc-10x8-srgb';\r\n case 'astc-10x10':\r\n return 'astc-10x10-srgb';\r\n case 'astc-12x10':\r\n return 'astc-12x10-srgb';\r\n case 'astc-12x12':\r\n return 'astc-12x12-srgb';\r\n default:\r\n return format;\r\n }\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains an alpha channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains an alpha channel, otherwise false\r\n * @public\r\n */\r\nexport function hasAlphaChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & ALPHA_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a red channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a red channel, otherwise false\r\n * @public\r\n */\r\nexport function hasRedChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & RED_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a green channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a green channel, otherwise false\r\n * @public\r\n */\r\nexport function hasGreenChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & GREEN_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a blue channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a blue channel, otherwise false\r\n * @public\r\n */\r\nexport function hasBlueChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & BLUE_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a depth channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a depth channel, otherwise false\r\n * @public\r\n */\r\nexport function hasDepthChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & DEPTH_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a stencil channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a stencil channel, otherwise false\r\n * @public\r\n */\r\nexport function hasStencilChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & STENCIL_BITMASK);\r\n}\r\n\r\n/**\r\n * Check whether a given texture format is floating-point.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is floating-point, otherwise false\r\n * @public\r\n */\r\nexport function isFloatTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & FLOAT_BITMASK);\r\n}\r\n\r\n/**\r\n * Check whether a given texture format is integer.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is integer, otherwise false\r\n * @public\r\n */\r\nexport function isIntegerTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & INTEGER_BITMASK);\r\n}\r\n\r\n/**\r\n * Check whether a given texture format is signed.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is signed, otherwise false\r\n * @public\r\n */\r\nexport function isSignedTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & SIGNED_BITMASK);\r\n}\r\n\r\n/**\r\n * Check whether a given texture format is a compressed format.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is a compressed format, otherwise false\r\n * @public\r\n */\r\nexport function isCompressedTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & COMPRESSION_FORMAT_BITMASK);\r\n}\r\n/**\r\n * Check whether a given texture format is sRGB format.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is sRGB format, otherwise false\r\n * @public\r\n */\r\nexport function isSRGBTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & SRGB_BITMASK);\r\n}\r\n\r\n/**\r\n * Get block size of given texture format\r\n * @param format - The texture format\r\n * @returns The block size\r\n * @public\r\n */\r\nexport function getTextureFormatBlockSize(format: TextureFormat) {\r\n return (textureFormatMap[format] & BLOCK_SIZE_MASK) >> BLOCK_SIZE_SHIFT;\r\n}\r\n\r\n/**\r\n * Get block width of given texture format\r\n * @param format - The texture format\r\n * @returns The block width\r\n * @public\r\n */\r\nexport function getTextureFormatBlockWidth(format: TextureFormat) {\r\n return (textureFormatMap[format] & BLOCK_WIDTH_MASK) >> BLOCK_WIDTH_SHIFT;\r\n}\r\n\r\n/**\r\n * Get block height of given texture format\r\n * @param format - The texture format\r\n * @returns The block height\r\n * @public\r\n */\r\nexport function getTextureFormatBlockHeight(format: TextureFormat) {\r\n return (textureFormatMap[format] & BLOCK_HEIGHT_MASK) >> BLOCK_HEIGHT_SHIFT;\r\n}\r\n\r\nfunction normalizeColorComponent(val: number, maxval: number) {\r\n return Math.min(maxval, Math.max(Math.floor(val * maxval), 0));\r\n}\r\n\r\nfunction normalizeColorComponentSigned(val: number, maxval: number) {\r\n return normalizeColorComponent(val * 0.5 + 0.5, maxval) - (maxval + 1) / 2;\r\n}\r\n\r\n/** @internal */\r\nexport function encodePixel(format: TextureFormat, r: number, g: number, b: number, a: number) {\r\n switch (format) {\r\n case 'r8unorm':\r\n return new Uint8Array([normalizeColorComponent(r, 255)]);\r\n case 'r8snorm':\r\n return new Int8Array([normalizeColorComponentSigned(r, 255)]);\r\n case 'r16f':\r\n return new Uint16Array([float2half(r)]);\r\n case 'r32f':\r\n return new Float32Array([r]);\r\n case 'r8ui':\r\n return new Uint8Array([r | 0]);\r\n case 'r8i':\r\n return new Int8Array([r | 0]);\r\n case 'r16ui':\r\n return new Uint16Array([r | 0]);\r\n case 'r16i':\r\n return new Int16Array([r | 0]);\r\n case 'r32ui':\r\n return new Uint32Array([r | 0]);\r\n case 'r32i':\r\n return new Int32Array([r | 0]);\r\n case 'rg8unorm':\r\n return new Uint8Array([normalizeColorComponent(r, 255), normalizeColorComponent(g, 255)]);\r\n case 'rg8snorm':\r\n return new Int8Array([normalizeColorComponentSigned(r, 255), normalizeColorComponentSigned(g, 255)]);\r\n case 'rg16f':\r\n return new Uint16Array([float2half(r), float2half(g)]);\r\n case 'rg32f':\r\n return new Float32Array([r, g]);\r\n case 'rg8ui':\r\n return new Uint8Array([r | 0, g | 0]);\r\n case 'rg8i':\r\n return new Int8Array([r | 0, g | 0]);\r\n case 'rg16ui':\r\n return new Uint16Array([r | 0, g | 0]);\r\n case 'rg16i':\r\n return new Int16Array([r | 0, g | 0]);\r\n case 'rg32ui':\r\n return new Uint32Array([r | 0, g | 0]);\r\n case 'rg32i':\r\n return new Int32Array([r | 0, g | 0]);\r\n case 'rgba8unorm':\r\n case 'rgba8unorm-srgb':\r\n return new Uint8Array([\r\n normalizeColorComponent(r, 255),\r\n normalizeColorComponent(g, 255),\r\n normalizeColorComponent(b, 255),\r\n normalizeColorComponent(a, 255)\r\n ]);\r\n case 'bgra8unorm':\r\n case 'bgra8unorm-srgb':\r\n return new Uint8Array([\r\n normalizeColorComponent(b, 255),\r\n normalizeColorComponent(g, 255),\r\n normalizeColorComponent(r, 255),\r\n normalizeColorComponent(a, 255)\r\n ]);\r\n case 'rgba8snorm':\r\n return new Int8Array([\r\n normalizeColorComponentSigned(r, 255),\r\n normalizeColorComponentSigned(g, 255),\r\n normalizeColorComponentSigned(b, 255),\r\n normalizeColorComponentSigned(a, 255)\r\n ]);\r\n case 'rgba16f':\r\n return new Uint16Array([float2half(r), float2half(g), float2half(b), float2half(a)]);\r\n case 'rgba32f':\r\n return new Float32Array([r, g, b, a]);\r\n case 'rgba8ui':\r\n return new Uint8Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba8i':\r\n return new Int8Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba16ui':\r\n return new Uint16Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba16i':\r\n return new Int16Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba32ui':\r\n return new Uint32Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba32i':\r\n return new Int32Array([r | 0, g | 0, b | 0, a | 0]);\r\n default:\r\n throw new Error(`Invalid texture format: ${format}`);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function encodePixelToArray(\r\n format: TextureFormat,\r\n r: number,\r\n g: number,\r\n b: number,\r\n a: number,\r\n arr: Array<number>\r\n) {\r\n switch (format) {\r\n case 'r8unorm':\r\n arr.push(normalizeColorComponent(r, 255));\r\n break;\r\n case 'r8snorm':\r\n arr.push(normalizeColorComponentSigned(r, 255));\r\n break;\r\n case 'r16f':\r\n arr.push(float2half(r));\r\n break;\r\n case 'r32f':\r\n arr.push(r);\r\n break;\r\n case 'r8ui':\r\n arr.push(r | 0);\r\n break;\r\n case 'r8i':\r\n arr.push(r | 0);\r\n break;\r\n case 'r16ui':\r\n arr.push(r | 0);\r\n break;\r\n case 'r16i':\r\n arr.push(r | 0);\r\n break;\r\n case 'r32ui':\r\n arr.push(r | 0);\r\n break;\r\n case 'r32i':\r\n arr.push(r | 0);\r\n break;\r\n case 'rg8unorm':\r\n arr.push(normalizeColorComponent(r, 255), normalizeColorComponent(g, 255));\r\n break;\r\n case 'rg8snorm':\r\n arr.push(normalizeColorComponentSigned(r, 255), normalizeColorComponentSigned(g, 255));\r\n break;\r\n case 'rg16f':\r\n arr.push(float2half(r), float2half(g));\r\n break;\r\n case 'rg32f':\r\n arr.push(r, g);\r\n break;\r\n case 'rg8ui':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg8i':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg16ui':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg16i':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg32ui':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg32i':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rgba8unorm':\r\n case 'rgba8unorm-srgb':\r\n arr.push(\r\n normalizeColorComponent(r, 255),\r\n normalizeColorComponent(g, 255),\r\n normalizeColorComponent(b, 255),\r\n normalizeColorComponent(a, 255)\r\n );\r\n break;\r\n case 'bgra8unorm':\r\n case 'bgra8unorm-srgb':\r\n arr.push(\r\n normalizeColorComponent(b, 255),\r\n normalizeColorComponent(g, 255),\r\n normalizeColorComponent(r, 255),\r\n normalizeColorComponent(a, 255)\r\n );\r\n break;\r\n case 'rgba8snorm':\r\n arr.push(\r\n normalizeColorComponentSigned(r, 255),\r\n normalizeColorComponentSigned(g, 255),\r\n normalizeColorComponentSigned(b, 255),\r\n normalizeColorComponentSigned(a, 255)\r\n );\r\n break;\r\n case 'rgba16f':\r\n arr.push(float2half(r), float2half(g), float2half(b), float2half(a));\r\n break;\r\n case 'rgba32f':\r\n arr.push(r, g, b, a);\r\n break;\r\n case 'rgba8ui':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba8i':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba16ui':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba16i':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba32ui':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba32i':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * The primitive type\r\n * @public\r\n */\r\nexport type PrimitiveType =\r\n | 'triangle-list'\r\n | 'triangle-strip'\r\n | 'triangle-fan'\r\n | 'line-list'\r\n | 'line-strip'\r\n | 'point-list';\r\n\r\n/**\r\n * Shader type\r\n * @public\r\n */\r\nexport enum ShaderType {\r\n Vertex = 1 << 0,\r\n Fragment = 1 << 1,\r\n Compute = 1 << 2\r\n}\r\n\r\n/**\r\n * Shader kind\r\n * @public\r\n */\r\nexport type ShaderKind = 'vertex' | 'fragment' | 'compute';\r\n\r\n/**\r\n * Frame information\r\n * @public\r\n */\r\nexport interface FrameInfo {\r\n /** counter of frames */\r\n frameCounter: number;\r\n /** timestamp of current frame, in milliseconds */\r\n frameTimestamp: number;\r\n /** time spent by the CPU from last frame, in milliseconds */\r\n elapsedTimeCPU: number;\r\n /** time spent by the GPU from last frame, in milliseconds */\r\n elapsedTimeGPU: number;\r\n /** time spent from last frame, in milliseconds */\r\n elapsedFrame: number;\r\n /** time spent from the first frame, in milliseconds */\r\n elapsedOverall: number;\r\n /** the FPS calculated for the last one second */\r\n FPS: number;\r\n /** How many draw calls were sent to the GPU in current frame */\r\n drawCalls: number;\r\n /** How many compute calls were sent to the GPU in current frame */\r\n computeCalls: number;\r\n /** @internal */\r\n nextFrameCall: (() => void)[];\r\n /** @internal */\r\n nextFrameCallNext: (() => void)[];\r\n}\r\n\r\n/**\r\n * List of all gpu objects\r\n * @public\r\n */\r\nexport interface GPUObjectList {\r\n /** Creation stack */\r\n stacks: Map<GPUObject, string>;\r\n /** list of textures */\r\n textures: BaseTexture[];\r\n /** list of samplers */\r\n samplers: TextureSampler[];\r\n /** list of buffers */\r\n buffers: GPUDataBuffer[];\r\n /** list of programs */\r\n programs: GPUProgram[];\r\n /** list of frame buffers */\r\n framebuffers: FrameBuffer[];\r\n /** list of vertex layouts */\r\n vertexArrayObjects: VertexLayout[];\r\n /** list of bind groups */\r\n bindGroups: BindGroup[];\r\n}\r\n\r\n/**\r\n * The device capabilities\r\n * @public\r\n */\r\nexport interface DeviceCaps {\r\n /** Miscellaneous capabilities */\r\n miscCaps: MiscCaps;\r\n /** Frame buffer related capabilities */\r\n framebufferCaps: FramebufferCaps;\r\n /** Shader related capabilities */\r\n shaderCaps: ShaderCaps;\r\n /** Texture related capabilities */\r\n textureCaps: TextureCaps;\r\n}\r\n\r\n/**\r\n * Frame buffer related capabilities of the device\r\n * @public\r\n */\r\nexport interface FramebufferCaps {\r\n /** The maximum number of framebuffer color attachment points */\r\n maxDrawBuffers: number;\r\n /** True if device supports rendering to mipmap */\r\n supportRenderMipmap: boolean;\r\n /** True if device supports multisampled frame buffer */\r\n supportMultisampledFramebuffer: boolean;\r\n /** True if device supports blending on float point frame buffer */\r\n supportFloatBlending: boolean;\r\n /** True if device supports 32bits float depth buffer */\r\n supportDepth32float: boolean;\r\n /** True if device supports 32bits float depth buffer with 8bits stencil */\r\n supportDepth32floatStencil8: boolean;\r\n /** Maximum color attachment bytes per sample */\r\n maxColorAttachmentBytesPerSample: number;\r\n}\r\n\r\n/**\r\n * Miscellaneous capabilities of the device\r\n * @public\r\n */\r\nexport interface MiscCaps {\r\n /** True if the device supports oversized viewport */\r\n supportOversizedViewport: boolean;\r\n /** True if the device supports minimum and maximum blending equations */\r\n supportBlendMinMax: boolean;\r\n /** True if the device supports 32-bits index buffer */\r\n support32BitIndex: boolean;\r\n /** The maximum number of {@link BindGroupLayout}'s in a shader program */\r\n maxBindGroups: number;\r\n /** The maximum number of texture coordinate index */\r\n maxTexCoordIndex: number;\r\n}\r\n\r\n/**\r\n * Shader related capabilities of the device\r\n * @public\r\n */\r\nexport interface ShaderCaps {\r\n /** True if the device supports writing depth value in a fragment shader */\r\n supportFragmentDepth: boolean;\r\n /** True if the device supports derivative functions in a fragment shader */\r\n supportStandardDerivatives: boolean;\r\n /** True if the device supports explicit control of texture LOD in a fragment shader */\r\n supportShaderTextureLod: boolean;\r\n /** True if the device supports high precison float number for shader programs */\r\n supportHighPrecisionFloat: boolean;\r\n /** The maximum number of bytes of uniform buffer */\r\n maxUniformBufferSize: number;\r\n /** The uniform buffer offset alignment */\r\n uniformBufferOffsetAlignment: number;\r\n /** The maximum number of bytes of storage buffer */\r\n maxStorageBufferSize: number;\r\n /** The storage buffer offset alignment */\r\n storageBufferOffsetAlignment: number;\r\n}\r\n\r\n/**\r\n * Information of a texture format\r\n * @public\r\n */\r\nexport interface TextureFormatInfo {\r\n /** True if the texture format supports linear filtering */\r\n filterable: boolean;\r\n /** True if the texture format can be used as a render target */\r\n renderable: boolean;\r\n /** True if the texture format is a compressed format */\r\n compressed: boolean;\r\n /** Number of bytes per-block */\r\n size: number;\r\n /** Block width */\r\n blockWidth: number;\r\n /** Block height */\r\n blockHeight: number;\r\n}\r\n\r\n/**\r\n * Texture related capabilities of the device'\r\n * @public\r\n */\r\nexport interface TextureCaps {\r\n /** The maximum size for 2d texture */\r\n maxTextureSize: number;\r\n /** The maximum size for cube texture */\r\n maxCubeTextureSize: number;\r\n /** True if mipmapping is supported for non power of 2 textures */\r\n npo2Mipmapping: boolean;\r\n /** True if repeat address mode is supported for non power of 2 textures */\r\n npo2Repeating: boolean;\r\n /** True if device supports dxt1, dxt3, dxt5 texture format */\r\n supportS3TC: boolean;\r\n /** True if device supports bptc texture format */\r\n supportBPTC: boolean;\r\n /** True if device supports rgtc texture format */\r\n supportRGTC: boolean;\r\n /** True if device supports astc texture format */\r\n supportASTC: boolean;\r\n /** True if device supports dxt1_srgb, dxt3-srgb, dxt5-srgb texture format */\r\n supportS3TCSRGB: boolean;\r\n /** True if device supports depth texture */\r\n supportDepthTexture: boolean;\r\n /** True if device supports 3d texture */\r\n support3DTexture: boolean;\r\n /** True if device supports sRGB texture */\r\n supportSRGBTexture: boolean;\r\n /** True if device supports 32bit floating-point texture */\r\n supportFloatTexture: boolean;\r\n /** True if device supports linear filtering on 32bit floating-point textures */\r\n supportLinearFloatTexture: boolean;\r\n /** True if device supports 16bit floating-point texture */\r\n supportHalfFloatTexture: boolean;\r\n /** True if device supports linear filtering on 16bit floating-point textures */\r\n supportLinearHalfFloatTexture: boolean;\r\n /** True if device supports anisotropic filtering */\r\n supportAnisotropicFiltering: boolean;\r\n /** True if device supports rendering into a 32bit floating-point frame buffer */\r\n supportFloatColorBuffer: boolean;\r\n /** True if device supports rendering into a 16bit floating-point frame buffer */\r\n supportHalfFloatColorBuffer: boolean;\r\n /** True if device supports alpha blending with floating-point frame buffer */\r\n supportFloatBlending: boolean;\r\n /**\r\n * Get information of a given texture format\r\n * @param format - The texture format\r\n * @returns the texture format infomation\r\n */\r\n getTextureFormatInfo(format: TextureFormat): Immutable<TextureFormatInfo>;\r\n}\r\n\r\n/**\r\n * Creation options of rendering shader program\r\n * @public\r\n */\r\nexport interface RenderProgramConstructParams {\r\n /** The vertex shader source code */\r\n vs: string;\r\n /** The fragment shader source code */\r\n fs: string;\r\n /** Bind group layouts for the program */\r\n bindGroupLayouts: BindGroupLayout[];\r\n /** Vertex attributes used in the program */\r\n vertexAttributes: number[];\r\n}\r\n\r\n/**\r\n * Creation options of computing shader program\r\n * @public\r\n */\r\nexport interface ComputeProgramConstructParams {\r\n /** The shader source */\r\n source: string;\r\n /** Bind group layouts for the program */\r\n bindGroupLayouts: BindGroupLayout[];\r\n}\r\n\r\n/**\r\n * Creation options for shader program\r\n * @public\r\n */\r\nexport interface GPUProgramConstructParams {\r\n /** Type of the program to be created */\r\n type: 'render' | 'compute';\r\n /** Label of the program */\r\n label?: string;\r\n /** The creation options */\r\n params: RenderProgramConstructParams | ComputeProgramConstructParams;\r\n}\r\n\r\n/**\r\n * Creation options for device\r\n * @public\r\n */\r\nexport interface DeviceOptions {\r\n /** True if the device must have a MSAA back buffer */\r\n msaa?: boolean;\r\n /** The device pixel ratio */\r\n dpr?: number;\r\n}\r\n\r\n/**\r\n * The device event map\r\n * @public\r\n */\r\nexport type DeviceEventMap = {\r\n resize: [cssWidth: number, cssHeight: number, deviceWidth: number, deviceHeight: number];\r\n devicelost: [];\r\n devicerestored: [];\r\n gpuobject_added: [obj: GPUObject];\r\n gpuobject_removed: [obj: GPUObject];\r\n gpuobject_rename: [obj: GPUObject, lastName: string];\r\n};\r\n\r\n/**\r\n * Structure that contains the device viewport information\r\n * @public\r\n */\r\nexport type DeviceViewport = {\r\n /** viewport left */\r\n x: number;\r\n /** viewport top */\r\n y: number;\r\n /** viewport width */\r\n width: number;\r\n /** viewport height */\r\n height: number;\r\n /**\r\n * A boolean value that indicates whether this is full screen viewport\r\n * @remarks\r\n * The full screen viewport will be automatically resized when the screen size chenged\r\n */\r\n default: boolean;\r\n};\r\n\r\n/**\r\n * Abstract interface for the rendering device.\r\n * @public\r\n */\r\nexport interface AbstractDevice extends IEventTarget<DeviceEventMap> {\r\n /** Get pool object */\r\n pool: Pool;\r\n /** vSync */\r\n vSync: boolean;\r\n /** Check if a pool with given key exists */\r\n poolExists(key: string | symbol): boolean;\r\n /** Get the pool with given key, or create a new one if not exists */\r\n getPool(key: string | symbol): Pool;\r\n /** Get adapter information */\r\n getAdapterInfo(): any;\r\n /** Get sample count of current frame buffer */\r\n getFrameBufferSampleCount(): number;\r\n /** Returns true if device context is lost. */\r\n isContextLost(): boolean;\r\n /** Get the value of device pixel ratio in X axis */\r\n getScaleX(): number;\r\n /** Get the value of device pixel ratio in Y axis */\r\n getScaleY(): number;\r\n /** Get the width of current frame buffer */\r\n getDrawingBufferWidth(): number;\r\n /** Get the height of current frame buffer */\r\n getDrawingBufferHeight(): number;\r\n /** Get the width of back buffer */\r\n getBackBufferWidth(): number;\r\n /** Get the height of back buffer */\r\n getBackBufferHeight(): number;\r\n /** Get the device capabilities */\r\n getDeviceCaps(): Immutable<DeviceCaps>;\r\n /** Schedule next frame */\r\n nextFrame(callback: () => void): number;\r\n /** Cancel schedule next frame */\r\n cancelNextFrame(handle: number): void;\r\n /** Set font for drawText function */\r\n setFont(fontName: string): void;\r\n /**\r\n * Draw a string\r\n * @param text - The string that will be drawn\r\n * @param x - x coordinate in pixels related to the viewport origin\r\n * @param y - y coordinate in pixels related to the viewport origin\r\n * @param color - A CSS color value\r\n */\r\n drawText(text: string, x: number, y: number, color: string, viewport?: Immutable<number[]>): void;\r\n /**\r\n * Clears the current frame buffer\r\n * @param clearColor - If not null, the color buffer will be cleared to this value.\r\n * @param clearDepth - If not null, the depth buffer will be cleared to this value.\r\n * @param clearStencil - If not null, the stencil buffer will be cleared to this value.\r\n */\r\n clearFrameBuffer(\r\n clearColor: Nullable<Vector4>,\r\n clearDepth: Nullable<number>,\r\n clearStencil: Nullable<number>\r\n ): void;\r\n /** Creates a GPU timer */\r\n createGPUTimer(): Nullable<ITimer>;\r\n /** Creates a render state set object */\r\n createRenderStateSet(): RenderStateSet;\r\n /** Creates a blending state object */\r\n createBlendingState(): BlendingState;\r\n /** Creates a color state object */\r\n createColorState(): ColorState;\r\n /** Creates a rasterizer state object */\r\n createRasterizerState(): RasterizerState;\r\n /** Creates a depth state object */\r\n createDepthState(): DepthState;\r\n /** Creates a stencil state object */\r\n createStencilState(): StencilState;\r\n /**\r\n * Creates a texture sampler object\r\n * @param options - The creation options\r\n * @returns The created texture sampler\r\n */\r\n createSampler(options: SamplerOptions): TextureSampler;\r\n /**\r\n * Creates a texture from given mipmap data\r\n * @param data - Mipmap data\r\n * @param options - Texture creation options\r\n * @returns The created texture\r\n */\r\n createTextureFromMipmapData<T extends BaseTexture = BaseTexture>(\r\n data: TextureMipmapData,\r\n sRGB: boolean,\r\n options?: TextureCreationOptions\r\n ): Nullable<T>;\r\n /**\r\n * Creates a 2d texture\r\n * @param format - The texture format\r\n * @param width - Pixel width of the texture\r\n * @param height - Pixel height of the texture\r\n * @param options - The creation options\r\n * @returns The created 2D texture\r\n */\r\n createTexture2D(\r\n format: TextureFormat,\r\n width: number,\r\n height: number,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture2D>;\r\n /**\r\n * Creates a 2d texture from a image element\r\n * @param element - The image element\r\n * @param options - The creation options\r\n * @returns The created 2D texture.\r\n */\r\n createTexture2DFromImage(\r\n element: TextureImageElement,\r\n sRGB: boolean,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture2D>;\r\n /**\r\n * Creates a 2d array texture\r\n * @param format - The texture format\r\n * @param width - Pixel width of the texture\r\n * @param height - Pixel height of the texture\r\n * @param depth - Array length of the texture\r\n * @param options - The creation options\r\n * @returns The created 2D array texture.\r\n */\r\n createTexture2DArray(\r\n format: TextureFormat,\r\n width: number,\r\n height: number,\r\n depth: number,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture2DArray>;\r\n /**\r\n * Creates a 2d array texture from a seris of image elements\r\n * @remarks image elements must have the same size.\r\n * @param elements - image elements\r\n * @param options - The creation options\r\n * @returns The created 2D array texture.\r\n */\r\n createTexture2DArrayFromImages(\r\n elements: TextureImageElement[],\r\n sRGB: boolean,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture2DArray>;\r\n /**\r\n * Creates a 3D texture\r\n * @param format - The texture format\r\n * @param width - Pixel width of the texture\r\n * @param height - Pixel height of the texture\r\n * @param depth - Pixel depth of the texture\r\n * @param options - The creation options\r\n * @returns The created 3D texture.\r\n */\r\n createTexture3D(\r\n format: TextureFormat,\r\n width: number,\r\n height: number,\r\n depth: number,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture3D>;\r\n /**\r\n * Creates a cube texture\r\n * @param format - The texture format\r\n * @param size - Pixel width of the texture\r\n * @param options - The creation options\r\n * @returns The created cube texture.\r\n */\r\n createCubeTexture(\r\n format: TextureFormat,\r\n size: number,\r\n options?: TextureCreationOptions\r\n ): Nullable<TextureCube>;\r\n /**\r\n * Creates a video texture from a video element\r\n * @param el - The video element\r\n * @returns The created video texture.\r\n */\r\n createTextureVideo(el: HTMLVideoElement, samplerOptions?: SamplerOptions): TextureVideo;\r\n /**\r\n * Copies a 2d texture to another texture.\r\n *\r\n * @remarks\r\n * The two textures must have the same size and format\r\n *\r\n * @param src - Texture that will be copied from.\r\n * @param srcLevel - Which mipmap level to be copied from.\r\n * @param dst - Texture that will be copied to.\r\n * @param dstLevel - Which mipmap level to be copied to.\r\n */\r\n copyTexture2D(src: Texture2D, srcLevel: number, dst: Texture2D, dstLevel: number): void;\r\n /**\r\n * Copies a color attachment of a framebuffer to a mipmap level of a texture.\r\n *\r\n * @remarks\r\n * The color attachment and the mipmap level must have the same size and format\r\n *\r\n * @param src - Framebuffer that will be copied from.\r\n * @param index - Color attachment index of the framebuffer.\r\n * @param dst - Texture that will be copied to.\r\n * @param level - Which mipmap level should be copied to.\r\n */\r\n copyFramebufferToTexture2D(src: FrameBuffer, index: number, dst: Texture2D, level: number): void;\r\n /**\r\n * Set wether to reverse the winding order\r\n *\r\n * @remarks\r\n * The default winding order is counter-clockwise.\r\n *\r\n * @param reverse - true if the winding order should be reversed.\r\n */\r\n reverseVertexWindingOrder(reverse: boolean): void;\r\n /**\r\n * Check if the current winding order is reversed.\r\n */\r\n isWindingOrderReversed(): boolean;\r\n /**\r\n * Creates a gpu program\r\n * @param params - The creation options\r\n * @returns The created program.\r\n */\r\n createGPUProgram(params: GPUProgramConstructParams): GPUProgram;\r\n /**\r\n * Creates a bind group\r\n * @param layout - Layout of the bind group\r\n * @returns The created bind group.\r\n */\r\n createBindGroup(layout: Immutable<BindGroupLayout>): BindGroup;\r\n /**\r\n * Creates a gpu buffer\r\n * @param sizeInBytes - Size of the buffer in bytes\r\n * @param options - The creation options\r\n * @returns The created buffer.\r\n */\r\n createBuffer(sizeInBytes: number, options: BufferCreationOptions): GPUDataBuffer;\r\n /**\r\n * Copies a buffer to another buffer\r\n * @param sourceBuffer - Source buffer\r\n * @param destBuffer - destination buffer\r\n * @param srcOffset - Source offset in bytes\r\n * @param dstOffset - Destination offset in bytes\r\n * @param bytes - How many bytes to be copy\r\n */\r\n copyBuffer(\r\n sourceBuffer: GPUDataBuffer,\r\n destBuffer: GPUDataBuffer,\r\n srcOffset: number,\r\n dstOffset: number,\r\n bytes: number\r\n ): void;\r\n /**\r\n * Creates an index buffer\r\n * @param data - Data of the index buffer\r\n * @param options - The creation options\r\n * @returns The created index buffer.\r\n */\r\n createIndexBuffer(\r\n data: Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>,\r\n options?: BufferCreationOptions\r\n ): IndexBuffer;\r\n /**\r\n * Creates a structured buffer\r\n * @param structureType - The structure type\r\n * @param options - The creation options\r\n * @param data - Data to be filled with\r\n * @returns The created structured buffer.\r\n */\r\n createStructuredBuffer(\r\n structureType: PBStructTypeInfo,\r\n options: BufferCreationOptions,\r\n data?: TypedArray\r\n ): StructuredBuffer;\r\n /**\r\n * Creates a vertex layout object.\r\n * @param options - The creation options\r\n * @returns The created vertex layout object.\r\n */\r\n createVertexLayout(options: VertexLayoutOptions): VertexLayout;\r\n /**\r\n * Creates a frame buffer\r\n * @param options - The creation options\r\n * @returns The created framebuffer.\r\n */\r\n createFrameBuffer(\r\n colorAttachments: BaseTexture[],\r\n depthAttachment: Nullable<BaseTexture>,\r\n options?: Nullable<FrameBufferOptions>\r\n ): FrameBuffer;\r\n /**\r\n * Set viewport from an array that contains the position and size\r\n *\r\n * @param vp - The viewport position and size, if not specified, the viewport will be set to [0, 0, drawingBufferWidth, drawingBufferHeight]\r\n */\r\n setViewport(vp: Nullable<Immutable<DeviceViewport | number[]>>): void;\r\n /** Get current viewport as [x, y, width, height] */\r\n getViewport(): Immutable<DeviceViewport>;\r\n /**\r\n * Set scissor rectangle from an array that contains the position and size\r\n * @param scissor - The scissor rectangle position and size, if not specified, the scissor rectangle will be set to [0, 0, drawingBufferWidth,drawingBufferHeight]\r\n */\r\n setScissor(scissor: Nullable<Immutable<DeviceViewport | number[]>>): void;\r\n /**\r\n * Get current scissor rectangle\r\n */\r\n getScissor(): Immutable<DeviceViewport>;\r\n /**\r\n * Set current GPU program\r\n * @param program - The GPU program to be set\r\n */\r\n setProgram(program: Nullable<GPUProgram>): void;\r\n /**\r\n * Get current GPU program\r\n */\r\n getProgram(): Nullable<GPUProgram>;\r\n /**\r\n * Set current vertex layout\r\n *\r\n * @param vertexData - The vertex layout to be set\r\n */\r\n setVertexLayout(vertexData: Nullable<VertexLayout>): void;\r\n /** Get current vertex layout */\r\n getVertexLayout(): Nullable<VertexLayout>;\r\n /**\r\n * Set current render states\r\n *\r\n * @param renderStates - The render state set\r\n */\r\n setRenderStates(renderStates: Nullable<RenderStateSet>): void;\r\n /** Get current render states */\r\n getRenderStates(): Nullable<RenderStateSet>;\r\n /**\r\n * Sets the current framebuffer to the specified FrameBuffer object.\r\n *\r\n * @param rt - The FrameBuffer object to set as the current framebuffer.\r\n */\r\n setFramebuffer(rt: Nullable<FrameBuffer>): void;\r\n /**\r\n * Sets the current framebuffer specifying complex color attachments, an optional depth attachment, MIP level, face, and sample count.\r\n *\r\n * @param color - An array of BaseTextures or objects containing a BaseTexture and optional properties. Each BaseTexture or object will serve as a color attachment.\r\n * - If an object is provided, it can specify:\r\n * - `texture`: The BaseTexture to use.\r\n * - `miplevel`: Optional MIP level for this specific texture. default is 0.\r\n * - `face`: Optional face index for cube map textures, specifying the cube face this texture is attached to. default is 0.\r\n * - `layer`: Optional layer index, useful for texture arrays. default is 0.\r\n * @param depth - Optional BaseTexture to serve as the depth attachment.\r\n * @param sampleCount - Optional sample count defining the number of samples for multisampling.\r\n */\r\n setFramebuffer(color: BaseTexture[], depth?: BaseTexture, sampleCount?: number): void;\r\n setFramebuffer(\r\n colorOrRT: BaseTexture[] | Nullable<FrameBuffer>,\r\n depth?: BaseTexture,\r\n sampleCount?: number\r\n ): void;\r\n /** Get current frame buffer */\r\n getFramebuffer(): Nullable<FrameBuffer>;\r\n /**\r\n * Set current bind group\r\n *\r\n * @param index - index of the bind group\r\n * @param bindGroup - The bind group to be set\r\n * @param dynamicOffsets - dynamic uniform buffer offsets of the bind group or null\r\n */\r\n setBindGroup(index: number, bindGroup: BindGroup, dynamicOffsets?: Nullable<Iterable<number>>): void;\r\n /**\r\n * Get current bind group\r\n * @param index - index of the bind group to get\r\n */\r\n getBindGroup(index: number): [BindGroup, Nullable<Iterable<number>>];\r\n /** Flush the gpu command buffer */\r\n flush(): void;\r\n /**\r\n * Read pixel values from current frame buffer\r\n *\r\n * @remarks\r\n * This method reads the data asynchronously to prevent GPU stall.\r\n * For WebGL1 devices, the GPU stall is still inevitable.\r\n *\r\n * @param index - color attachment index\r\n * @param x - x position of the reading area\r\n * @param y - y position of the reading area\r\n * @param w - width of the reading area\r\n * @param h - height of the reading area\r\n * @param buffer - The output buffer\r\n */\r\n readPixels(index: number, x: number, y: number, w: number, h: number, buffer: TypedArray): Promise<void>;\r\n /**\r\n * Read pixel values from current frame buffer to a GPU buffer\r\n *\r\n * @remarks\r\n * This method does not support WebGL1 device\r\n *\r\n * @param index - color attachment index\r\n * @param x - x position of the reading area\r\n * @param y - y position of the reading area\r\n * @param w - width of the reading area\r\n * @param h - height of the reading area\r\n * @param buffer - The output buffer\r\n */\r\n readPixelsToBuffer(index: number, x: number, y: number, w: number, h: number, buffer: GPUDataBuffer): void;\r\n /**\r\n * Begin capture draw commands\r\n */\r\n beginCapture(): void;\r\n /**\r\n * Executes render bundle\r\n * @param renderBundle - RenderBundle to be execute\r\n */\r\n executeRenderBundle(renderBundle: RenderBundle): void;\r\n /**\r\n * End capture draw commands\r\n * @returns A RenderBundle that holds the captured draw commands\r\n */\r\n endCapture(): RenderBundle;\r\n /** Get the video memory usage in bytes */\r\n videoMemoryUsage: number;\r\n /** Get the current frame information */\r\n frameInfo: FrameInfo;\r\n /** Check if the device is running a rendering loop by calling {@link AbstractDevice.runLoop} */\r\n isRendering: boolean;\r\n /** Get the canvas element for this device */\r\n canvas: HTMLCanvasElement;\r\n /** Get the device type */\r\n type: string;\r\n /** Get the program builder */\r\n programBuilder: ProgramBuilder;\r\n /** Get the run loop callback function */\r\n runLoopFunction: Nullable<(device: AbstractDevice) => void>;\r\n /**\r\n * Begins a frame for rendering\r\n *\r\n * @remarks\r\n * All rendering call must occur between the @see AbstractDevice.beginFrame and @see AbstractDevice.endFrame methods\r\n */\r\n beginFrame(): boolean;\r\n /**\r\n * Ends a frame for rendering\r\n *\r\n * @remarks\r\n * All rendering call must occur between the @see AbstractDevice.beginFrame and @see AbstractDevice.endFrame methods\r\n */\r\n endFrame(): void;\r\n /**\r\n * Get the vertex attribute format from vertex semantic and data type\r\n *\r\n * @param semantic - The vertex semantic\r\n * @param dataType - The data type\r\n * @param componentCount - The component count\r\n */\r\n getVertexAttribFormat(\r\n semantic: VertexSemantic,\r\n dataType: DataType,\r\n componentCount: number\r\n ): Nullable<VertexAttribFormat>;\r\n /**\r\n * Creates an interleaved vertex buffer\r\n *\r\n * @param attribFormats - The vertex attribute formats for each vertex stream in the vertex buffer\r\n * @param data - Data to be filled with\r\n * @param options - The creation options\r\n * @returns The created vertex buffer.\r\n */\r\n createInterleavedVertexBuffer(\r\n attribFormats: VertexAttribFormat[],\r\n data: TypedArray,\r\n options?: BufferCreationOptions\r\n ): Nullable<StructuredBuffer>;\r\n /**\r\n * Creates a non-interleaved vertex buffer\r\n *\r\n * @param attribFormat - The vertex attribute format\r\n * @param data - Data to be filled with\r\n * @param options - The creation options\r\n * @returns The created vertex buffer\r\n */\r\n createVertexBuffer(\r\n attribFormat: VertexAttribFormat,\r\n data: TypedArray,\r\n options?: BufferCreationOptions\r\n ): Nullable<StructuredBuffer>;\r\n /**\r\n * Draw primitives\r\n *\r\n * @param primitiveType - The primitive type\r\n * @param first - The vertex offset (or index offset if an index buffer exists)\r\n * @param count - The vertex count (or index count if an index buffer exists) to be drawn\r\n */\r\n draw(primitiveType: PrimitiveType, first: number, count: number): void;\r\n /**\r\n * Draw multiple instances of primitives\r\n *\r\n * @param primitiveType - The primitive type\r\n * @param first - The vertex offset (or index offset if an index buffer exists)\r\n * @param count - The vertex count (or index count if an index buffer exists) to be drawn\r\n * @param numInstances - How many instances to be drawn\r\n */\r\n drawInstanced(primitiveType: PrimitiveType, first: number, count: number, numInstances: number): void;\r\n /**\r\n * Dispatches a compute task to the GPU\r\n *\r\n * @param workgroupCountX - X dimension of the grid of workgroups to be dispatch\r\n * @param workgroupCountY - Y dimension of the grid of workgroups to be dispatch\r\n * @param workgroupCountZ - Z dimension of the grid of workgroups to be dispatch\r\n */\r\n compute(workgroupCountX: number, workgroupCountY: number, workgroupCountZ: number): void;\r\n /**\r\n * Schedules a function to be executed at the beginning of the next frame\r\n *\r\n * @param f - The function to be scheduled\r\n */\r\n runNextFrame(f: () => void): void;\r\n /**\r\n * Asyncronized version of scheduling a function to be executed at the beginning of the next frame\r\n *\r\n * @param f - The function to be scheduled\r\n */\r\n runNextFrameAsync(f: () => void): Promise<void>;\r\n /** Exits from current rendering loop */\r\n exitLoop(): void;\r\n /**\r\n * Begins a rendering loop\r\n *\r\n * @param func - The function to be executed at every frame\r\n */\r\n runLoop(func: (device: AbstractDevice) => void): void;\r\n /** Get all GPU objects */\r\n getGPUObjects(): GPUObjectList;\r\n /**\r\n * Get GPU object by id\r\n *\r\n * @param uid - id of the GPU object\r\n */\r\n getGPUObjectById(uid: number): Nullable<GPUObject>;\r\n /**\r\n * Calculates the actual position of current frame buffer from screen position in X axis.\r\n *\r\n * @remarks\r\n * If current frame buffer is the back buffer, the value will be scaled by the device pixel ratio.\r\n *\r\n * @param val - The screen position in pixels\r\n */\r\n screenXToDevice(val: number): number;\r\n /**\r\n * Calculates the screen position from position of current frame buffer in X axis.\r\n *\r\n * @remarks\r\n * If current frame buffer is the back buffer, the value will be divided by the device pixel ratio.\r\n *\r\n * @param val - The position of current frame buffer in pixels\r\n */\r\n deviceXToScreen(val: number): number;\r\n /**\r\n * Calculates the actual position of current frame buffer from screen position in Y axis.\r\n *\r\n * @remarks\r\n * If current frame buffer is the back buffer, the value will be scaled by the device pixel ratio.\r\n *\r\n * @param val - The screen position in pixels\r\n */\r\n screenYToDevice(val: number): number;\r\n /**\r\n * Calculates the screen position from position of current frame buffer in Y axis.\r\n *\r\n * @remarks\r\n * If current frame buffer is the back buffer, the value will be divided by the device pixel ratio.\r\n *\r\n * @param val - The position of current frame buffer in pixels\r\n */\r\n deviceYToScreen(val: number): number;\r\n /** Builds render program */\r\n buildRenderProgram(options: PBRenderOptions): Nullable<GPUProgram>;\r\n /** Builds compute program */\r\n buildComputeProgram(options: PBComputeOptions): Nullable<GPUProgram>;\r\n /** Pushes current FrameBuffer state */\r\n pushDeviceStates(): void;\r\n /** Pops last FrameBuffer state */\r\n popDeviceStates(): void;\r\n}\r\n"],"names":["RED_SHIFT","GREEN_SHIFT","BLUE_SHIFT","ALPHA_SHIFT","DEPTH_SHIFT","STENCIL_SHIFT","FLOAT_SHIFT","INTEGER_SHIFT","SIGNED_SHIFT","SRGB_SHIFT","BGR_SHIFT","BLOCK_SIZE_SHIFT","BLOCK_SIZE_MASK","BLOCK_WIDTH_SHIFT","BLOCK_WIDTH_MASK","BLOCK_HEIGHT_SHIFT","BLOCK_HEIGHT_MASK","COMPRESSED_FORMAT_SHIFT","COMPRESSION_FORMAT_BC1","COMPRESSION_FORMAT_BC2","COMPRESSION_FORMAT_BC3","COMPRESSION_FORMAT_BC4","COMPRESSION_FORMAT_BC5","COMPRESSION_FORMAT_BC6H","COMPRESSION_FORMAT_BC7","COMPRESSION_FORMAT_ASTC","COMPRESSION_FORMAT_BITMASK","RED_BITMASK","GREEN_BITMASK","BLUE_BITMASK","ALPHA_BITMASK","DEPTH_BITMASK","STENCIL_BITMASK","FLOAT_BITMASK","INTEGER_BITMASK","SIGNED_BITMASK","SRGB_BITMASK","BGR_BITMASK","makeTextureFormat","compression","r","g","b","a","depth","stencil","float","integer","signed","srgb","bgr","blockWidth","blockHeight","blockSize","compressionBits","colorBits","depthStencilBits","floatBits","integerBits","signedBits","srgbBits","bgrBits","blockBits","textureFormatMap","r8unorm","r8snorm","r16f","r32f","r8ui","r8i","r16ui","r16i","r32ui","r32i","rg8unorm","rg8snorm","rg16f","rg32f","rg8ui","rg8i","rg16ui","rg16i","rg32ui","rg32i","rgba8unorm","rgba8snorm","bgra8unorm","rgba16f","rgba32f","rgba8ui","rgba8i","rgba16ui","rgba16i","rgba32ui","rgba32i","rg11b10uf","d16","d24","d32f","d24s8","d32fs8","dxt1","dxt3","dxt5","bc4","bc5","bc6h","bc7","linearTextureFormatToSRGB","format","hasAlphaChannel","hasRedChannel","hasGreenChannel","hasBlueChannel","hasDepthChannel","hasStencilChannel","isFloatTextureFormat","isIntegerTextureFormat","isSignedTextureFormat","isCompressedTextureFormat","isSRGBTextureFormat","getTextureFormatBlockSize","getTextureFormatBlockWidth","getTextureFormatBlockHeight","normalizeColorComponent","val","maxval","Math","min","max","floor","normalizeColorComponentSigned","encodePixel","Uint8Array","Int8Array","Uint16Array","float2half","Float32Array","Int16Array","Uint32Array","Int32Array","Error","encodePixelToArray","arr","push","ShaderType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base_types.js","sources":["../src/base_types.ts"],"sourcesContent":["import type { TypedArray, Vector4, IEventTarget, Nullable, Immutable, Rect, Vector3 } from '@zephyr3d/base';\r\nimport { float2half } from '@zephyr3d/base';\r\nimport type { PBComputeOptions, PBRenderOptions, PBStructTypeInfo, ProgramBuilder } from './builder';\r\nimport type {\r\n BaseTexture,\r\n BindGroup,\r\n BindGroupLayout,\r\n BufferCreationOptions,\r\n FrameBuffer,\r\n FrameBufferOptions,\r\n GPUDataBuffer,\r\n GPUObject,\r\n GPUProgram,\r\n IndexBuffer,\r\n RenderBundle,\r\n SamplerOptions,\r\n StructuredBuffer,\r\n Texture2D,\r\n Texture2DArray,\r\n Texture3D,\r\n TextureCreationOptions,\r\n TextureCube,\r\n TextureImageElement,\r\n TextureMipmapData,\r\n TextureSampler,\r\n TextureVideo,\r\n VertexAttribFormat,\r\n VertexLayout,\r\n VertexLayoutOptions,\r\n VertexSemantic\r\n} from './gpuobject';\r\nimport type {\r\n BlendingState,\r\n ColorState,\r\n DepthState,\r\n RasterizerState,\r\n RenderStateSet,\r\n StencilState\r\n} from './render_states';\r\nimport type { Pool } from './pool';\r\nimport type { ITimer } from './timer';\r\n\r\n/**\r\n * The webgl context type\r\n * @public\r\n */\r\nexport type WebGLContext = WebGLRenderingContext | WebGL2RenderingContext;\r\n\r\n/**\r\n * The texture type\r\n * @public\r\n */\r\nexport type TextureType = '2d' | '3d' | 'cube' | '2darray';\r\n\r\n/**\r\n * The comparison function type\r\n * @public\r\n */\r\nexport type CompareFunc = 'always' | 'le' | 'ge' | 'lt' | 'gt' | 'eq' | 'ne' | 'never';\r\n\r\n/**\r\n * The texture address mode\r\n * @public\r\n */\r\nexport type TextureAddressMode = 'repeat' | 'mirrored-repeat' | 'clamp';\r\n\r\n/**\r\n * The texture filter mode\r\n * @public\r\n */\r\nexport type TextureFilterMode = 'none' | 'nearest' | 'linear';\r\n\r\n/**\r\n * Scalar data type\r\n * @public\r\n */\r\nexport type DataType =\r\n | 'u8'\r\n | 'u8norm'\r\n | 'i8'\r\n | 'i8norm'\r\n | 'u16'\r\n | 'u16norm'\r\n | 'i16'\r\n | 'i16norm'\r\n | 'u32'\r\n | 'i32'\r\n | 'f16'\r\n | 'f32';\r\n\r\nconst RED_SHIFT = 0;\r\nconst GREEN_SHIFT = 1;\r\nconst BLUE_SHIFT = 2;\r\nconst ALPHA_SHIFT = 3;\r\nconst DEPTH_SHIFT = 4;\r\nconst STENCIL_SHIFT = 5;\r\nconst FLOAT_SHIFT = 6;\r\nconst INTEGER_SHIFT = 7;\r\nconst SIGNED_SHIFT = 8;\r\nconst SRGB_SHIFT = 9;\r\nconst BGR_SHIFT = 10;\r\nconst BLOCK_SIZE_SHIFT = 11;\r\nconst BLOCK_SIZE_MASK = 0x1f << BLOCK_SIZE_SHIFT;\r\nconst BLOCK_WIDTH_SHIFT = 16;\r\nconst BLOCK_WIDTH_MASK = 0xf << BLOCK_WIDTH_SHIFT;\r\nconst BLOCK_HEIGHT_SHIFT = 20;\r\nconst BLOCK_HEIGHT_MASK = 0xf << BLOCK_HEIGHT_SHIFT;\r\nconst COMPRESSED_FORMAT_SHIFT = 24;\r\n\r\nconst COMPRESSION_FORMAT_BC1 = 1 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC2 = 2 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC3 = 3 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC4 = 4 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC5 = 5 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC6H = 6 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_BC7 = 7 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC = 8 << COMPRESSED_FORMAT_SHIFT;\r\n/*\r\nconst COMPRESSION_FORMAT_ETC2_RGB8 = 8 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ETC2_RGB8_A1 = 9 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ETC2_RGBA8 = 10 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_4x4 = 11 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_5x4 = 12 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_5x5 = 13 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_6x5 = 14 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_6x6 = 15 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_8x5 = 16 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_8x6 = 17 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_8x8 = 18 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_10x5 = 19 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_10x6 = 20 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_10x8 = 21 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_10x10 = 22 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_12x10 = 23 << COMPRESSED_FORMAT_SHIFT;\r\nconst COMPRESSION_FORMAT_ASTC_12x12 = 24 << COMPRESSED_FORMAT_SHIFT;\r\n*/\r\nconst COMPRESSION_FORMAT_BITMASK = 0x1f << COMPRESSED_FORMAT_SHIFT;\r\nconst RED_BITMASK = 1 << RED_SHIFT;\r\nconst GREEN_BITMASK = 1 << GREEN_SHIFT;\r\nconst BLUE_BITMASK = 1 << BLUE_SHIFT;\r\nconst ALPHA_BITMASK = 1 << ALPHA_SHIFT;\r\nconst DEPTH_BITMASK = 1 << DEPTH_SHIFT;\r\nconst STENCIL_BITMASK = 1 << STENCIL_SHIFT;\r\nconst FLOAT_BITMASK = 1 << FLOAT_SHIFT;\r\nconst INTEGER_BITMASK = 1 << INTEGER_SHIFT;\r\nconst SIGNED_BITMASK = 1 << SIGNED_SHIFT;\r\nconst SRGB_BITMASK = 1 << SRGB_SHIFT;\r\nconst BGR_BITMASK = 1 << BGR_SHIFT;\r\n\r\nfunction makeTextureFormat(\r\n compression: number,\r\n r: boolean,\r\n g: boolean,\r\n b: boolean,\r\n a: boolean,\r\n depth: boolean,\r\n stencil: boolean,\r\n float: boolean,\r\n integer: boolean,\r\n signed: boolean,\r\n srgb: boolean,\r\n bgr: boolean,\r\n blockWidth: number,\r\n blockHeight: number,\r\n blockSize: number\r\n) {\r\n const compressionBits = compression;\r\n const colorBits =\r\n (r ? RED_BITMASK : 0) | (g ? GREEN_BITMASK : 0) | (b ? BLUE_BITMASK : 0) | (a ? ALPHA_BITMASK : 0);\r\n const depthStencilBits = (depth ? DEPTH_BITMASK : 0) | (stencil ? STENCIL_BITMASK : 0);\r\n const floatBits = float ? FLOAT_BITMASK : 0;\r\n const integerBits = integer ? INTEGER_BITMASK : 0;\r\n const signedBits = signed ? SIGNED_BITMASK : 0;\r\n const srgbBits = srgb ? SRGB_BITMASK : 0;\r\n const bgrBits = bgr ? BGR_BITMASK : 0;\r\n const blockBits =\r\n (blockWidth << BLOCK_WIDTH_SHIFT) | (blockHeight << BLOCK_HEIGHT_SHIFT) | (blockSize << BLOCK_SIZE_SHIFT);\r\n return (\r\n compressionBits |\r\n colorBits |\r\n depthStencilBits |\r\n floatBits |\r\n integerBits |\r\n signedBits |\r\n srgbBits |\r\n bgrBits |\r\n blockBits\r\n );\r\n}\r\n\r\n/**\r\n * Texture format type\r\n * @public\r\n */\r\nexport type TextureFormat =\r\n | 'r8unorm'\r\n | 'r8snorm'\r\n | 'r16f'\r\n | 'r32f'\r\n | 'r8ui'\r\n | 'r8i'\r\n | 'r16ui'\r\n | 'r16i'\r\n | 'r32ui'\r\n | 'r32i'\r\n | 'rg8unorm'\r\n | 'rg8snorm'\r\n | 'rg16f'\r\n | 'rg32f'\r\n | 'rg8ui'\r\n | 'rg8i'\r\n | 'rg16ui'\r\n | 'rg16i'\r\n | 'rg32ui'\r\n | 'rg32i'\r\n | 'rgba8unorm'\r\n | 'rgba8unorm-srgb'\r\n | 'rgba8snorm'\r\n | 'bgra8unorm'\r\n | 'bgra8unorm-srgb'\r\n | 'rgba16f'\r\n | 'rgba32f'\r\n | 'rgba8ui'\r\n | 'rgba8i'\r\n | 'rgba16ui'\r\n | 'rgba16i'\r\n | 'rgba32ui'\r\n | 'rgba32i'\r\n | 'rg11b10uf'\r\n | 'd16'\r\n | 'd24'\r\n | 'd32f'\r\n | 'd24s8'\r\n | 'd32fs8'\r\n | 'dxt1'\r\n | 'dxt1-srgb'\r\n | 'dxt3'\r\n | 'dxt3-srgb'\r\n | 'dxt5'\r\n | 'dxt5-srgb'\r\n | 'bc4'\r\n | 'bc4-signed'\r\n | 'bc5'\r\n | 'bc5-signed'\r\n | 'bc7'\r\n | 'bc7-srgb'\r\n | 'bc6h'\r\n | 'bc6h-signed'\r\n | 'astc-4x4'\r\n | 'astc-4x4-srgb'\r\n | 'astc-5x4'\r\n | 'astc-5x4-srgb'\r\n | 'astc-5x5'\r\n | 'astc-5x5-srgb'\r\n | 'astc-6x5'\r\n | 'astc-6x5-srgb'\r\n | 'astc-6x6'\r\n | 'astc-6x6-srgb'\r\n | 'astc-8x5'\r\n | 'astc-8x5-srgb'\r\n | 'astc-8x6'\r\n | 'astc-8x6-srgb'\r\n | 'astc-8x8'\r\n | 'astc-8x8-srgb'\r\n | 'astc-10x5'\r\n | 'astc-10x5-srgb'\r\n | 'astc-10x6'\r\n | 'astc-10x6-srgb'\r\n | 'astc-10x8'\r\n | 'astc-10x8-srgb'\r\n | 'astc-10x10'\r\n | 'astc-10x10-srgb'\r\n | 'astc-12x10'\r\n | 'astc-12x10-srgb'\r\n | 'astc-12x12'\r\n | 'astc-12x12-srgb';\r\n\r\nconst textureFormatMap: Record<TextureFormat, number> = {\r\n r8unorm: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 1\r\n ),\r\n r8snorm: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 1\r\n ),\r\n r16f: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n r32f: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n r8ui: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 1\r\n ),\r\n r8i: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 1\r\n ),\r\n r16ui: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n r16i: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n r32ui: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n r32i: makeTextureFormat(\r\n 0,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rg8unorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n rg8snorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n rg16f: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rg32f: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rg8ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n rg8i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n rg16ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rg16i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rg32ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rg32i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rgba8unorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n 'rgba8unorm-srgb': makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rgba8snorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n bgra8unorm: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n 'bgra8unorm-srgb': makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rgba16f: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rgba32f: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 16\r\n ),\r\n rgba8ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rgba8i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n rgba16ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rgba16i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 8\r\n ),\r\n rgba32ui: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 16\r\n ),\r\n rgba32i: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 16\r\n ),\r\n rg11b10uf: makeTextureFormat(\r\n 0,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n d16: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 2\r\n ),\r\n d24: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 0,\r\n 0,\r\n 0\r\n ),\r\n d32f: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n d24s8: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 4\r\n ),\r\n d32fs8: makeTextureFormat(\r\n 0,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n true,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 1,\r\n 1,\r\n 5\r\n ),\r\n // compressed texture formats\r\n dxt1: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC1,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 8\r\n ),\r\n 'dxt1-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC1,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 8\r\n ),\r\n dxt3: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC2,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'dxt3-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC2,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n dxt5: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC3,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'dxt5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC3,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n bc4: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC4,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 8\r\n ),\r\n 'bc4-signed': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC4,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 8\r\n ),\r\n bc5: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC5,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'bc5-signed': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC5,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n bc6h: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC6H,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'bc6h-signed': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC6H,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n true,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n bc7: makeTextureFormat(\r\n COMPRESSION_FORMAT_BC7,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'bc7-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_BC7,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'astc-4x4': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'astc-4x4-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 4,\r\n 4,\r\n 16\r\n ),\r\n 'astc-5x4': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 5,\r\n 4,\r\n 16\r\n ),\r\n 'astc-5x4-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 5,\r\n 4,\r\n 16\r\n ),\r\n 'astc-5x5': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 5,\r\n 5,\r\n 16\r\n ),\r\n 'astc-5x5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 5,\r\n 5,\r\n 16\r\n ),\r\n 'astc-6x5': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 6,\r\n 5,\r\n 16\r\n ),\r\n 'astc-6x5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 6,\r\n 5,\r\n 16\r\n ),\r\n 'astc-6x6': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 6,\r\n 6,\r\n 16\r\n ),\r\n 'astc-6x6-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 6,\r\n 6,\r\n 16\r\n ),\r\n 'astc-8x5': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 8,\r\n 5,\r\n 16\r\n ),\r\n 'astc-8x5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 8,\r\n 5,\r\n 16\r\n ),\r\n 'astc-8x6': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 8,\r\n 6,\r\n 16\r\n ),\r\n 'astc-8x6-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 8,\r\n 6,\r\n 16\r\n ),\r\n 'astc-8x8': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 8,\r\n 8,\r\n 16\r\n ),\r\n 'astc-8x8-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 8,\r\n 8,\r\n 16\r\n ),\r\n 'astc-10x5': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 10,\r\n 5,\r\n 16\r\n ),\r\n 'astc-10x5-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 10,\r\n 5,\r\n 16\r\n ),\r\n 'astc-10x6': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 10,\r\n 6,\r\n 16\r\n ),\r\n 'astc-10x6-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 10,\r\n 6,\r\n 16\r\n ),\r\n 'astc-10x8': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 10,\r\n 8,\r\n 16\r\n ),\r\n 'astc-10x8-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 10,\r\n 8,\r\n 16\r\n ),\r\n 'astc-10x10': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 10,\r\n 10,\r\n 16\r\n ),\r\n 'astc-10x10-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 10,\r\n 10,\r\n 16\r\n ),\r\n 'astc-12x10': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 12,\r\n 10,\r\n 16\r\n ),\r\n 'astc-12x10-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 12,\r\n 10,\r\n 16\r\n ),\r\n 'astc-12x12': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n 12,\r\n 12,\r\n 16\r\n ),\r\n 'astc-12x12-srgb': makeTextureFormat(\r\n COMPRESSION_FORMAT_ASTC,\r\n true,\r\n true,\r\n true,\r\n true,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n false,\r\n 12,\r\n 12,\r\n 16\r\n )\r\n};\r\n\r\n/**\r\n * Converts a non-sRGB texture format to the corresponding sRGB texture format\r\n * @param format - The texture format to be converted\r\n * @returns The sRGB texture format\r\n * @public\r\n */\r\nexport function linearTextureFormatToSRGB(format: TextureFormat) {\r\n switch (format) {\r\n case 'rgba8unorm':\r\n return 'rgba8unorm-srgb';\r\n case 'bgra8unorm':\r\n return 'bgra8unorm-srgb';\r\n case 'dxt1':\r\n return 'dxt1-srgb';\r\n case 'dxt3':\r\n return 'dxt3-srgb';\r\n case 'dxt5':\r\n return 'dxt5-srgb';\r\n case 'bc7':\r\n return 'bc7-srgb';\r\n case 'astc-4x4':\r\n return 'astc-4x4-srgb';\r\n case 'astc-5x4':\r\n return 'astc-5x4-srgb';\r\n case 'astc-5x5':\r\n return 'astc-5x5-srgb';\r\n case 'astc-6x5':\r\n return 'astc-6x5-srgb';\r\n case 'astc-6x6':\r\n return 'astc-6x6-srgb';\r\n case 'astc-8x5':\r\n return 'astc-8x5-srgb';\r\n case 'astc-8x6':\r\n return 'astc-8x6-srgb';\r\n case 'astc-8x8':\r\n return 'astc-8x8-srgb';\r\n case 'astc-10x5':\r\n return 'astc-10x5-srgb';\r\n case 'astc-10x6':\r\n return 'astc-10x6-srgb';\r\n case 'astc-10x8':\r\n return 'astc-10x8-srgb';\r\n case 'astc-10x10':\r\n return 'astc-10x10-srgb';\r\n case 'astc-12x10':\r\n return 'astc-12x10-srgb';\r\n case 'astc-12x12':\r\n return 'astc-12x12-srgb';\r\n default:\r\n return format;\r\n }\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains an alpha channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains an alpha channel, otherwise false\r\n * @public\r\n */\r\nexport function hasAlphaChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & ALPHA_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a red channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a red channel, otherwise false\r\n * @public\r\n */\r\nexport function hasRedChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & RED_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a green channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a green channel, otherwise false\r\n * @public\r\n */\r\nexport function hasGreenChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & GREEN_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a blue channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a blue channel, otherwise false\r\n * @public\r\n */\r\nexport function hasBlueChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & BLUE_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a depth channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a depth channel, otherwise false\r\n * @public\r\n */\r\nexport function hasDepthChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & DEPTH_BITMASK);\r\n}\r\n\r\n/**\r\n * Check if a given texture format contains a stencil channel.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format contains a stencil channel, otherwise false\r\n * @public\r\n */\r\nexport function hasStencilChannel(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & STENCIL_BITMASK);\r\n}\r\n\r\n/**\r\n * Check whether a given texture format is floating-point.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is floating-point, otherwise false\r\n * @public\r\n */\r\nexport function isFloatTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & FLOAT_BITMASK);\r\n}\r\n\r\n/**\r\n * Check whether a given texture format is integer.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is integer, otherwise false\r\n * @public\r\n */\r\nexport function isIntegerTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & INTEGER_BITMASK);\r\n}\r\n\r\n/**\r\n * Check whether a given texture format is signed.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is signed, otherwise false\r\n * @public\r\n */\r\nexport function isSignedTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & SIGNED_BITMASK);\r\n}\r\n\r\n/**\r\n * Check whether a given texture format is a compressed format.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is a compressed format, otherwise false\r\n * @public\r\n */\r\nexport function isCompressedTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & COMPRESSION_FORMAT_BITMASK);\r\n}\r\n/**\r\n * Check whether a given texture format is sRGB format.\r\n * @param format - The texture format to be checked.\r\n * @returns true if the texture format is sRGB format, otherwise false\r\n * @public\r\n */\r\nexport function isSRGBTextureFormat(format: TextureFormat) {\r\n return !!(textureFormatMap[format] & SRGB_BITMASK);\r\n}\r\n\r\n/**\r\n * Get block size of given texture format\r\n * @param format - The texture format\r\n * @returns The block size\r\n * @public\r\n */\r\nexport function getTextureFormatBlockSize(format: TextureFormat) {\r\n return (textureFormatMap[format] & BLOCK_SIZE_MASK) >> BLOCK_SIZE_SHIFT;\r\n}\r\n\r\n/**\r\n * Get block width of given texture format\r\n * @param format - The texture format\r\n * @returns The block width\r\n * @public\r\n */\r\nexport function getTextureFormatBlockWidth(format: TextureFormat) {\r\n return (textureFormatMap[format] & BLOCK_WIDTH_MASK) >> BLOCK_WIDTH_SHIFT;\r\n}\r\n\r\n/**\r\n * Get block height of given texture format\r\n * @param format - The texture format\r\n * @returns The block height\r\n * @public\r\n */\r\nexport function getTextureFormatBlockHeight(format: TextureFormat) {\r\n return (textureFormatMap[format] & BLOCK_HEIGHT_MASK) >> BLOCK_HEIGHT_SHIFT;\r\n}\r\n\r\nfunction normalizeColorComponent(val: number, maxval: number) {\r\n return Math.min(maxval, Math.max(Math.floor(val * maxval), 0));\r\n}\r\n\r\nfunction normalizeColorComponentSigned(val: number, maxval: number) {\r\n return normalizeColorComponent(val * 0.5 + 0.5, maxval) - (maxval + 1) / 2;\r\n}\r\n\r\n/** @internal */\r\nexport function encodePixel(format: TextureFormat, r: number, g: number, b: number, a: number) {\r\n switch (format) {\r\n case 'r8unorm':\r\n return new Uint8Array([normalizeColorComponent(r, 255)]);\r\n case 'r8snorm':\r\n return new Int8Array([normalizeColorComponentSigned(r, 255)]);\r\n case 'r16f':\r\n return new Uint16Array([float2half(r)]);\r\n case 'r32f':\r\n return new Float32Array([r]);\r\n case 'r8ui':\r\n return new Uint8Array([r | 0]);\r\n case 'r8i':\r\n return new Int8Array([r | 0]);\r\n case 'r16ui':\r\n return new Uint16Array([r | 0]);\r\n case 'r16i':\r\n return new Int16Array([r | 0]);\r\n case 'r32ui':\r\n return new Uint32Array([r | 0]);\r\n case 'r32i':\r\n return new Int32Array([r | 0]);\r\n case 'rg8unorm':\r\n return new Uint8Array([normalizeColorComponent(r, 255), normalizeColorComponent(g, 255)]);\r\n case 'rg8snorm':\r\n return new Int8Array([normalizeColorComponentSigned(r, 255), normalizeColorComponentSigned(g, 255)]);\r\n case 'rg16f':\r\n return new Uint16Array([float2half(r), float2half(g)]);\r\n case 'rg32f':\r\n return new Float32Array([r, g]);\r\n case 'rg8ui':\r\n return new Uint8Array([r | 0, g | 0]);\r\n case 'rg8i':\r\n return new Int8Array([r | 0, g | 0]);\r\n case 'rg16ui':\r\n return new Uint16Array([r | 0, g | 0]);\r\n case 'rg16i':\r\n return new Int16Array([r | 0, g | 0]);\r\n case 'rg32ui':\r\n return new Uint32Array([r | 0, g | 0]);\r\n case 'rg32i':\r\n return new Int32Array([r | 0, g | 0]);\r\n case 'rgba8unorm':\r\n case 'rgba8unorm-srgb':\r\n return new Uint8Array([\r\n normalizeColorComponent(r, 255),\r\n normalizeColorComponent(g, 255),\r\n normalizeColorComponent(b, 255),\r\n normalizeColorComponent(a, 255)\r\n ]);\r\n case 'bgra8unorm':\r\n case 'bgra8unorm-srgb':\r\n return new Uint8Array([\r\n normalizeColorComponent(b, 255),\r\n normalizeColorComponent(g, 255),\r\n normalizeColorComponent(r, 255),\r\n normalizeColorComponent(a, 255)\r\n ]);\r\n case 'rgba8snorm':\r\n return new Int8Array([\r\n normalizeColorComponentSigned(r, 255),\r\n normalizeColorComponentSigned(g, 255),\r\n normalizeColorComponentSigned(b, 255),\r\n normalizeColorComponentSigned(a, 255)\r\n ]);\r\n case 'rgba16f':\r\n return new Uint16Array([float2half(r), float2half(g), float2half(b), float2half(a)]);\r\n case 'rgba32f':\r\n return new Float32Array([r, g, b, a]);\r\n case 'rgba8ui':\r\n return new Uint8Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba8i':\r\n return new Int8Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba16ui':\r\n return new Uint16Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba16i':\r\n return new Int16Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba32ui':\r\n return new Uint32Array([r | 0, g | 0, b | 0, a | 0]);\r\n case 'rgba32i':\r\n return new Int32Array([r | 0, g | 0, b | 0, a | 0]);\r\n default:\r\n throw new Error(`Invalid texture format: ${format}`);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function encodePixelToArray(\r\n format: TextureFormat,\r\n r: number,\r\n g: number,\r\n b: number,\r\n a: number,\r\n arr: Array<number>\r\n) {\r\n switch (format) {\r\n case 'r8unorm':\r\n arr.push(normalizeColorComponent(r, 255));\r\n break;\r\n case 'r8snorm':\r\n arr.push(normalizeColorComponentSigned(r, 255));\r\n break;\r\n case 'r16f':\r\n arr.push(float2half(r));\r\n break;\r\n case 'r32f':\r\n arr.push(r);\r\n break;\r\n case 'r8ui':\r\n arr.push(r | 0);\r\n break;\r\n case 'r8i':\r\n arr.push(r | 0);\r\n break;\r\n case 'r16ui':\r\n arr.push(r | 0);\r\n break;\r\n case 'r16i':\r\n arr.push(r | 0);\r\n break;\r\n case 'r32ui':\r\n arr.push(r | 0);\r\n break;\r\n case 'r32i':\r\n arr.push(r | 0);\r\n break;\r\n case 'rg8unorm':\r\n arr.push(normalizeColorComponent(r, 255), normalizeColorComponent(g, 255));\r\n break;\r\n case 'rg8snorm':\r\n arr.push(normalizeColorComponentSigned(r, 255), normalizeColorComponentSigned(g, 255));\r\n break;\r\n case 'rg16f':\r\n arr.push(float2half(r), float2half(g));\r\n break;\r\n case 'rg32f':\r\n arr.push(r, g);\r\n break;\r\n case 'rg8ui':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg8i':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg16ui':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg16i':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg32ui':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rg32i':\r\n arr.push(r | 0, g | 0);\r\n break;\r\n case 'rgba8unorm':\r\n case 'rgba8unorm-srgb':\r\n arr.push(\r\n normalizeColorComponent(r, 255),\r\n normalizeColorComponent(g, 255),\r\n normalizeColorComponent(b, 255),\r\n normalizeColorComponent(a, 255)\r\n );\r\n break;\r\n case 'bgra8unorm':\r\n case 'bgra8unorm-srgb':\r\n arr.push(\r\n normalizeColorComponent(b, 255),\r\n normalizeColorComponent(g, 255),\r\n normalizeColorComponent(r, 255),\r\n normalizeColorComponent(a, 255)\r\n );\r\n break;\r\n case 'rgba8snorm':\r\n arr.push(\r\n normalizeColorComponentSigned(r, 255),\r\n normalizeColorComponentSigned(g, 255),\r\n normalizeColorComponentSigned(b, 255),\r\n normalizeColorComponentSigned(a, 255)\r\n );\r\n break;\r\n case 'rgba16f':\r\n arr.push(float2half(r), float2half(g), float2half(b), float2half(a));\r\n break;\r\n case 'rgba32f':\r\n arr.push(r, g, b, a);\r\n break;\r\n case 'rgba8ui':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba8i':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba16ui':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba16i':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba32ui':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n case 'rgba32i':\r\n arr.push(r | 0, g | 0, b | 0, a | 0);\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * The primitive type\r\n * @public\r\n */\r\nexport type PrimitiveType =\r\n | 'triangle-list'\r\n | 'triangle-strip'\r\n | 'triangle-fan'\r\n | 'line-list'\r\n | 'line-strip'\r\n | 'point-list';\r\n\r\n/**\r\n * Shader type\r\n * @public\r\n */\r\nexport enum ShaderType {\r\n Vertex = 1 << 0,\r\n Fragment = 1 << 1,\r\n Compute = 1 << 2\r\n}\r\n\r\n/**\r\n * Shader kind\r\n * @public\r\n */\r\nexport type ShaderKind = 'vertex' | 'fragment' | 'compute';\r\n\r\n/**\r\n * Frame information\r\n * @public\r\n */\r\nexport interface FrameInfo {\r\n /** counter of frames */\r\n frameCounter: number;\r\n /** timestamp of current frame, in milliseconds */\r\n frameTimestamp: number;\r\n /** time spent by the CPU from last frame, in milliseconds */\r\n elapsedTimeCPU: number;\r\n /** time spent by the GPU from last frame, in milliseconds */\r\n elapsedTimeGPU: number;\r\n /** time spent from last frame, in milliseconds */\r\n elapsedFrame: number;\r\n /** time spent from the first frame, in milliseconds */\r\n elapsedOverall: number;\r\n /** the FPS calculated for the last one second */\r\n FPS: number;\r\n /** How many draw calls were sent to the GPU in current frame */\r\n drawCalls: number;\r\n /** How many compute calls were sent to the GPU in current frame */\r\n computeCalls: number;\r\n /** @internal */\r\n nextFrameCall: (() => void)[];\r\n /** @internal */\r\n nextFrameCallNext: (() => void)[];\r\n}\r\n\r\n/**\r\n * List of all gpu objects\r\n * @public\r\n */\r\nexport interface GPUObjectList {\r\n /** Creation stack */\r\n stacks: Map<GPUObject, string>;\r\n /** list of textures */\r\n textures: BaseTexture[];\r\n /** list of samplers */\r\n samplers: TextureSampler[];\r\n /** list of buffers */\r\n buffers: GPUDataBuffer[];\r\n /** list of programs */\r\n programs: GPUProgram[];\r\n /** list of frame buffers */\r\n framebuffers: FrameBuffer[];\r\n /** list of vertex layouts */\r\n vertexArrayObjects: VertexLayout[];\r\n /** list of bind groups */\r\n bindGroups: BindGroup[];\r\n}\r\n\r\n/**\r\n * The device capabilities\r\n * @public\r\n */\r\nexport interface DeviceCaps {\r\n /** Miscellaneous capabilities */\r\n miscCaps: MiscCaps;\r\n /** Frame buffer related capabilities */\r\n framebufferCaps: FramebufferCaps;\r\n /** Shader related capabilities */\r\n shaderCaps: ShaderCaps;\r\n /** Texture related capabilities */\r\n textureCaps: TextureCaps;\r\n}\r\n\r\n/**\r\n * Frame buffer related capabilities of the device\r\n * @public\r\n */\r\nexport interface FramebufferCaps {\r\n /** The maximum number of framebuffer color attachment points */\r\n maxDrawBuffers: number;\r\n /** True if device supports rendering to mipmap */\r\n supportRenderMipmap: boolean;\r\n /** True if device supports multisampled frame buffer */\r\n supportMultisampledFramebuffer: boolean;\r\n /** True if device supports blending on float point frame buffer */\r\n supportFloatBlending: boolean;\r\n /** True if device supports 32bits float depth buffer */\r\n supportDepth32float: boolean;\r\n /** True if device supports 32bits float depth buffer with 8bits stencil */\r\n supportDepth32floatStencil8: boolean;\r\n /** Maximum color attachment bytes per sample */\r\n maxColorAttachmentBytesPerSample: number;\r\n}\r\n\r\n/**\r\n * Miscellaneous capabilities of the device\r\n * @public\r\n */\r\nexport interface MiscCaps {\r\n /** True if the device supports oversized viewport */\r\n supportOversizedViewport: boolean;\r\n /** True if the device supports minimum and maximum blending equations */\r\n supportBlendMinMax: boolean;\r\n /** True if the device supports 32-bits index buffer */\r\n support32BitIndex: boolean;\r\n /** The maximum number of {@link BindGroupLayout}'s in a shader program */\r\n maxBindGroups: number;\r\n /** The maximum number of texture coordinate index */\r\n maxTexCoordIndex: number;\r\n}\r\n\r\n/**\r\n * Shader related capabilities of the device\r\n * @public\r\n */\r\nexport interface ShaderCaps {\r\n /** True if the device supports writing depth value in a fragment shader */\r\n supportFragmentDepth: boolean;\r\n /** True if the device supports derivative functions in a fragment shader */\r\n supportStandardDerivatives: boolean;\r\n /** True if the device supports explicit control of texture LOD in a fragment shader */\r\n supportShaderTextureLod: boolean;\r\n /** True if the device supports high precison float number for shader programs */\r\n supportHighPrecisionFloat: boolean;\r\n /** The maximum number of bytes of uniform buffer */\r\n maxUniformBufferSize: number;\r\n /** The uniform buffer offset alignment */\r\n uniformBufferOffsetAlignment: number;\r\n /** The maximum number of bytes of storage buffer */\r\n maxStorageBufferSize: number;\r\n /** The storage buffer offset alignment */\r\n storageBufferOffsetAlignment: number;\r\n}\r\n\r\n/**\r\n * Information of a texture format\r\n * @public\r\n */\r\nexport interface TextureFormatInfo {\r\n /** True if the texture format supports linear filtering */\r\n filterable: boolean;\r\n /** True if the texture format can be used as a render target */\r\n renderable: boolean;\r\n /** True if the texture format is a compressed format */\r\n compressed: boolean;\r\n /** Number of bytes per-block */\r\n size: number;\r\n /** Block width */\r\n blockWidth: number;\r\n /** Block height */\r\n blockHeight: number;\r\n}\r\n\r\n/**\r\n * Texture related capabilities of the device'\r\n * @public\r\n */\r\nexport interface TextureCaps {\r\n /** The maximum size for 2d texture */\r\n maxTextureSize: number;\r\n /** The maximum size for cube texture */\r\n maxCubeTextureSize: number;\r\n /** True if mipmapping is supported for non power of 2 textures */\r\n npo2Mipmapping: boolean;\r\n /** True if repeat address mode is supported for non power of 2 textures */\r\n npo2Repeating: boolean;\r\n /** True if device supports dxt1, dxt3, dxt5 texture format */\r\n supportS3TC: boolean;\r\n /** True if device supports bptc texture format */\r\n supportBPTC: boolean;\r\n /** True if device supports rgtc texture format */\r\n supportRGTC: boolean;\r\n /** True if device supports astc texture format */\r\n supportASTC: boolean;\r\n /** True if device supports dxt1_srgb, dxt3-srgb, dxt5-srgb texture format */\r\n supportS3TCSRGB: boolean;\r\n /** True if device supports depth texture */\r\n supportDepthTexture: boolean;\r\n /** True if device supports 3d texture */\r\n support3DTexture: boolean;\r\n /** True if device supports sRGB texture */\r\n supportSRGBTexture: boolean;\r\n /** True if device supports 32bit floating-point texture */\r\n supportFloatTexture: boolean;\r\n /** True if device supports linear filtering on 32bit floating-point textures */\r\n supportLinearFloatTexture: boolean;\r\n /** True if device supports 16bit floating-point texture */\r\n supportHalfFloatTexture: boolean;\r\n /** True if device supports linear filtering on 16bit floating-point textures */\r\n supportLinearHalfFloatTexture: boolean;\r\n /** True if device supports anisotropic filtering */\r\n supportAnisotropicFiltering: boolean;\r\n /** True if device supports rendering into a 32bit floating-point frame buffer */\r\n supportFloatColorBuffer: boolean;\r\n /** True if device supports rendering into a 16bit floating-point frame buffer */\r\n supportHalfFloatColorBuffer: boolean;\r\n /** True if device supports alpha blending with floating-point frame buffer */\r\n supportFloatBlending: boolean;\r\n /**\r\n * Get information of a given texture format\r\n * @param format - The texture format\r\n * @returns the texture format infomation\r\n */\r\n getTextureFormatInfo(format: TextureFormat): Immutable<TextureFormatInfo>;\r\n}\r\n\r\n/**\r\n * Creation options of rendering shader program\r\n * @public\r\n */\r\nexport interface RenderProgramConstructParams {\r\n /** The vertex shader source code */\r\n vs: string;\r\n /** The fragment shader source code */\r\n fs: string;\r\n /** Number of fragment color outputs declared by the shader */\r\n fragmentOutputCount?: number;\r\n /** Bind group layouts for the program */\r\n bindGroupLayouts: BindGroupLayout[];\r\n /** Vertex attributes used in the program */\r\n vertexAttributes: number[];\r\n}\r\n\r\n/**\r\n * Creation options of computing shader program\r\n * @public\r\n */\r\nexport interface ComputeProgramConstructParams {\r\n /** The shader source */\r\n source: string;\r\n /** Bind group layouts for the program */\r\n bindGroupLayouts: BindGroupLayout[];\r\n}\r\n\r\n/**\r\n * Creation options for shader program\r\n * @public\r\n */\r\nexport interface GPUProgramConstructParams {\r\n /** Type of the program to be created */\r\n type: 'render' | 'compute';\r\n /** Label of the program */\r\n label?: string;\r\n /** The creation options */\r\n params: RenderProgramConstructParams | ComputeProgramConstructParams;\r\n}\r\n\r\n/**\r\n * Creation options for device\r\n * @public\r\n */\r\nexport interface DeviceOptions {\r\n /** True if the device must have a MSAA back buffer */\r\n msaa?: boolean;\r\n /** The device pixel ratio */\r\n dpr?: number;\r\n}\r\n\r\n/**\r\n * The device event map\r\n * @public\r\n */\r\nexport type DeviceEventMap = {\r\n resize: [cssWidth: number, cssHeight: number, deviceWidth: number, deviceHeight: number];\r\n devicelost: [];\r\n devicerestored: [];\r\n gpuobject_added: [obj: GPUObject];\r\n gpuobject_removed: [obj: GPUObject];\r\n gpuobject_rename: [obj: GPUObject, lastName: string];\r\n};\r\n\r\n/**\r\n * Structure that contains the device viewport information\r\n * @public\r\n */\r\nexport type DeviceViewport = {\r\n /** viewport left */\r\n x: number;\r\n /** viewport top */\r\n y: number;\r\n /** viewport width */\r\n width: number;\r\n /** viewport height */\r\n height: number;\r\n /**\r\n * A boolean value that indicates whether this is full screen viewport\r\n * @remarks\r\n * The full screen viewport will be automatically resized when the screen size chenged\r\n */\r\n default: boolean;\r\n};\r\n\r\n/**\r\n * Horizontal alignment for text layout\r\n * @public\r\n */\r\nexport type TextHorizontalAlignment = 'left' | 'center' | 'right';\r\n\r\n/**\r\n * Vertical alignment for text layout\r\n * @public\r\n */\r\nexport type TextVerticalAlignment = 'top' | 'center' | 'bottom';\r\n\r\n/**\r\n * Layout options for drawing text inside a rectangle\r\n * @public\r\n */\r\nexport interface DrawTextLayoutOptions {\r\n /** Horizontal alignment of each line */\r\n halign?: TextHorizontalAlignment;\r\n /** Vertical alignment of the text block */\r\n valign?: TextVerticalAlignment;\r\n /** Whether to wrap text automatically to fit the rectangle width */\r\n wordWrap?: boolean;\r\n}\r\n\r\n/**\r\n * Abstract interface for the rendering device.\r\n * @public\r\n */\r\nexport interface AbstractDevice extends IEventTarget<DeviceEventMap> {\r\n /** Get pool object */\r\n pool: Pool;\r\n /** vSync */\r\n vSync: boolean;\r\n /** Check if a pool with given key exists */\r\n poolExists(key: string | symbol): boolean;\r\n /** Get the pool with given key, or create a new one if not exists */\r\n getPool(key: string | symbol): Pool;\r\n /** Get adapter information */\r\n getAdapterInfo(): any;\r\n /** Get sample count of current frame buffer */\r\n getFrameBufferSampleCount(): number;\r\n /** Returns true if device context is lost. */\r\n isContextLost(): boolean;\r\n /** Get the value of device pixel ratio in X axis */\r\n getScaleX(): number;\r\n /** Get the value of device pixel ratio in Y axis */\r\n getScaleY(): number;\r\n /** Get the width of current frame buffer */\r\n getDrawingBufferWidth(): number;\r\n /** Get the height of current frame buffer */\r\n getDrawingBufferHeight(): number;\r\n /** Get the width of back buffer */\r\n getBackBufferWidth(): number;\r\n /** Get the height of back buffer */\r\n getBackBufferHeight(): number;\r\n /** Get the device capabilities */\r\n getDeviceCaps(): Immutable<DeviceCaps>;\r\n /** Schedule next frame */\r\n nextFrame(callback: () => void): number;\r\n /** Cancel schedule next frame */\r\n cancelNextFrame(handle: number): void;\r\n /** Set font for drawText function */\r\n setFont(fontName: Nullable<string>): void;\r\n /** Set render states to be used when drawing text. If not set, default states will be used. */\r\n setTextRenderStates(states: Nullable<RenderStateSet>): void;\r\n /**\r\n * Draw a string\r\n * @param text - The string that will be drawn\r\n * @param x - x coordinate in pixels related to the viewport origin\r\n * @param y - y coordinate in pixels related to the viewport origin\r\n * @param color - A CSS color value\r\n */\r\n drawText(text: string, x: number, y: number, color: string | Vector3 | Vector4): void;\r\n /**\r\n * Draw a string inside a rectangle with layout and clipping\r\n * @param text - The string that will be drawn\r\n * @param rect - Layout rectangle in pixels related to the viewport origin\r\n * @param color - A CSS color value\r\n * @param options - Text layout options\r\n */\r\n drawText(\r\n text: string,\r\n rect: Immutable<Rect>,\r\n color: string | Vector3 | Vector4,\r\n options?: DrawTextLayoutOptions\r\n ): void;\r\n /**\r\n * Clears the current frame buffer\r\n * @param clearColor - If not null, the color buffer will be cleared to this value.\r\n * @param clearDepth - If not null, the depth buffer will be cleared to this value.\r\n * @param clearStencil - If not null, the stencil buffer will be cleared to this value.\r\n */\r\n clearFrameBuffer(\r\n clearColor: Nullable<Vector4>,\r\n clearDepth: Nullable<number>,\r\n clearStencil: Nullable<number>\r\n ): void;\r\n /** Creates a GPU timer */\r\n createGPUTimer(): Nullable<ITimer>;\r\n /** Creates a render state set object */\r\n createRenderStateSet(): RenderStateSet;\r\n /** Creates a blending state object */\r\n createBlendingState(): BlendingState;\r\n /** Creates a color state object */\r\n createColorState(): ColorState;\r\n /** Creates a rasterizer state object */\r\n createRasterizerState(): RasterizerState;\r\n /** Creates a depth state object */\r\n createDepthState(): DepthState;\r\n /** Creates a stencil state object */\r\n createStencilState(): StencilState;\r\n /**\r\n * Creates a texture sampler object\r\n * @param options - The creation options\r\n * @returns The created texture sampler\r\n */\r\n createSampler(options: SamplerOptions): TextureSampler;\r\n /**\r\n * Creates a texture from given mipmap data\r\n * @param data - Mipmap data\r\n * @param options - Texture creation options\r\n * @returns The created texture\r\n */\r\n createTextureFromMipmapData<T extends BaseTexture = BaseTexture>(\r\n data: TextureMipmapData,\r\n sRGB: boolean,\r\n options?: TextureCreationOptions\r\n ): Nullable<T>;\r\n /**\r\n * Creates a 2d texture\r\n * @param format - The texture format\r\n * @param width - Pixel width of the texture\r\n * @param height - Pixel height of the texture\r\n * @param options - The creation options\r\n * @returns The created 2D texture\r\n */\r\n createTexture2D(\r\n format: TextureFormat,\r\n width: number,\r\n height: number,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture2D>;\r\n /**\r\n * Creates a 2d texture from a image element\r\n * @param element - The image element\r\n * @param options - The creation options\r\n * @returns The created 2D texture.\r\n */\r\n createTexture2DFromImage(\r\n element: TextureImageElement,\r\n sRGB: boolean,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture2D>;\r\n /**\r\n * Creates a 2d array texture\r\n * @param format - The texture format\r\n * @param width - Pixel width of the texture\r\n * @param height - Pixel height of the texture\r\n * @param depth - Array length of the texture\r\n * @param options - The creation options\r\n * @returns The created 2D array texture.\r\n */\r\n createTexture2DArray(\r\n format: TextureFormat,\r\n width: number,\r\n height: number,\r\n depth: number,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture2DArray>;\r\n /**\r\n * Creates a 2d array texture from a seris of image elements\r\n * @remarks image elements must have the same size.\r\n * @param elements - image elements\r\n * @param options - The creation options\r\n * @returns The created 2D array texture.\r\n */\r\n createTexture2DArrayFromImages(\r\n elements: TextureImageElement[],\r\n sRGB: boolean,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture2DArray>;\r\n /**\r\n * Creates a 3D texture\r\n * @param format - The texture format\r\n * @param width - Pixel width of the texture\r\n * @param height - Pixel height of the texture\r\n * @param depth - Pixel depth of the texture\r\n * @param options - The creation options\r\n * @returns The created 3D texture.\r\n */\r\n createTexture3D(\r\n format: TextureFormat,\r\n width: number,\r\n height: number,\r\n depth: number,\r\n options?: TextureCreationOptions\r\n ): Nullable<Texture3D>;\r\n /**\r\n * Creates a cube texture\r\n * @param format - The texture format\r\n * @param size - Pixel width of the texture\r\n * @param options - The creation options\r\n * @returns The created cube texture.\r\n */\r\n createCubeTexture(\r\n format: TextureFormat,\r\n size: number,\r\n options?: TextureCreationOptions\r\n ): Nullable<TextureCube>;\r\n /**\r\n * Creates a video texture from a video element\r\n * @param el - The video element\r\n * @returns The created video texture.\r\n */\r\n createTextureVideo(el: HTMLVideoElement, samplerOptions?: SamplerOptions): TextureVideo;\r\n /**\r\n * Copies a 2d texture to another texture.\r\n *\r\n * @remarks\r\n * The two textures must have the same size and format\r\n *\r\n * @param src - Texture that will be copied from.\r\n * @param srcLevel - Which mipmap level to be copied from.\r\n * @param dst - Texture that will be copied to.\r\n * @param dstLevel - Which mipmap level to be copied to.\r\n */\r\n copyTexture2D(src: Texture2D, srcLevel: number, dst: Texture2D, dstLevel: number): void;\r\n /**\r\n * Copies a color attachment of a framebuffer to a mipmap level of a texture.\r\n *\r\n * @remarks\r\n * The color attachment and the mipmap level must have the same size and format\r\n *\r\n * @param src - Framebuffer that will be copied from.\r\n * @param index - Color attachment index of the framebuffer.\r\n * @param dst - Texture that will be copied to.\r\n * @param level - Which mipmap level should be copied to.\r\n */\r\n copyFramebufferToTexture2D(src: FrameBuffer, index: number, dst: Texture2D, level: number): void;\r\n /**\r\n * Set wether to reverse the winding order\r\n *\r\n * @remarks\r\n * The default winding order is counter-clockwise.\r\n *\r\n * @param reverse - true if the winding order should be reversed.\r\n */\r\n reverseVertexWindingOrder(reverse: boolean): void;\r\n /**\r\n * Check if the current winding order is reversed.\r\n */\r\n isWindingOrderReversed(): boolean;\r\n /**\r\n * Creates a gpu program\r\n * @param params - The creation options\r\n * @returns The created program.\r\n */\r\n createGPUProgram(params: GPUProgramConstructParams): GPUProgram;\r\n /**\r\n * Creates a bind group\r\n * @param layout - Layout of the bind group\r\n * @returns The created bind group.\r\n */\r\n createBindGroup(layout: Immutable<BindGroupLayout>): BindGroup;\r\n /**\r\n * Creates a gpu buffer\r\n * @param sizeInBytes - Size of the buffer in bytes\r\n * @param options - The creation options\r\n * @returns The created buffer.\r\n */\r\n createBuffer(sizeInBytes: number, options: BufferCreationOptions): GPUDataBuffer;\r\n /**\r\n * Copies a buffer to another buffer\r\n * @param sourceBuffer - Source buffer\r\n * @param destBuffer - destination buffer\r\n * @param srcOffset - Source offset in bytes\r\n * @param dstOffset - Destination offset in bytes\r\n * @param bytes - How many bytes to be copy\r\n */\r\n copyBuffer(\r\n sourceBuffer: GPUDataBuffer,\r\n destBuffer: GPUDataBuffer,\r\n srcOffset: number,\r\n dstOffset: number,\r\n bytes: number\r\n ): void;\r\n /**\r\n * Creates an index buffer\r\n * @param data - Data of the index buffer\r\n * @param options - The creation options\r\n * @returns The created index buffer.\r\n */\r\n createIndexBuffer(\r\n data: Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>,\r\n options?: BufferCreationOptions\r\n ): IndexBuffer;\r\n /**\r\n * Creates a structured buffer\r\n * @param structureType - The structure type\r\n * @param options - The creation options\r\n * @param data - Data to be filled with\r\n * @returns The created structured buffer.\r\n */\r\n createStructuredBuffer(\r\n structureType: PBStructTypeInfo,\r\n options: BufferCreationOptions,\r\n data?: TypedArray\r\n ): StructuredBuffer;\r\n /**\r\n * Creates a vertex layout object.\r\n * @param options - The creation options\r\n * @returns The created vertex layout object.\r\n */\r\n createVertexLayout(options: VertexLayoutOptions): VertexLayout;\r\n /**\r\n * Creates a frame buffer\r\n * @param options - The creation options\r\n * @returns The created framebuffer.\r\n */\r\n createFrameBuffer(\r\n colorAttachments: BaseTexture[],\r\n depthAttachment: Nullable<BaseTexture>,\r\n options?: Nullable<FrameBufferOptions>\r\n ): FrameBuffer;\r\n /**\r\n * Set viewport from an array that contains the position and size\r\n *\r\n * @param vp - The viewport position and size, if not specified, the viewport will be set to [0, 0, drawingBufferWidth, drawingBufferHeight]\r\n */\r\n setViewport(vp: Nullable<Immutable<DeviceViewport | number[]>>): void;\r\n /** Get current viewport as [x, y, width, height] */\r\n getViewport(): Immutable<DeviceViewport>;\r\n /**\r\n * Set scissor rectangle from an array that contains the position and size\r\n * @param scissor - The scissor rectangle position and size, if not specified, the scissor rectangle will be set to [0, 0, drawingBufferWidth,drawingBufferHeight]\r\n */\r\n setScissor(scissor: Nullable<Immutable<DeviceViewport | number[]>>): void;\r\n /**\r\n * Get current scissor rectangle\r\n */\r\n getScissor(): Immutable<DeviceViewport>;\r\n /**\r\n * Set current GPU program\r\n * @param program - The GPU program to be set\r\n */\r\n setProgram(program: Nullable<GPUProgram>): void;\r\n /**\r\n * Get current GPU program\r\n */\r\n getProgram(): Nullable<GPUProgram>;\r\n /**\r\n * Set current vertex layout\r\n *\r\n * @param vertexData - The vertex layout to be set\r\n */\r\n setVertexLayout(vertexData: Nullable<VertexLayout>): void;\r\n /** Get current vertex layout */\r\n getVertexLayout(): Nullable<VertexLayout>;\r\n /**\r\n * Set current render states\r\n *\r\n * @param renderStates - The render state set\r\n */\r\n setRenderStates(renderStates: Nullable<RenderStateSet>): void;\r\n /** Get current render states */\r\n getRenderStates(): Nullable<RenderStateSet>;\r\n /**\r\n * Sets the current framebuffer to the specified FrameBuffer object.\r\n *\r\n * @param rt - The FrameBuffer object to set as the current framebuffer.\r\n */\r\n setFramebuffer(rt: Nullable<FrameBuffer>): void;\r\n /**\r\n * Sets the current framebuffer specifying complex color attachments, an optional depth attachment, MIP level, face, and sample count.\r\n *\r\n * @param color - An array of BaseTextures or objects containing a BaseTexture and optional properties. Each BaseTexture or object will serve as a color attachment.\r\n * - If an object is provided, it can specify:\r\n * - `texture`: The BaseTexture to use.\r\n * - `miplevel`: Optional MIP level for this specific texture. default is 0.\r\n * - `face`: Optional face index for cube map textures, specifying the cube face this texture is attached to. default is 0.\r\n * - `layer`: Optional layer index, useful for texture arrays. default is 0.\r\n * @param depth - Optional BaseTexture to serve as the depth attachment.\r\n * @param sampleCount - Optional sample count defining the number of samples for multisampling.\r\n */\r\n setFramebuffer(color: BaseTexture[], depth?: BaseTexture, sampleCount?: number): void;\r\n setFramebuffer(\r\n colorOrRT: BaseTexture[] | Nullable<FrameBuffer>,\r\n depth?: BaseTexture,\r\n sampleCount?: number\r\n ): void;\r\n /** Get current frame buffer */\r\n getFramebuffer(): Nullable<FrameBuffer>;\r\n /**\r\n * Set current bind group\r\n *\r\n * @param index - index of the bind group\r\n * @param bindGroup - The bind group to be set\r\n * @param dynamicOffsets - dynamic uniform buffer offsets of the bind group or null\r\n */\r\n setBindGroup(index: number, bindGroup: BindGroup, dynamicOffsets?: Nullable<Iterable<number>>): void;\r\n /**\r\n * Get current bind group\r\n * @param index - index of the bind group to get\r\n */\r\n getBindGroup(index: number): [BindGroup, Nullable<Iterable<number>>];\r\n /** Flush the gpu command buffer */\r\n flush(): void;\r\n /**\r\n * Read pixel values from current frame buffer\r\n *\r\n * @remarks\r\n * This method reads the data asynchronously to prevent GPU stall.\r\n * For WebGL1 devices, the GPU stall is still inevitable.\r\n *\r\n * @param index - color attachment index\r\n * @param x - x position of the reading area\r\n * @param y - y position of the reading area\r\n * @param w - width of the reading area\r\n * @param h - height of the reading area\r\n * @param buffer - The output buffer\r\n */\r\n readPixels(index: number, x: number, y: number, w: number, h: number, buffer: TypedArray): Promise<void>;\r\n /**\r\n * Read pixel values from current frame buffer to a GPU buffer\r\n *\r\n * @remarks\r\n * This method does not support WebGL1 device\r\n *\r\n * @param index - color attachment index\r\n * @param x - x position of the reading area\r\n * @param y - y position of the reading area\r\n * @param w - width of the reading area\r\n * @param h - height of the reading area\r\n * @param buffer - The output buffer\r\n */\r\n readPixelsToBuffer(index: number, x: number, y: number, w: number, h: number, buffer: GPUDataBuffer): void;\r\n /**\r\n * Begin capture draw commands\r\n */\r\n beginCapture(): void;\r\n /**\r\n * Executes render bundle\r\n * @param renderBundle - RenderBundle to be execute\r\n */\r\n executeRenderBundle(renderBundle: RenderBundle): void;\r\n /**\r\n * End capture draw commands\r\n * @returns A RenderBundle that holds the captured draw commands\r\n */\r\n endCapture(): RenderBundle;\r\n /** Get the video memory usage in bytes */\r\n videoMemoryUsage: number;\r\n /** Get the current frame information */\r\n frameInfo: FrameInfo;\r\n /** Check if the device is running a rendering loop by calling {@link AbstractDevice.runLoop} */\r\n isRendering: boolean;\r\n /** Get the canvas element for this device */\r\n canvas: HTMLCanvasElement;\r\n /** Get the device type */\r\n type: string;\r\n /** Get the program builder */\r\n programBuilder: ProgramBuilder;\r\n /** Get the run loop callback function */\r\n runLoopFunction: Nullable<(device: AbstractDevice) => void>;\r\n /**\r\n * Begins a frame for rendering\r\n *\r\n * @remarks\r\n * All rendering call must occur between the @see AbstractDevice.beginFrame and @see AbstractDevice.endFrame methods\r\n */\r\n beginFrame(): boolean;\r\n /**\r\n * Ends a frame for rendering\r\n *\r\n * @remarks\r\n * All rendering call must occur between the @see AbstractDevice.beginFrame and @see AbstractDevice.endFrame methods\r\n */\r\n endFrame(): void;\r\n /**\r\n * Get the vertex attribute format from vertex semantic and data type\r\n *\r\n * @param semantic - The vertex semantic\r\n * @param dataType - The data type\r\n * @param componentCount - The component count\r\n */\r\n getVertexAttribFormat(\r\n semantic: VertexSemantic,\r\n dataType: DataType,\r\n componentCount: number\r\n ): Nullable<VertexAttribFormat>;\r\n /**\r\n * Creates an interleaved vertex buffer\r\n *\r\n * @param attribFormats - The vertex attribute formats for each vertex stream in the vertex buffer\r\n * @param data - Data to be filled with\r\n * @param options - The creation options\r\n * @returns The created vertex buffer.\r\n */\r\n createInterleavedVertexBuffer(\r\n attribFormats: VertexAttribFormat[],\r\n data: TypedArray,\r\n options?: BufferCreationOptions\r\n ): Nullable<StructuredBuffer>;\r\n /**\r\n * Creates a non-interleaved vertex buffer\r\n *\r\n * @param attribFormat - The vertex attribute format\r\n * @param data - Data to be filled with\r\n * @param options - The creation options\r\n * @returns The created vertex buffer\r\n */\r\n createVertexBuffer(\r\n attribFormat: VertexAttribFormat,\r\n data: TypedArray,\r\n options?: BufferCreationOptions\r\n ): Nullable<StructuredBuffer>;\r\n /**\r\n * Draw primitives\r\n *\r\n * @param primitiveType - The primitive type\r\n * @param first - The vertex offset (or index offset if an index buffer exists)\r\n * @param count - The vertex count (or index count if an index buffer exists) to be drawn\r\n */\r\n draw(primitiveType: PrimitiveType, first: number, count: number): void;\r\n /**\r\n * Draw multiple instances of primitives\r\n *\r\n * @param primitiveType - The primitive type\r\n * @param first - The vertex offset (or index offset if an index buffer exists)\r\n * @param count - The vertex count (or index count if an index buffer exists) to be drawn\r\n * @param numInstances - How many instances to be drawn\r\n */\r\n drawInstanced(primitiveType: PrimitiveType, first: number, count: number, numInstances: number): void;\r\n /**\r\n * Dispatches a compute task to the GPU\r\n *\r\n * @param workgroupCountX - X dimension of the grid of workgroups to be dispatch\r\n * @param workgroupCountY - Y dimension of the grid of workgroups to be dispatch\r\n * @param workgroupCountZ - Z dimension of the grid of workgroups to be dispatch\r\n */\r\n compute(workgroupCountX: number, workgroupCountY: number, workgroupCountZ: number): void;\r\n /**\r\n * Schedules a function to be executed at the beginning of the next frame\r\n *\r\n * @param f - The function to be scheduled\r\n */\r\n runNextFrame(f: () => void): void;\r\n /**\r\n * Asyncronized version of scheduling a function to be executed at the beginning of the next frame\r\n *\r\n * @param f - The function to be scheduled\r\n */\r\n runNextFrameAsync(f: () => void): Promise<void>;\r\n /** Exits from current rendering loop */\r\n exitLoop(): void;\r\n /**\r\n * Begins a rendering loop\r\n *\r\n * @param func - The function to be executed at every frame\r\n */\r\n runLoop(func: (device: AbstractDevice) => void): void;\r\n /** Get all GPU objects */\r\n getGPUObjects(): GPUObjectList;\r\n /**\r\n * Get GPU object by id\r\n *\r\n * @param uid - id of the GPU object\r\n */\r\n getGPUObjectById(uid: number): Nullable<GPUObject>;\r\n /**\r\n * Calculates the actual position of current frame buffer from screen position in X axis.\r\n *\r\n * @remarks\r\n * If current frame buffer is the back buffer, the value will be scaled by the device pixel ratio.\r\n *\r\n * @param val - The screen position in pixels\r\n */\r\n screenXToDevice(val: number): number;\r\n /**\r\n * Calculates the screen position from position of current frame buffer in X axis.\r\n *\r\n * @remarks\r\n * If current frame buffer is the back buffer, the value will be divided by the device pixel ratio.\r\n *\r\n * @param val - The position of current frame buffer in pixels\r\n */\r\n deviceXToScreen(val: number): number;\r\n /**\r\n * Calculates the actual position of current frame buffer from screen position in Y axis.\r\n *\r\n * @remarks\r\n * If current frame buffer is the back buffer, the value will be scaled by the device pixel ratio.\r\n *\r\n * @param val - The screen position in pixels\r\n */\r\n screenYToDevice(val: number): number;\r\n /**\r\n * Calculates the screen position from position of current frame buffer in Y axis.\r\n *\r\n * @remarks\r\n * If current frame buffer is the back buffer, the value will be divided by the device pixel ratio.\r\n *\r\n * @param val - The position of current frame buffer in pixels\r\n */\r\n deviceYToScreen(val: number): number;\r\n /** Builds render program */\r\n buildRenderProgram(options: PBRenderOptions): Nullable<GPUProgram>;\r\n /** Builds compute program */\r\n buildComputeProgram(options: PBComputeOptions): Nullable<GPUProgram>;\r\n /** Pushes current FrameBuffer state */\r\n pushDeviceStates(): void;\r\n /** Pops last FrameBuffer state */\r\n popDeviceStates(): void;\r\n}\r\n"],"names":["RED_SHIFT","GREEN_SHIFT","BLUE_SHIFT","ALPHA_SHIFT","DEPTH_SHIFT","STENCIL_SHIFT","FLOAT_SHIFT","INTEGER_SHIFT","SIGNED_SHIFT","SRGB_SHIFT","BGR_SHIFT","BLOCK_SIZE_SHIFT","BLOCK_SIZE_MASK","BLOCK_WIDTH_SHIFT","BLOCK_WIDTH_MASK","BLOCK_HEIGHT_SHIFT","BLOCK_HEIGHT_MASK","COMPRESSED_FORMAT_SHIFT","COMPRESSION_FORMAT_BC1","COMPRESSION_FORMAT_BC2","COMPRESSION_FORMAT_BC3","COMPRESSION_FORMAT_BC4","COMPRESSION_FORMAT_BC5","COMPRESSION_FORMAT_BC6H","COMPRESSION_FORMAT_BC7","COMPRESSION_FORMAT_ASTC","COMPRESSION_FORMAT_BITMASK","RED_BITMASK","GREEN_BITMASK","BLUE_BITMASK","ALPHA_BITMASK","DEPTH_BITMASK","STENCIL_BITMASK","FLOAT_BITMASK","INTEGER_BITMASK","SIGNED_BITMASK","SRGB_BITMASK","BGR_BITMASK","makeTextureFormat","compression","r","g","b","a","depth","stencil","float","integer","signed","srgb","bgr","blockWidth","blockHeight","blockSize","compressionBits","colorBits","depthStencilBits","floatBits","integerBits","signedBits","srgbBits","bgrBits","blockBits","textureFormatMap","r8unorm","r8snorm","r16f","r32f","r8ui","r8i","r16ui","r16i","r32ui","r32i","rg8unorm","rg8snorm","rg16f","rg32f","rg8ui","rg8i","rg16ui","rg16i","rg32ui","rg32i","rgba8unorm","rgba8snorm","bgra8unorm","rgba16f","rgba32f","rgba8ui","rgba8i","rgba16ui","rgba16i","rgba32ui","rgba32i","rg11b10uf","d16","d24","d32f","d24s8","d32fs8","dxt1","dxt3","dxt5","bc4","bc5","bc6h","bc7","linearTextureFormatToSRGB","format","hasAlphaChannel","hasRedChannel","hasGreenChannel","hasBlueChannel","hasDepthChannel","hasStencilChannel","isFloatTextureFormat","isIntegerTextureFormat","isSignedTextureFormat","isCompressedTextureFormat","isSRGBTextureFormat","getTextureFormatBlockSize","getTextureFormatBlockWidth","getTextureFormatBlockHeight","normalizeColorComponent","val","maxval","Math","min","max","floor","normalizeColorComponentSigned","encodePixel","Uint8Array","Int8Array","Uint16Array","float2half","Float32Array","Int16Array","Uint32Array","Int32Array","Error","encodePixelToArray","arr","push","ShaderType"],"mappings":"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"}
|
|
@@ -181,6 +181,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
181
181
|
params: {
|
|
182
182
|
vs: ret[0],
|
|
183
183
|
fs: ret[1],
|
|
184
|
+
fragmentOutputCount: ret[4],
|
|
184
185
|
bindGroupLayouts: ret[2],
|
|
185
186
|
vertexAttributes: ret[3]
|
|
186
187
|
}
|
|
@@ -839,7 +840,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
839
840
|
console.error(this._lastError);
|
|
840
841
|
return null;
|
|
841
842
|
} else if (err instanceof Error) {
|
|
842
|
-
this._lastError = err.toString();
|
|
843
|
+
this._lastError = err.stack ?? err.toString();
|
|
843
844
|
console.error(this._lastError);
|
|
844
845
|
return null;
|
|
845
846
|
} else {
|
|
@@ -895,7 +896,8 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
895
896
|
this.generateRenderSource(ShaderType.Vertex, vertexScope, vertexBuiltinScope, vertexInputs.map((val)=>val[1]), vertexOutputs.map((val)=>val[1])),
|
|
896
897
|
this.generateRenderSource(ShaderType.Fragment, fragScope, fragBuiltinScope, fragInputs.map((val)=>val[1]), fragOutputs.map((val)=>val[1])),
|
|
897
898
|
this.createBindGroupLayouts(options.label),
|
|
898
|
-
this._vertexAttributes
|
|
899
|
+
this._vertexAttributes,
|
|
900
|
+
fragOutputs.length
|
|
899
901
|
];
|
|
900
902
|
} catch (err) {
|
|
901
903
|
if (err instanceof PBError) {
|
|
@@ -903,7 +905,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
903
905
|
console.error(this._lastError);
|
|
904
906
|
return null;
|
|
905
907
|
} else if (err instanceof Error) {
|
|
906
|
-
this._lastError = err.toString();
|
|
908
|
+
this._lastError = err.stack ?? err.toString();
|
|
907
909
|
console.error(this._lastError);
|
|
908
910
|
return null;
|
|
909
911
|
} else {
|