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