@luma.gl/webgl 9.0.0-alpha.20 → 9.0.0-alpha.23
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/adapter/converters/device-parameters.d.ts +1 -1
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +10 -10
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +1 -1
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/texture-formats.d.ts +27 -38
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +152 -114
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +1 -1
- package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/attribute-utils.js +1 -1
- package/dist/adapter/helpers/attribute-utils.js.map +1 -1
- package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-info.js.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +1 -1
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/uniforms.d.ts +7 -8
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
- package/dist/adapter/helpers/uniforms.js +4 -4
- package/dist/adapter/helpers/uniforms.js.map +1 -1
- package/dist/adapter/objects/constants-to-keys.d.ts +0 -2
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +0 -20
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +14 -11
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +31 -21
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +2 -3
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +6 -9
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +6 -6
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +2 -2
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +2 -2
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +4 -3
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts +9 -3
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +168 -25
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +5 -4
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +7 -3
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +18 -21
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +36 -86
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +18 -3
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +81 -1
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +5 -5
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +7 -8
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +3 -3
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +2 -2
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +2 -2
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +1 -1
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +41 -21
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +35 -33
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/webgl-canvas-context.d.ts +4 -5
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +2 -2
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +22 -15
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +29 -11
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +1 -1
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +1 -1
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/buffer.d.ts +3 -4
- package/dist/classic/buffer.d.ts.map +1 -1
- package/dist/classic/buffer.js +4 -10
- package/dist/classic/buffer.js.map +1 -1
- package/dist/classic/typed-array-utils.d.ts +15 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +1 -1
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +1 -1
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -2
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +1 -1
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +1107 -676
- package/dist/index.cjs +1088 -901
- package/dist/index.d.ts +18 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -16
- package/dist/index.js.map +1 -1
- package/dist.min.js +22 -21
- package/package.json +7 -4
- package/src/adapter/converters/device-parameters.ts +47 -23
- package/src/adapter/converters/sampler-parameters.ts +1 -2
- package/src/adapter/converters/texture-formats.ts +242 -161
- package/src/adapter/helpers/attribute-utils.ts +1 -2
- package/src/adapter/helpers/get-shader-info.ts +3 -0
- package/src/adapter/helpers/get-shader-layout.ts +1 -1
- package/src/adapter/helpers/uniforms.ts +9 -10
- package/src/adapter/objects/constants-to-keys.ts +0 -25
- package/src/adapter/objects/webgl-renderbuffer.ts +35 -32
- package/src/adapter/objects/webgl-resource.ts +6 -10
- package/src/adapter/objects/webgl-vertex-array-object.ts +6 -6
- package/src/adapter/resources/webgl-buffer.ts +6 -7
- package/src/adapter/resources/webgl-command-buffer.ts +330 -23
- package/src/adapter/resources/webgl-command-encoder.ts +9 -4
- package/src/adapter/resources/webgl-external-texture.ts +1 -1
- package/src/adapter/resources/webgl-framebuffer.ts +75 -123
- package/src/adapter/resources/webgl-render-pass.ts +148 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +12 -9
- package/src/adapter/resources/webgl-sampler.ts +3 -4
- package/src/adapter/resources/webgl-shader.ts +2 -2
- package/src/adapter/resources/webgl-texture.ts +64 -46
- package/src/adapter/webgl-canvas-context.ts +5 -5
- package/src/adapter/webgl-device.ts +47 -18
- package/src/classic/accessor.ts +1 -1
- package/src/classic/buffer.ts +7 -7
- package/src/classic/typed-array-utils.ts +15 -26
- package/src/context/context/create-browser-context.ts +2 -2
- package/src/context/parameters/unified-parameter-api.ts +2 -2
- package/src/context/parameters/webgl-parameter-tables.ts +2 -2
- package/src/context/state-tracker/with-parameters.ts +1 -1
- package/src/index.ts +24 -22
- package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js +0 -181
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/types/webgl.d.ts +0 -145
- package/dist/types/webgl.d.ts.map +0 -1
- package/dist/types/webgl.js +0 -2
- package/dist/types/webgl.js.map +0 -1
- package/src/adapter/converters/renderbuffer-formats.ts +0 -92
- package/src/types/webgl.ts +0 -286
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texture-formats.js","names":["decodeTextureFormat","GL","isWebGL2","texture_compression_bc","texture_compression_astc","texture_compression_etc2","texture_compression_etc1_webgl","texture_compression_pvrtc_webgl","texture_compression_atc_webgl","X_S3TC","X_S3TC_SRGB","X_RGTC","X_BPTC","X_ETC2","X_ASTC","X_ETC1","X_PVRTC","X_ATC","EXT_SRGB","EXT_TEXTURE_NORM16","EXT_FLOAT_WEBGL1","EXT_FLOAT_RENDER_WEBGL2","checkExtension","gl","extension","getExtension","checkExtensions","extensions","every","TEXTURE_FEATURE_CHECKS","checkTextureFeature","feature","_TEXTURE_FEATURE_CHEC","call","checkTextureFeatures","features","getTextureFeatures","textureFeatures","Object","keys","filter","TEXTURE_FORMATS","RGB","gl1","b","c","bpp","dataFormat","types","UNSIGNED_BYTE","UNSIGNED_SHORT_5_6_5","RGBA","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","R8","R8_SNORM","R8UI","R8I","RG8","RG8_SNORM","RG8UI","RG8I","R16UI","R16I","R16F","render","R16_EXT","f","R16_SNORM_EXT","RGBA4","wgpu","RGB565","RGB5_A1","RGB8","RGB8_SNORM","RGBA8","SRGB8_ALPHA8","SRGB_ALPHA_EXT","gl1ext","RGBA8_SNORM","RGBA8UI","RGBA8I","RG16UI","RG16I","RG16F","RG16_EXT","RG16_SNORM_EXT","R32UI","R32I","R32F","RGB9_E5","p","R11F_G11F_B10F","RGB10_A2","RGB10_A2UI","RGB16_EXT","RGB16_SNORM_EXT","RG32UI","RG32I","RG32F","RGBA16UI","RGBA16I","RGBA16F","RGBA16_EXT","RGBA16_SNORM_EXT","RGB32F","gl2ext","FLOAT","RGBA32UI","RGBA32I","RGBA32F","STENCIL_INDEX8","attachment","STENCIL_ATTACHMENT","DEPTH_COMPONENT16","DEPTH_ATTACHMENT","DEPTH_COMPONENT24","DEPTH_COMPONENT32F","UNSIGNED_INT_24_8","DEPTH_STENCIL","DEPTH_STENCIL_ATTACHMENT","DEPTH24_STENCIL8","DEPTH32F_STENCIL8","COMPRESSED_RGB_S3TC_DXT1_EXT","x","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_R11_EAC","COMPRESSED_SIGNED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_SIGNED_RG11_EAC","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","getTextureFormat","format","entry","entries","find","_ref","Error","concat","isTextureFormatSupported","formatOrGL","info","undefined","Boolean","getTextureFormatSupport","supported","renderable","filterable","blendable","storable","isTextureFormatFilterable","decoded","signed","endsWith","isTextureFormatRenderable","getWebGLTextureFormat","formatInfo","webglFormat","getWebGLTextureParameters","getWebGLPixelDataFormat","integer","normalized","type","getWebGLDataType","dataType","compressed","getWebGLDepthStencilAttachment","_checkFloat32ColorAttachment","internalFormat","arguments","length","srcFormat","srcType","texture","framebuffer","createTexture","bindTexture","TEXTURE_2D","level","width","height","border","pixel","Uint8Array","texImage2D","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","status","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","deleteTexture","deleteFramebuffer","DATA_FORMAT_CHANNELS","RED","RED_INTEGER","RG","RG_INTEGER","RGB_INTEGER","RGBA_INTEGER","DEPTH_COMPONENT","ALPHA","LUMINANCE","LUMINANCE_ALPHA","TYPE_SIZES","UNSIGNED_INT","INT","UNSIGNED_SHORT","SHORT","HALF_FLOAT","BYTE","getTextureFormatBytesPerPixel","params","channels","channelSize"],"sources":["../../../src/adapter/converters/texture-formats.ts"],"sourcesContent":["import type {TextureFormat, DeviceFeature} from '@luma.gl/api';\nimport {decodeTextureFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\n\n/* eslint-disable camelcase */\n\n// TEXTURE FEATURES\n\n// Define local device feature strings to optimize minification\nconst texture_compression_bc: DeviceFeature = 'texture-compression-bc';\nconst texture_compression_astc: DeviceFeature = 'texture-compression-astc';\nconst texture_compression_etc2: DeviceFeature = 'texture-compression-etc2';\nconst texture_compression_etc1_webgl: DeviceFeature = 'texture-compression-etc1-webgl';\nconst texture_compression_pvrtc_webgl: DeviceFeature = 'texture-compression-pvrtc-webgl';\nconst texture_compression_atc_webgl: DeviceFeature = 'texture-compression-atc-webgl';\n\n// Define local webgl extension strings to optimize minification\nconst X_S3TC = 'WEBGL_compressed_texture_s3tc'; // BC1, BC2, BC3\nconst X_S3TC_SRGB = 'WEBGL_compressed_texture_s3tc_srgb'; // BC1, BC2, BC3\nconst X_RGTC = 'EXT_texture_compression_rgtc'; // BC4, BC5\nconst X_BPTC = 'EXT_texture_compression_bptc'; // BC6, BC7\nconst X_ETC2 = 'WEBGL_compressed_texture_etc'; // Renamed from 'WEBGL_compressed_texture_es3'\nconst X_ASTC = 'WEBGL_compressed_texture_astc';\nconst X_ETC1 = 'WEBGL_compressed_texture_etc1';\nconst X_PVRTC = 'WEBGL_compressed_texture_pvrtc';\nconst X_ATC = 'WEBGL_compressed_texture_atc';\n\n// Define local webgl extension strings to optimize minification\nconst EXT_SRGB = 'EXT_sRGB'; // https://developer.mozilla.org/en-US/docs/Web/API/EXT_sRGB\nconst EXT_TEXTURE_NORM16 = 'EXT_texture_norm16';\nconst EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';\nconst EXT_FLOAT_RENDER_WEBGL2 = 'EXT_color_buffer_float';\n// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';\n// const DEPTH = 'WEBGL_depth_texture';\n\nconst checkExtension = (gl: WebGLRenderingContext, extension: string): boolean =>\n gl.getExtension(extension);\nconst checkExtensions = (gl: WebGLRenderingContext, extensions: string[]): boolean =>\n extensions.every((extension) => gl.getExtension(extension));\n\n// prettier-ignore\nconst TEXTURE_FEATURE_CHECKS: Partial<Record<DeviceFeature, (gl: WebGLRenderingContext) => boolean> > = {\n 'texture-blend-float-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'EXT_float_blend'),\n 'texture-formats-srgb-webgl1': (gl) => (isWebGL2(gl) ? true : checkExtension(gl, EXT_SRGB)),\n 'texture-formats-depth-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'WEBGL_depth_texture'),\n 'texture-formats-float32-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_float'),\n 'texture-formats-float16-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_half_float'),\n 'texture-formats-norm16-webgl': (gl) => isWebGL2(gl) ? checkExtension(gl, EXT_TEXTURE_NORM16) : false,\n 'texture-filter-linear-float32-webgl': (gl) => checkExtension(gl, 'OES_texture_float_linear'),\n 'texture-filter-linear-float16-webgl': (gl) => checkExtension(gl, 'OES_texture_half_float_linear'),\n 'texture-filter-anisotropic-webgl': (gl) => checkExtension(gl, 'EXT_texture_filter_anisotropic'),\n 'texture-renderable-float32-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_float'), // [false, 'EXT_color_buffer_float'],\n 'texture-renderable-float16-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_half_float'),\n\n 'texture-compression-bc': (gl) => checkExtensions(gl, [X_S3TC, X_S3TC_SRGB, X_RGTC, X_BPTC]),\n 'texture-compression-bc5-webgl': (gl) => checkExtensions(gl, [X_RGTC]),\n // 'texture-compression-bc7-webgl': gl => checkExtensions(gl, [X_BPTC]),\n // 'texture-compression-bc3-srgb-webgl': gl => checkExtensions(gl, [X_S3TC_SRGB]),\n // 'texture-compression-bc3-webgl': gl => checkExtensions(gl, [X_S3TC]),\n 'texture-compression-etc2': (gl) => checkExtensions(gl, [X_ETC2]),\n 'texture-compression-astc': (gl) => checkExtensions(gl, [X_ASTC]),\n 'texture-compression-etc1-webgl': (gl) => checkExtensions(gl, [X_ETC1]),\n 'texture-compression-pvrtc-webgl': (gl) => checkExtensions(gl, [X_PVRTC]),\n 'texture-compression-atc-webgl': (gl) => checkExtensions(gl, [X_ATC])\n};\n\nexport function checkTextureFeature(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {\n return TEXTURE_FEATURE_CHECKS[feature]?.(gl) || false;\n}\n\nconst checkTextureFeatures = (gl: WebGLRenderingContext, features: DeviceFeature[]): boolean =>\n features.every((feature) => checkTextureFeature(gl, feature));\n\n/** Return a list of texture feature strings (for Device.features). Mainly compressed texture support */\nexport function getTextureFeatures(gl: WebGLRenderingContext): DeviceFeature[] {\n const textureFeatures = Object.keys(TEXTURE_FEATURE_CHECKS) as DeviceFeature[];\n return textureFeatures.filter((feature) => checkTextureFeature(gl, feature));\n}\n\n// TEXTURE FORMATS\n\n/** Map a format to webgl and constants */\ntype Format = {\n gl?: GL;\n /** If a different unsized format is needed in WebGL1 */\n gl1?: GL;\n gl1ext?: string;\n gl2ext?: string; // format requires WebGL2, when using a WebGL 1 context, color renderbuffer formats are limited\n\n b?: number; // (bytes per pixel), for memory usage calculations.\n /** channels */\n c?: number;\n bpp?: number;\n /** packed */\n p?: number;\n x?: string; // compressed\n f?: DeviceFeature; // for compressed texture formats\n render?: DeviceFeature; // renderable if extension is present\n filter?: DeviceFeature;\n\n wgpu?: false; // If not supported on WebGPU\n\n types?: number[];\n\n dataFormat?: GL;\n attachment?: GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;\n};\n\n// TABLES\n\n/** Legal combinations for internalFormat, format and type *\n// [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1ext: DEPTH},\n// [GL.DEPTH_STENCIL]: {gl1ext: DEPTH},\n// Sized texture format\n// R\n[GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RG\n[GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGB\n[GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGBA\n\n[GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n[GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n[GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n[GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n*/\n\n/** Texture format data */\n// prettier-ignore\nexport const TEXTURE_FORMATS: Record<TextureFormat, Format> = {\n // Unsized formats that leave the precision up to the driver.\n // TODO - Fix bpp constants\n // 'r8unorm-unsized': {gl: GL.LUMINANCE, b: 4, c: 2, bpp: 4},\n 'rgb8unorm-unsized': {gl: GL.RGB, gl1: GL.RGB, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n 'rgba8unorm-unsized': {gl: GL.RGBA, gl1: GL.RGBA, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]},\n // 'rgb8unorm-srgb-unsized': {gl: GL.SRGB_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n // 'rgba8unorm-srgb-unsized': {gl: GL.SRGB_ALPHA_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n\n // 8-bit formats\n 'r8unorm': {gl: GL.R8, b: 1, c: 1},\n 'r8snorm': {gl: GL.R8_SNORM, b: 1, c: 1},\n 'r8uint': {gl: GL.R8UI, b: 1, c: 1},\n 'r8sint': {gl: GL.R8I, b: 1, c: 1},\n\n // 16-bit formats\n 'rg8unorm': {gl: GL.RG8, b: 2, c: 2},\n 'rg8snorm': {gl: GL.RG8_SNORM, b: 2, c: 2},\n 'rg8uint': {gl: GL.RG8UI, b: 2, c: 2},\n 'rg8sint': {gl: GL.RG8I, b: 2, c: 2},\n\n 'r16uint': {gl: GL.R16UI, b: 2, c: 1},\n 'r16sint': {gl: GL.R16I, b: 2, c: 1},\n 'r16float': {gl: GL.R16F, b: 2, c: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'r16unorm-webgl': {gl: GL.R16_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl'},\n 'r16snorm-webgl': {gl: GL.R16_SNORM_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl'},\n\n // Packed 16-bit formats\n 'rgba4unorm-webgl': {gl: GL.RGBA4, b: 2, c: 4, wgpu: false},\n 'rgb565unorm-webgl': {gl: GL.RGB565, b: 2, c: 4, wgpu: false},\n 'rgb5a1unorm-webgl': {gl: GL.RGB5_A1, b: 2, c: 4, wgpu: false},\n\n // 24-bit formats\n 'rbg8unorm-webgl': {gl: GL.RGB8, b: 3, c: 3, wgpu: false},\n 'rbg8snorm-webgl': {gl: GL.RGB8_SNORM, b: 3, c: 3, wgpu: false},\n\n // 32-bit formats \n 'rgba8unorm': {gl: GL.RGBA8, gl1: GL.RGBA, b: 4, c: 2, bpp: 4},\n 'rgba8unorm-srgb': {gl: GL.SRGB8_ALPHA8, gl1: GL.SRGB_ALPHA_EXT, b: 4, c: 4, gl1ext: EXT_SRGB, bpp: 4},\n 'rgba8snorm': {gl: GL.RGBA8_SNORM, b: 4, c: 4},\n 'rgba8uint': {gl: GL.RGBA8UI, b: 4, c: 4, bpp: 4},\n 'rgba8sint': {gl: GL.RGBA8I, b: 4, c: 4, bpp: 4},\n // reverse colors, webgpu only\n 'bgra8unorm': {b: 4, c: 4},\n 'bgra8unorm-srgb': {b: 4, c: 4},\n\n 'rg16uint': {gl: GL.RG16UI, b: 4, c: 1, bpp: 4},\n 'rg16sint': {gl: GL.RG16I, b: 4, c: 2, bpp: 4},\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n 'rg16float': {gl: GL.RG16F, bpp: 4, b: 4, c: 2, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rg16unorm-webgl': {gl: GL.RG16_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl'},\n 'rg16snorm-webgl': {gl: GL.RG16_SNORM_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl'},\n\n 'r32uint': {gl: GL.R32UI, b: 4, c: 1, bpp: 4},\n 'r32sint': {gl: GL.R32I, b: 4, c: 1, bpp: 4},\n 'r32float': {gl: GL.R32F, bpp: 4, b: 4, c: 1, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n\n // Packed 32-bit formats\n 'rgb9e5ufloat': {gl: GL.RGB9_E5, b: 4, c: 3, p: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rg11b10ufloat': {gl: GL.R11F_G11F_B10F, b: 4, c: 3, p: 1,render: 'texture-renderable-float32-webgl'},\n 'rgb10a2unorm': {gl: GL.RGB10_A2, b: 4, c: 4, p: 1},\n // webgl2 only\n 'rgb10a2unorm-webgl': {b: 4, c: 4, gl: GL.RGB10_A2UI, p: 1, wgpu: false, bpp: 4},\n\n // 48-bit formats\n 'rgb16unorm-webgl': {gl: GL.RGB16_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl'},\n 'rgb16snorm-webgl': {gl: GL.RGB16_SNORM_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl'},\n\n // 64-bit formats\n 'rg32uint': {gl: GL.RG32UI, b: 8, c: 2},\n 'rg32sint': {gl: GL.RG32I, b: 8, c: 2},\n 'rg32float': {gl: GL.RG32F, b: 8, c: 2, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n 'rgba16uint': {gl: GL.RGBA16UI, b: 8, c: 4},\n 'rgba16sint': {gl: GL.RGBA16I, b: 8, c: 4},\n 'rgba16float': {gl: GL.RGBA16F, gl1: GL.RGBA, b: 8, c: 4, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rgba16unorm-webgl': {gl: GL.RGBA16_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl'},\n 'rgba16snorm-webgl': {gl: GL.RGBA16_SNORM_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl'},\n\n // 96-bit formats (deprecated!)\n 'rgb32float-webgl': {gl: GL.RGB32F, gl1: GL.RGB, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl',\n gl2ext: EXT_FLOAT_RENDER_WEBGL2, gl1ext: EXT_FLOAT_WEBGL1, // WebGL1 render buffers are supported with GL.RGB32F\n dataFormat: GL.RGB, types: [GL.FLOAT]},\n \n // 128-bit formats\n 'rgba32uint': {gl: GL.RGBA32UI, b: 16, c: 4},\n 'rgba32sint': {gl: GL.RGBA32I, b: 16, c: 4},\n 'rgba32float': {gl: GL.RGBA32F, gl1: GL.RGBA, b: 16, c: 4, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n\n // Depth and stencil formats\n 'stencil8': {gl: GL.STENCIL_INDEX8, b: 1, c: 1, attachment: GL.STENCIL_ATTACHMENT}, // 8 stencil bits\n\n 'depth16unorm': {gl: GL.DEPTH_COMPONENT16, gl1: GL.DEPTH_COMPONENT16, b: 2, c: 1, attachment: GL.DEPTH_ATTACHMENT}, // 16 depth bits\n 'depth24plus': {gl: GL.DEPTH_COMPONENT24, b: 3, c: 1, attachment: GL.DEPTH_ATTACHMENT},\n 'depth32float': {gl: GL.DEPTH_COMPONENT32F, b: 4, c: 1, attachment: GL.DEPTH_ATTACHMENT},\n\n 'depth24plus-stencil8': {b: 4, gl: GL.UNSIGNED_INT_24_8, gl1: GL.DEPTH_STENCIL, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n // \"depth24unorm-stencil8\" feature\n 'depth24unorm-stencil8': {gl: GL.DEPTH24_STENCIL8, b: 4, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n // \"depth32float-stencil8\" feature\n 'depth32float-stencil8': {gl: GL.DEPTH32F_STENCIL8, b: 5, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n\n // BC compressed formats: check device.features.has(\"texture-compression-bc\");\n\n 'bc1-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgb-unorm-srgb-webgl': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n\n 'bc1-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc2-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc2-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc3-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc3-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc4-r-unorm': {gl: GL.COMPRESSED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc4-r-snorm': {gl: GL.COMPRESSED_SIGNED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-unorm': {gl: GL.COMPRESSED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-snorm': {gl: GL.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc6h-rgb-ufloat': {gl: GL.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc6h-rgb-float': {gl: GL.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm': {gl: GL.COMPRESSED_RGBA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n\n // WEBGL_compressed_texture_etc: device.features.has(\"texture-compression-etc2\")\n // Note: Supposedly guaranteed availability compressed formats in WebGL2, but through CPU decompression\n\n 'etc2-rgb8unorm': {gl: GL.COMPRESSED_RGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm': {gl: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm-srgb': {gl: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgba8unorm': {gl: GL.COMPRESSED_RGBA8_ETC2_EAC, f: texture_compression_etc2},\n 'etc2-rgba8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, f: texture_compression_etc2},\n\n 'eac-r11unorm': {gl: GL.COMPRESSED_R11_EAC, f: texture_compression_etc2},\n 'eac-r11snorm': {gl: GL.COMPRESSED_SIGNED_R11_EAC, f: texture_compression_etc2},\n 'eac-rg11unorm': {gl: GL.COMPRESSED_RG11_EAC, f: texture_compression_etc2},\n 'eac-rg11snorm': {gl: GL.COMPRESSED_SIGNED_RG11_EAC, f: texture_compression_etc2},\n\n // X_ASTC compressed formats: device.features.has(\"texture-compression-astc\")\n\n 'astc-4x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-4x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x12_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, f: texture_compression_astc},\n\n // WEBGL_compressed_texture_pvrtc\n\n 'pvrtc-rgb4unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba4unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rbg2unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba2unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n\n // WEBGL_compressed_texture_etc1\n\n 'etc1-rbg-unorm-webgl': {gl: GL.COMPRESSED_RGB_ETC1_WEBGL, f: texture_compression_etc1_webgl},\n\n // WEBGL_compressed_texture_atc\n\n 'atc-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_ATC_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgba-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgbai-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, f: texture_compression_atc_webgl}\n};\n\n// FUNCTIONS\n\nfunction getTextureFormat(format: TextureFormat | GL): TextureFormat {\n if (typeof format === 'string') {\n return format;\n }\n const entry = Object.entries(TEXTURE_FORMATS).find(([, entry]) => (entry.gl === format || entry.gl1 === format));\n if (!entry) {\n throw new Error(`Unknown texture format ${format}`);\n }\n return entry[0] as TextureFormat;\n}\n\n/** Checks if a texture format is supported */\nexport function isTextureFormatSupported(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n // Check that we have a GL constant\n if (isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined) {\n return false;\n }\n // Check extensions\n const extension = info.x || (isWebGL2(gl) ? info.gl2ext || info.gl1ext : info.gl1ext);\n if (extension) {\n return Boolean(gl.getExtension(extension));\n }\n // if (info.gl1 === undefined && info.gl2 === undefined) {\n // // No info - always supported\n // }\n return true;\n}\n\n/** Checks if a texture format is supported */\nexport function getTextureFormatSupport(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): {\n supported: boolean;\n filterable?: boolean;\n renderable?: boolean;\n blendable?: boolean;\n storable?: boolean;\n} {\n const format = getTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return {supported: false};\n }\n // let decoded;\n // try {\n // decoded = decodeTextureFormat(format);\n // } catch {}\n\n // Support Check that we have a GL constant\n let supported = isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined;\n supported = supported && checkTextureFeatures(gl, [info.f]);\n\n // Filtering\n // const filterable = info.filter\n // ? checkTextureFeatures(gl, [info.filter])\n // : decoded && !decoded.signed;\n // const renderable = info.filter\n // ? checkTextureFeatures(gl, [info.render])\n // : decoded && !decoded.signed;\n\n return {\n supported,\n renderable: supported && checkTextureFeatures(gl, [info.render]),\n filterable: supported && checkTextureFeatures(gl, [info.filter]),\n blendable: false, // tod,\n storable: false\n };\n}\n\n/** Checks whether linear filtering (interpolated sampling) is available for floating point textures */\nexport function isTextureFormatFilterable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n try {\n const decoded = decodeTextureFormat(format);\n if (decoded.signed) {\n return false;\n }\n } catch {\n return false;\n }\n if (format.endsWith('32float')) {\n return Boolean(gl.getExtension('OES_texture_float_linear'));\n }\n if (format.endsWith('16float')) {\n return Boolean(gl.getExtension('OES_texture_half_float_linear'));\n }\n // if (typeof format === 'string') {\n // if (format === 'rgba32float') {\n // return gl.device.features.has('texture-renderable-rgba32float-webgl');\n // }\n // if (format.endsWith('32float')) {\n // return gl.device.features.has('texture-renderable-float32-webgl');\n // }\n // if (format.endsWith('16float')) {\n // return gl.device.features.has('texture-renderable-float16-webgl');\n // }\n // }\n return true;\n}\n\nexport function isTextureFormatRenderable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n if (typeof format === 'number') {\n return false; // isTextureFormatFilterableWebGL(gl, format);\n }\n // TODO depends on device...\n return true;\n}\n\n/**\n * Converts WebGPU string style texture formats to GL constants\n * Pass through GL constants\n */\nexport function getWebGLTextureFormat(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): GL | undefined {\n const format = getTextureFormat(formatOrGL);\n const formatInfo = TEXTURE_FORMATS[format];\n const webglFormat = isWebGL2(gl) ? formatInfo?.gl : formatInfo?.gl1;\n // Remap or pass through\n if (typeof format === 'number') {\n return webglFormat || format;\n }\n if (webglFormat === undefined) {\n throw new Error(`Unsupported texture format ${format}`);\n }\n return webglFormat;\n}\n\nexport function getWebGLTextureParameters(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL) {\n const format = getTextureFormat(formatOrGL);\n const webglFormat = getWebGLTextureFormat(gl, format);\n const decoded = decodeTextureFormat(format);\n return {\n format: webglFormat,\n dataFormat: getWebGLPixelDataFormat(\n decoded.format,\n decoded.integer,\n decoded.normalized,\n webglFormat\n ),\n type: getWebGLDataType(decoded.dataType),\n // @ts-expect-error\n compressed: decoded.compressed\n };\n}\n\nexport function getWebGLDepthStencilAttachment(\n formatOrGL: TextureFormat | GL\n): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT {\n const format = getTextureFormat(formatOrGL);\n if (typeof format === 'number') {\n // TODO\n throw new Error('unsupported depth stencil format')\n }\n const info = TEXTURE_FORMATS[format];\n const attachment = info.attachment;\n if (!attachment) {\n throw new Error('not a depth stencil format');\n }\n return attachment;\n}\n\n/**\n * function to test if Float 32 bit format texture can be bound as color attachment\n * @todo Generalize to check arbitrary formats?\n */\nexport function _checkFloat32ColorAttachment(\n gl: WebGLRenderingContext,\n internalFormat = gl.RGBA,\n srcFormat = GL.RGBA,\n srcType = GL.UNSIGNED_BYTE\n) {\n let texture: WebGLTexture | null = null;\n let framebuffer: WebGLFramebuffer | null = null;\n try {\n texture = gl.createTexture();\n gl.bindTexture(GL.TEXTURE_2D, texture);\n\n const level = 0;\n const width = 1;\n const height = 1;\n const border = 0;\n const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue\n gl.texImage2D(\n gl.TEXTURE_2D,\n level,\n internalFormat,\n width,\n height,\n border,\n srcFormat,\n srcType,\n pixel\n );\n\n framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, texture, 0);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER) === GL.FRAMEBUFFER_COMPLETE;\n\n gl.bindTexture(GL.TEXTURE_2D, null);\n return status;\n } finally {\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n }\n}\n\n/** @deprecated should be removed */\nconst DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\n/** @deprecated should be removed */\nconst TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\n/** TODO - VERY roundabout legacy way of calculating bytes per pixel */\nexport function getTextureFormatBytesPerPixel(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): number {\n const format = getTextureFormat(formatOrGL);\n const params = getWebGLTextureParameters(gl, format);\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[params.dataFormat] || 4;\n const channelSize = TYPE_SIZES[params.type] || 1;\n return channels * channelSize;\n}\n\n// DATA TYPE HELPERS\n\nfunction getWebGLPixelDataFormat(\n dataFormat: string,\n integer: boolean,\n normalized: boolean,\n format: GL\n): GL {\n // WebGL1 formats use same internalFormat\n if (format === GL.RGBA || format === GL.RGB) {\n return format;\n }\n // prettier-ignore\n switch (dataFormat) {\n case 'r': return integer && !normalized ? GL.RED_INTEGER : GL.RED;\n case 'rg': return integer && !normalized ? GL.RG_INTEGER : GL.RG;\n case 'rgb': return integer && !normalized ? GL.RGB_INTEGER : GL.RGB;\n case 'rgba': return integer && !normalized ? GL.RGBA_INTEGER : GL.RGBA;\n default: return GL.RGBA;\n }\n}\n\nexport function getWebGLDataType(dataType: string): GL {\n // prettier-ignore\n switch (dataType) {\n case 'uint8': return GL.UNSIGNED_BYTE;\n case 'sint8': return GL.BYTE;\n case 'uint16': return GL.UNSIGNED_SHORT;\n case 'sint16': return GL.SHORT;\n case 'uint32': return GL.UNSIGNED_INT;\n case 'sint32': return GL.INT;\n case 'float16': return GL.HALF_FLOAT;\n case 'float32': return GL.FLOAT;\n default: return GL.UNSIGNED_BYTE;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"texture-formats.js","names":["decodeTextureFormat","GL","isWebGL2","texture_compression_bc","texture_compression_astc","texture_compression_etc2","texture_compression_etc1_webgl","texture_compression_pvrtc_webgl","texture_compression_atc_webgl","X_S3TC","X_S3TC_SRGB","X_RGTC","X_BPTC","X_ETC2","X_ASTC","X_ETC1","X_PVRTC","X_ATC","EXT_SRGB","EXT_TEXTURE_NORM16","EXT_FLOAT_WEBGL1","EXT_FLOAT_RENDER_WEBGL2","checkExtension","gl","extension","getExtension","checkExtensions","extensions","every","TEXTURE_FEATURE_CHECKS","checkTextureFeature","feature","_TEXTURE_FEATURE_CHEC","call","checkTextureFeatures","features","getTextureFeatures","textureFeatures","Object","keys","filter","TEXTURE_FORMATS","RGB","gl1","b","c","bpp","dataFormat","types","UNSIGNED_BYTE","UNSIGNED_SHORT_5_6_5","RGBA","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","R8","renderbuffer","R8_SNORM","R8UI","R8I","RG8","RG8_SNORM","RG8UI","RG8I","R16UI","R16I","R16F","render","R16_EXT","f","x","R16_SNORM_EXT","RGBA4","wgpu","RGB565","RGB5_A1","RGB8","RGB8_SNORM","RGBA8","SRGB8_ALPHA8","SRGB_ALPHA_EXT","gl1ext","RGBA8_SNORM","RGBA8UI","RGBA8I","RG16UI","RG16I","RG16F","RG16_EXT","RG16_SNORM_EXT","R32UI","R32I","R32F","RGB9_E5","p","R11F_G11F_B10F","RGB10_A2","RGB10_A2UI","RGB16_EXT","RGB16_SNORM_EXT","RG32UI","RG32I","RG32F","RGBA16UI","RGBA16I","RGBA16F","RGBA16_EXT","RGBA16_SNORM_EXT","RGB32F","gl2ext","FLOAT","RGBA32UI","RGBA32I","RGBA32F","STENCIL_INDEX8","attachment","STENCIL_ATTACHMENT","DEPTH_COMPONENT16","DEPTH_ATTACHMENT","DEPTH_COMPONENT24","DEPTH_COMPONENT32F","DEPTH_STENCIL","DEPTH_STENCIL_ATTACHMENT","depthTexture","DEPTH24_STENCIL8","DEPTH32F_STENCIL8","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_R11_EAC","COMPRESSED_SIGNED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_SIGNED_RG11_EAC","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","DATA_FORMAT_CHANNELS","RED","RED_INTEGER","RG","RG_INTEGER","RGB_INTEGER","RGBA_INTEGER","DEPTH_COMPONENT","ALPHA","LUMINANCE","LUMINANCE_ALPHA","TYPE_SIZES","UNSIGNED_INT","INT","UNSIGNED_SHORT","SHORT","HALF_FLOAT","BYTE","isTextureFormatSupported","formatOrGL","format","convertGLToTextureFormat","info","undefined","Boolean","isRenderbufferFormatSupported","_TEXTURE_FORMATS$form","entry","entries","find","_ref","Error","concat","convertTextureFormatToGL","formatInfo","webglFormat","getTextureFormatSupport","supported","renderable","filterable","blendable","storable","isTextureFormatFilterable","decoded","signed","endsWith","isTextureFormatRenderable","getWebGLTextureParameters","getWebGLPixelDataFormat","integer","normalized","type","getWebGLDataType","dataType","compressed","getDepthStencilAttachmentWebGL","_checkFloat32ColorAttachment","internalFormat","arguments","length","srcFormat","srcType","texture","framebuffer","createTexture","bindTexture","TEXTURE_2D","level","width","height","border","pixel","Uint8Array","texImage2D","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","status","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","deleteTexture","deleteFramebuffer","getTextureFormatBytesPerPixel","params","channels","channelSize"],"sources":["../../../src/adapter/converters/texture-formats.ts"],"sourcesContent":["import type {TextureFormat, DeviceFeature} from '@luma.gl/api';\nimport {decodeTextureFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\n\n/* eslint-disable camelcase */\n\n// TEXTURE FEATURES\n\n// Define local device feature strings to optimize minification\nconst texture_compression_bc: DeviceFeature = 'texture-compression-bc';\nconst texture_compression_astc: DeviceFeature = 'texture-compression-astc';\nconst texture_compression_etc2: DeviceFeature = 'texture-compression-etc2';\nconst texture_compression_etc1_webgl: DeviceFeature = 'texture-compression-etc1-webgl';\nconst texture_compression_pvrtc_webgl: DeviceFeature = 'texture-compression-pvrtc-webgl';\nconst texture_compression_atc_webgl: DeviceFeature = 'texture-compression-atc-webgl';\n\n// Define local webgl extension strings to optimize minification\nconst X_S3TC = 'WEBGL_compressed_texture_s3tc'; // BC1, BC2, BC3\nconst X_S3TC_SRGB = 'WEBGL_compressed_texture_s3tc_srgb'; // BC1, BC2, BC3\nconst X_RGTC = 'EXT_texture_compression_rgtc'; // BC4, BC5\nconst X_BPTC = 'EXT_texture_compression_bptc'; // BC6, BC7\nconst X_ETC2 = 'WEBGL_compressed_texture_etc'; // Renamed from 'WEBGL_compressed_texture_es3'\nconst X_ASTC = 'WEBGL_compressed_texture_astc';\nconst X_ETC1 = 'WEBGL_compressed_texture_etc1';\nconst X_PVRTC = 'WEBGL_compressed_texture_pvrtc';\nconst X_ATC = 'WEBGL_compressed_texture_atc';\n\n// Define local webgl extension strings to optimize minification\nconst EXT_SRGB = 'EXT_sRGB'; // https://developer.mozilla.org/en-US/docs/Web/API/EXT_sRGB\nconst EXT_TEXTURE_NORM16 = 'EXT_texture_norm16';\nconst EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';\nconst EXT_FLOAT_RENDER_WEBGL2 = 'EXT_color_buffer_float';\n// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';\n// const DEPTH = 'WEBGL_depth_texture';\n\nconst checkExtension = (gl: WebGLRenderingContext, extension: string): boolean =>\n gl.getExtension(extension);\nconst checkExtensions = (gl: WebGLRenderingContext, extensions: string[]): boolean =>\n extensions.every(extension => gl.getExtension(extension));\n\n// prettier-ignore\nconst TEXTURE_FEATURE_CHECKS: Partial<Record<DeviceFeature, (gl: WebGLRenderingContext) => boolean> > = {\n 'texture-blend-float-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'EXT_float_blend'),\n 'texture-formats-srgb-webgl1': (gl) => (isWebGL2(gl) ? true : checkExtension(gl, EXT_SRGB)),\n 'texture-formats-depth-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'WEBGL_depth_texture'),\n 'texture-formats-float32-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_float'),\n 'texture-formats-float16-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_half_float'),\n 'texture-formats-norm16-webgl': (gl) => isWebGL2(gl) ? checkExtension(gl, EXT_TEXTURE_NORM16) : false,\n 'texture-filter-linear-float32-webgl': (gl) => checkExtension(gl, 'OES_texture_float_linear'),\n 'texture-filter-linear-float16-webgl': (gl) => checkExtension(gl, 'OES_texture_half_float_linear'),\n 'texture-filter-anisotropic-webgl': (gl) => checkExtension(gl, 'EXT_texture_filter_anisotropic'),\n 'texture-renderable-float32-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_float'), // [false, 'EXT_color_buffer_float'],\n 'texture-renderable-float16-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_half_float'),\n\n 'texture-compression-bc': (gl) => checkExtensions(gl, [X_S3TC, X_S3TC_SRGB, X_RGTC, X_BPTC]),\n 'texture-compression-bc5-webgl': (gl) => checkExtensions(gl, [X_RGTC]),\n // 'texture-compression-bc7-webgl': gl => checkExtensions(gl, [X_BPTC]),\n // 'texture-compression-bc3-srgb-webgl': gl => checkExtensions(gl, [X_S3TC_SRGB]),\n // 'texture-compression-bc3-webgl': gl => checkExtensions(gl, [X_S3TC]),\n 'texture-compression-etc2': (gl) => checkExtensions(gl, [X_ETC2]),\n 'texture-compression-astc': (gl) => checkExtensions(gl, [X_ASTC]),\n 'texture-compression-etc1-webgl': (gl) => checkExtensions(gl, [X_ETC1]),\n 'texture-compression-pvrtc-webgl': (gl) => checkExtensions(gl, [X_PVRTC]),\n 'texture-compression-atc-webgl': (gl) => checkExtensions(gl, [X_ATC])\n};\n\nexport function checkTextureFeature(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {\n return TEXTURE_FEATURE_CHECKS[feature]?.(gl) || false;\n}\n\nconst checkTextureFeatures = (gl: WebGLRenderingContext, features: DeviceFeature[]): boolean =>\n features.every(feature => checkTextureFeature(gl, feature));\n\n/** Return a list of texture feature strings (for Device.features). Mainly compressed texture support */\nexport function getTextureFeatures(gl: WebGLRenderingContext): DeviceFeature[] {\n const textureFeatures = Object.keys(TEXTURE_FEATURE_CHECKS) as DeviceFeature[];\n return textureFeatures.filter(feature => checkTextureFeature(gl, feature));\n}\n\n// TEXTURE FORMATS\n\n/** Map a format to webgl and constants */\ntype Format = {\n gl?: GL;\n /** If a different unsized format is needed in WebGL1 */\n gl1?: GL;\n gl1ext?: string;\n /** format requires WebGL2, when using a WebGL 1 context, color renderbuffer formats are limited */\n gl2ext?: string;\n\n /** (bytes per pixel), for memory usage calculations. */\n b?: number;\n /** channels */\n c?: number;\n bpp?: number;\n /** packed */\n p?: number;\n /** compressed */\n x?: string;\n /** for compressed texture formats */\n f?: DeviceFeature;\n /** renderable if feature is present */\n render?: DeviceFeature;\n /** filterable if feature is present */\n filter?: DeviceFeature;\n\n /** If not supported on WebGPU */\n wgpu?: false;\n\n types?: number[];\n\n dataFormat?: GL;\n /** Depth and stencil format attachment points. If set, needs to be a Renderbuffer unless depthTexture is set */\n attachment?: GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;\n /** if depthTexture is set this is a depth/stencil format that can be set to a texture */\n depthTexture?: boolean;\n\n renderbuffer?: boolean\n};\n\n// TABLES\n\n/** \n * Texture format data -\n * Exported but can change without notice\n */\n// prettier-ignore\nexport const TEXTURE_FORMATS: Record<TextureFormat, Format> = {\n // Unsized formats that leave the precision up to the driver.\n // TODO - Fix bpp constants\n // 'r8unorm-unsized': {gl: GL.LUMINANCE, b: 4, c: 2, bpp: 4},\n 'rgb8unorm-unsized': {gl: GL.RGB, gl1: GL.RGB, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n 'rgba8unorm-unsized': {gl: GL.RGBA, gl1: GL.RGBA, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]},\n // 'rgb8unorm-srgb-unsized': {gl: GL.SRGB_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n // 'rgba8unorm-srgb-unsized': {gl: GL.SRGB_ALPHA_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n\n // 8-bit formats\n 'r8unorm': {gl: GL.R8, b: 1, c: 1, renderbuffer: true},\n 'r8snorm': {gl: GL.R8_SNORM, b: 1, c: 1},\n 'r8uint': {gl: GL.R8UI, b: 1, c: 1, renderbuffer: true},\n 'r8sint': {gl: GL.R8I, b: 1, c: 1, renderbuffer: true},\n\n // 16-bit formats\n 'rg8unorm': {gl: GL.RG8, b: 2, c: 2, renderbuffer: true},\n 'rg8snorm': {gl: GL.RG8_SNORM, b: 2, c: 2},\n 'rg8uint': {gl: GL.RG8UI, b: 2, c: 2, renderbuffer: true},\n 'rg8sint': {gl: GL.RG8I, b: 2, c: 2, renderbuffer: true},\n\n 'r16uint': {gl: GL.R16UI, b: 2, c: 1, renderbuffer: true},\n 'r16sint': {gl: GL.R16I, b: 2, c: 1, renderbuffer: true},\n 'r16float': {gl: GL.R16F, b: 2, c: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl', renderbuffer: true},\n 'r16unorm-webgl': {gl: GL.R16_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl', renderbuffer: true, x: EXT_TEXTURE_NORM16},\n 'r16snorm-webgl': {gl: GL.R16_SNORM_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl', x: EXT_TEXTURE_NORM16},\n\n // Packed 16-bit formats\n 'rgba4unorm-webgl': {gl: GL.RGBA4, b: 2, c: 4, wgpu: false, renderbuffer: true},\n 'rgb565unorm-webgl': {gl: GL.RGB565, b: 2, c: 4, wgpu: false, renderbuffer: true},\n 'rgb5a1unorm-webgl': {gl: GL.RGB5_A1, b: 2, c: 4, wgpu: false, renderbuffer: true},\n\n // 24-bit formats\n 'rgb8unorm-webgl': {gl: GL.RGB8, b: 3, c: 3, wgpu: false},\n 'rgb8snorm-webgl': {gl: GL.RGB8_SNORM, b: 3, c: 3, wgpu: false},\n\n // 32-bit formats \n 'rgba8unorm': {gl: GL.RGBA8, gl1: GL.RGBA, b: 4, c: 2, bpp: 4},\n 'rgba8unorm-srgb': {gl: GL.SRGB8_ALPHA8, gl1: GL.SRGB_ALPHA_EXT, b: 4, c: 4, gl1ext: EXT_SRGB, bpp: 4},\n 'rgba8snorm': {gl: GL.RGBA8_SNORM, b: 4, c: 4},\n 'rgba8uint': {gl: GL.RGBA8UI, b: 4, c: 4, bpp: 4},\n 'rgba8sint': {gl: GL.RGBA8I, b: 4, c: 4, bpp: 4},\n // reverse colors, webgpu only\n 'bgra8unorm': {b: 4, c: 4},\n 'bgra8unorm-srgb': {b: 4, c: 4},\n\n 'rg16uint': {gl: GL.RG16UI, b: 4, c: 1, bpp: 4},\n 'rg16sint': {gl: GL.RG16I, b: 4, c: 2, bpp: 4},\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n 'rg16float': {gl: GL.RG16F, bpp: 4, b: 4, c: 2, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl', renderbuffer: true},\n 'rg16unorm-webgl': {gl: GL.RG16_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl', x: EXT_TEXTURE_NORM16},\n 'rg16snorm-webgl': {gl: GL.RG16_SNORM_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl', x: EXT_TEXTURE_NORM16},\n\n 'r32uint': {gl: GL.R32UI, b: 4, c: 1, bpp: 4, renderbuffer: true},\n 'r32sint': {gl: GL.R32I, b: 4, c: 1, bpp: 4, renderbuffer: true},\n 'r32float': {gl: GL.R32F, bpp: 4, b: 4, c: 1, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n\n // Packed 32-bit formats\n 'rgb9e5ufloat': {gl: GL.RGB9_E5, b: 4, c: 3, p: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rg11b10ufloat': {gl: GL.R11F_G11F_B10F, b: 4, c: 3, p: 1,render: 'texture-renderable-float32-webgl', renderbuffer: true},\n 'rgb10a2unorm': {gl: GL.RGB10_A2, b: 4, c: 4, p: 1, renderbuffer: true},\n // webgl2 only\n 'rgb10a2unorm-webgl': {b: 4, c: 4, gl: GL.RGB10_A2UI, p: 1, wgpu: false, bpp: 4, renderbuffer: true},\n\n // 48-bit formats\n 'rgb16unorm-webgl': {gl: GL.RGB16_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl', x: EXT_TEXTURE_NORM16},\n 'rgb16snorm-webgl': {gl: GL.RGB16_SNORM_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl', x: EXT_TEXTURE_NORM16},\n\n // 64-bit formats\n 'rg32uint': {gl: GL.RG32UI, b: 8, c: 2, renderbuffer: true},\n 'rg32sint': {gl: GL.RG32I, b: 8, c: 2, renderbuffer: true},\n 'rg32float': {gl: GL.RG32F, b: 8, c: 2, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl', renderbuffer: true},\n 'rgba16uint': {gl: GL.RGBA16UI, b: 8, c: 4, renderbuffer: true},\n 'rgba16sint': {gl: GL.RGBA16I, b: 8, c: 4, renderbuffer: true},\n 'rgba16float': {gl: GL.RGBA16F, gl1: GL.RGBA, b: 8, c: 4, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rgba16unorm-webgl': {gl: GL.RGBA16_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl', renderbuffer: true, x: EXT_TEXTURE_NORM16},\n 'rgba16snorm-webgl': {gl: GL.RGBA16_SNORM_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl', x: EXT_TEXTURE_NORM16},\n\n // 96-bit formats (deprecated!)\n 'rgb32float-webgl': {gl: GL.RGB32F, gl1: GL.RGB, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl',\n gl2ext: EXT_FLOAT_RENDER_WEBGL2, gl1ext: EXT_FLOAT_WEBGL1, // WebGL1 render buffers are supported with GL.RGB32F\n dataFormat: GL.RGB, types: [GL.FLOAT]},\n \n // 128-bit formats\n 'rgba32uint': {gl: GL.RGBA32UI, b: 16, c: 4, renderbuffer: true},\n 'rgba32sint': {gl: GL.RGBA32I, b: 16, c: 4, renderbuffer: true},\n 'rgba32float': {gl: GL.RGBA32F, b: 16, c: 4, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl', renderbuffer: true},\n\n // Depth and stencil formats\n 'stencil8': {gl: GL.STENCIL_INDEX8, gl1: GL.STENCIL_INDEX8, b: 1, c: 1, attachment: GL.STENCIL_ATTACHMENT, renderbuffer: true}, // 8 stencil bits\n\n 'depth16unorm': {gl: GL.DEPTH_COMPONENT16, gl1: GL.DEPTH_COMPONENT16, b: 2, c: 1, attachment: GL.DEPTH_ATTACHMENT, renderbuffer: true}, // 16 depth bits\n 'depth24plus': {gl: GL.DEPTH_COMPONENT24, b: 3, c: 1, attachment: GL.DEPTH_ATTACHMENT},\n 'depth32float': {gl: GL.DEPTH_COMPONENT32F, b: 4, c: 1, attachment: GL.DEPTH_ATTACHMENT, renderbuffer: true},\n\n // The depth component of the \"depth24plus\" and \"depth24plus-stencil8\" formats may be implemented as either a 24-bit depth value or a \"depth32float\" value.\n 'depth24plus-stencil8': {gl: GL.DEPTH_STENCIL, gl1: GL.DEPTH_STENCIL, b: 4, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT, renderbuffer: true, depthTexture: true},\n // \"depth24unorm-stencil8\" feature\n 'depth24unorm-stencil8': {gl: GL.DEPTH24_STENCIL8, b: 4, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT, renderbuffer: true},\n // \"depth32float-stencil8\" feature\n 'depth32float-stencil8': {gl: GL.DEPTH32F_STENCIL8, b: 5, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT, renderbuffer: true},\n\n // BC compressed formats: check device.features.has(\"texture-compression-bc\");\n\n 'bc1-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgb-unorm-srgb-webgl': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n\n 'bc1-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc2-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc2-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc3-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc3-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc4-r-unorm': {gl: GL.COMPRESSED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc4-r-snorm': {gl: GL.COMPRESSED_SIGNED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-unorm': {gl: GL.COMPRESSED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-snorm': {gl: GL.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc6h-rgb-ufloat': {gl: GL.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc6h-rgb-float': {gl: GL.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm': {gl: GL.COMPRESSED_RGBA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n\n // WEBGL_compressed_texture_etc: device.features.has(\"texture-compression-etc2\")\n // Note: Supposedly guaranteed availability compressed formats in WebGL2, but through CPU decompression\n\n 'etc2-rgb8unorm': {gl: GL.COMPRESSED_RGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm': {gl: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm-srgb': {gl: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgba8unorm': {gl: GL.COMPRESSED_RGBA8_ETC2_EAC, f: texture_compression_etc2},\n 'etc2-rgba8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, f: texture_compression_etc2},\n\n 'eac-r11unorm': {gl: GL.COMPRESSED_R11_EAC, f: texture_compression_etc2},\n 'eac-r11snorm': {gl: GL.COMPRESSED_SIGNED_R11_EAC, f: texture_compression_etc2},\n 'eac-rg11unorm': {gl: GL.COMPRESSED_RG11_EAC, f: texture_compression_etc2},\n 'eac-rg11snorm': {gl: GL.COMPRESSED_SIGNED_RG11_EAC, f: texture_compression_etc2},\n\n // X_ASTC compressed formats: device.features.has(\"texture-compression-astc\")\n\n 'astc-4x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-4x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x12_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, f: texture_compression_astc},\n\n // WEBGL_compressed_texture_pvrtc\n\n 'pvrtc-rgb4unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba4unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rbg2unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba2unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n\n // WEBGL_compressed_texture_etc1\n\n 'etc1-rbg-unorm-webgl': {gl: GL.COMPRESSED_RGB_ETC1_WEBGL, f: texture_compression_etc1_webgl},\n\n // WEBGL_compressed_texture_atc\n\n 'atc-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_ATC_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgba-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgbai-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, f: texture_compression_atc_webgl}\n};\n\n/** Legal combinations for internalFormat, format and type *\n// [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1ext: DEPTH},\n// [GL.DEPTH_STENCIL]: {gl1ext: DEPTH},\n// Sized texture format\n// R\n[GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RG\n[GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGB\n[GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGBA\n\n[GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n[GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n[GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n[GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n*/\n\n/* This table is now baked into the above table\ntype RenderbufferFormat = {\n bpp: number;\n gl2?: boolean;\n ext?: string;\n};\n\nexport const RENDERBUFFER_FORMATS: Record<string, RenderbufferFormat> = {\n [GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.\n // TODO - Not clear which webgpu value to map this to.\n // [GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},\n [GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},\n\n [GL.STENCIL_INDEX8]: {bpp: 1}, // 8 stencil bits.\n\n [GL.DEPTH_STENCIL]: {bpp: 4},\n [GL.DEPTH24_STENCIL8]: {gl2: true, bpp: 4},\n [GL.DEPTH32F_STENCIL8]: {gl2: true, bpp: 5},\n\n // When using a WebGL 1 context, color renderbuffer formats are limited\n [GL.RGBA4]: {gl2: true, bpp: 2},\n [GL.RGB565]: {gl2: true, bpp: 2},\n [GL.RGB5_A1]: {gl2: true, bpp: 2},\n\n // When using a WebGL 2 context, the following values are available additionally:\n [GL.R8]: {gl2: true, bpp: 1},\n [GL.R8UI]: {gl2: true, bpp: 1},\n [GL.R8I]: {gl2: true, bpp: 1},\n [GL.R16UI]: {gl2: true, bpp: 2},\n [GL.R16I]: {gl2: true, bpp: 2},\n [GL.R32UI]: {gl2: true, bpp: 4},\n [GL.R32I]: {gl2: true, bpp: 4},\n [GL.RG8]: {gl2: true, bpp: 2},\n [GL.RG8UI]: {gl2: true, bpp: 2},\n [GL.RG8I]: {gl2: true, bpp: 2},\n [GL.RG16UI]: {gl2: true, bpp: 4},\n [GL.RG16I]: {gl2: true, bpp: 4},\n [GL.RG32UI]: {gl2: true, bpp: 8},\n [GL.RG32I]: {gl2: true, bpp: 8},\n [GL.RGB8]: {gl2: true, bpp: 3},\n [GL.RGBA8]: {gl2: true, bpp: 4},\n // [GL.SRGB8_ALPHA8]: {gl2: true, gl1: SRGB}, // When using the EXT_sRGB WebGL1 extension\n [GL.RGB10_A2]: {gl2: true, bpp: 4},\n [GL.RGBA8UI]: {gl2: true, bpp: 4},\n [GL.RGBA8I]: {gl2: true, bpp: 4},\n [GL.RGB10_A2UI]: {gl2: true, bpp: 4},\n [GL.RGBA16UI]: {gl2: true, bpp: 8},\n [GL.RGBA16I]: {gl2: true, bpp: 8},\n [GL.RGBA32I]: {gl2: true, bpp: 16},\n [GL.RGBA32UI]: {gl2: true, bpp: 16},\n\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n [GL.R16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 2},\n [GL.RG16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RGBA16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 8},\n [GL.R32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RG32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 8},\n // TODO - can't get WEBGL_color_buffer_float to work on renderbuffers\n [GL.RGBA32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 16},\n // [GL.RGBA32F]: {ext: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},\n [GL.R11F_G11F_B10F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4}\n};\n*/\n\n/** @deprecated should be removed */\nconst DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\n/** @deprecated should be removed */\nconst TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\n// FUNCTIONS\n\n/** Checks if a texture format is supported */\nexport function isTextureFormatSupported(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = convertGLToTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n // Check that we have a GL constant\n if (isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined) {\n return false;\n }\n // Check extensions\n const extension = info.x || (isWebGL2(gl) ? info.gl2ext || info.gl1ext : info.gl1ext);\n if (extension) {\n return Boolean(gl.getExtension(extension));\n }\n // if (info.gl1 === undefined && info.gl2 === undefined) {\n // // No info - always supported\n // }\n return true;\n}\n\nexport function isRenderbufferFormatSupported(gl: WebGLRenderingContext, format: TextureFormat): boolean {\n // Note: Order is important since the function call initializes extensions.\n return isTextureFormatSupported(gl, format) && TEXTURE_FORMATS[format]?.renderbuffer;\n}\n\n/**\n * Map WebGL texture formats (GL constants) to WebGPU-style TextureFormat strings\n */\nexport function convertGLToTextureFormat(format: GL | TextureFormat): TextureFormat {\n if (typeof format === 'string') {\n return format;\n }\n const entry = Object.entries(TEXTURE_FORMATS).find(\n ([, entry]) => entry.gl === format || entry.gl1 === format\n );\n if (!entry) {\n throw new Error(`Unknown texture format ${format}`);\n }\n return entry[0] as TextureFormat;\n}\n\n/**\n * Map WebGPU style texture format strings to GL constants\n */\nexport function convertTextureFormatToGL(format: TextureFormat, isWebGL2: boolean): GL | undefined {\n const formatInfo = TEXTURE_FORMATS[format];\n const webglFormat = isWebGL2 ? formatInfo?.gl : formatInfo?.gl1;\n if (webglFormat === undefined) {\n throw new Error(`Unsupported texture format ${format}`);\n }\n return webglFormat;\n}\n\n/** Checks if a texture format is supported */\nexport function getTextureFormatSupport(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): {\n supported: boolean;\n filterable?: boolean;\n renderable?: boolean;\n blendable?: boolean;\n storable?: boolean;\n} {\n const format = convertGLToTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return {supported: false};\n }\n // let decoded;\n // try {\n // decoded = decodeTextureFormat(format);\n // } catch {}\n\n // Support Check that we have a GL constant\n let supported = isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined;\n supported = supported && checkTextureFeatures(gl, [info.f]);\n\n // Filtering\n // const filterable = info.filter\n // ? checkTextureFeatures(gl, [info.filter])\n // : decoded && !decoded.signed;\n // const renderable = info.filter\n // ? checkTextureFeatures(gl, [info.render])\n // : decoded && !decoded.signed;\n\n return {\n supported,\n renderable: supported && checkTextureFeatures(gl, [info.render]),\n filterable: supported && checkTextureFeatures(gl, [info.filter]),\n blendable: false, // tod,\n storable: false\n };\n}\n\n/** Checks whether linear filtering (interpolated sampling) is available for floating point textures */\nexport function isTextureFormatFilterable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = convertGLToTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n try {\n const decoded = decodeTextureFormat(format);\n if (decoded.signed) {\n return false;\n }\n } catch {\n return false;\n }\n if (format.endsWith('32float')) {\n return Boolean(gl.getExtension('OES_texture_float_linear'));\n }\n if (format.endsWith('16float')) {\n return Boolean(gl.getExtension('OES_texture_half_float_linear'));\n }\n // if (typeof format === 'string') {\n // if (format === 'rgba32float') {\n // return gl.device.features.has('texture-renderable-rgba32float-webgl');\n // }\n // if (format.endsWith('32float')) {\n // return gl.device.features.has('texture-renderable-float32-webgl');\n // }\n // if (format.endsWith('16float')) {\n // return gl.device.features.has('texture-renderable-float16-webgl');\n // }\n // }\n return true;\n}\n\nexport function isTextureFormatRenderable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = convertGLToTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n if (typeof format === 'number') {\n return false; // isTextureFormatFilterableWebGL(gl, format);\n }\n // TODO depends on device...\n return true;\n}\n\nexport function getWebGLTextureParameters(formatOrGL: TextureFormat | GL, isWebGL2: boolean) {\n const format = convertGLToTextureFormat(formatOrGL);\n const webglFormat = convertTextureFormatToGL(format, isWebGL2);\n const decoded = decodeTextureFormat(format);\n return {\n format: webglFormat,\n dataFormat: getWebGLPixelDataFormat(\n decoded.format,\n decoded.integer,\n decoded.normalized,\n webglFormat\n ),\n type: getWebGLDataType(decoded.dataType),\n // @ts-expect-error\n compressed: decoded.compressed\n };\n}\n\nexport function getDepthStencilAttachmentWebGL(\n format: TextureFormat\n): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT {\n const info = TEXTURE_FORMATS[format];\n if (!info?.attachment) {\n throw new Error(`${format} is not a depth stencil format`);\n }\n return info.attachment;\n}\n\n/**\n * function to test if Float 32 bit format texture can be bound as color attachment\n * @todo Generalize to check arbitrary formats?\n */\nexport function _checkFloat32ColorAttachment(\n gl: WebGLRenderingContext,\n internalFormat = gl.RGBA,\n srcFormat = GL.RGBA,\n srcType = GL.UNSIGNED_BYTE\n) {\n let texture: WebGLTexture | null = null;\n let framebuffer: WebGLFramebuffer | null = null;\n try {\n texture = gl.createTexture();\n gl.bindTexture(GL.TEXTURE_2D, texture);\n\n const level = 0;\n const width = 1;\n const height = 1;\n const border = 0;\n const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue\n gl.texImage2D(\n gl.TEXTURE_2D,\n level,\n internalFormat,\n width,\n height,\n border,\n srcFormat,\n srcType,\n pixel\n );\n\n framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, texture, 0);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER) === GL.FRAMEBUFFER_COMPLETE;\n\n gl.bindTexture(GL.TEXTURE_2D, null);\n return status;\n } finally {\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n }\n}\n\n/** TODO - VERY roundabout legacy way of calculating bytes per pixel */\nexport function getTextureFormatBytesPerPixel(\n formatOrGL: TextureFormat | GL,\n isWebGL2: boolean\n): number {\n const format = convertGLToTextureFormat(formatOrGL);\n const params = getWebGLTextureParameters(format, isWebGL2);\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[params.dataFormat] || 4;\n const channelSize = TYPE_SIZES[params.type] || 1;\n return channels * channelSize;\n}\n\n// DATA TYPE HELPERS\n\nfunction getWebGLPixelDataFormat(\n dataFormat: string,\n integer: boolean,\n normalized: boolean,\n format: GL\n): GL {\n // WebGL1 formats use same internalFormat\n if (format === GL.RGBA || format === GL.RGB) {\n return format;\n }\n // prettier-ignore\n switch (dataFormat) {\n case 'r': return integer && !normalized ? GL.RED_INTEGER : GL.RED;\n case 'rg': return integer && !normalized ? GL.RG_INTEGER : GL.RG;\n case 'rgb': return integer && !normalized ? GL.RGB_INTEGER : GL.RGB;\n case 'rgba': return integer && !normalized ? GL.RGBA_INTEGER : GL.RGBA;\n default: return GL.RGBA;\n }\n}\n\nexport function getWebGLDataType(dataType: string): GL {\n // prettier-ignore\n switch (dataType) {\n case 'uint8': return GL.UNSIGNED_BYTE;\n case 'sint8': return GL.BYTE;\n case 'uint16': return GL.UNSIGNED_SHORT;\n case 'sint16': return GL.SHORT;\n case 'uint32': return GL.UNSIGNED_INT;\n case 'sint32': return GL.INT;\n case 'float16': return GL.HALF_FLOAT;\n case 'float32': return GL.FLOAT;\n default: return GL.UNSIGNED_BYTE;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GLDrawMode, GLPrimitive } from '
|
|
1
|
+
import { GLDrawMode, GLPrimitive } from '@luma.gl/constants';
|
|
2
2
|
export declare function getPrimitiveDrawMode(drawMode: GLDrawMode): GLPrimitive;
|
|
3
3
|
export declare function getPrimitiveCount(options: {
|
|
4
4
|
drawMode: GLDrawMode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-utils.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/attribute-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attribute-utils.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/attribute-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,UAAU,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAG/D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,CAmBtE;AAGD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IAAC,QAAQ,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAC,GAAG,MAAM,CAkB9F;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAC,QAAQ,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAC,GAAG,MAAM,CAa3F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-utils.js","names":["GL","getPrimitiveDrawMode","drawMode","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","Error","getPrimitiveCount","options","vertexCount","getVertexCount","primitiveCount"],"sources":["../../../src/adapter/helpers/attribute-utils.ts"],"sourcesContent":["import GL
|
|
1
|
+
{"version":3,"file":"attribute-utils.js","names":["GL","getPrimitiveDrawMode","drawMode","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","Error","getPrimitiveCount","options","vertexCount","getVertexCount","primitiveCount"],"sources":["../../../src/adapter/helpers/attribute-utils.ts"],"sourcesContent":["import {GL, GLDrawMode, GLPrimitive} from '@luma.gl/constants';\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode: GLDrawMode): GLPrimitive {\n switch (drawMode) {\n case GL.POINTS:\n return GL.POINTS;\n case GL.LINES:\n return GL.LINES;\n case GL.LINE_STRIP:\n return GL.LINES;\n case GL.LINE_LOOP:\n return GL.LINES;\n case GL.TRIANGLES:\n return GL.TRIANGLES;\n case GL.TRIANGLE_STRIP:\n return GL.TRIANGLES;\n case GL.TRIANGLE_FAN:\n return GL.TRIANGLES;\n default:\n throw new Error('drawMode');\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount(options: {drawMode: GLDrawMode, vertexCount: number}): number {\n const {drawMode, vertexCount} = options;\n switch (drawMode) {\n case GL.POINTS:\n case GL.LINE_LOOP:\n return vertexCount;\n case GL.LINES:\n return vertexCount / 2;\n case GL.LINE_STRIP:\n return vertexCount - 1;\n case GL.TRIANGLES:\n return vertexCount / 3;\n case GL.TRIANGLE_STRIP:\n case GL.TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n throw new Error('drawMode');\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount(options: {drawMode: GLDrawMode, vertexCount: number}): number {\n const {drawMode, vertexCount} = options;\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL.POINTS:\n return primitiveCount;\n case GL.LINES:\n return primitiveCount * 2;\n case GL.TRIANGLES:\n return primitiveCount * 3;\n default:\n throw new Error('drawMode');\n }\n}\n"],"mappings":"AAAA,SAAQA,EAAE,QAAgC,oBAAoB;AAG9D,OAAO,SAASC,oBAAoBA,CAACC,QAAoB,EAAe;EACtE,QAAQA,QAAQ;IACd,KAAKF,EAAE,CAACG,MAAM;MACZ,OAAOH,EAAE,CAACG,MAAM;IAClB,KAAKH,EAAE,CAACI,KAAK;MACX,OAAOJ,EAAE,CAACI,KAAK;IACjB,KAAKJ,EAAE,CAACK,UAAU;MAChB,OAAOL,EAAE,CAACI,KAAK;IACjB,KAAKJ,EAAE,CAACM,SAAS;MACf,OAAON,EAAE,CAACI,KAAK;IACjB,KAAKJ,EAAE,CAACO,SAAS;MACf,OAAOP,EAAE,CAACO,SAAS;IACrB,KAAKP,EAAE,CAACQ,cAAc;MACpB,OAAOR,EAAE,CAACO,SAAS;IACrB,KAAKP,EAAE,CAACS,YAAY;MAClB,OAAOT,EAAE,CAACO,SAAS;IACrB;MACE,MAAM,IAAIG,KAAK,CAAC,UAAU,CAAC;EAAC;AAElC;AAGA,OAAO,SAASC,iBAAiBA,CAACC,OAAoD,EAAU;EAC9F,MAAM;IAACV,QAAQ;IAAEW;EAAW,CAAC,GAAGD,OAAO;EACvC,QAAQV,QAAQ;IACd,KAAKF,EAAE,CAACG,MAAM;IACd,KAAKH,EAAE,CAACM,SAAS;MACf,OAAOO,WAAW;IACpB,KAAKb,EAAE,CAACI,KAAK;MACX,OAAOS,WAAW,GAAG,CAAC;IACxB,KAAKb,EAAE,CAACK,UAAU;MAChB,OAAOQ,WAAW,GAAG,CAAC;IACxB,KAAKb,EAAE,CAACO,SAAS;MACf,OAAOM,WAAW,GAAG,CAAC;IACxB,KAAKb,EAAE,CAACQ,cAAc;IACtB,KAAKR,EAAE,CAACS,YAAY;MAClB,OAAOI,WAAW,GAAG,CAAC;IACxB;MACE,MAAM,IAAIH,KAAK,CAAC,UAAU,CAAC;EAAC;AAElC;AAGA,OAAO,SAASI,cAAcA,CAACF,OAAoD,EAAU;EAC3F,MAAM;IAACV,QAAQ;IAAEW;EAAW,CAAC,GAAGD,OAAO;EACvC,MAAMG,cAAc,GAAGJ,iBAAiB,CAAC;IAACT,QAAQ;IAAEW;EAAW,CAAC,CAAC;EACjE,QAAQZ,oBAAoB,CAACC,QAAQ,CAAC;IACpC,KAAKF,EAAE,CAACG,MAAM;MACZ,OAAOY,cAAc;IACvB,KAAKf,EAAE,CAACI,KAAK;MACX,OAAOW,cAAc,GAAG,CAAC;IAC3B,KAAKf,EAAE,CAACO,SAAS;MACf,OAAOQ,cAAc,GAAG,CAAC;IAC3B;MACE,MAAM,IAAIL,KAAK,CAAC,UAAU,CAAC;EAAC;AAElC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-shader-info.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/get-shader-info.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-shader-info.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/get-shader-info.ts"],"names":[],"mappings":"AAKA,oDAAoD;AACpD,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAM9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-shader-info.js","names":["getShaderInfo","source","defaultName","name","getShaderName","language","version","getShaderVersion","shader","arguments","length","undefined","SHADER_NAME_REGEXP","match","exec","words","v","parseInt","Number","isFinite"],"sources":["../../../src/adapter/helpers/get-shader-info.ts"],"sourcesContent":["// luma.gl, MIT license\n\n/** Information extracted from shader source code */\nexport type ShaderInfo = {\n name: string;\n language: 'glsl' | 'wgsl';\n version: number;\n};\n\n/** Extracts information from shader source code */\nexport function getShaderInfo(source: string, defaultName?: string): ShaderInfo {\n return {\n name: getShaderName(source, defaultName),\n language: 'glsl',\n version: getShaderVersion(source)\n };\n}\n\n/** Extracts GLSLIFY style naming of shaders: `#define SHADER_NAME ...` */\nfunction getShaderName(shader: string, defaultName: string = 'unnamed'): string {\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = SHADER_NAME_REGEXP.exec(shader);\n return match ? match[1] : defaultName;\n}\n\n/** returns GLSL shader version of given shader string */\nfunction getShaderVersion(source: string): number {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words && words.length >= 2 && words[0] === '#version') {\n const v = parseInt(words[1], 10);\n if (Number.isFinite(v)) {\n version = v;\n }\n }\n return version;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-shader-info.js","names":["getShaderInfo","source","defaultName","name","getShaderName","language","version","getShaderVersion","shader","arguments","length","undefined","SHADER_NAME_REGEXP","match","exec","words","v","parseInt","Number","isFinite"],"sources":["../../../src/adapter/helpers/get-shader-info.ts"],"sourcesContent":["// luma.gl, MIT license\n\n// Note: This was the only dependency that made @luma.gl/webgl depend on @luma.gl/shadertools\n// This file was coped from shadertools to avoid the dependency\n\n/** Information extracted from shader source code */\nexport type ShaderInfo = {\n name: string;\n language: 'glsl' | 'wgsl';\n version: number;\n};\n\n/** Extracts information from shader source code */\nexport function getShaderInfo(source: string, defaultName?: string): ShaderInfo {\n return {\n name: getShaderName(source, defaultName),\n language: 'glsl',\n version: getShaderVersion(source)\n };\n}\n\n/** Extracts GLSLIFY style naming of shaders: `#define SHADER_NAME ...` */\nfunction getShaderName(shader: string, defaultName: string = 'unnamed'): string {\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = SHADER_NAME_REGEXP.exec(shader);\n return match ? match[1] : defaultName;\n}\n\n/** returns GLSL shader version of given shader string */\nfunction getShaderVersion(source: string): number {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words && words.length >= 2 && words[0] === '#version') {\n const v = parseInt(words[1], 10);\n if (Number.isFinite(v)) {\n version = v;\n }\n }\n return version;\n}\n"],"mappings":"AAaA,OAAO,SAASA,aAAaA,CAACC,MAAc,EAAEC,WAAoB,EAAc;EAC9E,OAAO;IACLC,IAAI,EAAEC,aAAa,CAACH,MAAM,EAAEC,WAAW,CAAC;IACxCG,QAAQ,EAAE,MAAM;IAChBC,OAAO,EAAEC,gBAAgB,CAACN,MAAM;EAClC,CAAC;AACH;AAGA,SAASG,aAAaA,CAACI,MAAc,EAA2C;EAAA,IAAzCN,WAAmB,GAAAO,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,SAAS;EACpE,MAAMG,kBAAkB,GAAG,mDAAmD;EAC9E,MAAMC,KAAK,GAAGD,kBAAkB,CAACE,IAAI,CAACN,MAAM,CAAC;EAC7C,OAAOK,KAAK,GAAGA,KAAK,CAAC,CAAC,CAAC,GAAGX,WAAW;AACvC;AAGA,SAASK,gBAAgBA,CAACN,MAAc,EAAU;EAChD,IAAIK,OAAO,GAAG,GAAG;EACjB,MAAMS,KAAK,GAAGd,MAAM,CAACY,KAAK,CAAC,SAAS,CAAC;EACrC,IAAIE,KAAK,IAAIA,KAAK,CAACL,MAAM,IAAI,CAAC,IAAIK,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;IACzD,MAAMC,CAAC,GAAGC,QAAQ,CAACF,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAChC,IAAIG,MAAM,CAACC,QAAQ,CAACH,CAAC,CAAC,EAAE;MACtBV,OAAO,GAAGU,CAAC;IACb;EACF;EACA,OAAOV,OAAO;AAChB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
2
|
import { isWebGL2 } from "../../context/context/webgl-checks.js";
|
|
3
|
-
import Accessor from "../../classic/accessor.js";
|
|
3
|
+
import { Accessor } from "../../classic/accessor.js";
|
|
4
4
|
import { decodeUniformType, decodeAttributeType } from "./uniforms.js";
|
|
5
5
|
import { getVertexFormat } from "../converters/vertex-formats.js";
|
|
6
6
|
import { isSamplerUniform } from "./uniforms.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-shader-layout.js","names":["GL","isWebGL2","Accessor","decodeUniformType","decodeAttributeType","getVertexFormat","isSamplerUniform","getShaderLayout","gl","program","_programBindings$unif","_programBindings$vary","programBindings","getProgramBindings","shaderLayout","attributes","bindings","attribute","size","Math","min","accessor","format","type","FLOAT","push","name","location","stepMode","divisor","uniformBlock","uniformBlocks","uniforms","map","uniform","byteOffset","byteStride","arrayLength","visibility","vertex","fragment","minBindingSize","byteLength","textureUnit","viewDimension","sampleType","getSamplerInfo","filter","length","varyings","config","readAttributeBindings","readUniformBindings","readUniformBlocks","readVaryings","Object","seal","count","getProgramParameter","ACTIVE_ATTRIBUTES","index","activeInfo","getActiveAttrib","Error","compositeType","getAttribLocation","glType","components","test","attributeInfo","sort","a","b","gl2","TRANSFORM_FEEDBACK_VARYINGS","getTransformFeedbackVarying","varying","uniformCount","ACTIVE_UNIFORMS","i","getActiveUniform","rawName","isArray","parseUniformName","webglLocation","getUniformLocation","uniformInfo","j","elementName","concat","arrayElementUniformInfo","getBlockParameter","blockIndex","pname","getActiveUniformBlockParameter","blockCount","ACTIVE_UNIFORM_BLOCKS","blockInfo","getActiveUniformBlockName","UNIFORM_BLOCK_BINDING","UNIFORM_BLOCK_DATA_SIZE","UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER","UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER","UNIFORM_BLOCK_ACTIVE_UNIFORMS","uniformIndices","UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES","uniformType","getActiveUniforms","UNIFORM_TYPE","uniformArrayLength","UNIFORM_SIZE","uniformOffset","UNIFORM_OFFSET","uniformStride","UNIFORM_ARRAY_STRIDE","SAMPLER_UNIFORMS_GL_TO_GPU","SAMPLER_2D","SAMPLER_CUBE","SAMPLER_3D","SAMPLER_2D_SHADOW","SAMPLER_2D_ARRAY","SAMPLER_2D_ARRAY_SHADOW","SAMPLER_CUBE_SHADOW","INT_SAMPLER_2D","INT_SAMPLER_3D","INT_SAMPLER_CUBE","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D_ARRAY","sampler","UNIFORM_NAME_REGEXP","matches","exec","Boolean"],"sources":["../../../src/adapter/helpers/get-shader-layout.ts"],"sourcesContent":["// luma.gl, MIT license\n\nimport {\n ShaderLayout,\n // BindingLayout,\n UniformBinding,\n UniformBlockBinding,\n ProgramBindings,\n AttributeBinding,\n VaryingBinding,\n // AttributeLayout,\n AccessorObject\n} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\nimport Accessor from '../../classic/accessor'; // TODO - should NOT depend on classic API\nimport {decodeUniformType, decodeAttributeType} from './uniforms';\nimport {getVertexFormat} from '../converters/vertex-formats';\nimport {isSamplerUniform} from './uniforms';\n\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n */\nexport function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {\n const programBindings = getProgramBindings(gl, program);\n\n const shaderLayout: ShaderLayout = {\n attributes: [],\n bindings: []\n };\n\n for (const attribute of programBindings.attributes) {\n // TODO - multicolumn attributes like a matrix4 can be up to 16 elts...\n const size = Math.min(attribute.accessor.size, 4);\n const format =\n // attribute.accessor.format ||\n getVertexFormat(attribute.accessor.type || GL.FLOAT, size);\n shaderLayout.attributes.push({\n name: attribute.name,\n location: attribute.location,\n format,\n stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'\n });\n }\n\n // Uniform blocks\n for (const uniformBlock of programBindings.uniformBlocks) {\n const uniforms = uniformBlock.uniforms.map((uniform) => ({\n name: uniform.name,\n format: uniform.format,\n byteOffset: uniform.byteOffset,\n byteStride: uniform.byteStride,\n arrayLength: uniform.arrayLength\n }));\n shaderLayout.bindings.push({\n type: 'uniform',\n name: uniformBlock.name,\n location: uniformBlock.location,\n visibility: (uniformBlock.vertex ? 0x1 : 0) & (uniformBlock.fragment ? 0x2 : 0),\n minBindingSize: uniformBlock.byteLength,\n uniforms\n });\n }\n\n let textureUnit = 0;\n for (const uniform of programBindings.uniforms) {\n if (isSamplerUniform(uniform.type)) {\n const {viewDimension, sampleType} = getSamplerInfo(uniform.type);\n shaderLayout.bindings.push({\n type: 'texture',\n name: uniform.name,\n location: textureUnit,\n viewDimension,\n sampleType\n });\n\n // @ts-expect-error\n uniform.textureUnit = textureUnit;\n textureUnit += 1;\n }\n }\n\n const uniforms = programBindings.uniforms?.filter((uniform) => uniform.location !== null) || [];\n if (uniforms.length) {\n shaderLayout.uniforms = uniforms;\n }\n if (programBindings.varyings?.length) {\n shaderLayout.varyings = programBindings.varyings;\n }\n\n return shaderLayout;\n}\n\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n */\nexport function getProgramBindings(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): ProgramBindings {\n const config: ProgramBindings = {\n attributes: readAttributeBindings(gl, program),\n uniforms: readUniformBindings(gl, program),\n uniformBlocks: readUniformBlocks(gl, program),\n varyings: readVaryings(gl, program)\n };\n\n Object.seal(config);\n return config;\n // generateWebGPUStyleBindings(bindings);\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readAttributeBindings(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): AttributeBinding[] {\n const attributes: AttributeBinding[] = [];\n\n const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const activeInfo = gl.getActiveAttrib(program, index);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType, size} = activeInfo;\n const location = gl.getAttribLocation(program, name);\n // Add only user provided attributes, for built-in attributes like\n // `gl_InstanceID` locaiton will be < 0\n if (location >= 0) {\n const {glType, components} = decodeAttributeType(compositeType);\n const accessor: AccessorObject = {type: glType, size: size * components};\n // Any attribute name containing the word \"instance\" will be assumed to be instanced\n if (/instance/i.test(name)) {\n accessor.divisor = 1;\n }\n const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values\n attributes.push(attributeInfo);\n }\n }\n\n attributes.sort((a: AttributeBinding, b: AttributeBinding) => a.location - b.location);\n return attributes;\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): VaryingBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const varyings: VaryingBinding[] = [];\n\n const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const activeInfo = gl2.getTransformFeedbackVarying(program, location);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType, size} = activeInfo;\n const {glType, components} = decodeUniformType(compositeType);\n const accessor = new Accessor({type: glType, size: size * components});\n const varying = {location, name, accessor}; // Base values\n varyings.push(varying);\n }\n\n varyings.sort((a, b) => a.location - b.location);\n return varyings;\n}\n\n/**\n * Extract info about all uniforms\n *\n * Query uniform locations and build name to setter map.\n */\nfunction readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram): UniformBinding[] {\n const uniforms: UniformBinding[] = [];\n\n const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < uniformCount; i++) {\n const activeInfo = gl.getActiveUniform(program, i);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name: rawName, size, type} = activeInfo;\n const {name, isArray} = parseUniformName(rawName);\n let webglLocation = gl.getUniformLocation(program, name);\n const uniformInfo = {\n // WebGL locations are uniquely typed but just numbers\n location: webglLocation as number,\n name,\n size,\n type,\n isArray\n };\n uniforms.push(uniformInfo);\n\n // Array (e.g. matrix) uniforms can occupy several 4x4 byte banks\n if (uniformInfo.size > 1) {\n for (let j = 0; j < uniformInfo.size; j++) {\n const elementName = `${name}[${j}]`;\n\n webglLocation = gl.getUniformLocation(program, elementName);\n\n const arrayElementUniformInfo = {\n ...uniformInfo,\n name: elementName,\n location: webglLocation as number\n };\n\n uniforms.push(arrayElementUniformInfo);\n }\n }\n }\n return uniforms;\n}\n\n/**\n * Extract info about all \"active\" uniform blocks\n *\n * (\"Active\" just means that unused (aka inactive) blocks may have been\n * optimized away during linking)\n */\nfunction readUniformBlocks(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): UniformBlockBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const getBlockParameter = (blockIndex: number, pname: GL): any =>\n gl2.getActiveUniformBlockParameter(program, blockIndex, pname);\n\n const uniformBlocks: UniformBlockBinding[] = [];\n\n const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {\n const blockInfo: UniformBlockBinding = {\n name: gl2.getActiveUniformBlockName(program, blockIndex) || '',\n location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),\n byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),\n vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n fragment: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n uniformCount: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n uniforms: [] as any[]\n };\n\n const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[] || [];\n\n const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.\n const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.\n // const uniformBlockIndex = gl2.getActiveUniforms(\n // program,\n // uniformIndices,\n // GL.UNIFORM_BLOCK_INDEX\n // ); // Array of GLint indicating the block indices of the uniforms.\n const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.\n const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.\n // const uniformMatrixStride = gl2.getActiveUniforms(\n // program,\n // uniformIndices,\n // GL.UNIFORM_MATRIX_STRIDE\n // ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.\n // const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);\n for (let i = 0; i < blockInfo.uniformCount; ++i) {\n const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n \n blockInfo.uniforms.push({\n name: activeInfo.name,\n format: decodeUniformType(uniformType[i]).format,\n type: uniformType[i],\n arrayLength: uniformArrayLength[i],\n byteOffset: uniformOffset[i],\n byteStride: uniformStride[i],\n // matrixStride: uniformStride[i],\n // rowMajor: uniformRowMajor[i]\n });\n }\n\n uniformBlocks.push(blockInfo);\n }\n\n uniformBlocks.sort((a, b) => a.location - b.location);\n return uniformBlocks;\n}\n\nconst SAMPLER_UNIFORMS_GL_TO_GPU: Record<\n number,\n [\n '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d',\n 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint'\n ]\n> = {\n [GL.SAMPLER_2D]: ['2d', 'float'],\n [GL.SAMPLER_CUBE]: ['cube', 'float'],\n [GL.SAMPLER_3D]: ['3d', 'float'],\n [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],\n [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],\n [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],\n [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],\n [GL.INT_SAMPLER_2D]: ['2d', 'sint'],\n [GL.INT_SAMPLER_3D]: ['3d', 'sint'],\n [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],\n [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']\n};\n\ntype SamplerInfo = | {\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\n sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';\n};\n\nfunction getSamplerInfo(type: GL): SamplerInfo {\n const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];\n if (!sampler) {\n throw new Error('sampler');\n }\n const [viewDimension, sampleType] = sampler;\n return {viewDimension, sampleType};\n}\n\n// HELPERS\n\nfunction parseUniformName(name: string): {name: string; length: number; isArray: boolean} {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = UNIFORM_NAME_REGEXP.exec(name);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] ? 1 : 0,\n isArray: Boolean(matches[2])\n };\n}\n\n/**\n * TODO - verify this is a copy of above and delete\n * import type {TextureFormat} from '@luma.gl/api';\n* Extract info about all \"active\" uniform blocks\n * (\"Active\" just means that unused (inactive) blocks may have been optimized away during linking)\n *\n function getUniformBlockBindings(gl: WebGLRenderingContext, program): Binding[] {\n if (!isWebGL2(gl)) {\n return;\n }\n const bindings: Binding[] = [];\n const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < count; blockIndex++) {\n const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n const visibility = (vertex) + (fragment);\n const binding: BufferBinding = {\n location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),\n // name: gl.getActiveUniformBlockName(program, blockIndex),\n type: 'uniform',\n visibility,\n minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),\n // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),\n }\n bindings.push(binding);\n }\n return bindings;\n}\n\nfunction setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {\n for (const bindGroup of bindings) {\n for (const binding of bindGroup) {\n\n }\n }\n\n // Set up indirection table\n // this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n}\n */\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"get-shader-layout.js","names":["GL","isWebGL2","Accessor","decodeUniformType","decodeAttributeType","getVertexFormat","isSamplerUniform","getShaderLayout","gl","program","_programBindings$unif","_programBindings$vary","programBindings","getProgramBindings","shaderLayout","attributes","bindings","attribute","size","Math","min","accessor","format","type","FLOAT","push","name","location","stepMode","divisor","uniformBlock","uniformBlocks","uniforms","map","uniform","byteOffset","byteStride","arrayLength","visibility","vertex","fragment","minBindingSize","byteLength","textureUnit","viewDimension","sampleType","getSamplerInfo","filter","length","varyings","config","readAttributeBindings","readUniformBindings","readUniformBlocks","readVaryings","Object","seal","count","getProgramParameter","ACTIVE_ATTRIBUTES","index","activeInfo","getActiveAttrib","Error","compositeType","getAttribLocation","glType","components","test","attributeInfo","sort","a","b","gl2","TRANSFORM_FEEDBACK_VARYINGS","getTransformFeedbackVarying","varying","uniformCount","ACTIVE_UNIFORMS","i","getActiveUniform","rawName","isArray","parseUniformName","webglLocation","getUniformLocation","uniformInfo","j","elementName","concat","arrayElementUniformInfo","getBlockParameter","blockIndex","pname","getActiveUniformBlockParameter","blockCount","ACTIVE_UNIFORM_BLOCKS","blockInfo","getActiveUniformBlockName","UNIFORM_BLOCK_BINDING","UNIFORM_BLOCK_DATA_SIZE","UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER","UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER","UNIFORM_BLOCK_ACTIVE_UNIFORMS","uniformIndices","UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES","uniformType","getActiveUniforms","UNIFORM_TYPE","uniformArrayLength","UNIFORM_SIZE","uniformOffset","UNIFORM_OFFSET","uniformStride","UNIFORM_ARRAY_STRIDE","SAMPLER_UNIFORMS_GL_TO_GPU","SAMPLER_2D","SAMPLER_CUBE","SAMPLER_3D","SAMPLER_2D_SHADOW","SAMPLER_2D_ARRAY","SAMPLER_2D_ARRAY_SHADOW","SAMPLER_CUBE_SHADOW","INT_SAMPLER_2D","INT_SAMPLER_3D","INT_SAMPLER_CUBE","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D_ARRAY","sampler","UNIFORM_NAME_REGEXP","matches","exec","Boolean"],"sources":["../../../src/adapter/helpers/get-shader-layout.ts"],"sourcesContent":["// luma.gl, MIT license\n\nimport {\n ShaderLayout,\n // BindingLayout,\n UniformBinding,\n UniformBlockBinding,\n ProgramBindings,\n AttributeBinding,\n VaryingBinding,\n // AttributeLayout,\n AccessorObject\n} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\nimport {Accessor} from '../../classic/accessor'; // TODO - should NOT depend on classic API\nimport {decodeUniformType, decodeAttributeType} from './uniforms';\nimport {getVertexFormat} from '../converters/vertex-formats';\nimport {isSamplerUniform} from './uniforms';\n\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n */\nexport function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {\n const programBindings = getProgramBindings(gl, program);\n\n const shaderLayout: ShaderLayout = {\n attributes: [],\n bindings: []\n };\n\n for (const attribute of programBindings.attributes) {\n // TODO - multicolumn attributes like a matrix4 can be up to 16 elts...\n const size = Math.min(attribute.accessor.size, 4);\n const format =\n // attribute.accessor.format ||\n getVertexFormat(attribute.accessor.type || GL.FLOAT, size);\n shaderLayout.attributes.push({\n name: attribute.name,\n location: attribute.location,\n format,\n stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'\n });\n }\n\n // Uniform blocks\n for (const uniformBlock of programBindings.uniformBlocks) {\n const uniforms = uniformBlock.uniforms.map((uniform) => ({\n name: uniform.name,\n format: uniform.format,\n byteOffset: uniform.byteOffset,\n byteStride: uniform.byteStride,\n arrayLength: uniform.arrayLength\n }));\n shaderLayout.bindings.push({\n type: 'uniform',\n name: uniformBlock.name,\n location: uniformBlock.location,\n visibility: (uniformBlock.vertex ? 0x1 : 0) & (uniformBlock.fragment ? 0x2 : 0),\n minBindingSize: uniformBlock.byteLength,\n uniforms\n });\n }\n\n let textureUnit = 0;\n for (const uniform of programBindings.uniforms) {\n if (isSamplerUniform(uniform.type)) {\n const {viewDimension, sampleType} = getSamplerInfo(uniform.type);\n shaderLayout.bindings.push({\n type: 'texture',\n name: uniform.name,\n location: textureUnit,\n viewDimension,\n sampleType\n });\n\n // @ts-expect-error\n uniform.textureUnit = textureUnit;\n textureUnit += 1;\n }\n }\n\n const uniforms = programBindings.uniforms?.filter((uniform) => uniform.location !== null) || [];\n if (uniforms.length) {\n shaderLayout.uniforms = uniforms;\n }\n if (programBindings.varyings?.length) {\n shaderLayout.varyings = programBindings.varyings;\n }\n\n return shaderLayout;\n}\n\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n */\nexport function getProgramBindings(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): ProgramBindings {\n const config: ProgramBindings = {\n attributes: readAttributeBindings(gl, program),\n uniforms: readUniformBindings(gl, program),\n uniformBlocks: readUniformBlocks(gl, program),\n varyings: readVaryings(gl, program)\n };\n\n Object.seal(config);\n return config;\n // generateWebGPUStyleBindings(bindings);\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readAttributeBindings(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): AttributeBinding[] {\n const attributes: AttributeBinding[] = [];\n\n const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const activeInfo = gl.getActiveAttrib(program, index);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType, size} = activeInfo;\n const location = gl.getAttribLocation(program, name);\n // Add only user provided attributes, for built-in attributes like\n // `gl_InstanceID` locaiton will be < 0\n if (location >= 0) {\n const {glType, components} = decodeAttributeType(compositeType);\n const accessor: AccessorObject = {type: glType, size: size * components};\n // Any attribute name containing the word \"instance\" will be assumed to be instanced\n if (/instance/i.test(name)) {\n accessor.divisor = 1;\n }\n const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values\n attributes.push(attributeInfo);\n }\n }\n\n attributes.sort((a: AttributeBinding, b: AttributeBinding) => a.location - b.location);\n return attributes;\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): VaryingBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const varyings: VaryingBinding[] = [];\n\n const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const activeInfo = gl2.getTransformFeedbackVarying(program, location);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType, size} = activeInfo;\n const {glType, components} = decodeUniformType(compositeType);\n const accessor = new Accessor({type: glType, size: size * components});\n const varying = {location, name, accessor}; // Base values\n varyings.push(varying);\n }\n\n varyings.sort((a, b) => a.location - b.location);\n return varyings;\n}\n\n/**\n * Extract info about all uniforms\n *\n * Query uniform locations and build name to setter map.\n */\nfunction readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram): UniformBinding[] {\n const uniforms: UniformBinding[] = [];\n\n const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < uniformCount; i++) {\n const activeInfo = gl.getActiveUniform(program, i);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name: rawName, size, type} = activeInfo;\n const {name, isArray} = parseUniformName(rawName);\n let webglLocation = gl.getUniformLocation(program, name);\n const uniformInfo = {\n // WebGL locations are uniquely typed but just numbers\n location: webglLocation as number,\n name,\n size,\n type,\n isArray\n };\n uniforms.push(uniformInfo);\n\n // Array (e.g. matrix) uniforms can occupy several 4x4 byte banks\n if (uniformInfo.size > 1) {\n for (let j = 0; j < uniformInfo.size; j++) {\n const elementName = `${name}[${j}]`;\n\n webglLocation = gl.getUniformLocation(program, elementName);\n\n const arrayElementUniformInfo = {\n ...uniformInfo,\n name: elementName,\n location: webglLocation as number\n };\n\n uniforms.push(arrayElementUniformInfo);\n }\n }\n }\n return uniforms;\n}\n\n/**\n * Extract info about all \"active\" uniform blocks\n *\n * (\"Active\" just means that unused (aka inactive) blocks may have been\n * optimized away during linking)\n */\nfunction readUniformBlocks(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): UniformBlockBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const getBlockParameter = (blockIndex: number, pname: GL): any =>\n gl2.getActiveUniformBlockParameter(program, blockIndex, pname);\n\n const uniformBlocks: UniformBlockBinding[] = [];\n\n const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {\n const blockInfo: UniformBlockBinding = {\n name: gl2.getActiveUniformBlockName(program, blockIndex) || '',\n location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),\n byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),\n vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n fragment: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n uniformCount: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n uniforms: [] as any[]\n };\n\n const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[] || [];\n\n const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.\n const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.\n // const uniformBlockIndex = gl2.getActiveUniforms(\n // program,\n // uniformIndices,\n // GL.UNIFORM_BLOCK_INDEX\n // ); // Array of GLint indicating the block indices of the uniforms.\n const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.\n const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.\n // const uniformMatrixStride = gl2.getActiveUniforms(\n // program,\n // uniformIndices,\n // GL.UNIFORM_MATRIX_STRIDE\n // ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.\n // const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);\n for (let i = 0; i < blockInfo.uniformCount; ++i) {\n const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n \n blockInfo.uniforms.push({\n name: activeInfo.name,\n format: decodeUniformType(uniformType[i]).format,\n type: uniformType[i],\n arrayLength: uniformArrayLength[i],\n byteOffset: uniformOffset[i],\n byteStride: uniformStride[i],\n // matrixStride: uniformStride[i],\n // rowMajor: uniformRowMajor[i]\n });\n }\n\n uniformBlocks.push(blockInfo);\n }\n\n uniformBlocks.sort((a, b) => a.location - b.location);\n return uniformBlocks;\n}\n\nconst SAMPLER_UNIFORMS_GL_TO_GPU: Record<\n number,\n [\n '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d',\n 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint'\n ]\n> = {\n [GL.SAMPLER_2D]: ['2d', 'float'],\n [GL.SAMPLER_CUBE]: ['cube', 'float'],\n [GL.SAMPLER_3D]: ['3d', 'float'],\n [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],\n [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],\n [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],\n [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],\n [GL.INT_SAMPLER_2D]: ['2d', 'sint'],\n [GL.INT_SAMPLER_3D]: ['3d', 'sint'],\n [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],\n [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']\n};\n\ntype SamplerInfo = | {\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\n sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';\n};\n\nfunction getSamplerInfo(type: GL): SamplerInfo {\n const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];\n if (!sampler) {\n throw new Error('sampler');\n }\n const [viewDimension, sampleType] = sampler;\n return {viewDimension, sampleType};\n}\n\n// HELPERS\n\nfunction parseUniformName(name: string): {name: string; length: number; isArray: boolean} {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = UNIFORM_NAME_REGEXP.exec(name);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] ? 1 : 0,\n isArray: Boolean(matches[2])\n };\n}\n\n/**\n * TODO - verify this is a copy of above and delete\n * import type {TextureFormat} from '@luma.gl/api';\n* Extract info about all \"active\" uniform blocks\n * (\"Active\" just means that unused (inactive) blocks may have been optimized away during linking)\n *\n function getUniformBlockBindings(gl: WebGLRenderingContext, program): Binding[] {\n if (!isWebGL2(gl)) {\n return;\n }\n const bindings: Binding[] = [];\n const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < count; blockIndex++) {\n const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n const visibility = (vertex) + (fragment);\n const binding: BufferBinding = {\n location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),\n // name: gl.getActiveUniformBlockName(program, blockIndex),\n type: 'uniform',\n visibility,\n minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),\n // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),\n }\n bindings.push(binding);\n }\n return bindings;\n}\n\nfunction setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {\n for (const bindGroup of bindings) {\n for (const binding of bindGroup) {\n\n }\n }\n\n // Set up indirection table\n // this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n}\n */\n"],"mappings":"AAaA,OAAOA,EAAE,MAAM,oBAAoB;AAAC,SAC5BC,QAAQ;AAAA,SACRC,QAAQ;AAAA,SACRC,iBAAiB,EAAEC,mBAAmB;AAAA,SACtCC,eAAe;AAAA,SACfC,gBAAgB;AAOxB,OAAO,SAASC,eAAeA,CAACC,EAAyB,EAAEC,OAAqB,EAAgB;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EAC9F,MAAMC,eAAe,GAAGC,kBAAkB,CAACL,EAAE,EAAEC,OAAO,CAAC;EAEvD,MAAMK,YAA0B,GAAG;IACjCC,UAAU,EAAE,EAAE;IACdC,QAAQ,EAAE;EACZ,CAAC;EAED,KAAK,MAAMC,SAAS,IAAIL,eAAe,CAACG,UAAU,EAAE;IAElD,MAAMG,IAAI,GAAGC,IAAI,CAACC,GAAG,CAACH,SAAS,CAACI,QAAQ,CAACH,IAAI,EAAE,CAAC,CAAC;IACjD,MAAMI,MAAM,GAEVjB,eAAe,CAACY,SAAS,CAACI,QAAQ,CAACE,IAAI,IAAIvB,EAAE,CAACwB,KAAK,EAAEN,IAAI,CAAC;IAC5DJ,YAAY,CAACC,UAAU,CAACU,IAAI,CAAC;MAC3BC,IAAI,EAAET,SAAS,CAACS,IAAI;MACpBC,QAAQ,EAAEV,SAAS,CAACU,QAAQ;MAC5BL,MAAM;MACNM,QAAQ,EAAEX,SAAS,CAACI,QAAQ,CAACQ,OAAO,KAAK,CAAC,GAAG,UAAU,GAAG;IAC5D,CAAC,CAAC;EACJ;EAGA,KAAK,MAAMC,YAAY,IAAIlB,eAAe,CAACmB,aAAa,EAAE;IACxD,MAAMC,QAAQ,GAAGF,YAAY,CAACE,QAAQ,CAACC,GAAG,CAAEC,OAAO,KAAM;MACvDR,IAAI,EAAEQ,OAAO,CAACR,IAAI;MAClBJ,MAAM,EAAEY,OAAO,CAACZ,MAAM;MACtBa,UAAU,EAAED,OAAO,CAACC,UAAU;MAC9BC,UAAU,EAAEF,OAAO,CAACE,UAAU;MAC9BC,WAAW,EAAEH,OAAO,CAACG;IACvB,CAAC,CAAC,CAAC;IACHvB,YAAY,CAACE,QAAQ,CAACS,IAAI,CAAC;MACzBF,IAAI,EAAE,SAAS;MACfG,IAAI,EAAEI,YAAY,CAACJ,IAAI;MACvBC,QAAQ,EAAEG,YAAY,CAACH,QAAQ;MAC/BW,UAAU,EAAE,CAACR,YAAY,CAACS,MAAM,GAAG,GAAG,GAAG,CAAC,KAAKT,YAAY,CAACU,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;MAC/EC,cAAc,EAAEX,YAAY,CAACY,UAAU;MACvCV;IACF,CAAC,CAAC;EACJ;EAEA,IAAIW,WAAW,GAAG,CAAC;EACnB,KAAK,MAAMT,OAAO,IAAItB,eAAe,CAACoB,QAAQ,EAAE;IAC9C,IAAI1B,gBAAgB,CAAC4B,OAAO,CAACX,IAAI,CAAC,EAAE;MAClC,MAAM;QAACqB,aAAa;QAAEC;MAAU,CAAC,GAAGC,cAAc,CAACZ,OAAO,CAACX,IAAI,CAAC;MAChET,YAAY,CAACE,QAAQ,CAACS,IAAI,CAAC;QACzBF,IAAI,EAAE,SAAS;QACfG,IAAI,EAAEQ,OAAO,CAACR,IAAI;QAClBC,QAAQ,EAAEgB,WAAW;QACrBC,aAAa;QACbC;MACF,CAAC,CAAC;MAGFX,OAAO,CAACS,WAAW,GAAGA,WAAW;MACjCA,WAAW,IAAI,CAAC;IAClB;EACF;EAEA,MAAMX,QAAQ,GAAG,EAAAtB,qBAAA,GAAAE,eAAe,CAACoB,QAAQ,cAAAtB,qBAAA,uBAAxBA,qBAAA,CAA0BqC,MAAM,CAAEb,OAAO,IAAKA,OAAO,CAACP,QAAQ,KAAK,IAAI,CAAC,KAAI,EAAE;EAC/F,IAAIK,QAAQ,CAACgB,MAAM,EAAE;IACnBlC,YAAY,CAACkB,QAAQ,GAAGA,QAAQ;EAClC;EACA,KAAArB,qBAAA,GAAIC,eAAe,CAACqC,QAAQ,cAAAtC,qBAAA,eAAxBA,qBAAA,CAA0BqC,MAAM,EAAE;IACpClC,YAAY,CAACmC,QAAQ,GAAGrC,eAAe,CAACqC,QAAQ;EAClD;EAEA,OAAOnC,YAAY;AACrB;AAOA,OAAO,SAASD,kBAAkBA,CAChCL,EAAyB,EACzBC,OAAqB,EACJ;EACjB,MAAMyC,MAAuB,GAAG;IAC9BnC,UAAU,EAAEoC,qBAAqB,CAAC3C,EAAE,EAAEC,OAAO,CAAC;IAC9CuB,QAAQ,EAAEoB,mBAAmB,CAAC5C,EAAE,EAAEC,OAAO,CAAC;IAC1CsB,aAAa,EAAEsB,iBAAiB,CAAC7C,EAAE,EAAEC,OAAO,CAAC;IAC7CwC,QAAQ,EAAEK,YAAY,CAAC9C,EAAE,EAAEC,OAAO;EACpC,CAAC;EAED8C,MAAM,CAACC,IAAI,CAACN,MAAM,CAAC;EACnB,OAAOA,MAAM;AAEf;AAOA,SAASC,qBAAqBA,CAC5B3C,EAAyB,EACzBC,OAAqB,EACD;EACpB,MAAMM,UAA8B,GAAG,EAAE;EAEzC,MAAM0C,KAAK,GAAGjD,EAAE,CAACkD,mBAAmB,CAACjD,OAAO,EAAED,EAAE,CAACmD,iBAAiB,CAAC;EAEnE,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGH,KAAK,EAAEG,KAAK,EAAE,EAAE;IAC1C,MAAMC,UAAU,GAAGrD,EAAE,CAACsD,eAAe,CAACrD,OAAO,EAAEmD,KAAK,CAAC;IACrD,IAAI,CAACC,UAAU,EAAE;MACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM;MAACrC,IAAI;MAAEH,IAAI,EAAEyC,aAAa;MAAE9C;IAAI,CAAC,GAAG2C,UAAU;IACpD,MAAMlC,QAAQ,GAAGnB,EAAE,CAACyD,iBAAiB,CAACxD,OAAO,EAAEiB,IAAI,CAAC;IAGpD,IAAIC,QAAQ,IAAI,CAAC,EAAE;MACjB,MAAM;QAACuC,MAAM;QAAEC;MAAU,CAAC,GAAG/D,mBAAmB,CAAC4D,aAAa,CAAC;MAC/D,MAAM3C,QAAwB,GAAG;QAACE,IAAI,EAAE2C,MAAM;QAAEhD,IAAI,EAAEA,IAAI,GAAGiD;MAAU,CAAC;MAExE,IAAI,WAAW,CAACC,IAAI,CAAC1C,IAAI,CAAC,EAAE;QAC1BL,QAAQ,CAACQ,OAAO,GAAG,CAAC;MACtB;MACA,MAAMwC,aAAa,GAAG;QAAC1C,QAAQ;QAAED,IAAI;QAAEL,QAAQ,EAAE,IAAInB,QAAQ,CAACmB,QAAQ;MAAC,CAAC;MACxEN,UAAU,CAACU,IAAI,CAAC4C,aAAa,CAAC;IAChC;EACF;EAEAtD,UAAU,CAACuD,IAAI,CAAC,CAACC,CAAmB,EAAEC,CAAmB,KAAKD,CAAC,CAAC5C,QAAQ,GAAG6C,CAAC,CAAC7C,QAAQ,CAAC;EACtF,OAAOZ,UAAU;AACnB;AAOA,SAASuC,YAAYA,CAAC9C,EAAyB,EAAEC,OAAqB,EAAoB;EACxF,IAAI,CAACR,QAAQ,CAACO,EAAE,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EACA,MAAMiE,GAAG,GAAGjE,EAA4B;EAExC,MAAMyC,QAA0B,GAAG,EAAE;EAErC,MAAMQ,KAAK,GAAGjD,EAAE,CAACkD,mBAAmB,CAACjD,OAAO,EAAET,EAAE,CAAC0E,2BAA2B,CAAC;EAC7E,KAAK,IAAI/C,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAG8B,KAAK,EAAE9B,QAAQ,EAAE,EAAE;IACnD,MAAMkC,UAAU,GAAGY,GAAG,CAACE,2BAA2B,CAAClE,OAAO,EAAEkB,QAAQ,CAAC;IACrE,IAAI,CAACkC,UAAU,EAAE;MACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM;MAACrC,IAAI;MAAEH,IAAI,EAAEyC,aAAa;MAAE9C;IAAI,CAAC,GAAG2C,UAAU;IACpD,MAAM;MAACK,MAAM;MAAEC;IAAU,CAAC,GAAGhE,iBAAiB,CAAC6D,aAAa,CAAC;IAC7D,MAAM3C,QAAQ,GAAG,IAAInB,QAAQ,CAAC;MAACqB,IAAI,EAAE2C,MAAM;MAAEhD,IAAI,EAAEA,IAAI,GAAGiD;IAAU,CAAC,CAAC;IACtE,MAAMS,OAAO,GAAG;MAACjD,QAAQ;MAAED,IAAI;MAAEL;IAAQ,CAAC;IAC1C4B,QAAQ,CAACxB,IAAI,CAACmD,OAAO,CAAC;EACxB;EAEA3B,QAAQ,CAACqB,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC5C,QAAQ,GAAG6C,CAAC,CAAC7C,QAAQ,CAAC;EAChD,OAAOsB,QAAQ;AACjB;AAOA,SAASG,mBAAmBA,CAAC5C,EAAyB,EAAEC,OAAqB,EAAoB;EAC/F,MAAMuB,QAA0B,GAAG,EAAE;EAErC,MAAM6C,YAAY,GAAGrE,EAAE,CAACkD,mBAAmB,CAACjD,OAAO,EAAET,EAAE,CAAC8E,eAAe,CAAC;EACxE,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,YAAY,EAAEE,CAAC,EAAE,EAAE;IACrC,MAAMlB,UAAU,GAAGrD,EAAE,CAACwE,gBAAgB,CAACvE,OAAO,EAAEsE,CAAC,CAAC;IAClD,IAAI,CAAClB,UAAU,EAAE;MACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM;MAACrC,IAAI,EAAEuD,OAAO;MAAE/D,IAAI;MAAEK;IAAI,CAAC,GAAGsC,UAAU;IAC9C,MAAM;MAACnC,IAAI;MAAEwD;IAAO,CAAC,GAAGC,gBAAgB,CAACF,OAAO,CAAC;IACjD,IAAIG,aAAa,GAAG5E,EAAE,CAAC6E,kBAAkB,CAAC5E,OAAO,EAAEiB,IAAI,CAAC;IACxD,MAAM4D,WAAW,GAAG;MAElB3D,QAAQ,EAAEyD,aAAuB;MACjC1D,IAAI;MACJR,IAAI;MACJK,IAAI;MACJ2D;IACF,CAAC;IACDlD,QAAQ,CAACP,IAAI,CAAC6D,WAAW,CAAC;IAG1B,IAAIA,WAAW,CAACpE,IAAI,GAAG,CAAC,EAAE;MACxB,KAAK,IAAIqE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,WAAW,CAACpE,IAAI,EAAEqE,CAAC,EAAE,EAAE;QACzC,MAAMC,WAAW,MAAAC,MAAA,CAAM/D,IAAI,OAAA+D,MAAA,CAAIF,CAAC,MAAG;QAEnCH,aAAa,GAAG5E,EAAE,CAAC6E,kBAAkB,CAAC5E,OAAO,EAAE+E,WAAW,CAAC;QAE3D,MAAME,uBAAuB,GAAG;UAC9B,GAAGJ,WAAW;UACd5D,IAAI,EAAE8D,WAAW;UACjB7D,QAAQ,EAAEyD;QACZ,CAAC;QAEDpD,QAAQ,CAACP,IAAI,CAACiE,uBAAuB,CAAC;MACxC;IACF;EACF;EACA,OAAO1D,QAAQ;AACjB;AAQA,SAASqB,iBAAiBA,CACxB7C,EAAyB,EACzBC,OAAqB,EACE;EACvB,IAAI,CAACR,QAAQ,CAACO,EAAE,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EACA,MAAMiE,GAAG,GAAGjE,EAA4B;EAExC,MAAMmF,iBAAiB,GAAGA,CAACC,UAAkB,EAAEC,KAAS,KACtDpB,GAAG,CAACqB,8BAA8B,CAACrF,OAAO,EAAEmF,UAAU,EAAEC,KAAK,CAAC;EAEhE,MAAM9D,aAAoC,GAAG,EAAE;EAE/C,MAAMgE,UAAU,GAAGtB,GAAG,CAACf,mBAAmB,CAACjD,OAAO,EAAET,EAAE,CAACgG,qBAAqB,CAAC;EAC7E,KAAK,IAAIJ,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGG,UAAU,EAAEH,UAAU,EAAE,EAAE;IAC9D,MAAMK,SAA8B,GAAG;MACrCvE,IAAI,EAAE+C,GAAG,CAACyB,yBAAyB,CAACzF,OAAO,EAAEmF,UAAU,CAAC,IAAI,EAAE;MAC9DjE,QAAQ,EAAEgE,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACmG,qBAAqB,CAAC;MACjEzD,UAAU,EAAEiD,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACoG,uBAAuB,CAAC;MACrE7D,MAAM,EAAEoD,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACqG,yCAAyC,CAAC;MACnF7D,QAAQ,EAAEmD,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACsG,2CAA2C,CAAC;MACvFzB,YAAY,EAAEc,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACuG,6BAA6B,CAAC;MAC7EvE,QAAQ,EAAE;IACZ,CAAC;IAED,MAAMwE,cAAc,GAAGb,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACyG,oCAAoC,CAAC,IAAgB,EAAE;IAE/G,MAAMC,WAAW,GAAGjC,GAAG,CAACkC,iBAAiB,CAAClG,OAAO,EAAE+F,cAAc,EAAExG,EAAE,CAAC4G,YAAY,CAAC;IACnF,MAAMC,kBAAkB,GAAGpC,GAAG,CAACkC,iBAAiB,CAAClG,OAAO,EAAE+F,cAAc,EAAExG,EAAE,CAAC8G,YAAY,CAAC;IAM1F,MAAMC,aAAa,GAAGtC,GAAG,CAACkC,iBAAiB,CAAClG,OAAO,EAAE+F,cAAc,EAAExG,EAAE,CAACgH,cAAc,CAAC;IACvF,MAAMC,aAAa,GAAGxC,GAAG,CAACkC,iBAAiB,CAAClG,OAAO,EAAE+F,cAAc,EAAExG,EAAE,CAACkH,oBAAoB,CAAC;IAO7F,KAAK,IAAInC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkB,SAAS,CAACpB,YAAY,EAAE,EAAEE,CAAC,EAAE;MAC/C,MAAMlB,UAAU,GAAGY,GAAG,CAACO,gBAAgB,CAACvE,OAAO,EAAE+F,cAAc,CAACzB,CAAC,CAAC,CAAC;MACnE,IAAI,CAAClB,UAAU,EAAE;QACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;MAC/B;MAEAkC,SAAS,CAACjE,QAAQ,CAACP,IAAI,CAAC;QACtBC,IAAI,EAAEmC,UAAU,CAACnC,IAAI;QACrBJ,MAAM,EAAEnB,iBAAiB,CAACuG,WAAW,CAAC3B,CAAC,CAAC,CAAC,CAACzD,MAAM;QAChDC,IAAI,EAAEmF,WAAW,CAAC3B,CAAC,CAAC;QACpB1C,WAAW,EAAEwE,kBAAkB,CAAC9B,CAAC,CAAC;QAClC5C,UAAU,EAAE4E,aAAa,CAAChC,CAAC,CAAC;QAC5B3C,UAAU,EAAE6E,aAAa,CAAClC,CAAC;MAG7B,CAAC,CAAC;IACJ;IAEAhD,aAAa,CAACN,IAAI,CAACwE,SAAS,CAAC;EAC/B;EAEAlE,aAAa,CAACuC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC5C,QAAQ,GAAG6C,CAAC,CAAC7C,QAAQ,CAAC;EACrD,OAAOI,aAAa;AACtB;AAEA,MAAMoF,0BAML,GAAG;EACF,CAACnH,EAAE,CAACoH,UAAU,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;EAChC,CAACpH,EAAE,CAACqH,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;EACpC,CAACrH,EAAE,CAACsH,UAAU,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;EAChC,CAACtH,EAAE,CAACuH,iBAAiB,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;EACvC,CAACvH,EAAE,CAACwH,gBAAgB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;EAC5C,CAACxH,EAAE,CAACyH,uBAAuB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;EACnD,CAACzH,EAAE,CAAC0H,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;EAC3C,CAAC1H,EAAE,CAAC2H,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;EACnC,CAAC3H,EAAE,CAAC4H,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;EACnC,CAAC5H,EAAE,CAAC6H,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;EACvC,CAAC7H,EAAE,CAAC8H,oBAAoB,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC;EAC/C,CAAC9H,EAAE,CAAC+H,uBAAuB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;EAC5C,CAAC/H,EAAE,CAACgI,uBAAuB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;EAC5C,CAAChI,EAAE,CAACiI,yBAAyB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;EAChD,CAACjI,EAAE,CAACkI,6BAA6B,GAAG,CAAC,UAAU,EAAE,MAAM;AACzD,CAAC;AAOD,SAASpF,cAAcA,CAACvB,IAAQ,EAAe;EAC7C,MAAM4G,OAAO,GAAGhB,0BAA0B,CAAC5F,IAAI,CAAC;EAChD,IAAI,CAAC4G,OAAO,EAAE;IACZ,MAAM,IAAIpE,KAAK,CAAC,SAAS,CAAC;EAC5B;EACA,MAAM,CAACnB,aAAa,EAAEC,UAAU,CAAC,GAAGsF,OAAO;EAC3C,OAAO;IAACvF,aAAa;IAAEC;EAAU,CAAC;AACpC;AAIA,SAASsC,gBAAgBA,CAACzD,IAAY,EAAoD;EAExF,IAAIA,IAAI,CAACA,IAAI,CAACsB,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;IACjC,OAAO;MACLtB,IAAI;MACJsB,MAAM,EAAE,CAAC;MACTkC,OAAO,EAAE;IACX,CAAC;EACH;EAGA,MAAMkD,mBAAmB,GAAG,sBAAsB;EAClD,MAAMC,OAAO,GAAGD,mBAAmB,CAACE,IAAI,CAAC5G,IAAI,CAAC;EAC9C,IAAI,CAAC2G,OAAO,IAAIA,OAAO,CAACrF,MAAM,GAAG,CAAC,EAAE;IAClC,MAAM,IAAIe,KAAK,sCAAA0B,MAAA,CAAsC/D,IAAI,EAAG;EAC9D;EAEA,OAAO;IACLA,IAAI,EAAE2G,OAAO,CAAC,CAAC,CAAC;IAChBrF,MAAM,EAAEqF,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC1BnD,OAAO,EAAEqD,OAAO,CAACF,OAAO,CAAC,CAAC,CAAC;EAC7B,CAAC;AACH"}
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
import { UniformFormat, VertexFormat } from '@luma.gl/api';
|
|
2
|
-
import GL from '@luma.gl/constants';
|
|
3
|
-
import { GLUniformType, GLCompositeType, GLType } from '../../types/webgl';
|
|
2
|
+
import { GL, GLUniformType, GLCompositeType, GLDataType } from '@luma.gl/constants';
|
|
4
3
|
/** Check is uniform is of sampler type */
|
|
5
4
|
export declare function isSamplerUniform(type: GLUniformType): boolean;
|
|
6
5
|
/** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
|
|
7
6
|
export declare function decodeUniformType(uniformType: GL): {
|
|
8
7
|
format: UniformFormat;
|
|
9
8
|
components: number;
|
|
10
|
-
glType:
|
|
9
|
+
glType: GLDataType;
|
|
11
10
|
};
|
|
12
11
|
export declare function decodeAttributeType(attributeType: GL): {
|
|
13
12
|
format: VertexFormat;
|
|
14
13
|
components: number;
|
|
15
|
-
glType:
|
|
14
|
+
glType: GLDataType;
|
|
16
15
|
};
|
|
17
16
|
/** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
|
|
18
|
-
export declare function
|
|
19
|
-
type:
|
|
17
|
+
export declare function decomposeCompositeGLDataType(compositeGLDataType: GLCompositeType): {
|
|
18
|
+
type: GLDataType;
|
|
20
19
|
components: number;
|
|
21
20
|
} | null;
|
|
22
|
-
export declare function
|
|
23
|
-
glType:
|
|
21
|
+
export declare function getCompositeGLDataType(type: GL, components: any): {
|
|
22
|
+
glType: GLDataType;
|
|
24
23
|
name: string;
|
|
25
24
|
} | null;
|
|
26
25
|
//# sourceMappingURL=uniforms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniforms.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/uniforms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"uniforms.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/uniforms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,cAAc,CAAC;AACzD,OAAO,EAAC,EAAE,EAAE,aAAa,EAAiB,eAAe,EAAE,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAEjG,0CAA0C;AAC1C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAE7D;AA0DD,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,EAAE,GACd;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAC,CAOjE;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,EAAE,GAAG;IACtD,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACpB,CAOA;AAED,0FAA0F;AAC1F,wBAAgB,4BAA4B,CAC1C,mBAAmB,EAAE,eAAe,GACnC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAO/C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,KAAA,GAAG;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAkBtG"}
|