@luma.gl/webgl 9.0.0-alpha.47 → 9.0.0-alpha.48
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.map +1 -1
- package/dist/adapter/converters/device-parameters.js +73 -40
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +60 -61
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/shader-formats.js +12 -13
- package/dist/adapter/converters/shader-formats.js.map +1 -1
- package/dist/adapter/converters/texture-formats.js +179 -180
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +20 -21
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +2 -2
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +53 -54
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +23 -12
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/decode-webgl-types.js +31 -32
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +29 -30
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -4
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +40 -41
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.js +38 -39
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +5 -6
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +14 -15
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +25 -26
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +22 -23
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +2 -3
- package/dist/adapter/resources/webgl-render-pass.js.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.js +2 -3
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +3 -4
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +27 -28
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.js +8 -9
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.d.ts +2 -2
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.js +5 -6
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.js +4 -5
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/copy-and-blit.js +16 -17
- package/dist/classic/copy-and-blit.js.map +1 -1
- package/dist/classic/format-utils.js +14 -15
- package/dist/classic/format-utils.js.map +1 -1
- package/dist/classic/typed-array-utils.js +18 -19
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +0 -1
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +256 -257
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +34 -35
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +9 -10
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -17
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/dist.dev.js +979 -2696
- package/dist/index.cjs +382 -263
- package/dist.min.js +39 -28
- package/package.json +5 -5
- package/src/adapter/converters/device-parameters.ts +40 -25
- package/src/adapter/device-helpers/get-device-info.ts +36 -8
- package/src/adapter/helpers/parse-shader-compiler-log.ts +21 -7
- package/src/adapter/resources/webgl-vertex-array.ts +4 -3
- package/src/adapter/webgl-device.ts +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-parameter-tables.js","names":["GL","isWebGL2","GL_PARAMETER_DEFAULTS","BLEND","BLEND_COLOR","Float32Array","BLEND_EQUATION_RGB","FUNC_ADD","BLEND_EQUATION_ALPHA","BLEND_SRC_RGB","ONE","BLEND_DST_RGB","ZERO","BLEND_SRC_ALPHA","BLEND_DST_ALPHA","COLOR_CLEAR_VALUE","COLOR_WRITEMASK","CULL_FACE","CULL_FACE_MODE","BACK","DEPTH_TEST","DEPTH_CLEAR_VALUE","DEPTH_FUNC","LESS","DEPTH_RANGE","DEPTH_WRITEMASK","DITHER","CURRENT_PROGRAM","FRAMEBUFFER_BINDING","RENDERBUFFER_BINDING","VERTEX_ARRAY_BINDING","ARRAY_BUFFER_BINDING","FRONT_FACE","CCW","GENERATE_MIPMAP_HINT","DONT_CARE","LINE_WIDTH","POLYGON_OFFSET_FILL","POLYGON_OFFSET_FACTOR","POLYGON_OFFSET_UNITS","SAMPLE_ALPHA_TO_COVERAGE","SAMPLE_COVERAGE","SAMPLE_COVERAGE_VALUE","SAMPLE_COVERAGE_INVERT","SCISSOR_TEST","SCISSOR_BOX","Int32Array","STENCIL_TEST","STENCIL_CLEAR_VALUE","STENCIL_WRITEMASK","STENCIL_BACK_WRITEMASK","STENCIL_FUNC","ALWAYS","STENCIL_REF","STENCIL_VALUE_MASK","STENCIL_BACK_FUNC","STENCIL_BACK_REF","STENCIL_BACK_VALUE_MASK","STENCIL_FAIL","KEEP","STENCIL_PASS_DEPTH_FAIL","STENCIL_PASS_DEPTH_PASS","STENCIL_BACK_FAIL","STENCIL_BACK_PASS_DEPTH_FAIL","STENCIL_BACK_PASS_DEPTH_PASS","VIEWPORT","PACK_ALIGNMENT","UNPACK_ALIGNMENT","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_COLORSPACE_CONVERSION_WEBGL","BROWSER_DEFAULT_WEBGL","TRANSFORM_FEEDBACK_BINDING","COPY_READ_BUFFER_BINDING","COPY_WRITE_BUFFER_BINDING","PIXEL_PACK_BUFFER_BINDING","PIXEL_UNPACK_BUFFER_BINDING","FRAGMENT_SHADER_DERIVATIVE_HINT","READ_FRAMEBUFFER_BINDING","RASTERIZER_DISCARD","PACK_ROW_LENGTH","PACK_SKIP_PIXELS","PACK_SKIP_ROWS","UNPACK_ROW_LENGTH","UNPACK_IMAGE_HEIGHT","UNPACK_SKIP_PIXELS","UNPACK_SKIP_ROWS","UNPACK_SKIP_IMAGES","enable","gl","value","key","disable","hint","pixelStorei","bindFramebuffer","target","DRAW_FRAMEBUFFER","FRAMEBUFFER","READ_FRAMEBUFFER","bindBuffer","bindingMap","ARRAY_BUFFER","COPY_READ_BUFFER","COPY_WRITE_BUFFER","PIXEL_PACK_BUFFER","PIXEL_UNPACK_BUFFER","glTarget","isArray","array","Array","ArrayBuffer","isView","DataView","GL_PARAMETER_SETTERS","blendColor","clearColor","colorMask","cullFace","clearDepth","depthFunc","depthRange","depthMask","useProgram","bindRenderbuffer","RENDERBUFFER","_bindTransformFeedbac","_ref","bindTransformFeedback","call","TRANSFORM_FEEDBACK","bindVertexArray","frontFace","lineWidth","scissor","clearStencil","stencilMaskSeparate","FRONT","viewport","framebuffer","handle","blend","blendEquation","args","separateModes","blendEquationSeparate","blendFunc","separateFuncs","length","blendFuncSeparate","cull","depthTest","dither","derivativeHint","mipmapHint","polygonOffsetFill","polygonOffset","sampleCoverage","scissorTest","stencilTest","stencilMask","mask","backMask","stencilFunc","func","ref","backFunc","backRef","stencilFuncSeparate","stencilOp","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","stencilOpSeparate","getValue","glEnum","values","cache","undefined","GL_COMPOSITE_PARAMETER_SETTERS","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","update","capability","pname","DRAW_FRAMEBUFFER_BINDING","buffer","valueChanged","r","g","b","a","mode","modeRGB","modeAlpha","src","dst","srcRGB","dstRGB","srcAlpha","dstAlpha","depth","s","zNear","zFar","face","width","factor","units","invert","x","y","height","fail","zfail","zpass","isEnabled","GL_PARAMETER_GETTERS","NON_CACHE_PARAMETERS","Set","ACTIVE_TEXTURE","TRANSFORM_FEEDBACK_ACTIVE","TRANSFORM_FEEDBACK_PAUSED","TRANSFORM_FEEDBACK_BUFFER_BINDING","UNIFORM_BUFFER_BINDING","ELEMENT_ARRAY_BUFFER_BINDING","IMPLEMENTATION_COLOR_READ_FORMAT","IMPLEMENTATION_COLOR_READ_TYPE","READ_BUFFER","DRAW_BUFFER0","DRAW_BUFFER1","DRAW_BUFFER2","DRAW_BUFFER3","DRAW_BUFFER4","DRAW_BUFFER5","DRAW_BUFFER6","DRAW_BUFFER7","DRAW_BUFFER8","DRAW_BUFFER9","DRAW_BUFFER10","DRAW_BUFFER11","DRAW_BUFFER12","DRAW_BUFFER13","DRAW_BUFFER14","DRAW_BUFFER15","SAMPLER_BINDING","TEXTURE_BINDING_2D","TEXTURE_BINDING_2D_ARRAY","TEXTURE_BINDING_3D","TEXTURE_BINDING_CUBE_MAP"],"sources":["../../../src/context/parameters/webgl-parameter-tables.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n// Tables describing WebGL parameters\nimport {GL, GLParameters} from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\n\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS: GLParameters = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n [GL.CURRENT_PROGRAM]: null,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.RENDERBUFFER_BINDING]: null,\n [GL.VERTEX_ARRAY_BINDING]: null,\n [GL.ARRAY_BUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.TRANSFORM_FEEDBACK_BINDING]: null,\n [GL.COPY_READ_BUFFER_BINDING]: null,\n [GL.COPY_WRITE_BUFFER_BINDING]: null,\n [GL.PIXEL_PACK_BUFFER_BINDING]: null,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: null,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl: WebGLRenderingContext, value: unknown, key: GL) =>\n value ? gl.enable(key) : gl.disable(key);\nconst hint = (gl: WebGLRenderingContext, value: GL, key: GL) => gl.hint(key, value);\nconst pixelStorei = (gl: WebGLRenderingContext, value: number | boolean, key: GL) =>\n gl.pixelStorei(key, value);\n\nconst bindFramebuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {\n let target;\n if (key === GL.FRAMEBUFFER_BINDING) {\n target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n } else {\n // GL.READ_FRAMEBUFFER_BINDING\n target = GL.READ_FRAMEBUFFER;\n }\n return gl.bindFramebuffer(target, value);\n};\n\nconst bindBuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {\n const bindingMap: Partial<Record<GL, GL>> = {\n [GL.ARRAY_BUFFER_BINDING]: GL.ARRAY_BUFFER,\n [GL.COPY_READ_BUFFER_BINDING]: GL.COPY_READ_BUFFER,\n [GL.COPY_WRITE_BUFFER_BINDING]: GL.COPY_WRITE_BUFFER,\n [GL.PIXEL_PACK_BUFFER_BINDING]: GL.PIXEL_PACK_BUFFER,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: GL.PIXEL_UNPACK_BUFFER\n };\n const glTarget = bindingMap[key];\n\n gl.bindBuffer(glTarget, value);\n};\n\n// Utility\nfunction isArray(array: unknown): boolean {\n return Array.isArray(array) || (ArrayBuffer.isView(array) && !(array instanceof DataView));\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>\n gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>\n gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl: WebGLRenderingContext, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl: WebGLRenderingContext, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n\n [GL.CURRENT_PROGRAM]: (gl: WebGLRenderingContext, value) => gl.useProgram(value),\n [GL.RENDERBUFFER_BINDING]: (gl: WebGLRenderingContext, value) =>\n gl.bindRenderbuffer(GL.RENDERBUFFER, value),\n [GL.TRANSFORM_FEEDBACK_BINDING]: (gl: WebGLRenderingContext, value) =>\n (gl as WebGL2RenderingContext).bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),\n [GL.VERTEX_ARRAY_BINDING]: (gl: WebGLRenderingContext, value) =>\n (gl as WebGL2RenderingContext).bindVertexArray(value),\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,\n\n // Buffers\n [GL.ARRAY_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_READ_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_WRITE_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,\n\n [GL.FRONT_FACE]: (gl: WebGLRenderingContext, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl: WebGLRenderingContext, value) =>\n gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl: WebGLRenderingContext, value) =>\n gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl: WebGLRenderingContext, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl: WebGLRenderingContext, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.blendColor(...value),\n blendEquation: (gl: WebGLRenderingContext, args: number | [number, number]) => {\n const separateModes = typeof args === 'number' ? [args, args] as [number, number]: args;\n gl.blendEquationSeparate(...separateModes);\n },\n blendFunc: (gl: WebGLRenderingContext, args: [number, number] | [number, number, number, number]) => {\n const separateFuncs = args?.length === 2 ? [...args, ...args] as [number, number, number, number] : args;\n gl.blendFuncSeparate(...separateFuncs);\n },\n\n clearColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.clearColor(...value),\n clearDepth: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),\n clearStencil: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),\n\n colorMask: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),\n\n cull: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE),\n cullFace: (gl: WebGLRenderingContext, value) => gl.cullFace(value),\n\n depthTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST),\n depthFunc: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),\n depthMask: (gl: WebGLRenderingContext, value) => gl.depthMask(value),\n depthRange: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),\n\n dither: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER),\n\n derivativeHint: (gl: WebGLRenderingContext, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl: WebGLRenderingContext, value) => gl.frontFace(value),\n\n mipmapHint: (gl: WebGLRenderingContext, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl: WebGLRenderingContext, value: [number, number]) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl: WebGLRenderingContext, value: [number, boolean?]) => gl.sampleCoverage(...value),\n\n scissorTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST),\n scissor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),\n\n stencilTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),\n stencilMask: (gl: WebGLRenderingContext, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl: WebGLRenderingContext, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl: WebGLRenderingContext, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl: WebGLRenderingContext, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl: WebGLRenderingContext, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl: WebGLRenderingContext, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl: WebGLRenderingContext, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\ntype UpdateFunc = (params: Record<string, any>) => void;\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update: UpdateFunc, capability: GL) =>\n update({\n [capability]: true\n }),\n disable: (update: UpdateFunc, capability: GL) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update: UpdateFunc, pname: GL, value) =>\n update({\n [pname]: value\n }),\n hint: (update: UpdateFunc, pname: GL, hint: GL) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n useProgram: (update: UpdateFunc, value) =>\n update({\n [GL.CURRENT_PROGRAM]: value\n }),\n bindRenderbuffer: (update: UpdateFunc, target, value) =>\n update({\n [GL.RENDERBUFFER_BINDING]: value\n }),\n bindTransformFeedback: (update: UpdateFunc, target, value) =>\n update({\n [GL.TRANSFORM_FEEDBACK_BINDING]: value\n }),\n bindVertexArray: (update: UpdateFunc, value) =>\n update({\n [GL.VERTEX_ARRAY_BINDING]: value\n }),\n\n bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n bindBuffer: (update: UpdateFunc, target, buffer) => {\n const pname = {\n [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],\n [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],\n [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],\n [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],\n [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]\n }[target];\n\n if (pname) {\n return update({[pname]: buffer});\n }\n // targets that should not be cached\n return {valueChanged: true};\n },\n\n blendColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update: UpdateFunc, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update: UpdateFunc, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update: UpdateFunc, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update: UpdateFunc, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update: UpdateFunc, depth: number) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update: UpdateFunc, s: number) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update: UpdateFunc, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update: UpdateFunc, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update: UpdateFunc, zNear: number, zFar: number) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update: UpdateFunc, mask: number) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update: UpdateFunc, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update: UpdateFunc, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update: UpdateFunc, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update: UpdateFunc, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update: UpdateFunc, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update: UpdateFunc, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update: UpdateFunc, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update: UpdateFunc, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update: UpdateFunc, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update: UpdateFunc, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl: WebGLRenderingContext, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n\nexport const NON_CACHE_PARAMETERS = new Set([\n // setter not intercepted\n GL.ACTIVE_TEXTURE,\n GL.TRANSFORM_FEEDBACK_ACTIVE,\n GL.TRANSFORM_FEEDBACK_PAUSED,\n\n // setters bindBufferRange/bindBufferBase cannot be pruned based on cache\n GL.TRANSFORM_FEEDBACK_BUFFER_BINDING,\n GL.UNIFORM_BUFFER_BINDING,\n\n // states depending on VERTEX_ARRAY_BINDING\n GL.ELEMENT_ARRAY_BUFFER_BINDING,\n // states depending on READ_FRAMEBUFFER_BINDING\n GL.IMPLEMENTATION_COLOR_READ_FORMAT,\n GL.IMPLEMENTATION_COLOR_READ_TYPE,\n // states depending on FRAMEBUFFER_BINDING\n GL.READ_BUFFER,\n GL.DRAW_BUFFER0,\n GL.DRAW_BUFFER1,\n GL.DRAW_BUFFER2,\n GL.DRAW_BUFFER3,\n GL.DRAW_BUFFER4,\n GL.DRAW_BUFFER5,\n GL.DRAW_BUFFER6,\n GL.DRAW_BUFFER7,\n GL.DRAW_BUFFER8,\n GL.DRAW_BUFFER9,\n GL.DRAW_BUFFER10,\n GL.DRAW_BUFFER11,\n GL.DRAW_BUFFER12,\n GL.DRAW_BUFFER13,\n GL.DRAW_BUFFER14,\n GL.DRAW_BUFFER15,\n // states depending on ACTIVE_TEXTURE\n GL.SAMPLER_BINDING,\n GL.TEXTURE_BINDING_2D,\n GL.TEXTURE_BINDING_2D_ARRAY,\n GL.TEXTURE_BINDING_3D,\n GL.TEXTURE_BINDING_CUBE_MAP\n]);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webgl-parameter-tables.js","names":["isWebGL2","GL_PARAMETER_DEFAULTS","Float32Array","Int32Array","enable","gl","value","key","disable","hint","pixelStorei","bindFramebuffer","target","bindBuffer","bindingMap","glTarget","isArray","array","Array","ArrayBuffer","isView","DataView","GL_PARAMETER_SETTERS","blendColor","clearColor","colorMask","cullFace","clearDepth","depthFunc","depthRange","depthMask","useProgram","bindRenderbuffer","_bindTransformFeedbac","_ref","bindTransformFeedback","call","bindVertexArray","frontFace","lineWidth","scissor","clearStencil","stencilMaskSeparate","viewport","framebuffer","handle","blend","blendEquation","args","separateModes","blendEquationSeparate","blendFunc","separateFuncs","length","blendFuncSeparate","cull","depthTest","dither","derivativeHint","mipmapHint","polygonOffsetFill","polygonOffset","sampleCoverage","scissorTest","stencilTest","stencilMask","mask","backMask","stencilFunc","func","ref","backFunc","backRef","stencilFuncSeparate","stencilOp","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","stencilOpSeparate","getValue","glEnum","values","cache","undefined","GL_COMPOSITE_PARAMETER_SETTERS","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","update","capability","pname","buffer","valueChanged","r","g","b","a","mode","modeRGB","modeAlpha","src","dst","srcRGB","dstRGB","srcAlpha","dstAlpha","depth","s","zNear","zFar","face","width","factor","units","invert","x","y","height","fail","zfail","zpass","isEnabled","GL_PARAMETER_GETTERS","NON_CACHE_PARAMETERS","Set"],"sources":["../../../src/context/parameters/webgl-parameter-tables.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n// Tables describing WebGL parameters\nimport {GL, GLParameters} from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\n\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS: GLParameters = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n [GL.CURRENT_PROGRAM]: null,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.RENDERBUFFER_BINDING]: null,\n [GL.VERTEX_ARRAY_BINDING]: null,\n [GL.ARRAY_BUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.TRANSFORM_FEEDBACK_BINDING]: null,\n [GL.COPY_READ_BUFFER_BINDING]: null,\n [GL.COPY_WRITE_BUFFER_BINDING]: null,\n [GL.PIXEL_PACK_BUFFER_BINDING]: null,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: null,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl: WebGLRenderingContext, value: unknown, key: GL) =>\n value ? gl.enable(key) : gl.disable(key);\nconst hint = (gl: WebGLRenderingContext, value: GL, key: GL) => gl.hint(key, value);\nconst pixelStorei = (gl: WebGLRenderingContext, value: number | boolean, key: GL) =>\n gl.pixelStorei(key, value);\n\nconst bindFramebuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {\n let target;\n if (key === GL.FRAMEBUFFER_BINDING) {\n target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n } else {\n // GL.READ_FRAMEBUFFER_BINDING\n target = GL.READ_FRAMEBUFFER;\n }\n return gl.bindFramebuffer(target, value);\n};\n\nconst bindBuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {\n const bindingMap: Partial<Record<GL, GL>> = {\n [GL.ARRAY_BUFFER_BINDING]: GL.ARRAY_BUFFER,\n [GL.COPY_READ_BUFFER_BINDING]: GL.COPY_READ_BUFFER,\n [GL.COPY_WRITE_BUFFER_BINDING]: GL.COPY_WRITE_BUFFER,\n [GL.PIXEL_PACK_BUFFER_BINDING]: GL.PIXEL_PACK_BUFFER,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: GL.PIXEL_UNPACK_BUFFER\n };\n const glTarget = bindingMap[key];\n\n gl.bindBuffer(glTarget, value);\n};\n\n// Utility\nfunction isArray(array: unknown): boolean {\n return Array.isArray(array) || (ArrayBuffer.isView(array) && !(array instanceof DataView));\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>\n gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>\n gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl: WebGLRenderingContext, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl: WebGLRenderingContext, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n\n [GL.CURRENT_PROGRAM]: (gl: WebGLRenderingContext, value) => gl.useProgram(value),\n [GL.RENDERBUFFER_BINDING]: (gl: WebGLRenderingContext, value) =>\n gl.bindRenderbuffer(GL.RENDERBUFFER, value),\n [GL.TRANSFORM_FEEDBACK_BINDING]: (gl: WebGLRenderingContext, value) =>\n (gl as WebGL2RenderingContext).bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),\n [GL.VERTEX_ARRAY_BINDING]: (gl: WebGLRenderingContext, value) =>\n (gl as WebGL2RenderingContext).bindVertexArray(value),\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,\n\n // Buffers\n [GL.ARRAY_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_READ_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_WRITE_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,\n\n [GL.FRONT_FACE]: (gl: WebGLRenderingContext, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl: WebGLRenderingContext, value) =>\n gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl: WebGLRenderingContext, value) =>\n gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl: WebGLRenderingContext, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl: WebGLRenderingContext, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.blendColor(...value),\n blendEquation: (gl: WebGLRenderingContext, args: number | [number, number]) => {\n const separateModes = typeof args === 'number' ? [args, args] as [number, number]: args;\n gl.blendEquationSeparate(...separateModes);\n },\n blendFunc: (gl: WebGLRenderingContext, args: [number, number] | [number, number, number, number]) => {\n const separateFuncs = args?.length === 2 ? [...args, ...args] as [number, number, number, number] : args;\n gl.blendFuncSeparate(...separateFuncs);\n },\n\n clearColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.clearColor(...value),\n clearDepth: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),\n clearStencil: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),\n\n colorMask: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),\n\n cull: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE),\n cullFace: (gl: WebGLRenderingContext, value) => gl.cullFace(value),\n\n depthTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST),\n depthFunc: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),\n depthMask: (gl: WebGLRenderingContext, value) => gl.depthMask(value),\n depthRange: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),\n\n dither: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER),\n\n derivativeHint: (gl: WebGLRenderingContext, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl: WebGLRenderingContext, value) => gl.frontFace(value),\n\n mipmapHint: (gl: WebGLRenderingContext, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl: WebGLRenderingContext, value: [number, number]) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl: WebGLRenderingContext, value: [number, boolean?]) => gl.sampleCoverage(...value),\n\n scissorTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST),\n scissor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),\n\n stencilTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),\n stencilMask: (gl: WebGLRenderingContext, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl: WebGLRenderingContext, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl: WebGLRenderingContext, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl: WebGLRenderingContext, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl: WebGLRenderingContext, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl: WebGLRenderingContext, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl: WebGLRenderingContext, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\ntype UpdateFunc = (params: Record<string, any>) => void;\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update: UpdateFunc, capability: GL) =>\n update({\n [capability]: true\n }),\n disable: (update: UpdateFunc, capability: GL) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update: UpdateFunc, pname: GL, value) =>\n update({\n [pname]: value\n }),\n hint: (update: UpdateFunc, pname: GL, hint: GL) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n useProgram: (update: UpdateFunc, value) =>\n update({\n [GL.CURRENT_PROGRAM]: value\n }),\n bindRenderbuffer: (update: UpdateFunc, target, value) =>\n update({\n [GL.RENDERBUFFER_BINDING]: value\n }),\n bindTransformFeedback: (update: UpdateFunc, target, value) =>\n update({\n [GL.TRANSFORM_FEEDBACK_BINDING]: value\n }),\n bindVertexArray: (update: UpdateFunc, value) =>\n update({\n [GL.VERTEX_ARRAY_BINDING]: value\n }),\n\n bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n bindBuffer: (update: UpdateFunc, target, buffer) => {\n const pname = {\n [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],\n [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],\n [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],\n [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],\n [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]\n }[target];\n\n if (pname) {\n return update({[pname]: buffer});\n }\n // targets that should not be cached\n return {valueChanged: true};\n },\n\n blendColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update: UpdateFunc, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update: UpdateFunc, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update: UpdateFunc, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update: UpdateFunc, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update: UpdateFunc, depth: number) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update: UpdateFunc, s: number) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update: UpdateFunc, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update: UpdateFunc, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update: UpdateFunc, zNear: number, zFar: number) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update: UpdateFunc, mask: number) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update: UpdateFunc, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update: UpdateFunc, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update: UpdateFunc, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update: UpdateFunc, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update: UpdateFunc, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update: UpdateFunc, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update: UpdateFunc, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update: UpdateFunc, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update: UpdateFunc, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update: UpdateFunc, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl: WebGLRenderingContext, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n\nexport const NON_CACHE_PARAMETERS = new Set([\n // setter not intercepted\n GL.ACTIVE_TEXTURE,\n GL.TRANSFORM_FEEDBACK_ACTIVE,\n GL.TRANSFORM_FEEDBACK_PAUSED,\n\n // setters bindBufferRange/bindBufferBase cannot be pruned based on cache\n GL.TRANSFORM_FEEDBACK_BUFFER_BINDING,\n GL.UNIFORM_BUFFER_BINDING,\n\n // states depending on VERTEX_ARRAY_BINDING\n GL.ELEMENT_ARRAY_BUFFER_BINDING,\n // states depending on READ_FRAMEBUFFER_BINDING\n GL.IMPLEMENTATION_COLOR_READ_FORMAT,\n GL.IMPLEMENTATION_COLOR_READ_TYPE,\n // states depending on FRAMEBUFFER_BINDING\n GL.READ_BUFFER,\n GL.DRAW_BUFFER0,\n GL.DRAW_BUFFER1,\n GL.DRAW_BUFFER2,\n GL.DRAW_BUFFER3,\n GL.DRAW_BUFFER4,\n GL.DRAW_BUFFER5,\n GL.DRAW_BUFFER6,\n GL.DRAW_BUFFER7,\n GL.DRAW_BUFFER8,\n GL.DRAW_BUFFER9,\n GL.DRAW_BUFFER10,\n GL.DRAW_BUFFER11,\n GL.DRAW_BUFFER12,\n GL.DRAW_BUFFER13,\n GL.DRAW_BUFFER14,\n GL.DRAW_BUFFER15,\n // states depending on ACTIVE_TEXTURE\n GL.SAMPLER_BINDING,\n GL.TEXTURE_BINDING_2D,\n GL.TEXTURE_BINDING_2D_ARRAY,\n GL.TEXTURE_BINDING_3D,\n GL.TEXTURE_BINDING_CUBE_MAP\n]);\n"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { GL } from '@luma.gl/constants';
|
|
2
1
|
import { isWebGL2 } from "../context/webgl-checks.js";
|
|
3
2
|
const OES_element_index = 'OES_element_index';
|
|
4
3
|
const WEBGL_draw_buffers = 'WEBGL_draw_buffers';
|
|
@@ -14,68 +13,68 @@ const GL_UNMASKED_VENDOR_WEBGL = 0x9245;
|
|
|
14
13
|
const GL_UNMASKED_RENDERER_WEBGL = 0x9246;
|
|
15
14
|
const getWebGL2ValueOrZero = gl => !isWebGL2(gl) ? 0 : undefined;
|
|
16
15
|
const WEBGL_PARAMETERS = {
|
|
17
|
-
[
|
|
16
|
+
[3074]: gl => !isWebGL2(gl) ? 36064 : undefined,
|
|
18
17
|
[GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: gl => !isWebGL2(gl) ? GL_DONT_CARE : undefined,
|
|
19
|
-
[
|
|
20
|
-
[
|
|
18
|
+
[35977]: getWebGL2ValueOrZero,
|
|
19
|
+
[32937]: getWebGL2ValueOrZero,
|
|
21
20
|
[GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {
|
|
22
21
|
const ext = isWebGL2(gl) ? gl.getExtension(EXT_disjoint_timer_query_webgl2) : gl.getExtension(EXT_disjoint_timer_query);
|
|
23
22
|
return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;
|
|
24
23
|
},
|
|
25
24
|
[GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {
|
|
26
25
|
const ext = gl.getExtension(WEBGL_debug_renderer_info);
|
|
27
|
-
return getParameter(ext && ext.UNMASKED_VENDOR_WEBGL ||
|
|
26
|
+
return getParameter(ext && ext.UNMASKED_VENDOR_WEBGL || 7936);
|
|
28
27
|
},
|
|
29
28
|
[GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {
|
|
30
29
|
const ext = gl.getExtension(WEBGL_debug_renderer_info);
|
|
31
|
-
return getParameter(ext && ext.UNMASKED_RENDERER_WEBGL ||
|
|
30
|
+
return getParameter(ext && ext.UNMASKED_RENDERER_WEBGL || 7937);
|
|
32
31
|
},
|
|
33
32
|
[GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {
|
|
34
33
|
var _gl$luma;
|
|
35
34
|
const ext = ((_gl$luma = gl.luma) === null || _gl$luma === void 0 || (_gl$luma = _gl$luma.extensions) === null || _gl$luma === void 0 ? void 0 : _gl$luma[EXT_texture_filter_anisotropic]) || gl.getExtension('EXT_texture_filter_anisotropic');
|
|
36
35
|
return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;
|
|
37
36
|
},
|
|
38
|
-
[
|
|
39
|
-
[
|
|
40
|
-
[
|
|
41
|
-
[
|
|
37
|
+
[32883]: getWebGL2ValueOrZero,
|
|
38
|
+
[35071]: getWebGL2ValueOrZero,
|
|
39
|
+
[37447]: getWebGL2ValueOrZero,
|
|
40
|
+
[36063]: (gl, getParameter) => {
|
|
42
41
|
if (!isWebGL2(gl)) {
|
|
43
42
|
const ext = gl.getExtension(WEBGL_draw_buffers);
|
|
44
43
|
return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;
|
|
45
44
|
}
|
|
46
45
|
return undefined;
|
|
47
46
|
},
|
|
48
|
-
[
|
|
49
|
-
[
|
|
50
|
-
[
|
|
51
|
-
[
|
|
47
|
+
[35379]: getWebGL2ValueOrZero,
|
|
48
|
+
[35374]: getWebGL2ValueOrZero,
|
|
49
|
+
[35377]: getWebGL2ValueOrZero,
|
|
50
|
+
[34852]: gl => {
|
|
52
51
|
if (!isWebGL2(gl)) {
|
|
53
52
|
const ext = gl.getExtension(WEBGL_draw_buffers);
|
|
54
53
|
return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;
|
|
55
54
|
}
|
|
56
55
|
return undefined;
|
|
57
56
|
},
|
|
58
|
-
[
|
|
59
|
-
[
|
|
60
|
-
[
|
|
61
|
-
[
|
|
62
|
-
[
|
|
63
|
-
[
|
|
64
|
-
[
|
|
65
|
-
[
|
|
66
|
-
[
|
|
67
|
-
[
|
|
68
|
-
[
|
|
69
|
-
[
|
|
70
|
-
[
|
|
71
|
-
[
|
|
72
|
-
[
|
|
73
|
-
[
|
|
74
|
-
[
|
|
75
|
-
[
|
|
76
|
-
[
|
|
77
|
-
[
|
|
78
|
-
[
|
|
57
|
+
[36203]: gl => gl.getExtension(OES_element_index) ? 2147483647 : 65535,
|
|
58
|
+
[33001]: gl => gl.getExtension(OES_element_index) ? 16777216 : 65535,
|
|
59
|
+
[33000]: gl => 16777216,
|
|
60
|
+
[37157]: getWebGL2ValueOrZero,
|
|
61
|
+
[35373]: getWebGL2ValueOrZero,
|
|
62
|
+
[35657]: getWebGL2ValueOrZero,
|
|
63
|
+
[36183]: getWebGL2ValueOrZero,
|
|
64
|
+
[37137]: getWebGL2ValueOrZero,
|
|
65
|
+
[34045]: getWebGL2ValueOrZero,
|
|
66
|
+
[35978]: getWebGL2ValueOrZero,
|
|
67
|
+
[35979]: getWebGL2ValueOrZero,
|
|
68
|
+
[35968]: getWebGL2ValueOrZero,
|
|
69
|
+
[35376]: getWebGL2ValueOrZero,
|
|
70
|
+
[35375]: getWebGL2ValueOrZero,
|
|
71
|
+
[35659]: getWebGL2ValueOrZero,
|
|
72
|
+
[37154]: getWebGL2ValueOrZero,
|
|
73
|
+
[35371]: getWebGL2ValueOrZero,
|
|
74
|
+
[35658]: getWebGL2ValueOrZero,
|
|
75
|
+
[35076]: getWebGL2ValueOrZero,
|
|
76
|
+
[35077]: getWebGL2ValueOrZero,
|
|
77
|
+
[35380]: getWebGL2ValueOrZero
|
|
79
78
|
};
|
|
80
79
|
export function getParameterPolyfill(gl, originalGetParameter, pname) {
|
|
81
80
|
const limit = WEBGL_PARAMETERS[pname];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-parameter-polyfill.js","names":["GL","isWebGL2","OES_element_index","WEBGL_draw_buffers","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_texture_filter_anisotropic","WEBGL_debug_renderer_info","GL_FRAGMENT_SHADER_DERIVATIVE_HINT","GL_DONT_CARE","GL_GPU_DISJOINT_EXT","GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT","GL_UNMASKED_VENDOR_WEBGL","GL_UNMASKED_RENDERER_WEBGL","getWebGL2ValueOrZero","gl","undefined","WEBGL_PARAMETERS","READ_BUFFER","COLOR_ATTACHMENT0","RASTERIZER_DISCARD","SAMPLES","getParameter","ext","getExtension","GPU_DISJOINT_EXT","UNMASKED_VENDOR_WEBGL","VENDOR","UNMASKED_RENDERER_WEBGL","RENDERER","_gl$luma","luma","extensions","MAX_TEXTURE_MAX_ANISOTROPY_EXT","MAX_3D_TEXTURE_SIZE","MAX_ARRAY_TEXTURE_LAYERS","MAX_CLIENT_WAIT_TIMEOUT_WEBGL","MAX_COLOR_ATTACHMENTS","MAX_COLOR_ATTACHMENTS_WEBGL","MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS","MAX_COMBINED_UNIFORM_BLOCKS","MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS","MAX_DRAW_BUFFERS","MAX_DRAW_BUFFERS_WEBGL","MAX_ELEMENT_INDEX","MAX_ELEMENTS_INDICES","MAX_ELEMENTS_VERTICES","MAX_FRAGMENT_INPUT_COMPONENTS","MAX_FRAGMENT_UNIFORM_BLOCKS","MAX_FRAGMENT_UNIFORM_COMPONENTS","MAX_SAMPLES","MAX_SERVER_WAIT_TIMEOUT","MAX_TEXTURE_LOD_BIAS","MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS","MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS","MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS","MAX_UNIFORM_BLOCK_SIZE","MAX_UNIFORM_BUFFER_BINDINGS","MAX_VARYING_COMPONENTS","MAX_VERTEX_OUTPUT_COMPONENTS","MAX_VERTEX_UNIFORM_BLOCKS","MAX_VERTEX_UNIFORM_COMPONENTS","MIN_PROGRAM_TEXEL_OFFSET","MAX_PROGRAM_TEXEL_OFFSET","UNIFORM_BUFFER_OFFSET_ALIGNMENT","getParameterPolyfill","originalGetParameter","pname","limit","value","result"],"sources":["../../../src/context/polyfill/get-parameter-polyfill.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable no-inline-comments, max-len, camelcase */\nimport {GL} from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\n\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.\n\nconst getWebGL2ValueOrZero = (gl) => (!isWebGL2(gl) ? 0 : undefined);\n\n// if a function returns undefined in this table,\n// the original getParameter will be called, defeating the override\nconst WEBGL_PARAMETERS = {\n [GL.READ_BUFFER]: (gl) => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),\n\n // WebGL2 context parameters\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: (gl) => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),\n\n [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,\n\n [GL.SAMPLES]: getWebGL2ValueOrZero,\n\n // WebGL2 extension context parameters\n [GL_GPU_DISJOINT_EXT]: (gl: WebGLRenderingContext, getParameter) => {\n const ext = isWebGL2(gl)\n ? gl.getExtension(EXT_disjoint_timer_query_webgl2)\n : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n\n // Extension fixed values\n [GL_UNMASKED_VENDOR_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);\n },\n\n [GL_UNMASKED_RENDERER_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);\n },\n\n // Extension LIMITS\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl: WebGLRenderingContext, getParameter) => {\n // @ts-ignore TODO - store these on the device instance instead...\n const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||\n gl.getExtension('EXT_texture_filter_anisotropic');\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,\n [GL.MAX_COLOR_ATTACHMENTS]: (gl: WebGLRenderingContext, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_DRAW_BUFFERS]: (gl) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [GL.MAX_ELEMENT_INDEX]:\n // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647\n (gl) => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),\n [GL.MAX_ELEMENTS_INDICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => (gl.getExtension(OES_element_index) ? 16777216 : 65535),\n [GL.MAX_ELEMENTS_VERTICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => 16777216,\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,\n [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,\n [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,\n [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero\n};\n\n// A \"replacement\" gl.getParameter that accepts \"enums\" from extensions and WebGL2\n// and returns reasonably safe defaults\nexport function getParameterPolyfill(gl: WebGLRenderingContext, originalGetParameter, pname) {\n // Return mock limits (usually 0) for WebGL2 constants to ensure these\n // can be queries without error\n const limit = WEBGL_PARAMETERS[pname];\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"get-parameter-polyfill.js","names":["isWebGL2","OES_element_index","WEBGL_draw_buffers","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_texture_filter_anisotropic","WEBGL_debug_renderer_info","GL_FRAGMENT_SHADER_DERIVATIVE_HINT","GL_DONT_CARE","GL_GPU_DISJOINT_EXT","GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT","GL_UNMASKED_VENDOR_WEBGL","GL_UNMASKED_RENDERER_WEBGL","getWebGL2ValueOrZero","gl","undefined","WEBGL_PARAMETERS","getParameter","ext","getExtension","GPU_DISJOINT_EXT","UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL","_gl$luma","luma","extensions","MAX_TEXTURE_MAX_ANISOTROPY_EXT","MAX_COLOR_ATTACHMENTS_WEBGL","MAX_DRAW_BUFFERS_WEBGL","getParameterPolyfill","originalGetParameter","pname","limit","value","result"],"sources":["../../../src/context/polyfill/get-parameter-polyfill.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable no-inline-comments, max-len, camelcase */\nimport {GL} from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\n\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.\n\nconst getWebGL2ValueOrZero = (gl) => (!isWebGL2(gl) ? 0 : undefined);\n\n// if a function returns undefined in this table,\n// the original getParameter will be called, defeating the override\nconst WEBGL_PARAMETERS = {\n [GL.READ_BUFFER]: (gl) => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),\n\n // WebGL2 context parameters\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: (gl) => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),\n\n [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,\n\n [GL.SAMPLES]: getWebGL2ValueOrZero,\n\n // WebGL2 extension context parameters\n [GL_GPU_DISJOINT_EXT]: (gl: WebGLRenderingContext, getParameter) => {\n const ext = isWebGL2(gl)\n ? gl.getExtension(EXT_disjoint_timer_query_webgl2)\n : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n\n // Extension fixed values\n [GL_UNMASKED_VENDOR_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);\n },\n\n [GL_UNMASKED_RENDERER_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);\n },\n\n // Extension LIMITS\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl: WebGLRenderingContext, getParameter) => {\n // @ts-ignore TODO - store these on the device instance instead...\n const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||\n gl.getExtension('EXT_texture_filter_anisotropic');\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,\n [GL.MAX_COLOR_ATTACHMENTS]: (gl: WebGLRenderingContext, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_DRAW_BUFFERS]: (gl) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [GL.MAX_ELEMENT_INDEX]:\n // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647\n (gl) => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),\n [GL.MAX_ELEMENTS_INDICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => (gl.getExtension(OES_element_index) ? 16777216 : 65535),\n [GL.MAX_ELEMENTS_VERTICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => 16777216,\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,\n [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,\n [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,\n [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero\n};\n\n// A \"replacement\" gl.getParameter that accepts \"enums\" from extensions and WebGL2\n// and returns reasonably safe defaults\nexport function getParameterPolyfill(gl: WebGLRenderingContext, originalGetParameter, pname) {\n // Return mock limits (usually 0) for WebGL2 constants to ensure these\n // can be queries without error\n const limit = WEBGL_PARAMETERS[pname];\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { assert } from '@luma.gl/core';
|
|
2
|
-
import { GL } from '@luma.gl/constants';
|
|
3
2
|
import { isWebGL2 } from "../context/webgl-checks.js";
|
|
4
3
|
import { getParameterPolyfill } from "./get-parameter-polyfill.js";
|
|
5
4
|
import { getContextData } from "./context-data.js";
|
|
@@ -81,10 +80,10 @@ export const WEBGL2_CONTEXT_OVERRIDES = {
|
|
|
81
80
|
} = getExtensionData(gl, ANGLE_instanced_arrays);
|
|
82
81
|
let result;
|
|
83
82
|
switch (pname) {
|
|
84
|
-
case
|
|
83
|
+
case 35069:
|
|
85
84
|
result = !webgl2 ? false : undefined;
|
|
86
85
|
break;
|
|
87
|
-
case
|
|
86
|
+
case 35070:
|
|
88
87
|
result = !webgl2 && !ext ? 0 : undefined;
|
|
89
88
|
break;
|
|
90
89
|
default:
|
|
@@ -94,11 +93,11 @@ export const WEBGL2_CONTEXT_OVERRIDES = {
|
|
|
94
93
|
getProgramParameter: (gl, originalFunc, program, pname) => {
|
|
95
94
|
if (!isWebGL2(gl)) {
|
|
96
95
|
switch (pname) {
|
|
97
|
-
case
|
|
98
|
-
return
|
|
99
|
-
case
|
|
96
|
+
case 35967:
|
|
97
|
+
return 35981;
|
|
98
|
+
case 35971:
|
|
100
99
|
return 0;
|
|
101
|
-
case
|
|
100
|
+
case 35382:
|
|
102
101
|
return 0;
|
|
103
102
|
default:
|
|
104
103
|
}
|
|
@@ -108,7 +107,7 @@ export const WEBGL2_CONTEXT_OVERRIDES = {
|
|
|
108
107
|
getInternalformatParameter: (gl, originalFunc, target, format, pname) => {
|
|
109
108
|
if (!isWebGL2(gl)) {
|
|
110
109
|
switch (pname) {
|
|
111
|
-
case
|
|
110
|
+
case 32937:
|
|
112
111
|
return new Int32Array([0]);
|
|
113
112
|
default:
|
|
114
113
|
}
|
|
@@ -118,13 +117,13 @@ export const WEBGL2_CONTEXT_OVERRIDES = {
|
|
|
118
117
|
},
|
|
119
118
|
getTexParameter(gl, originalFunc, target, pname) {
|
|
120
119
|
switch (pname) {
|
|
121
|
-
case
|
|
120
|
+
case 34046:
|
|
122
121
|
const contextData = getContextData(gl);
|
|
123
122
|
const {
|
|
124
123
|
_extensions
|
|
125
124
|
} = contextData;
|
|
126
125
|
const ext = _extensions[EXT_texture_filter_anisotropic];
|
|
127
|
-
pname = ext && ext.TEXTURE_MAX_ANISOTROPY_EXT ||
|
|
126
|
+
pname = ext && ext.TEXTURE_MAX_ANISOTROPY_EXT || 34046;
|
|
128
127
|
break;
|
|
129
128
|
default:
|
|
130
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill-table.js","names":["assert","GL","isWebGL2","getParameterPolyfill","getContextData","OES_vertex_array_object","ANGLE_instanced_arrays","WEBGL_draw_buffers","EXT_disjoint_timer_query","EXT_texture_filter_anisotropic","ERR_VAO_NOT_SUPPORTED","getExtensionData","gl","extension","webgl2","ext","getExtension","WEBGL2_CONTEXT_POLYFILLS","meta","suffix","createVertexArray","deleteVertexArray","bindVertexArray","isVertexArray","vertexAttribDivisor","location","divisor","drawElementsInstanced","drawArraysInstanced","drawBuffers","createQuery","deleteQuery","beginQuery","endQuery","getQuery","handle","pname","getQueryObject","getQueryParameter","WEBGL2_CONTEXT_OVERRIDES","readBuffer","originalFunc","attachment","getVertexAttrib","result","VERTEX_ATTRIB_ARRAY_INTEGER","undefined","VERTEX_ATTRIB_ARRAY_DIVISOR","getProgramParameter","program","TRANSFORM_FEEDBACK_BUFFER_MODE","SEPARATE_ATTRIBS","TRANSFORM_FEEDBACK_VARYINGS","ACTIVE_UNIFORM_BLOCKS","getInternalformatParameter","target","format","SAMPLES","Int32Array","gl2","getTexParameter","TEXTURE_MAX_ANISOTROPY_EXT","contextData","_extensions","getParameter","hint","value"],"sources":["../../../src/context/polyfill/polyfill-table.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {assert} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\n\nimport {getParameterPolyfill} from './get-parameter-polyfill';\nimport {getContextData} from './context-data';\n\n/* eslint-disable camelcase */\nconst OES_vertex_array_object = 'OES_vertex_array_object';\nconst ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\n\nconst ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';\n\n// Return object with webgl2 flag and an extension\nfunction getExtensionData(gl: WebGLRenderingContext, extension: string) {\n return {\n webgl2: isWebGL2(gl),\n ext: gl.getExtension(extension)\n };\n}\n\n// function mapExtensionConstant(gl: WebGLRenderingContext, constant) {\n// switch (constant) {\n// case ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES: return GL.FRAGMENT_SHADER_DERIVATIVE_HINT;\n// }\n// }\n\nexport const WEBGL2_CONTEXT_POLYFILLS = {\n // POLYFILL TABLE\n [OES_vertex_array_object]: {\n meta: {suffix: 'OES'},\n // NEW METHODS\n createVertexArray: () => {\n assert(false, ERR_VAO_NOT_SUPPORTED);\n },\n deleteVertexArray: () => {},\n bindVertexArray: () => {},\n isVertexArray: () => false\n },\n [ANGLE_instanced_arrays]: {\n meta: {\n suffix: 'ANGLE'\n // constants: {\n // VERTEX_ATTRIB_ARRAY_DIVISOR: 'VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE'\n // }\n },\n vertexAttribDivisor(location: number, divisor: number) {\n // Accept divisor 0 even if instancing is not supported (0 = no instancing)\n assert(divisor === 0, 'WebGL instanced rendering not supported');\n },\n drawElementsInstanced: () => {},\n drawArraysInstanced: () => {}\n },\n [WEBGL_draw_buffers]: {\n meta: {\n suffix: 'WEBGL'\n },\n drawBuffers: () => {\n assert(false);\n }\n },\n [EXT_disjoint_timer_query]: {\n meta: {suffix: 'EXT'},\n // WebGL1: Polyfills the WebGL2 Query API\n createQuery: () => {\n assert(false);\n },\n deleteQuery: () => {\n assert(false);\n },\n beginQuery: () => {\n assert(false);\n },\n endQuery: () => {},\n getQuery(handle, pname: string) {\n return this.getQueryObject(handle, pname);\n },\n // The WebGL1 extension uses getQueryObject rather then getQueryParameter\n getQueryParameter(handle, pname: string) {\n return this.getQueryObject(handle, pname);\n },\n getQueryObject: (handle: unknown, pname: unknown) => {}\n }\n};\n\nexport const WEBGL2_CONTEXT_OVERRIDES = {\n // Ensure readBuffer is a no-op\n readBuffer: (gl: WebGLRenderingContext, originalFunc, attachment) => {\n if (isWebGL2(gl)) {\n originalFunc(attachment);\n } else {\n // assert(attachment !== GL_COLOR_ATTACHMENT0 && attachment !== GL_FRONT);\n }\n },\n // Override for getVertexAttrib that returns sane values for non-WebGL1 constants\n getVertexAttrib: (gl: WebGLRenderingContext, originalFunc, location, pname) => {\n // const gl = this; // eslint-disable-line\n const {webgl2, ext} = getExtensionData(gl, ANGLE_instanced_arrays);\n\n let result;\n switch (pname) {\n // WebGL1 attributes will never be integer\n case GL.VERTEX_ATTRIB_ARRAY_INTEGER:\n result = !webgl2 ? false : undefined;\n break;\n // if instancing is not available, return 0 meaning divisor has not been set\n case GL.VERTEX_ATTRIB_ARRAY_DIVISOR:\n result = !webgl2 && !ext ? 0 : undefined;\n break;\n default:\n }\n\n return result !== undefined ? result : originalFunc(location, pname);\n },\n // Handle transform feedback and uniform block queries in WebGL1\n getProgramParameter: (gl: WebGLRenderingContext, originalFunc, program, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.TRANSFORM_FEEDBACK_BUFFER_MODE:\n return GL.SEPARATE_ATTRIBS;\n case GL.TRANSFORM_FEEDBACK_VARYINGS:\n return 0;\n case GL.ACTIVE_UNIFORM_BLOCKS:\n return 0;\n default:\n }\n }\n return originalFunc(program, pname);\n },\n getInternalformatParameter: (gl: WebGLRenderingContext, originalFunc, target, format, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.SAMPLES:\n return new Int32Array([0]);\n default:\n }\n }\n const gl2 = gl as WebGL2RenderingContext;\n return gl2.getInternalformatParameter(target, format, pname);\n },\n getTexParameter(gl, originalFunc, target, pname) {\n switch (pname) {\n case GL.TEXTURE_MAX_ANISOTROPY_EXT:\n const contextData = getContextData(gl);\n const {_extensions} = contextData;\n const ext = _extensions[EXT_texture_filter_anisotropic];\n pname = (ext && ext.TEXTURE_MAX_ANISOTROPY_EXT) || GL.TEXTURE_MAX_ANISOTROPY_EXT;\n break;\n default:\n }\n return originalFunc(target, pname);\n },\n getParameter: getParameterPolyfill,\n hint(gl, originalFunc, pname, value) {\n // TODO - handle GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // switch (pname) {\n // case GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // }\n return originalFunc(pname, value);\n }\n};\n"],"mappings":"AAGA,SAAQA,MAAM,QAAO,eAAe;AACpC,SAAQC,EAAE,QAAO,oBAAoB;AAAC,SAC9BC,QAAQ;AAAA,SAERC,oBAAoB;AAAA,SACpBC,cAAc;AAGtB,MAAMC,uBAAuB,GAAG,yBAAyB;AACzD,MAAMC,sBAAsB,GAAG,wBAAwB;AACvD,MAAMC,kBAAkB,GAAG,oBAAoB;AAC/C,MAAMC,wBAAwB,GAAG,0BAA0B;AAC3D,MAAMC,8BAA8B,GAAG,gCAAgC;AAEvE,MAAMC,qBAAqB,GAAG,kEAAkE;AAGhG,SAASC,gBAAgBA,CAACC,EAAyB,EAAEC,SAAiB,EAAE;EACtE,OAAO;IACLC,MAAM,EAAEZ,QAAQ,CAACU,EAAE,CAAC;IACpBG,GAAG,EAAEH,EAAE,CAACI,YAAY,CAACH,SAAS;EAChC,CAAC;AACH;AAQA,OAAO,MAAMI,wBAAwB,GAAG;EAEtC,CAACZ,uBAAuB,GAAG;IACzBa,IAAI,EAAE;MAACC,MAAM,EAAE;IAAK,CAAC;IAErBC,iBAAiB,EAAEA,CAAA,KAAM;MACvBpB,MAAM,CAAC,KAAK,EAAEU,qBAAqB,CAAC;IACtC,CAAC;IACDW,iBAAiB,EAAEA,CAAA,KAAM,CAAC,CAAC;IAC3BC,eAAe,EAAEA,CAAA,KAAM,CAAC,CAAC;IACzBC,aAAa,EAAEA,CAAA,KAAM;EACvB,CAAC;EACD,CAACjB,sBAAsB,GAAG;IACxBY,IAAI,EAAE;MACJC,MAAM,EAAE;IAIV,CAAC;IACDK,mBAAmBA,CAACC,QAAgB,EAAEC,OAAe,EAAE;MAErD1B,MAAM,CAAC0B,OAAO,KAAK,CAAC,EAAE,yCAAyC,CAAC;IAClE,CAAC;IACDC,qBAAqB,EAAEA,CAAA,KAAM,CAAC,CAAC;IAC/BC,mBAAmB,EAAEA,CAAA,KAAM,CAAC;EAC9B,CAAC;EACD,CAACrB,kBAAkB,GAAG;IACpBW,IAAI,EAAE;MACJC,MAAM,EAAE;IACV,CAAC;IACDU,WAAW,EAAEA,CAAA,KAAM;MACjB7B,MAAM,CAAC,KAAK,CAAC;IACf;EACF,CAAC;EACD,CAACQ,wBAAwB,GAAG;IAC1BU,IAAI,EAAE;MAACC,MAAM,EAAE;IAAK,CAAC;IAErBW,WAAW,EAAEA,CAAA,KAAM;MACjB9B,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IACD+B,WAAW,EAAEA,CAAA,KAAM;MACjB/B,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IACDgC,UAAU,EAAEA,CAAA,KAAM;MAChBhC,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IACDiC,QAAQ,EAAEA,CAAA,KAAM,CAAC,CAAC;IAClBC,QAAQA,CAACC,MAAM,EAAEC,KAAa,EAAE;MAC9B,OAAO,IAAI,CAACC,cAAc,CAACF,MAAM,EAAEC,KAAK,CAAC;IAC3C,CAAC;IAEDE,iBAAiBA,CAACH,MAAM,EAAEC,KAAa,EAAE;MACvC,OAAO,IAAI,CAACC,cAAc,CAACF,MAAM,EAAEC,KAAK,CAAC;IAC3C,CAAC;IACDC,cAAc,EAAEA,CAACF,MAAe,EAAEC,KAAc,KAAK,CAAC;EACxD;AACF,CAAC;AAED,OAAO,MAAMG,wBAAwB,GAAG;EAEtCC,UAAU,EAAEA,CAAC5B,EAAyB,EAAE6B,YAAY,EAAEC,UAAU,KAAK;IACnE,IAAIxC,QAAQ,CAACU,EAAE,CAAC,EAAE;MAChB6B,YAAY,CAACC,UAAU,CAAC;IAC1B,CAAC,MAAM,CAEP;EACF,CAAC;EAEDC,eAAe,EAAEA,CAAC/B,EAAyB,EAAE6B,YAAY,EAAEhB,QAAQ,EAAEW,KAAK,KAAK;IAE7E,MAAM;MAACtB,MAAM;MAAEC;IAAG,CAAC,GAAGJ,gBAAgB,CAACC,EAAE,EAAEN,sBAAsB,CAAC;IAElE,IAAIsC,MAAM;IACV,QAAQR,KAAK;MAEX,KAAKnC,EAAE,CAAC4C,2BAA2B;QACjCD,MAAM,GAAG,CAAC9B,MAAM,GAAG,KAAK,GAAGgC,SAAS;QACpC;MAEF,KAAK7C,EAAE,CAAC8C,2BAA2B;QACjCH,MAAM,GAAG,CAAC9B,MAAM,IAAI,CAACC,GAAG,GAAG,CAAC,GAAG+B,SAAS;QACxC;MACF;IACF;IAEA,OAAOF,MAAM,KAAKE,SAAS,GAAGF,MAAM,GAAGH,YAAY,CAAChB,QAAQ,EAAEW,KAAK,CAAC;EACtE,CAAC;EAEDY,mBAAmB,EAAEA,CAACpC,EAAyB,EAAE6B,YAAY,EAAEQ,OAAO,EAAEb,KAAK,KAAK;IAChF,IAAI,CAAClC,QAAQ,CAACU,EAAE,CAAC,EAAE;MACjB,QAAQwB,KAAK;QACX,KAAKnC,EAAE,CAACiD,8BAA8B;UACpC,OAAOjD,EAAE,CAACkD,gBAAgB;QAC5B,KAAKlD,EAAE,CAACmD,2BAA2B;UACjC,OAAO,CAAC;QACV,KAAKnD,EAAE,CAACoD,qBAAqB;UAC3B,OAAO,CAAC;QACV;MACF;IACF;IACA,OAAOZ,YAAY,CAACQ,OAAO,EAAEb,KAAK,CAAC;EACrC,CAAC;EACDkB,0BAA0B,EAAEA,CAAC1C,EAAyB,EAAE6B,YAAY,EAAEc,MAAM,EAAEC,MAAM,EAAEpB,KAAK,KAAK;IAC9F,IAAI,CAAClC,QAAQ,CAACU,EAAE,CAAC,EAAE;MACjB,QAAQwB,KAAK;QACX,KAAKnC,EAAE,CAACwD,OAAO;UACb,OAAO,IAAIC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B;MACF;IACF;IACA,MAAMC,GAAG,GAAG/C,EAA4B;IACxC,OAAO+C,GAAG,CAACL,0BAA0B,CAACC,MAAM,EAAEC,MAAM,EAAEpB,KAAK,CAAC;EAC9D,CAAC;EACDwB,eAAeA,CAAChD,EAAE,EAAE6B,YAAY,EAAEc,MAAM,EAAEnB,KAAK,EAAE;IAC/C,QAAQA,KAAK;MACX,KAAKnC,EAAE,CAAC4D,0BAA0B;QAChC,MAAMC,WAAW,GAAG1D,cAAc,CAACQ,EAAE,CAAC;QACtC,MAAM;UAACmD;QAAW,CAAC,GAAGD,WAAW;QACjC,MAAM/C,GAAG,GAAGgD,WAAW,CAACtD,8BAA8B,CAAC;QACvD2B,KAAK,GAAIrB,GAAG,IAAIA,GAAG,CAAC8C,0BAA0B,IAAK5D,EAAE,CAAC4D,0BAA0B;QAChF;MACF;IACF;IACA,OAAOpB,YAAY,CAACc,MAAM,EAAEnB,KAAK,CAAC;EACpC,CAAC;EACD4B,YAAY,EAAE7D,oBAAoB;EAClC8D,IAAIA,CAACrD,EAAE,EAAE6B,YAAY,EAAEL,KAAK,EAAE8B,KAAK,EAAE;IAKnC,OAAOzB,YAAY,CAACL,KAAK,EAAE8B,KAAK,CAAC;EACnC;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"polyfill-table.js","names":["assert","isWebGL2","getParameterPolyfill","getContextData","OES_vertex_array_object","ANGLE_instanced_arrays","WEBGL_draw_buffers","EXT_disjoint_timer_query","EXT_texture_filter_anisotropic","ERR_VAO_NOT_SUPPORTED","getExtensionData","gl","extension","webgl2","ext","getExtension","WEBGL2_CONTEXT_POLYFILLS","meta","suffix","createVertexArray","deleteVertexArray","bindVertexArray","isVertexArray","vertexAttribDivisor","location","divisor","drawElementsInstanced","drawArraysInstanced","drawBuffers","createQuery","deleteQuery","beginQuery","endQuery","getQuery","handle","pname","getQueryObject","getQueryParameter","WEBGL2_CONTEXT_OVERRIDES","readBuffer","originalFunc","attachment","getVertexAttrib","result","undefined","getProgramParameter","program","getInternalformatParameter","target","format","Int32Array","gl2","getTexParameter","contextData","_extensions","TEXTURE_MAX_ANISOTROPY_EXT","getParameter","hint","value"],"sources":["../../../src/context/polyfill/polyfill-table.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {assert} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\n\nimport {getParameterPolyfill} from './get-parameter-polyfill';\nimport {getContextData} from './context-data';\n\n/* eslint-disable camelcase */\nconst OES_vertex_array_object = 'OES_vertex_array_object';\nconst ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\n\nconst ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';\n\n// Return object with webgl2 flag and an extension\nfunction getExtensionData(gl: WebGLRenderingContext, extension: string) {\n return {\n webgl2: isWebGL2(gl),\n ext: gl.getExtension(extension)\n };\n}\n\n// function mapExtensionConstant(gl: WebGLRenderingContext, constant) {\n// switch (constant) {\n// case ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES: return GL.FRAGMENT_SHADER_DERIVATIVE_HINT;\n// }\n// }\n\nexport const WEBGL2_CONTEXT_POLYFILLS = {\n // POLYFILL TABLE\n [OES_vertex_array_object]: {\n meta: {suffix: 'OES'},\n // NEW METHODS\n createVertexArray: () => {\n assert(false, ERR_VAO_NOT_SUPPORTED);\n },\n deleteVertexArray: () => {},\n bindVertexArray: () => {},\n isVertexArray: () => false\n },\n [ANGLE_instanced_arrays]: {\n meta: {\n suffix: 'ANGLE'\n // constants: {\n // VERTEX_ATTRIB_ARRAY_DIVISOR: 'VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE'\n // }\n },\n vertexAttribDivisor(location: number, divisor: number) {\n // Accept divisor 0 even if instancing is not supported (0 = no instancing)\n assert(divisor === 0, 'WebGL instanced rendering not supported');\n },\n drawElementsInstanced: () => {},\n drawArraysInstanced: () => {}\n },\n [WEBGL_draw_buffers]: {\n meta: {\n suffix: 'WEBGL'\n },\n drawBuffers: () => {\n assert(false);\n }\n },\n [EXT_disjoint_timer_query]: {\n meta: {suffix: 'EXT'},\n // WebGL1: Polyfills the WebGL2 Query API\n createQuery: () => {\n assert(false);\n },\n deleteQuery: () => {\n assert(false);\n },\n beginQuery: () => {\n assert(false);\n },\n endQuery: () => {},\n getQuery(handle, pname: string) {\n return this.getQueryObject(handle, pname);\n },\n // The WebGL1 extension uses getQueryObject rather then getQueryParameter\n getQueryParameter(handle, pname: string) {\n return this.getQueryObject(handle, pname);\n },\n getQueryObject: (handle: unknown, pname: unknown) => {}\n }\n};\n\nexport const WEBGL2_CONTEXT_OVERRIDES = {\n // Ensure readBuffer is a no-op\n readBuffer: (gl: WebGLRenderingContext, originalFunc, attachment) => {\n if (isWebGL2(gl)) {\n originalFunc(attachment);\n } else {\n // assert(attachment !== GL_COLOR_ATTACHMENT0 && attachment !== GL_FRONT);\n }\n },\n // Override for getVertexAttrib that returns sane values for non-WebGL1 constants\n getVertexAttrib: (gl: WebGLRenderingContext, originalFunc, location, pname) => {\n // const gl = this; // eslint-disable-line\n const {webgl2, ext} = getExtensionData(gl, ANGLE_instanced_arrays);\n\n let result;\n switch (pname) {\n // WebGL1 attributes will never be integer\n case GL.VERTEX_ATTRIB_ARRAY_INTEGER:\n result = !webgl2 ? false : undefined;\n break;\n // if instancing is not available, return 0 meaning divisor has not been set\n case GL.VERTEX_ATTRIB_ARRAY_DIVISOR:\n result = !webgl2 && !ext ? 0 : undefined;\n break;\n default:\n }\n\n return result !== undefined ? result : originalFunc(location, pname);\n },\n // Handle transform feedback and uniform block queries in WebGL1\n getProgramParameter: (gl: WebGLRenderingContext, originalFunc, program, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.TRANSFORM_FEEDBACK_BUFFER_MODE:\n return GL.SEPARATE_ATTRIBS;\n case GL.TRANSFORM_FEEDBACK_VARYINGS:\n return 0;\n case GL.ACTIVE_UNIFORM_BLOCKS:\n return 0;\n default:\n }\n }\n return originalFunc(program, pname);\n },\n getInternalformatParameter: (gl: WebGLRenderingContext, originalFunc, target, format, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.SAMPLES:\n return new Int32Array([0]);\n default:\n }\n }\n const gl2 = gl as WebGL2RenderingContext;\n return gl2.getInternalformatParameter(target, format, pname);\n },\n getTexParameter(gl, originalFunc, target, pname) {\n switch (pname) {\n case GL.TEXTURE_MAX_ANISOTROPY_EXT:\n const contextData = getContextData(gl);\n const {_extensions} = contextData;\n const ext = _extensions[EXT_texture_filter_anisotropic];\n pname = (ext && ext.TEXTURE_MAX_ANISOTROPY_EXT) || GL.TEXTURE_MAX_ANISOTROPY_EXT;\n break;\n default:\n }\n return originalFunc(target, pname);\n },\n getParameter: getParameterPolyfill,\n hint(gl, originalFunc, pname, value) {\n // TODO - handle GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // switch (pname) {\n // case GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // }\n return originalFunc(pname, value);\n }\n};\n"],"mappings":"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"}
|