@luma.gl/webgl 9.0.0-alpha.4 → 9.0.0-alpha.40
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/LICENSE +3 -1
- package/dist/adapter/converters/device-parameters.d.ts +23 -4
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +42 -47
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +20 -56
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/shader-formats.d.ts +9 -0
- package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
- package/dist/adapter/converters/shader-formats.js +53 -0
- package/dist/adapter/converters/shader-formats.js.map +1 -0
- package/dist/adapter/converters/texture-formats.d.ts +32 -44
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +165 -201
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts +9 -3
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +51 -19
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +14 -21
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +2 -5
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +9 -11
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.js +2 -1
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
- package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
- package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
- package/dist/adapter/helpers/{uniforms.js → decode-webgl-types.js} +20 -29
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
- package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
- package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
- package/dist/adapter/helpers/get-shader-info.js +25 -0
- package/dist/adapter/helpers/get-shader-info.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +60 -115
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts +3 -2
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +27 -57
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.d.ts +11 -0
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/{attribute-utils.js → webgl-topology-utils.js} +2 -19
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +2 -29
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +34 -41
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +6 -9
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +26 -83
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +49 -78
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +169 -43
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +10 -20
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +46 -155
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +91 -11
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +53 -19
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +107 -230
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +10 -19
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +3 -4
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +19 -31
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +64 -44
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +119 -235
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.js +166 -0
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +6 -7
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +10 -23
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +74 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +214 -128
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +3 -3
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +23 -48
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -29
- package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
- package/dist/classic/{buffer.js → buffer-with-accessor.js} +55 -125
- package/dist/classic/buffer-with-accessor.js.map +1 -0
- package/dist/classic/clear.d.ts +22 -0
- package/dist/classic/clear.d.ts.map +1 -0
- package/dist/classic/clear.js +88 -0
- package/dist/classic/clear.js.map +1 -0
- package/dist/classic/copy-and-blit.d.ts +62 -0
- package/dist/classic/copy-and-blit.d.ts.map +1 -0
- package/dist/classic/copy-and-blit.js +200 -0
- package/dist/classic/copy-and-blit.js.map +1 -0
- package/dist/classic/format-utils.d.ts +3 -0
- package/dist/classic/format-utils.d.ts.map +1 -0
- package/dist/classic/format-utils.js +38 -0
- package/dist/classic/format-utils.js.map +1 -0
- package/dist/classic/typed-array-utils.d.ts +15 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +1 -21
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.d.ts +40 -0
- package/dist/context/context/create-browser-context.d.ts.map +1 -0
- package/dist/context/context/create-browser-context.js +53 -0
- package/dist/context/context/create-browser-context.js.map +1 -0
- package/dist/context/context/create-headless-context.d.ts +9 -0
- package/dist/context/context/create-headless-context.d.ts.map +1 -0
- package/dist/context/context/create-headless-context.js +42 -0
- package/dist/context/context/create-headless-context.js.map +1 -0
- package/dist/context/context/webgl-checks.d.ts.map +1 -1
- package/dist/context/context/webgl-checks.js +1 -4
- package/dist/context/context/webgl-checks.js.map +1 -1
- package/dist/context/debug/spector.d.ts +1 -2
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +8 -20
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +16 -39
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -19
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +18 -36
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/context-data.d.ts +13 -0
- package/dist/context/polyfill/context-data.d.ts.map +1 -0
- package/dist/context/polyfill/context-data.js +12 -0
- package/dist/context/polyfill/context-data.js.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +22 -30
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +8 -8
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +10 -32
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +0 -4
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +26 -62
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts +2 -1
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +8 -10
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +10390 -0
- package/dist/index.cjs +6615 -0
- package/dist/index.d.ts +27 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -26
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist.min.js +37 -0
- package/package.json +21 -9
- package/src/adapter/converters/device-parameters.ts +124 -36
- package/src/adapter/converters/sampler-parameters.ts +22 -9
- package/src/adapter/converters/shader-formats.ts +44 -0
- package/src/adapter/converters/texture-formats.ts +267 -194
- package/src/adapter/converters/vertex-formats.ts +71 -10
- package/src/adapter/device-helpers/device-features.ts +13 -3
- package/src/adapter/device-helpers/device-limits.ts +5 -3
- package/src/adapter/device-helpers/get-device-info.ts +17 -10
- package/src/adapter/device-helpers/is-old-ie.ts +3 -0
- package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
- package/src/adapter/helpers/get-shader-info.ts +41 -0
- package/src/adapter/helpers/get-shader-layout.ts +121 -146
- package/src/adapter/helpers/parse-shader-compiler-log.ts +4 -2
- package/src/adapter/helpers/set-uniform.ts +39 -35
- package/src/adapter/helpers/{attribute-utils.ts → webgl-topology-utils.ts} +7 -5
- package/src/adapter/objects/constants-to-keys.ts +6 -25
- package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
- package/src/adapter/objects/webgl-resource.ts +16 -23
- package/src/adapter/resources/webgl-buffer.ts +59 -58
- package/src/adapter/resources/webgl-command-buffer.ts +333 -25
- package/src/adapter/resources/webgl-command-encoder.ts +20 -12
- package/src/adapter/resources/webgl-external-texture.ts +5 -2
- package/src/adapter/resources/webgl-framebuffer.ts +89 -133
- package/src/adapter/resources/webgl-render-pass.ts +160 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +254 -174
- package/src/adapter/resources/webgl-sampler.ts +15 -9
- package/src/adapter/resources/webgl-shader.ts +14 -11
- package/src/adapter/resources/webgl-texture.ts +120 -90
- package/src/adapter/resources/webgl-vertex-array.ts +279 -0
- package/src/adapter/webgl-canvas-context.ts +16 -14
- package/src/adapter/webgl-device.ts +321 -78
- package/src/classic/accessor.ts +7 -17
- package/src/classic/{buffer.ts → buffer-with-accessor.ts} +68 -76
- package/src/classic/clear.ts +113 -0
- package/src/classic/copy-and-blit.ts +314 -0
- package/src/classic/format-utils.ts +46 -0
- package/src/classic/typed-array-utils.ts +19 -27
- package/src/context/context/create-browser-context.ts +140 -0
- package/src/context/context/create-headless-context.ts +51 -0
- package/src/context/context/webgl-checks.ts +3 -1
- package/src/context/debug/spector.ts +9 -6
- package/src/context/debug/webgl-developer-tools.ts +23 -15
- package/src/context/parameters/unified-parameter-api.ts +23 -14
- package/src/context/parameters/webgl-parameter-tables.ts +120 -98
- package/src/context/polyfill/context-data.ts +30 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
- package/src/context/polyfill/polyfill-context.ts +10 -9
- package/src/context/polyfill/polyfill-table.ts +21 -16
- package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
- package/src/context/state-tracker/deep-array-equal.ts +2 -0
- package/src/context/state-tracker/track-context-state.ts +20 -16
- package/src/context/state-tracker/with-parameters.ts +13 -4
- package/src/index.ts +69 -35
- package/src/types.ts +5 -0
- package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
- package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
- package/dist/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/adapter/helpers/uniforms.d.ts +0 -26
- package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
- package/dist/adapter/helpers/uniforms.js.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/bundle.js.map +0 -1
- package/dist/classic/buffer.d.ts.map +0 -1
- package/dist/classic/buffer.js.map +0 -1
- package/dist/context/context/context-state.d.ts +0 -18
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -26
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/context/context/create-context.d.ts +0 -41
- package/dist/context/context/create-context.d.ts.map +0 -1
- package/dist/context/context/create-context.js +0 -49
- package/dist/context/context/create-context.js.map +0 -1
- package/dist/context/context/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -98
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/es5/adapter/converters/device-parameters.js +0 -170
- package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
- package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/texture-formats.js +0 -1031
- package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
- package/dist/es5/adapter/converters/vertex-formats.js +0 -45
- package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-features.js +0 -144
- package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
- package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
- package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/adapter/helpers/set-uniform.js +0 -125
- package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/es5/adapter/helpers/uniforms.js +0 -112
- package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
- package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
- package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-resource.js +0 -292
- package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
- package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
- package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-shader.js +0 -149
- package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-texture.js +0 -986
- package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/es5/adapter/webgl-canvas-context.js +0 -97
- package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/es5/adapter/webgl-device.js +0 -399
- package/dist/es5/adapter/webgl-device.js.map +0 -1
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/classic/accessor.js +0 -181
- package/dist/es5/classic/accessor.js.map +0 -1
- package/dist/es5/classic/buffer.js +0 -470
- package/dist/es5/classic/buffer.js.map +0 -1
- package/dist/es5/classic/typed-array-utils.js +0 -126
- package/dist/es5/classic/typed-array-utils.js.map +0 -1
- package/dist/es5/context/context/context-state.js +0 -31
- package/dist/es5/context/context/context-state.js.map +0 -1
- package/dist/es5/context/context/create-context.js +0 -69
- package/dist/es5/context/context/create-context.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -115
- package/dist/es5/context/context/device-pixels.js.map +0 -1
- package/dist/es5/context/context/webgl-checks.js +0 -54
- package/dist/es5/context/context/webgl-checks.js.map +0 -1
- package/dist/es5/context/debug/spector.js +0 -133
- package/dist/es5/context/debug/spector.js.map +0 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
- package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
- package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-context.js +0 -135
- package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-table.js +0 -166
- package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/es5/context/state-tracker/track-context-state.js +0 -211
- package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/es5/context/state-tracker/with-parameters.js +0 -44
- package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/es5/index.js +0 -276
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/init.js +0 -10
- package/dist/es5/init.js.map +0 -1
- package/dist/es5/types/webgl.js +0 -6
- package/dist/es5/types/webgl.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/types.js.map +0 -1
- package/dist/esm/adapter/converters/device-parameters.js +0 -155
- package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
- package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/texture-formats.js +0 -954
- package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
- package/dist/esm/adapter/converters/vertex-formats.js +0 -35
- package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-features.js +0 -102
- package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
- package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
- package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/adapter/helpers/set-uniform.js +0 -115
- package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/esm/adapter/helpers/uniforms.js +0 -99
- package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
- package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
- package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-resource.js +0 -216
- package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
- package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
- package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-shader.js +0 -75
- package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-texture.js +0 -831
- package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/esm/adapter/webgl-canvas-context.js +0 -54
- package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/esm/adapter/webgl-device.js +0 -280
- package/dist/esm/adapter/webgl-device.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/classic/accessor.js +0 -144
- package/dist/esm/classic/accessor.js.map +0 -1
- package/dist/esm/classic/buffer.js +0 -384
- package/dist/esm/classic/buffer.js.map +0 -1
- package/dist/esm/classic/typed-array-utils.js +0 -112
- package/dist/esm/classic/typed-array-utils.js.map +0 -1
- package/dist/esm/context/context/context-state.js +0 -26
- package/dist/esm/context/context/context-state.js.map +0 -1
- package/dist/esm/context/context/create-context.js +0 -49
- package/dist/esm/context/context/create-context.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -98
- package/dist/esm/context/context/device-pixels.js.map +0 -1
- package/dist/esm/context/context/webgl-checks.js +0 -34
- package/dist/esm/context/context/webgl-checks.js.map +0 -1
- package/dist/esm/context/debug/spector.js +0 -76
- package/dist/esm/context/debug/spector.js.map +0 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
- package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
- package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-context.js +0 -92
- package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-table.js +0 -160
- package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/esm/context/state-tracker/track-context-state.js +0 -183
- package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/esm/context/state-tracker/with-parameters.js +0 -36
- package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/esm/index.js +0 -27
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/init.js +0 -4
- package/dist/esm/init.js.map +0 -1
- package/dist/esm/types/webgl.js +0 -2
- package/dist/esm/types/webgl.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/init.d.ts +0 -2
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -4
- package/dist/init.js.map +0 -1
- package/dist/types/webgl.d.ts +0 -144
- package/dist/types/webgl.d.ts.map +0 -1
- package/dist/types/webgl.js +0 -2
- package/dist/types/webgl.js.map +0 -1
- package/src/adapter/converters/renderbuffer-formats.ts +0 -92
- package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
- package/src/bundle.ts +0 -4
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/create-context.ts +0 -110
- package/src/context/context/device-pixels.ts +0 -152
- package/src/init.ts +0 -4
- package/src/types/webgl.ts +0 -283
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import {log, loadScript} from '@luma.gl/core';
|
|
3
5
|
|
|
4
6
|
/** Spector debug initialization options */
|
|
5
7
|
type SpectorProps = {
|
|
@@ -23,6 +25,7 @@ let spector: any = null;
|
|
|
23
25
|
let initialized: boolean = false;
|
|
24
26
|
|
|
25
27
|
declare global {
|
|
28
|
+
// eslint-disable-next-line no-var
|
|
26
29
|
var SPECTOR: any;
|
|
27
30
|
}
|
|
28
31
|
|
|
@@ -32,7 +35,7 @@ export async function loadSpectorJS(props?: SpectorProps) {
|
|
|
32
35
|
try {
|
|
33
36
|
await loadScript(SPECTOR_CDN_URL);
|
|
34
37
|
} catch(error) {
|
|
35
|
-
log.warn(error)
|
|
38
|
+
log.warn(String(error))
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
}
|
|
@@ -44,7 +47,7 @@ export function initializeSpectorJS(props?: SpectorProps) {
|
|
|
44
47
|
}
|
|
45
48
|
|
|
46
49
|
if (!spector && globalThis.SPECTOR) {
|
|
47
|
-
log.probe(LOG_LEVEL,
|
|
50
|
+
log.probe(LOG_LEVEL, 'SPECTOR found and initialized')();
|
|
48
51
|
spector = new globalThis.SPECTOR.Spector();
|
|
49
52
|
if (globalThis.luma) {
|
|
50
53
|
globalThis.luma.spector = spector;
|
|
@@ -61,9 +64,9 @@ export function initializeSpectorJS(props?: SpectorProps) {
|
|
|
61
64
|
// enables recording some extra information merged in the capture like texture memory sizes and formats
|
|
62
65
|
spector.spyCanvases();
|
|
63
66
|
// A callback when results are ready
|
|
64
|
-
spector?.onCaptureStarted.add((capture: unknown) => log.info(
|
|
67
|
+
spector?.onCaptureStarted.add((capture: unknown) => log.info('Spector capture started:', capture)());
|
|
65
68
|
spector?.onCapture.add((capture: unknown) => {
|
|
66
|
-
log.info(
|
|
69
|
+
log.info('Spector capture complete:', capture)();
|
|
67
70
|
// Use undocumented Spector API to open the UI with our capture
|
|
68
71
|
// See https://github.com/BabylonJS/Spector.js/blob/767ad1195a25b85a85c381f400eb50a979239eca/src/spector.ts#L124
|
|
69
72
|
spector?.getResultUI()
|
|
@@ -82,7 +85,7 @@ export function initializeSpectorJS(props?: SpectorProps) {
|
|
|
82
85
|
// spector?.captureCanvas(props?.canvas);
|
|
83
86
|
spector?.startCapture(props?.canvas, 500); // 500 commands
|
|
84
87
|
new Promise(resolve => setTimeout(resolve, 2000)).then(_ => {
|
|
85
|
-
log.info(
|
|
88
|
+
log.info('Spector capture stopped after 2 seconds')();
|
|
86
89
|
spector?.stopCapture();
|
|
87
90
|
// spector?.displayUI();
|
|
88
91
|
});
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import {log, loadScript} from '@luma.gl/core';
|
|
5
|
+
import {GL} from '@luma.gl/constants';
|
|
6
|
+
import {isBrowser} from '@probe.gl/env'
|
|
4
7
|
|
|
5
8
|
const WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';
|
|
6
9
|
|
|
@@ -11,20 +14,26 @@ type DebugContextProps = {
|
|
|
11
14
|
webgl2?: boolean;
|
|
12
15
|
};
|
|
13
16
|
|
|
14
|
-
const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
// const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
|
|
18
|
+
// debug: true,
|
|
19
|
+
// throwOnError: false,
|
|
20
|
+
// break: [],
|
|
21
|
+
// webgl2: false,
|
|
22
|
+
// }
|
|
23
|
+
|
|
24
|
+
type ContextData = {
|
|
25
|
+
realContext?: WebGLRenderingContext;
|
|
26
|
+
debugContext?: WebGLRenderingContext;
|
|
19
27
|
}
|
|
20
28
|
|
|
21
29
|
// Helper to get shared context data
|
|
22
|
-
function getContextData(gl: any) {
|
|
30
|
+
function getContextData(gl: any): ContextData {
|
|
23
31
|
gl.luma = gl.luma || {};
|
|
24
32
|
return gl.luma;
|
|
25
33
|
}
|
|
26
34
|
|
|
27
35
|
declare global {
|
|
36
|
+
// eslint-disable-next-line no-var
|
|
28
37
|
var WebGLDebugUtils: any;
|
|
29
38
|
}
|
|
30
39
|
|
|
@@ -35,8 +44,7 @@ declare global {
|
|
|
35
44
|
* @see https://github.com/vorg/webgl-debug
|
|
36
45
|
*/
|
|
37
46
|
export async function loadWebGLDeveloperTools(): Promise<void> {
|
|
38
|
-
if (!globalThis.WebGLDebugUtils) {
|
|
39
|
-
// @ts-expect-error Developer tools expects global to be set
|
|
47
|
+
if (isBrowser() && !globalThis.WebGLDebugUtils) {
|
|
40
48
|
globalThis.global = globalThis.global || globalThis;
|
|
41
49
|
// @ts-expect-error Developer tools expects global to be set
|
|
42
50
|
globalThis.global.module = {};
|
|
@@ -46,7 +54,7 @@ export async function loadWebGLDeveloperTools(): Promise<void> {
|
|
|
46
54
|
|
|
47
55
|
// Returns (a potentially new) context with debug instrumentation turned off or on.
|
|
48
56
|
// Note that this actually returns a new context
|
|
49
|
-
export function makeDebugContext(gl: WebGLRenderingContext, props: DebugContextProps = {}): WebGLRenderingContext {
|
|
57
|
+
export function makeDebugContext(gl: WebGLRenderingContext, props: DebugContextProps = {}): WebGLRenderingContext | null {
|
|
50
58
|
// Return null to ensure we don't try to create a context in this case (TODO what case is that?)
|
|
51
59
|
if (!gl) {
|
|
52
60
|
return null;
|
|
@@ -133,16 +141,16 @@ function onGLError(props: DebugContextProps, err, functionName: string, args: an
|
|
|
133
141
|
|
|
134
142
|
// Don't generate function string until it is needed
|
|
135
143
|
function onValidateGLFunc(props: DebugContextProps, functionName: string, functionArgs: any[]): void {
|
|
136
|
-
let functionString: string;
|
|
144
|
+
let functionString: string = '';
|
|
137
145
|
if (log.level >= 1) {
|
|
138
146
|
functionString = getFunctionString(functionName, functionArgs);
|
|
139
147
|
log.log(1, functionString)();
|
|
140
148
|
}
|
|
141
149
|
|
|
142
|
-
if
|
|
150
|
+
// If array of breakpoint strings supplied, check if any of them is contained in current GL function
|
|
151
|
+
if (props.break && props.break.length > 0) {
|
|
143
152
|
functionString = functionString || getFunctionString(functionName, functionArgs);
|
|
144
|
-
const isBreakpoint =
|
|
145
|
-
props.break && props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);
|
|
153
|
+
const isBreakpoint = props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);
|
|
146
154
|
if (isBreakpoint) {
|
|
147
155
|
debugger; // eslint-disable-line
|
|
148
156
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
1
4
|
// Provides a unified API for getting and setting any WebGL parameter
|
|
2
5
|
// Also knows default values of all parameters, enabling fast cache initialization
|
|
3
6
|
// Provides base functionality for the state caching.
|
|
4
|
-
import {Device} from '@luma.gl/
|
|
5
|
-
import type {GLParameters} from '
|
|
7
|
+
import {Device} from '@luma.gl/core';
|
|
8
|
+
import type {GLParameters} from '@luma.gl/constants';
|
|
6
9
|
import {
|
|
7
10
|
GL_PARAMETER_DEFAULTS,
|
|
8
11
|
GL_PARAMETER_SETTERS,
|
|
@@ -10,8 +13,7 @@ import {
|
|
|
10
13
|
GL_PARAMETER_GETTERS
|
|
11
14
|
} from './webgl-parameter-tables';
|
|
12
15
|
|
|
13
|
-
import {
|
|
14
|
-
import WebGLDevice from '../../adapter/webgl-device';
|
|
16
|
+
import {WebGLDevice} from '../../adapter/webgl-device';
|
|
15
17
|
|
|
16
18
|
export type {GLParameters};
|
|
17
19
|
|
|
@@ -21,7 +23,10 @@ export type {GLParameters};
|
|
|
21
23
|
* @note requires a `cache` object to be set on the context (gl.state.cache)
|
|
22
24
|
* This object is used to fill in any missing values for composite setter functions
|
|
23
25
|
*/
|
|
24
|
-
export function
|
|
26
|
+
export function setGLParameters(
|
|
27
|
+
device: Device | WebGLRenderingContext,
|
|
28
|
+
parameters: GLParameters
|
|
29
|
+
): void {
|
|
25
30
|
const webglDevice = WebGLDevice.attach(device);
|
|
26
31
|
const gl = webglDevice.gl;
|
|
27
32
|
|
|
@@ -74,7 +79,10 @@ export function setParameters(device: Device | WebGLRenderingContext, parameters
|
|
|
74
79
|
|
|
75
80
|
/**
|
|
76
81
|
* Reads the entire WebGL state from a context
|
|
77
|
-
|
|
82
|
+
|
|
83
|
+
// default to querying all parameters
|
|
84
|
+
|
|
85
|
+
* @returns - a newly created map, with values keyed by GL parameters
|
|
78
86
|
*
|
|
79
87
|
* @note Copies the state from a context (gl.getParameter should not be overriden)
|
|
80
88
|
* Reads the entire WebGL state from a context
|
|
@@ -83,13 +91,13 @@ export function setParameters(device: Device | WebGLRenderingContext, parameters
|
|
|
83
91
|
* considered a very slow operation, to be used only if/when a context already manipulated
|
|
84
92
|
* by external code needs to be synchronized for the first time
|
|
85
93
|
*/
|
|
86
|
-
export function
|
|
87
|
-
|
|
88
|
-
|
|
94
|
+
export function getGLParameters(
|
|
95
|
+
device: Device | WebGLRenderingContext,
|
|
96
|
+
parameters: keyof GLParameters | (keyof GLParameters)[] | GLParameters = GL_PARAMETER_DEFAULTS
|
|
97
|
+
): GLParameters {
|
|
98
|
+
const webglDevice = WebGLDevice.attach(device);
|
|
99
|
+
const gl = webglDevice.gl;
|
|
89
100
|
|
|
90
|
-
export function getParameters(gl, parameters) {
|
|
91
|
-
// default to querying all parameters
|
|
92
|
-
parameters = parameters || GL_PARAMETER_DEFAULTS;
|
|
93
101
|
// support both arrays of parameters and objects (keys represent parameters)
|
|
94
102
|
|
|
95
103
|
if (typeof parameters === 'number') {
|
|
@@ -115,14 +123,15 @@ export function getParameters(gl, parameters) {
|
|
|
115
123
|
* NOT the canvas size dimensions, so they will have to be properly set after
|
|
116
124
|
* calling this function.
|
|
117
125
|
*/
|
|
118
|
-
export function
|
|
119
|
-
|
|
126
|
+
export function resetGLParameters(device: Device | WebGLRenderingContext): void {
|
|
127
|
+
setGLParameters(device, GL_PARAMETER_DEFAULTS);
|
|
120
128
|
}
|
|
121
129
|
|
|
122
130
|
// Helpers
|
|
123
131
|
|
|
124
132
|
// Returns true if given object is empty, false otherwise.
|
|
125
133
|
function isObjectEmpty(object) {
|
|
134
|
+
// @ts-ignore dummy key variable
|
|
126
135
|
for (const key in object) {
|
|
127
136
|
return false;
|
|
128
137
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
1
4
|
// Tables describing WebGL parameters
|
|
2
|
-
import GL from '@luma.gl/constants';
|
|
5
|
+
import {GL, GLParameters} from '@luma.gl/constants';
|
|
3
6
|
import {isWebGL2} from '../context/webgl-checks';
|
|
4
|
-
|
|
7
|
+
|
|
5
8
|
// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS
|
|
6
9
|
|
|
7
10
|
/* eslint-disable no-shadow */
|
|
@@ -91,11 +94,13 @@ export const GL_PARAMETER_DEFAULTS: GLParameters = {
|
|
|
91
94
|
|
|
92
95
|
// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API
|
|
93
96
|
|
|
94
|
-
const enable = (gl
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
+
const enable = (gl: WebGLRenderingContext, value: unknown, key: GL) =>
|
|
98
|
+
value ? gl.enable(key) : gl.disable(key);
|
|
99
|
+
const hint = (gl: WebGLRenderingContext, value: GL, key: GL) => gl.hint(key, value);
|
|
100
|
+
const pixelStorei = (gl: WebGLRenderingContext, value: number | boolean, key: GL) =>
|
|
101
|
+
gl.pixelStorei(key, value);
|
|
97
102
|
|
|
98
|
-
const bindFramebuffer = (gl, value, key) => {
|
|
103
|
+
const bindFramebuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {
|
|
99
104
|
let target;
|
|
100
105
|
if (key === GL.FRAMEBUFFER_BINDING) {
|
|
101
106
|
target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;
|
|
@@ -106,21 +111,22 @@ const bindFramebuffer = (gl, value, key) => {
|
|
|
106
111
|
return gl.bindFramebuffer(target, value);
|
|
107
112
|
};
|
|
108
113
|
|
|
109
|
-
const bindBuffer = (gl, value, key) => {
|
|
110
|
-
const
|
|
111
|
-
[GL.ARRAY_BUFFER_BINDING]:
|
|
112
|
-
[GL.COPY_READ_BUFFER_BINDING]:
|
|
113
|
-
[GL.COPY_WRITE_BUFFER_BINDING]:
|
|
114
|
-
[GL.PIXEL_PACK_BUFFER_BINDING]:
|
|
115
|
-
[GL.PIXEL_UNPACK_BUFFER_BINDING]:
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
114
|
+
const bindBuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {
|
|
115
|
+
const bindingMap: Partial<Record<GL, GL>> = {
|
|
116
|
+
[GL.ARRAY_BUFFER_BINDING]: GL.ARRAY_BUFFER,
|
|
117
|
+
[GL.COPY_READ_BUFFER_BINDING]: GL.COPY_READ_BUFFER,
|
|
118
|
+
[GL.COPY_WRITE_BUFFER_BINDING]: GL.COPY_WRITE_BUFFER,
|
|
119
|
+
[GL.PIXEL_PACK_BUFFER_BINDING]: GL.PIXEL_PACK_BUFFER,
|
|
120
|
+
[GL.PIXEL_UNPACK_BUFFER_BINDING]: GL.PIXEL_UNPACK_BUFFER
|
|
121
|
+
};
|
|
122
|
+
const glTarget = bindingMap[key];
|
|
123
|
+
|
|
124
|
+
gl.bindBuffer(glTarget, value);
|
|
119
125
|
};
|
|
120
126
|
|
|
121
127
|
// Utility
|
|
122
|
-
function isArray(array) {
|
|
123
|
-
return Array.isArray(array) || ArrayBuffer.isView(array);
|
|
128
|
+
function isArray(array: unknown): boolean {
|
|
129
|
+
return Array.isArray(array) || (ArrayBuffer.isView(array) && !(array instanceof DataView));
|
|
124
130
|
}
|
|
125
131
|
|
|
126
132
|
// Map from WebGL parameter names to corresponding WebGL setter functions
|
|
@@ -128,29 +134,34 @@ function isArray(array) {
|
|
|
128
134
|
// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'
|
|
129
135
|
export const GL_PARAMETER_SETTERS = {
|
|
130
136
|
[GL.BLEND]: enable,
|
|
131
|
-
[GL.BLEND_COLOR]: (gl, value) =>
|
|
137
|
+
[GL.BLEND_COLOR]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>
|
|
138
|
+
gl.blendColor(...value),
|
|
132
139
|
[GL.BLEND_EQUATION_RGB]: 'blendEquation',
|
|
133
140
|
[GL.BLEND_EQUATION_ALPHA]: 'blendEquation',
|
|
134
141
|
[GL.BLEND_SRC_RGB]: 'blendFunc',
|
|
135
142
|
[GL.BLEND_DST_RGB]: 'blendFunc',
|
|
136
143
|
[GL.BLEND_SRC_ALPHA]: 'blendFunc',
|
|
137
144
|
[GL.BLEND_DST_ALPHA]: 'blendFunc',
|
|
138
|
-
[GL.COLOR_CLEAR_VALUE]: (gl, value) =>
|
|
139
|
-
|
|
145
|
+
[GL.COLOR_CLEAR_VALUE]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>
|
|
146
|
+
gl.clearColor(...value),
|
|
147
|
+
[GL.COLOR_WRITEMASK]: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),
|
|
140
148
|
[GL.CULL_FACE]: enable,
|
|
141
|
-
[GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),
|
|
149
|
+
[GL.CULL_FACE_MODE]: (gl: WebGLRenderingContext, value) => gl.cullFace(value),
|
|
142
150
|
[GL.DEPTH_TEST]: enable,
|
|
143
|
-
[GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),
|
|
144
|
-
[GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),
|
|
145
|
-
[GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),
|
|
146
|
-
[GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),
|
|
151
|
+
[GL.DEPTH_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),
|
|
152
|
+
[GL.DEPTH_FUNC]: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),
|
|
153
|
+
[GL.DEPTH_RANGE]: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),
|
|
154
|
+
[GL.DEPTH_WRITEMASK]: (gl: WebGLRenderingContext, value) => gl.depthMask(value),
|
|
147
155
|
[GL.DITHER]: enable,
|
|
148
156
|
[GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,
|
|
149
157
|
|
|
150
|
-
[GL.CURRENT_PROGRAM]: (gl, value) => gl.useProgram(value),
|
|
151
|
-
[GL.RENDERBUFFER_BINDING]: (gl, value) =>
|
|
152
|
-
|
|
153
|
-
[GL.
|
|
158
|
+
[GL.CURRENT_PROGRAM]: (gl: WebGLRenderingContext, value) => gl.useProgram(value),
|
|
159
|
+
[GL.RENDERBUFFER_BINDING]: (gl: WebGLRenderingContext, value) =>
|
|
160
|
+
gl.bindRenderbuffer(GL.RENDERBUFFER, value),
|
|
161
|
+
[GL.TRANSFORM_FEEDBACK_BINDING]: (gl: WebGLRenderingContext, value) =>
|
|
162
|
+
(gl as WebGL2RenderingContext).bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),
|
|
163
|
+
[GL.VERTEX_ARRAY_BINDING]: (gl: WebGLRenderingContext, value) =>
|
|
164
|
+
(gl as WebGL2RenderingContext).bindVertexArray(value),
|
|
154
165
|
// NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.
|
|
155
166
|
[GL.FRAMEBUFFER_BINDING]: bindFramebuffer,
|
|
156
167
|
[GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,
|
|
@@ -162,9 +173,9 @@ export const GL_PARAMETER_SETTERS = {
|
|
|
162
173
|
[GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,
|
|
163
174
|
[GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,
|
|
164
175
|
|
|
165
|
-
[GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),
|
|
176
|
+
[GL.FRONT_FACE]: (gl: WebGLRenderingContext, value) => gl.frontFace(value),
|
|
166
177
|
[GL.GENERATE_MIPMAP_HINT]: hint,
|
|
167
|
-
[GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),
|
|
178
|
+
[GL.LINE_WIDTH]: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),
|
|
168
179
|
[GL.POLYGON_OFFSET_FILL]: enable,
|
|
169
180
|
[GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',
|
|
170
181
|
[GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',
|
|
@@ -174,11 +185,13 @@ export const GL_PARAMETER_SETTERS = {
|
|
|
174
185
|
[GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',
|
|
175
186
|
[GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',
|
|
176
187
|
[GL.SCISSOR_TEST]: enable,
|
|
177
|
-
[GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),
|
|
188
|
+
[GL.SCISSOR_BOX]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),
|
|
178
189
|
[GL.STENCIL_TEST]: enable,
|
|
179
|
-
[GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),
|
|
180
|
-
[GL.STENCIL_WRITEMASK]: (gl, value) =>
|
|
181
|
-
|
|
190
|
+
[GL.STENCIL_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),
|
|
191
|
+
[GL.STENCIL_WRITEMASK]: (gl: WebGLRenderingContext, value) =>
|
|
192
|
+
gl.stencilMaskSeparate(GL.FRONT, value),
|
|
193
|
+
[GL.STENCIL_BACK_WRITEMASK]: (gl: WebGLRenderingContext, value) =>
|
|
194
|
+
gl.stencilMaskSeparate(GL.BACK, value),
|
|
182
195
|
[GL.STENCIL_FUNC]: 'stencilFuncFront',
|
|
183
196
|
[GL.STENCIL_REF]: 'stencilFuncFront',
|
|
184
197
|
[GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',
|
|
@@ -191,7 +204,7 @@ export const GL_PARAMETER_SETTERS = {
|
|
|
191
204
|
[GL.STENCIL_BACK_FAIL]: 'stencilOpBack',
|
|
192
205
|
[GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',
|
|
193
206
|
[GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',
|
|
194
|
-
[GL.VIEWPORT]: (gl, value) => gl.viewport(...value),
|
|
207
|
+
[GL.VIEWPORT]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value),
|
|
195
208
|
|
|
196
209
|
// WEBGL1 PIXEL PACK/UNPACK MODES
|
|
197
210
|
[GL.PACK_ALIGNMENT]: pixelStorei,
|
|
@@ -212,80 +225,85 @@ export const GL_PARAMETER_SETTERS = {
|
|
|
212
225
|
[GL.UNPACK_SKIP_IMAGES]: pixelStorei,
|
|
213
226
|
|
|
214
227
|
// Function-style setters
|
|
215
|
-
framebuffer: (gl, framebuffer) => {
|
|
228
|
+
framebuffer: (gl: WebGLRenderingContext, framebuffer) => {
|
|
216
229
|
// accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class
|
|
217
230
|
// framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.
|
|
218
231
|
const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;
|
|
219
232
|
return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
|
|
220
233
|
},
|
|
221
|
-
blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),
|
|
222
|
-
blendColor: (gl, value) => gl.blendColor(...value),
|
|
223
|
-
blendEquation: (gl, args) => {
|
|
224
|
-
|
|
225
|
-
gl.blendEquationSeparate(...
|
|
234
|
+
blend: (gl: WebGLRenderingContext, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),
|
|
235
|
+
blendColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.blendColor(...value),
|
|
236
|
+
blendEquation: (gl: WebGLRenderingContext, args: number | [number, number]) => {
|
|
237
|
+
const separateModes = typeof args === 'number' ? [args, args] as [number, number]: args;
|
|
238
|
+
gl.blendEquationSeparate(...separateModes);
|
|
226
239
|
},
|
|
227
|
-
blendFunc: (gl, args) => {
|
|
228
|
-
|
|
229
|
-
gl.blendFuncSeparate(...
|
|
240
|
+
blendFunc: (gl: WebGLRenderingContext, args: [number, number] | [number, number, number, number]) => {
|
|
241
|
+
const separateFuncs = args?.length === 2 ? [...args, ...args] as [number, number, number, number] : args;
|
|
242
|
+
gl.blendFuncSeparate(...separateFuncs);
|
|
230
243
|
},
|
|
231
244
|
|
|
232
|
-
clearColor: (gl, value) => gl.clearColor(...value),
|
|
233
|
-
clearDepth: (gl, value) => gl.clearDepth(value),
|
|
234
|
-
clearStencil: (gl, value) => gl.clearStencil(value),
|
|
245
|
+
clearColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.clearColor(...value),
|
|
246
|
+
clearDepth: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),
|
|
247
|
+
clearStencil: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),
|
|
235
248
|
|
|
236
|
-
colorMask: (gl, value) => gl.colorMask(...value),
|
|
249
|
+
colorMask: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),
|
|
237
250
|
|
|
238
|
-
cull: (gl, value) =>
|
|
239
|
-
|
|
251
|
+
cull: (gl: WebGLRenderingContext, value) =>
|
|
252
|
+
value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE),
|
|
253
|
+
cullFace: (gl: WebGLRenderingContext, value) => gl.cullFace(value),
|
|
240
254
|
|
|
241
|
-
depthTest: (gl, value) =>
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
255
|
+
depthTest: (gl: WebGLRenderingContext, value) =>
|
|
256
|
+
value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST),
|
|
257
|
+
depthFunc: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),
|
|
258
|
+
depthMask: (gl: WebGLRenderingContext, value) => gl.depthMask(value),
|
|
259
|
+
depthRange: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),
|
|
245
260
|
|
|
246
|
-
dither: (gl, value) =>
|
|
261
|
+
dither: (gl: WebGLRenderingContext, value) =>
|
|
262
|
+
value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER),
|
|
247
263
|
|
|
248
|
-
derivativeHint: (gl, value) => {
|
|
264
|
+
derivativeHint: (gl: WebGLRenderingContext, value) => {
|
|
249
265
|
// gl1: 'OES_standard_derivatives'
|
|
250
266
|
gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);
|
|
251
267
|
},
|
|
252
268
|
|
|
253
|
-
frontFace: (gl, value) => gl.frontFace(value),
|
|
269
|
+
frontFace: (gl: WebGLRenderingContext, value) => gl.frontFace(value),
|
|
254
270
|
|
|
255
|
-
mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),
|
|
271
|
+
mipmapHint: (gl: WebGLRenderingContext, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),
|
|
256
272
|
|
|
257
|
-
lineWidth: (gl, value) => gl.lineWidth(value),
|
|
273
|
+
lineWidth: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),
|
|
258
274
|
|
|
259
|
-
polygonOffsetFill: (gl, value) =>
|
|
275
|
+
polygonOffsetFill: (gl: WebGLRenderingContext, value) =>
|
|
260
276
|
value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),
|
|
261
|
-
polygonOffset: (gl, value) => gl.polygonOffset(...value),
|
|
277
|
+
polygonOffset: (gl: WebGLRenderingContext, value: [number, number]) => gl.polygonOffset(...value),
|
|
262
278
|
|
|
263
|
-
sampleCoverage: (gl, value) => gl.sampleCoverage(...value),
|
|
279
|
+
sampleCoverage: (gl: WebGLRenderingContext, value: [number, boolean?]) => gl.sampleCoverage(...value),
|
|
264
280
|
|
|
265
|
-
scissorTest: (gl, value) =>
|
|
266
|
-
|
|
281
|
+
scissorTest: (gl: WebGLRenderingContext, value) =>
|
|
282
|
+
value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST),
|
|
283
|
+
scissor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),
|
|
267
284
|
|
|
268
|
-
stencilTest: (gl, value) =>
|
|
269
|
-
|
|
285
|
+
stencilTest: (gl: WebGLRenderingContext, value) =>
|
|
286
|
+
value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),
|
|
287
|
+
stencilMask: (gl: WebGLRenderingContext, value) => {
|
|
270
288
|
value = isArray(value) ? value : [value, value];
|
|
271
289
|
const [mask, backMask] = value;
|
|
272
290
|
gl.stencilMaskSeparate(GL.FRONT, mask);
|
|
273
291
|
gl.stencilMaskSeparate(GL.BACK, backMask);
|
|
274
292
|
},
|
|
275
|
-
stencilFunc: (gl, args) => {
|
|
293
|
+
stencilFunc: (gl: WebGLRenderingContext, args) => {
|
|
276
294
|
args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
|
|
277
295
|
const [func, ref, mask, backFunc, backRef, backMask] = args;
|
|
278
296
|
gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);
|
|
279
297
|
gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);
|
|
280
298
|
},
|
|
281
|
-
stencilOp: (gl, args) => {
|
|
299
|
+
stencilOp: (gl: WebGLRenderingContext, args) => {
|
|
282
300
|
args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
|
|
283
301
|
const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;
|
|
284
302
|
gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);
|
|
285
303
|
gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);
|
|
286
304
|
},
|
|
287
305
|
|
|
288
|
-
viewport: (gl, value) => gl.viewport(...value)
|
|
306
|
+
viewport: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value)
|
|
289
307
|
};
|
|
290
308
|
|
|
291
309
|
function getValue(glEnum, values, cache) {
|
|
@@ -294,50 +312,50 @@ function getValue(glEnum, values, cache) {
|
|
|
294
312
|
|
|
295
313
|
// COMPOSITE_WEBGL_PARAMETER_
|
|
296
314
|
export const GL_COMPOSITE_PARAMETER_SETTERS = {
|
|
297
|
-
blendEquation: (gl, values, cache) =>
|
|
315
|
+
blendEquation: (gl: WebGLRenderingContext, values, cache) =>
|
|
298
316
|
gl.blendEquationSeparate(
|
|
299
317
|
getValue(GL.BLEND_EQUATION_RGB, values, cache),
|
|
300
318
|
getValue(GL.BLEND_EQUATION_ALPHA, values, cache)
|
|
301
319
|
),
|
|
302
|
-
blendFunc: (gl, values, cache) =>
|
|
320
|
+
blendFunc: (gl: WebGLRenderingContext, values, cache) =>
|
|
303
321
|
gl.blendFuncSeparate(
|
|
304
322
|
getValue(GL.BLEND_SRC_RGB, values, cache),
|
|
305
323
|
getValue(GL.BLEND_DST_RGB, values, cache),
|
|
306
324
|
getValue(GL.BLEND_SRC_ALPHA, values, cache),
|
|
307
325
|
getValue(GL.BLEND_DST_ALPHA, values, cache)
|
|
308
326
|
),
|
|
309
|
-
polygonOffset: (gl, values, cache) =>
|
|
327
|
+
polygonOffset: (gl: WebGLRenderingContext, values, cache) =>
|
|
310
328
|
gl.polygonOffset(
|
|
311
329
|
getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),
|
|
312
330
|
getValue(GL.POLYGON_OFFSET_UNITS, values, cache)
|
|
313
331
|
),
|
|
314
|
-
sampleCoverage: (gl, values, cache) =>
|
|
332
|
+
sampleCoverage: (gl: WebGLRenderingContext, values, cache) =>
|
|
315
333
|
gl.sampleCoverage(
|
|
316
334
|
getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),
|
|
317
335
|
getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)
|
|
318
336
|
),
|
|
319
|
-
stencilFuncFront: (gl, values, cache) =>
|
|
337
|
+
stencilFuncFront: (gl: WebGLRenderingContext, values, cache) =>
|
|
320
338
|
gl.stencilFuncSeparate(
|
|
321
339
|
GL.FRONT,
|
|
322
340
|
getValue(GL.STENCIL_FUNC, values, cache),
|
|
323
341
|
getValue(GL.STENCIL_REF, values, cache),
|
|
324
342
|
getValue(GL.STENCIL_VALUE_MASK, values, cache)
|
|
325
343
|
),
|
|
326
|
-
stencilFuncBack: (gl, values, cache) =>
|
|
344
|
+
stencilFuncBack: (gl: WebGLRenderingContext, values, cache) =>
|
|
327
345
|
gl.stencilFuncSeparate(
|
|
328
346
|
GL.BACK,
|
|
329
347
|
getValue(GL.STENCIL_BACK_FUNC, values, cache),
|
|
330
348
|
getValue(GL.STENCIL_BACK_REF, values, cache),
|
|
331
349
|
getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)
|
|
332
350
|
),
|
|
333
|
-
stencilOpFront: (gl, values, cache) =>
|
|
351
|
+
stencilOpFront: (gl: WebGLRenderingContext, values, cache) =>
|
|
334
352
|
gl.stencilOpSeparate(
|
|
335
353
|
GL.FRONT,
|
|
336
354
|
getValue(GL.STENCIL_FAIL, values, cache),
|
|
337
355
|
getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),
|
|
338
356
|
getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)
|
|
339
357
|
),
|
|
340
|
-
stencilOpBack: (gl, values, cache) =>
|
|
358
|
+
stencilOpBack: (gl: WebGLRenderingContext, values, cache) =>
|
|
341
359
|
gl.stencilOpSeparate(
|
|
342
360
|
GL.BACK,
|
|
343
361
|
getValue(GL.STENCIL_BACK_FAIL, values, cache),
|
|
@@ -352,36 +370,40 @@ type UpdateFunc = (params: Record<string, any>) => void;
|
|
|
352
370
|
export const GL_HOOKED_SETTERS = {
|
|
353
371
|
// GENERIC SETTERS
|
|
354
372
|
|
|
355
|
-
enable: (update: UpdateFunc, capability) =>
|
|
373
|
+
enable: (update: UpdateFunc, capability: GL) =>
|
|
356
374
|
update({
|
|
357
375
|
[capability]: true
|
|
358
376
|
}),
|
|
359
|
-
disable: (update: UpdateFunc, capability) =>
|
|
377
|
+
disable: (update: UpdateFunc, capability: GL) =>
|
|
360
378
|
update({
|
|
361
379
|
[capability]: false
|
|
362
380
|
}),
|
|
363
|
-
pixelStorei: (update: UpdateFunc, pname, value) =>
|
|
381
|
+
pixelStorei: (update: UpdateFunc, pname: GL, value) =>
|
|
364
382
|
update({
|
|
365
383
|
[pname]: value
|
|
366
384
|
}),
|
|
367
|
-
hint: (update: UpdateFunc, pname, hint) =>
|
|
385
|
+
hint: (update: UpdateFunc, pname: GL, hint: GL) =>
|
|
368
386
|
update({
|
|
369
387
|
[pname]: hint
|
|
370
388
|
}),
|
|
371
389
|
|
|
372
390
|
// SPECIFIC SETTERS
|
|
373
|
-
useProgram: (update: UpdateFunc, value) =>
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
391
|
+
useProgram: (update: UpdateFunc, value) =>
|
|
392
|
+
update({
|
|
393
|
+
[GL.CURRENT_PROGRAM]: value
|
|
394
|
+
}),
|
|
395
|
+
bindRenderbuffer: (update: UpdateFunc, target, value) =>
|
|
396
|
+
update({
|
|
397
|
+
[GL.RENDERBUFFER_BINDING]: value
|
|
398
|
+
}),
|
|
399
|
+
bindTransformFeedback: (update: UpdateFunc, target, value) =>
|
|
400
|
+
update({
|
|
401
|
+
[GL.TRANSFORM_FEEDBACK_BINDING]: value
|
|
402
|
+
}),
|
|
403
|
+
bindVertexArray: (update: UpdateFunc, value) =>
|
|
404
|
+
update({
|
|
405
|
+
[GL.VERTEX_ARRAY_BINDING]: value
|
|
406
|
+
}),
|
|
385
407
|
|
|
386
408
|
bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {
|
|
387
409
|
switch (target) {
|
|
@@ -399,13 +421,13 @@ export const GL_HOOKED_SETTERS = {
|
|
|
399
421
|
}
|
|
400
422
|
},
|
|
401
423
|
bindBuffer: (update: UpdateFunc, target, buffer) => {
|
|
402
|
-
const pname =
|
|
424
|
+
const pname = {
|
|
403
425
|
[GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],
|
|
404
426
|
[GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],
|
|
405
427
|
[GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],
|
|
406
428
|
[GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],
|
|
407
429
|
[GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]
|
|
408
|
-
}
|
|
430
|
+
}[target];
|
|
409
431
|
|
|
410
432
|
if (pname) {
|
|
411
433
|
return update({[pname]: buffer});
|
|
@@ -567,7 +589,7 @@ export const GL_HOOKED_SETTERS = {
|
|
|
567
589
|
|
|
568
590
|
// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT
|
|
569
591
|
|
|
570
|
-
const isEnabled = (gl, key) => gl.isEnabled(key);
|
|
592
|
+
const isEnabled = (gl: WebGLRenderingContext, key) => gl.isEnabled(key);
|
|
571
593
|
|
|
572
594
|
// Exceptions for any keys that cannot be queried by gl.getParameters
|
|
573
595
|
export const GL_PARAMETER_GETTERS = {
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Stores luma.gl specific state associated with a context
|
|
6
|
+
*/
|
|
7
|
+
export interface WebGLContextData {
|
|
8
|
+
_polyfilled: boolean;
|
|
9
|
+
_extensions: Record<string, any>;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Gets luma.gl specific state from a context
|
|
14
|
+
* @returns context state
|
|
15
|
+
*/
|
|
16
|
+
export function getContextData(gl: WebGLRenderingContext): WebGLContextData {
|
|
17
|
+
// @ts-expect-error
|
|
18
|
+
const luma = gl.luma as WebGLContextData | null;
|
|
19
|
+
if (!luma) {
|
|
20
|
+
const contextState: WebGLContextData = {
|
|
21
|
+
_polyfilled: false,
|
|
22
|
+
_extensions: {}
|
|
23
|
+
};
|
|
24
|
+
// @ts-expect-error
|
|
25
|
+
gl.luma = contextState;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// @ts-expect-error
|
|
29
|
+
return gl.luma;
|
|
30
|
+
}
|