@luma.gl/webgl 9.0.0-alpha.8 → 9.0.0-beta.1
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 +12 -3
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +89 -74
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +29 -180
- 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 +52 -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 +306 -343
- 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 +53 -22
- 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 +9 -25
- 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 +54 -58
- 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 +49 -22
- 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/decode-webgl-types.js +89 -0
- package/dist/adapter/helpers/decode-webgl-types.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 +58 -138
- 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 +16 -11
- 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 +51 -82
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
- 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 +36 -44
- 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 +19 -14
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +67 -101
- 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 +175 -48
- 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 -25
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +63 -175
- 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 +98 -12
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
- 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 +11 -21
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +5 -5
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +18 -44
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +51 -31
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +123 -244
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
- 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 +167 -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 +12 -23
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +92 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +205 -158
- 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 +26 -52
- package/dist/classic/accessor.js.map +1 -1
- 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 +192 -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 +37 -0
- package/dist/classic/format-utils.js.map +1 -0
- package/dist/classic/typed-array-utils.d.ts +17 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +18 -39
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.d.ts +17 -18
- package/dist/context/context/create-browser-context.d.ts.map +1 -1
- package/dist/context/context/create-browser-context.js +11 -19
- package/dist/context/context/create-browser-context.js.map +1 -1
- package/dist/context/context/create-headless-context.d.ts +1 -1
- package/dist/context/context/create-headless-context.d.ts.map +1 -1
- package/dist/context/context/create-headless-context.js +6 -7
- package/dist/context/context/create-headless-context.js.map +1 -1
- 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 +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 +18 -41
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -17
- 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 +267 -286
- 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 +37 -43
- 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 +27 -31
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +7 -7
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +17 -40
- 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 +17 -87
- 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 +25 -61
- 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 +9344 -0
- package/dist/index.cjs +6556 -0
- package/dist/index.d.ts +23 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -27
- 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 +52 -0
- package/package.json +21 -9
- package/src/adapter/converters/device-parameters.ts +120 -43
- package/src/adapter/converters/sampler-parameters.ts +54 -126
- package/src/adapter/converters/shader-formats.ts +44 -0
- package/src/adapter/converters/texture-formats.ts +265 -192
- package/src/adapter/converters/vertex-formats.ts +71 -10
- package/src/adapter/device-helpers/device-features.ts +5 -2
- package/src/adapter/device-helpers/device-limits.ts +4 -2
- package/src/adapter/device-helpers/get-device-info.ts +72 -18
- package/src/adapter/device-helpers/is-old-ie.ts +3 -0
- package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
- package/src/adapter/helpers/get-shader-layout.ts +87 -131
- package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
- package/src/adapter/helpers/set-uniform.ts +39 -35
- package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
- 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 +101 -106
- package/src/adapter/resources/webgl-command-buffer.ts +327 -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 +86 -133
- package/src/adapter/resources/webgl-render-pass.ts +165 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
- package/src/adapter/resources/webgl-sampler.ts +12 -8
- package/src/adapter/resources/webgl-shader.ts +32 -27
- package/src/adapter/resources/webgl-texture.ts +117 -91
- package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
- package/src/adapter/resources/webgl-vertex-array.ts +283 -0
- package/src/adapter/webgl-canvas-context.ts +18 -13
- package/src/adapter/webgl-device.ts +327 -92
- package/src/classic/accessor.ts +8 -5
- package/src/classic/clear.ts +113 -0
- package/src/classic/copy-and-blit.ts +312 -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 +53 -31
- package/src/context/context/create-headless-context.ts +5 -2
- package/src/context/context/webgl-checks.ts +3 -1
- package/src/context/debug/spector.ts +8 -5
- package/src/context/debug/webgl-developer-tools.ts +26 -17
- package/src/context/parameters/unified-parameter-api.ts +15 -9
- 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 +15 -8
- package/src/context/polyfill/polyfill-table.ts +20 -15
- 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 +13 -10
- package/src/context/state-tracker/with-parameters.ts +13 -4
- package/src/index.ts +65 -39
- 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 +0 -81
- 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 +0 -99
- 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 +0 -95
- package/dist/classic/buffer.d.ts.map +0 -1
- package/dist/classic/buffer.js +0 -392
- 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/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 -103
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/es5/adapter/converters/device-parameters.js +0 -185
- 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 -245
- 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 -155
- 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 -391
- 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 -346
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
- 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 -150
- 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 -463
- 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 -478
- 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-browser-context.js +0 -83
- package/dist/es5/context/context/create-browser-context.js.map +0 -1
- package/dist/es5/context/context/create-headless-context.js +0 -60
- package/dist/es5/context/context/create-headless-context.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -121
- 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 -134
- 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 -290
- 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 -168
- 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 -227
- 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 -112
- 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 -330
- 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 -267
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
- 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 -76
- package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-texture.js +0 -834
- 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 -337
- 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 -392
- 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-browser-context.js +0 -61
- package/dist/esm/context/context/create-browser-context.js.map +0 -1
- package/dist/esm/context/context/create-headless-context.js +0 -43
- package/dist/esm/context/context/create-headless-context.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -103
- 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 -63
- 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 -91
- 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 -28
- 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 -145
- package/dist/types/webgl.d.ts.map +0 -1
- package/dist/types/webgl.js +0 -2
- package/dist/types/webgl.js.map +0 -1
- package/src/adapter/converters/renderbuffer-formats.ts +0 -92
- package/src/adapter/helpers/attribute-utils.ts +0 -61
- package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
- package/src/bundle.ts +0 -4
- package/src/classic/buffer.ts +0 -474
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/device-pixels.ts +0 -158
- package/src/init.ts +0 -4
- package/src/types/webgl.ts +0 -284
|
@@ -1,50 +1,36 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
2
3
|
|
|
3
|
-
import {
|
|
4
|
+
import type {
|
|
4
5
|
ShaderLayout,
|
|
5
|
-
BindingLayout,
|
|
6
6
|
UniformBinding,
|
|
7
7
|
UniformBlockBinding,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} from '@luma.gl/api';
|
|
14
|
-
import GL from '@luma.gl/constants';
|
|
8
|
+
AttributeDeclaration,
|
|
9
|
+
VaryingBinding
|
|
10
|
+
} from '@luma.gl/core';
|
|
11
|
+
|
|
12
|
+
import {GL} from '@luma.gl/constants';
|
|
15
13
|
import {isWebGL2} from '../../context/context/webgl-checks';
|
|
16
|
-
import Accessor from '../../classic/accessor'; // TODO - should NOT depend on classic API
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
import {isSamplerUniform} from './uniforms';
|
|
14
|
+
import {Accessor} from '../../classic/accessor'; // TODO - should NOT depend on classic API
|
|
15
|
+
import {decodeGLUniformType, decodeGLAttributeType, isSamplerUniform} from './decode-webgl-types';
|
|
16
|
+
|
|
20
17
|
/**
|
|
21
18
|
* Extract metadata describing binding information for a program's shaders
|
|
22
19
|
* Note: `linkProgram()` needs to have been called
|
|
23
20
|
* (although linking does not need to have been successful).
|
|
24
21
|
*/
|
|
25
22
|
export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {
|
|
26
|
-
const programBindings = getProgramBindings(gl, program);
|
|
27
|
-
|
|
28
23
|
const shaderLayout: ShaderLayout = {
|
|
29
24
|
attributes: [],
|
|
30
25
|
bindings: []
|
|
31
26
|
};
|
|
32
27
|
|
|
33
|
-
|
|
34
|
-
const format =
|
|
35
|
-
// attribute.accessor.format ||
|
|
36
|
-
getVertexFormat(attribute.accessor.type || GL.FLOAT, attribute.accessor.size);
|
|
37
|
-
shaderLayout.attributes.push({
|
|
38
|
-
name: attribute.name,
|
|
39
|
-
location: attribute.location,
|
|
40
|
-
format,
|
|
41
|
-
stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
|
|
42
|
-
});
|
|
43
|
-
}
|
|
28
|
+
shaderLayout.attributes = readAttributeDeclarations(gl, program);
|
|
44
29
|
|
|
45
30
|
// Uniform blocks
|
|
46
|
-
|
|
47
|
-
|
|
31
|
+
const uniformBlocks: UniformBlockBinding[] = readUniformBlocks(gl, program);
|
|
32
|
+
for (const uniformBlock of uniformBlocks) {
|
|
33
|
+
const uniforms = uniformBlock.uniforms.map(uniform => ({
|
|
48
34
|
name: uniform.name,
|
|
49
35
|
format: uniform.format,
|
|
50
36
|
byteOffset: uniform.byteOffset,
|
|
@@ -61,8 +47,9 @@ export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram
|
|
|
61
47
|
});
|
|
62
48
|
}
|
|
63
49
|
|
|
50
|
+
const uniforms: UniformBinding[] = readUniformBindings(gl, program);
|
|
64
51
|
let textureUnit = 0;
|
|
65
|
-
for (const uniform of
|
|
52
|
+
for (const uniform of uniforms) {
|
|
66
53
|
if (isSamplerUniform(uniform.type)) {
|
|
67
54
|
const {viewDimension, sampleType} = getSamplerInfo(uniform.type);
|
|
68
55
|
shaderLayout.bindings.push({
|
|
@@ -79,48 +66,32 @@ export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram
|
|
|
79
66
|
}
|
|
80
67
|
}
|
|
81
68
|
|
|
82
|
-
const uniforms = programBindings.uniforms?.filter((uniform) => uniform.location !== null) || [];
|
|
83
69
|
if (uniforms.length) {
|
|
84
70
|
shaderLayout.uniforms = uniforms;
|
|
85
71
|
}
|
|
86
|
-
|
|
87
|
-
|
|
72
|
+
|
|
73
|
+
// Varyings
|
|
74
|
+
const varyings: VaryingBinding[] = readVaryings(gl, program);
|
|
75
|
+
// Note - samplers are always in unform bindings, even if uniform blocks are used
|
|
76
|
+
if (varyings?.length) {
|
|
77
|
+
shaderLayout.varyings = varyings;
|
|
88
78
|
}
|
|
89
79
|
|
|
90
80
|
return shaderLayout;
|
|
91
81
|
}
|
|
92
82
|
|
|
93
|
-
|
|
94
|
-
* Extract metadata describing binding information for a program's shaders
|
|
95
|
-
* Note: `linkProgram()` needs to have been called
|
|
96
|
-
* (although linking does not need to have been successful).
|
|
97
|
-
*/
|
|
98
|
-
export function getProgramBindings(
|
|
99
|
-
gl: WebGLRenderingContext,
|
|
100
|
-
program: WebGLProgram
|
|
101
|
-
): ProgramBindings {
|
|
102
|
-
const config: ProgramBindings = {
|
|
103
|
-
attributes: readAttributeBindings(gl, program),
|
|
104
|
-
uniforms: readUniformBindings(gl, program),
|
|
105
|
-
uniformBlocks: readUniformBlocks(gl, program),
|
|
106
|
-
varyings: readVaryings(gl, program)
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
Object.seal(config);
|
|
110
|
-
return config;
|
|
111
|
-
// generateWebGPUStyleBindings(bindings);
|
|
112
|
-
}
|
|
83
|
+
// HELPERS
|
|
113
84
|
|
|
114
85
|
/**
|
|
115
86
|
* Extract info about all transform feedback varyings
|
|
116
87
|
*
|
|
117
88
|
* linkProgram needs to have been called, although linking does not need to have been successful
|
|
118
89
|
*/
|
|
119
|
-
function
|
|
90
|
+
function readAttributeDeclarations(
|
|
120
91
|
gl: WebGLRenderingContext,
|
|
121
92
|
program: WebGLProgram
|
|
122
|
-
):
|
|
123
|
-
const attributes:
|
|
93
|
+
): AttributeDeclaration[] {
|
|
94
|
+
const attributes: AttributeDeclaration[] = [];
|
|
124
95
|
|
|
125
96
|
const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
|
|
126
97
|
|
|
@@ -129,23 +100,30 @@ function readAttributeBindings(
|
|
|
129
100
|
if (!activeInfo) {
|
|
130
101
|
throw new Error('activeInfo');
|
|
131
102
|
}
|
|
132
|
-
const {name, type: compositeType, size} = activeInfo;
|
|
103
|
+
const {name, type: compositeType /* , size*/} = activeInfo;
|
|
133
104
|
const location = gl.getAttribLocation(program, name);
|
|
134
|
-
// Add only user provided attributes, for built-in attributes like
|
|
135
|
-
// `gl_InstanceID` locaiton will be < 0
|
|
105
|
+
// Add only user provided attributes, for built-in attributes like `gl_InstanceID` location will be < 0
|
|
136
106
|
if (location >= 0) {
|
|
137
|
-
const {
|
|
138
|
-
|
|
139
|
-
//
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const
|
|
144
|
-
|
|
107
|
+
const {attributeType} = decodeGLAttributeType(compositeType);
|
|
108
|
+
|
|
109
|
+
// Whether an attribute is instanced is essentially fixed by the structure of the shader code,
|
|
110
|
+
// so it is arguably a static property of the shader.
|
|
111
|
+
// There is no hint in the shader declarations
|
|
112
|
+
// Heuristic: Any attribute name containing the word "instance" will be assumed to be instanced
|
|
113
|
+
const stepMode = /instance/i.test(name) ? 'instance' : 'vertex';
|
|
114
|
+
|
|
115
|
+
attributes.push({
|
|
116
|
+
name,
|
|
117
|
+
location,
|
|
118
|
+
stepMode,
|
|
119
|
+
type: attributeType,
|
|
120
|
+
// size - for arrays, size is the number of elements in the array
|
|
121
|
+
});
|
|
145
122
|
}
|
|
146
123
|
}
|
|
147
124
|
|
|
148
|
-
|
|
125
|
+
// Sort by declaration order
|
|
126
|
+
attributes.sort((a: AttributeDeclaration, b: AttributeDeclaration) => a.location - b.location);
|
|
149
127
|
return attributes;
|
|
150
128
|
}
|
|
151
129
|
|
|
@@ -169,7 +147,7 @@ function readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): Varying
|
|
|
169
147
|
throw new Error('activeInfo');
|
|
170
148
|
}
|
|
171
149
|
const {name, type: compositeType, size} = activeInfo;
|
|
172
|
-
const {glType, components} =
|
|
150
|
+
const {glType, components} = decodeGLUniformType(compositeType);
|
|
173
151
|
const accessor = new Accessor({type: glType, size: size * components});
|
|
174
152
|
const varying = {location, name, accessor}; // Base values
|
|
175
153
|
varyings.push(varying);
|
|
@@ -228,9 +206,7 @@ function readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram):
|
|
|
228
206
|
|
|
229
207
|
/**
|
|
230
208
|
* Extract info about all "active" uniform blocks
|
|
231
|
-
*
|
|
232
|
-
* ("Active" just means that unused (aka inactive) blocks may have been
|
|
233
|
-
* optimized away during linking)
|
|
209
|
+
* @note In WebGL, "active" just means that unused (inactive) blocks may have been optimized away during linking)
|
|
234
210
|
*/
|
|
235
211
|
function readUniformBlocks(
|
|
236
212
|
gl: WebGLRenderingContext,
|
|
@@ -258,36 +234,37 @@ function readUniformBlocks(
|
|
|
258
234
|
uniforms: [] as any[]
|
|
259
235
|
};
|
|
260
236
|
|
|
261
|
-
const uniformIndices =
|
|
237
|
+
const uniformIndices =
|
|
238
|
+
(getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[]) || [];
|
|
262
239
|
|
|
263
240
|
const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.
|
|
264
241
|
const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.
|
|
265
|
-
const uniformBlockIndex = gl2.getActiveUniforms(
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
); // Array of GLint indicating the block indices of the uniforms.
|
|
242
|
+
// const uniformBlockIndex = gl2.getActiveUniforms(
|
|
243
|
+
// program,
|
|
244
|
+
// uniformIndices,
|
|
245
|
+
// GL.UNIFORM_BLOCK_INDEX
|
|
246
|
+
// ); // Array of GLint indicating the block indices of the uniforms.
|
|
270
247
|
const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.
|
|
271
248
|
const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.
|
|
272
|
-
const uniformMatrixStride = gl2.getActiveUniforms(
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
|
|
277
|
-
const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
|
|
249
|
+
// const uniformMatrixStride = gl2.getActiveUniforms(
|
|
250
|
+
// program,
|
|
251
|
+
// uniformIndices,
|
|
252
|
+
// GL.UNIFORM_MATRIX_STRIDE
|
|
253
|
+
// ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
|
|
254
|
+
// const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
|
|
278
255
|
for (let i = 0; i < blockInfo.uniformCount; ++i) {
|
|
279
256
|
const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
|
|
280
257
|
if (!activeInfo) {
|
|
281
258
|
throw new Error('activeInfo');
|
|
282
259
|
}
|
|
283
|
-
|
|
260
|
+
|
|
284
261
|
blockInfo.uniforms.push({
|
|
285
262
|
name: activeInfo.name,
|
|
286
|
-
format:
|
|
263
|
+
format: decodeGLUniformType(uniformType[i]).format,
|
|
287
264
|
type: uniformType[i],
|
|
288
265
|
arrayLength: uniformArrayLength[i],
|
|
289
266
|
byteOffset: uniformOffset[i],
|
|
290
|
-
byteStride: uniformStride[i]
|
|
267
|
+
byteStride: uniformStride[i]
|
|
291
268
|
// matrixStride: uniformStride[i],
|
|
292
269
|
// rowMajor: uniformRowMajor[i]
|
|
293
270
|
});
|
|
@@ -300,6 +277,27 @@ function readUniformBlocks(
|
|
|
300
277
|
return uniformBlocks;
|
|
301
278
|
}
|
|
302
279
|
|
|
280
|
+
/**
|
|
281
|
+
* TOOD - compare with a above, confirm copy, then delete
|
|
282
|
+
const bindings: Binding[] = [];
|
|
283
|
+
const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
|
|
284
|
+
for (let blockIndex = 0; blockIndex < count; blockIndex++) {
|
|
285
|
+
const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
|
|
286
|
+
const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
|
|
287
|
+
const visibility = (vertex) + (fragment);
|
|
288
|
+
const binding: BufferBinding = {
|
|
289
|
+
location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
|
|
290
|
+
// name: gl.getActiveUniformBlockName(program, blockIndex),
|
|
291
|
+
type: 'uniform',
|
|
292
|
+
visibility,
|
|
293
|
+
minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
|
|
294
|
+
// uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
|
|
295
|
+
// uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
|
|
296
|
+
}
|
|
297
|
+
bindings.push(binding);
|
|
298
|
+
}
|
|
299
|
+
*/
|
|
300
|
+
|
|
303
301
|
const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
|
|
304
302
|
number,
|
|
305
303
|
[
|
|
@@ -324,13 +322,13 @@ const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
|
|
|
324
322
|
[GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
|
|
325
323
|
};
|
|
326
324
|
|
|
327
|
-
type SamplerInfo =
|
|
325
|
+
type SamplerInfo = {
|
|
328
326
|
viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
|
|
329
327
|
sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
|
|
330
328
|
};
|
|
331
329
|
|
|
332
330
|
function getSamplerInfo(type: GL): SamplerInfo {
|
|
333
|
-
|
|
331
|
+
const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
|
|
334
332
|
if (!sampler) {
|
|
335
333
|
throw new Error('sampler');
|
|
336
334
|
}
|
|
@@ -352,7 +350,7 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
|
|
|
352
350
|
|
|
353
351
|
// if array name then clean the array brackets
|
|
354
352
|
const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
|
|
355
|
-
const matches =
|
|
353
|
+
const matches = UNIFORM_NAME_REGEXP.exec(name);
|
|
356
354
|
if (!matches || matches.length < 2) {
|
|
357
355
|
throw new Error(`Failed to parse GLSL uniform name ${name}`);
|
|
358
356
|
}
|
|
@@ -363,45 +361,3 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
|
|
|
363
361
|
isArray: Boolean(matches[2])
|
|
364
362
|
};
|
|
365
363
|
}
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* TODO - verify this is a copy of above and delete
|
|
369
|
-
* import type {TextureFormat} from '@luma.gl/api';
|
|
370
|
-
* Extract info about all "active" uniform blocks
|
|
371
|
-
* ("Active" just means that unused (inactive) blocks may have been optimized away during linking)
|
|
372
|
-
*
|
|
373
|
-
function getUniformBlockBindings(gl, program): Binding[] {
|
|
374
|
-
if (!isWebGL2(gl)) {
|
|
375
|
-
return;
|
|
376
|
-
}
|
|
377
|
-
const bindings: Binding[] = [];
|
|
378
|
-
const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
|
|
379
|
-
for (let blockIndex = 0; blockIndex < count; blockIndex++) {
|
|
380
|
-
const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
|
|
381
|
-
const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
|
|
382
|
-
const visibility = (vertex) + (fragment);
|
|
383
|
-
const binding: BufferBinding = {
|
|
384
|
-
location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
|
|
385
|
-
// name: gl.getActiveUniformBlockName(program, blockIndex),
|
|
386
|
-
type: 'uniform',
|
|
387
|
-
visibility,
|
|
388
|
-
minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
|
|
389
|
-
// uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
|
|
390
|
-
// uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
|
|
391
|
-
}
|
|
392
|
-
bindings.push(binding);
|
|
393
|
-
}
|
|
394
|
-
return bindings;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
function setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {
|
|
398
|
-
for (const bindGroup of bindings) {
|
|
399
|
-
for (const binding of bindGroup) {
|
|
400
|
-
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
// Set up indirection table
|
|
405
|
-
// this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);
|
|
406
|
-
}
|
|
407
|
-
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
import type {CompilerMessage} from '@luma.gl/core';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Parse a WebGL-format GLSL compilation log into an array of WebGPU style message records.
|
|
@@ -16,10 +16,23 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
|
|
|
16
16
|
|
|
17
17
|
for (const line of lines) {
|
|
18
18
|
if (line.length <= 1) {
|
|
19
|
-
continue;
|
|
19
|
+
continue; // eslint-disable-line no-continue
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
const segments: string[] = line.split(':');
|
|
23
|
+
|
|
24
|
+
// Check for messages with no line information `ERROR: unsupported shader version`
|
|
25
|
+
if (segments.length === 2) {
|
|
26
|
+
const [messageType, message] = segments;
|
|
27
|
+
messages.push({
|
|
28
|
+
message: message.trim(),
|
|
29
|
+
type: getMessageType(messageType),
|
|
30
|
+
lineNum: 0,
|
|
31
|
+
linePos: 0
|
|
32
|
+
});
|
|
33
|
+
continue; // eslint-disable-line no-continue
|
|
34
|
+
}
|
|
35
|
+
|
|
23
36
|
const [messageType, linePosition, lineNumber, ...rest] = segments;
|
|
24
37
|
|
|
25
38
|
let lineNum = parseInt(lineNumber, 10);
|
|
@@ -32,13 +45,9 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
|
|
|
32
45
|
linePos = 0;
|
|
33
46
|
}
|
|
34
47
|
|
|
35
|
-
// Ensure supported type
|
|
36
|
-
const lowerCaseType = messageType.toLowerCase();
|
|
37
|
-
const type = (MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info') as 'warning' | 'error' | 'info';
|
|
38
|
-
|
|
39
48
|
messages.push({
|
|
40
49
|
message: rest.join(':').trim(),
|
|
41
|
-
type,
|
|
50
|
+
type: getMessageType(messageType),
|
|
42
51
|
lineNum,
|
|
43
52
|
linePos // TODO
|
|
44
53
|
})
|
|
@@ -46,3 +55,10 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
|
|
|
46
55
|
|
|
47
56
|
return messages;
|
|
48
57
|
}
|
|
58
|
+
|
|
59
|
+
/** Ensure supported type */
|
|
60
|
+
function getMessageType(messageType: string): 'warning' | 'error' | 'info' {
|
|
61
|
+
const MESSAGE_TYPES = ['warning', 'error', 'info'];
|
|
62
|
+
const lowerCaseType = messageType.toLowerCase();
|
|
63
|
+
return (MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info') as 'warning' | 'error' | 'info';
|
|
64
|
+
}
|
|
@@ -1,52 +1,56 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
|
|
1
6
|
// Uniforms
|
|
2
|
-
import
|
|
7
|
+
import type {UniformValue} from '@luma.gl/core';
|
|
8
|
+
import {GL, GLCompositeType, GLSamplerType} from '@luma.gl/constants';
|
|
3
9
|
|
|
4
10
|
/** Set a raw uniform (without type conversion and caching) */
|
|
5
11
|
/* eslint-disable max-len */
|
|
6
12
|
export function setUniform(
|
|
7
13
|
gl: WebGLRenderingContext,
|
|
8
14
|
location: WebGLUniformLocation,
|
|
9
|
-
type:
|
|
10
|
-
value:
|
|
15
|
+
type: GLCompositeType | GLSamplerType,
|
|
16
|
+
value: UniformValue
|
|
11
17
|
): void {
|
|
12
18
|
const gl2 = gl as WebGL2RenderingContext;
|
|
13
19
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
case GL.SAMPLER_2D:
|
|
19
|
-
case GL.SAMPLER_CUBE:
|
|
20
|
-
// WebGL2 samplers
|
|
21
|
-
case GL.SAMPLER_3D:
|
|
22
|
-
case GL.SAMPLER_2D_SHADOW:
|
|
23
|
-
case GL.SAMPLER_2D_ARRAY:
|
|
24
|
-
case GL.SAMPLER_2D_ARRAY_SHADOW:
|
|
25
|
-
case GL.SAMPLER_CUBE_SHADOW:
|
|
26
|
-
case GL.INT_SAMPLER_2D:
|
|
27
|
-
case GL.INT_SAMPLER_3D:
|
|
28
|
-
case GL.INT_SAMPLER_CUBE:
|
|
29
|
-
case GL.INT_SAMPLER_2D_ARRAY:
|
|
30
|
-
case GL.UNSIGNED_INT_SAMPLER_2D:
|
|
31
|
-
case GL.UNSIGNED_INT_SAMPLER_3D:
|
|
32
|
-
case GL.UNSIGNED_INT_SAMPLER_CUBE:
|
|
33
|
-
case GL.UNSIGNED_INT_SAMPLER_2D_ARRAY:
|
|
34
|
-
return gl.uniform1i(location, value);
|
|
35
|
-
}
|
|
20
|
+
// Prepare the value for WebGL setters
|
|
21
|
+
let uniformValue = value;
|
|
22
|
+
if (uniformValue === true) {
|
|
23
|
+
uniformValue = 1;
|
|
36
24
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (value === true) {
|
|
40
|
-
value = 1;
|
|
25
|
+
if (uniformValue === false) {
|
|
26
|
+
uniformValue = 0;
|
|
41
27
|
}
|
|
42
|
-
|
|
43
|
-
if (value === false) {
|
|
44
|
-
value = 1;
|
|
45
|
-
}
|
|
46
|
-
const arrayValue = (typeof value === 'number') ? [value] : value;
|
|
28
|
+
const arrayValue = typeof uniformValue === 'number' ? [uniformValue] : uniformValue;
|
|
47
29
|
|
|
48
30
|
// prettier-ignore
|
|
49
31
|
switch (type) {
|
|
32
|
+
// WebGL1 samplers
|
|
33
|
+
case GL.SAMPLER_2D:
|
|
34
|
+
case GL.SAMPLER_CUBE:
|
|
35
|
+
// WebGL2 samplers
|
|
36
|
+
case GL.SAMPLER_3D:
|
|
37
|
+
case GL.SAMPLER_2D_SHADOW:
|
|
38
|
+
case GL.SAMPLER_2D_ARRAY:
|
|
39
|
+
case GL.SAMPLER_2D_ARRAY_SHADOW:
|
|
40
|
+
case GL.SAMPLER_CUBE_SHADOW:
|
|
41
|
+
case GL.INT_SAMPLER_2D:
|
|
42
|
+
case GL.INT_SAMPLER_3D:
|
|
43
|
+
case GL.INT_SAMPLER_CUBE:
|
|
44
|
+
case GL.INT_SAMPLER_2D_ARRAY:
|
|
45
|
+
case GL.UNSIGNED_INT_SAMPLER_2D:
|
|
46
|
+
case GL.UNSIGNED_INT_SAMPLER_3D:
|
|
47
|
+
case GL.UNSIGNED_INT_SAMPLER_CUBE:
|
|
48
|
+
case GL.UNSIGNED_INT_SAMPLER_2D_ARRAY:
|
|
49
|
+
if (typeof value !== 'number') {
|
|
50
|
+
throw new Error('samplers must be set to integers');
|
|
51
|
+
}
|
|
52
|
+
return gl.uniform1i(location, value);
|
|
53
|
+
|
|
50
54
|
case GL.FLOAT: return gl.uniform1fv(location, arrayValue);
|
|
51
55
|
case GL.FLOAT_VEC2: return gl.uniform2fv(location, arrayValue);
|
|
52
56
|
case GL.FLOAT_VEC3: return gl.uniform3fv(location, arrayValue);
|
|
@@ -60,7 +64,7 @@ export function setUniform(
|
|
|
60
64
|
case GL.BOOL: return gl.uniform1iv(location, arrayValue);
|
|
61
65
|
case GL.BOOL_VEC2: return gl.uniform2iv(location, arrayValue);
|
|
62
66
|
case GL.BOOL_VEC3: return gl.uniform3iv(location, arrayValue);
|
|
63
|
-
case GL.BOOL_VEC4: gl.uniform4iv(location, arrayValue);
|
|
67
|
+
case GL.BOOL_VEC4: return gl.uniform4iv(location, arrayValue);
|
|
64
68
|
|
|
65
69
|
// WEBGL2 - unsigned integers
|
|
66
70
|
case GL.UNSIGNED_INT: return gl2.uniform1uiv(location, arrayValue, 1);
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import {GL, GLPrimitiveTopology, GLPrimitive} from '@luma.gl/constants';
|
|
5
|
+
import {PrimitiveTopology} from '@luma.gl/core';
|
|
6
|
+
|
|
7
|
+
// Counts the number of complete primitives given a number of vertices and a drawMode
|
|
8
|
+
export function getPrimitiveDrawMode(drawMode: GLPrimitiveTopology): GLPrimitive {
|
|
9
|
+
switch (drawMode) {
|
|
10
|
+
case GL.POINTS:
|
|
11
|
+
return GL.POINTS;
|
|
12
|
+
case GL.LINES:
|
|
13
|
+
return GL.LINES;
|
|
14
|
+
case GL.LINE_STRIP:
|
|
15
|
+
return GL.LINES;
|
|
16
|
+
case GL.LINE_LOOP:
|
|
17
|
+
return GL.LINES;
|
|
18
|
+
case GL.TRIANGLES:
|
|
19
|
+
return GL.TRIANGLES;
|
|
20
|
+
case GL.TRIANGLE_STRIP:
|
|
21
|
+
return GL.TRIANGLES;
|
|
22
|
+
case GL.TRIANGLE_FAN:
|
|
23
|
+
return GL.TRIANGLES;
|
|
24
|
+
default:
|
|
25
|
+
throw new Error('drawMode');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Counts the number of complete "primitives" given a number of vertices and a drawMode
|
|
30
|
+
export function getPrimitiveCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
|
|
31
|
+
const {drawMode, vertexCount} = options;
|
|
32
|
+
switch (drawMode) {
|
|
33
|
+
case GL.POINTS:
|
|
34
|
+
case GL.LINE_LOOP:
|
|
35
|
+
return vertexCount;
|
|
36
|
+
case GL.LINES:
|
|
37
|
+
return vertexCount / 2;
|
|
38
|
+
case GL.LINE_STRIP:
|
|
39
|
+
return vertexCount - 1;
|
|
40
|
+
case GL.TRIANGLES:
|
|
41
|
+
return vertexCount / 3;
|
|
42
|
+
case GL.TRIANGLE_STRIP:
|
|
43
|
+
case GL.TRIANGLE_FAN:
|
|
44
|
+
return vertexCount - 2;
|
|
45
|
+
default:
|
|
46
|
+
throw new Error('drawMode');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Counts the number of vertices after splitting the vertex stream into separate "primitives"
|
|
51
|
+
export function getVertexCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
|
|
52
|
+
const {drawMode, vertexCount} = options;
|
|
53
|
+
const primitiveCount = getPrimitiveCount({drawMode, vertexCount});
|
|
54
|
+
switch (getPrimitiveDrawMode(drawMode)) {
|
|
55
|
+
case GL.POINTS:
|
|
56
|
+
return primitiveCount;
|
|
57
|
+
case GL.LINES:
|
|
58
|
+
return primitiveCount * 2;
|
|
59
|
+
case GL.TRIANGLES:
|
|
60
|
+
return primitiveCount * 3;
|
|
61
|
+
default:
|
|
62
|
+
throw new Error('drawMode');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Get the primitive type for draw */
|
|
67
|
+
export function getGLDrawMode(
|
|
68
|
+
topology: PrimitiveTopology
|
|
69
|
+
):
|
|
70
|
+
| GL.POINTS
|
|
71
|
+
| GL.LINES
|
|
72
|
+
| GL.LINE_STRIP
|
|
73
|
+
| GL.LINE_LOOP
|
|
74
|
+
| GL.TRIANGLES
|
|
75
|
+
| GL.TRIANGLE_STRIP
|
|
76
|
+
| GL.TRIANGLE_FAN {
|
|
77
|
+
// prettier-ignore
|
|
78
|
+
switch (topology) {
|
|
79
|
+
case 'point-list': return GL.POINTS;
|
|
80
|
+
case 'line-list': return GL.LINES;
|
|
81
|
+
case 'line-strip': return GL.LINE_STRIP;
|
|
82
|
+
case 'line-loop-webgl': return GL.LINE_LOOP;
|
|
83
|
+
case 'triangle-list': return GL.TRIANGLES;
|
|
84
|
+
case 'triangle-strip': return GL.TRIANGLE_STRIP;
|
|
85
|
+
case 'triangle-fan-webgl': return GL.TRIANGLE_FAN;
|
|
86
|
+
default: throw new Error(topology);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** Get the primitive type for transform feedback */
|
|
91
|
+
export function getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {
|
|
92
|
+
// prettier-ignore
|
|
93
|
+
switch (topology) {
|
|
94
|
+
case 'point-list': return GL.POINTS;
|
|
95
|
+
case 'line-list': return GL.LINES;
|
|
96
|
+
case 'line-strip': return GL.LINES;
|
|
97
|
+
case 'line-loop-webgl': return GL.LINES;
|
|
98
|
+
case 'triangle-list': return GL.TRIANGLES;
|
|
99
|
+
case 'triangle-strip': return GL.TRIANGLES;
|
|
100
|
+
case 'triangle-fan-webgl': return GL.TRIANGLES;
|
|
101
|
+
default: throw new Error(topology);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import {assert} from '@luma.gl/core';
|
|
5
|
+
import {GL} from '@luma.gl/constants';
|
|
3
6
|
|
|
4
7
|
// Resolve a WebGL enumeration name (returns itself if already a number)
|
|
5
8
|
export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
|
|
@@ -16,30 +19,8 @@ export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
|
|
|
16
19
|
|
|
17
20
|
// Look up string, after removing any 'GL.' or 'gl.' prefix
|
|
18
21
|
name = name.replace(/^.*\./, '');
|
|
22
|
+
// @ts-ignore expect-error depends on settings
|
|
19
23
|
const value = gl[name];
|
|
20
24
|
assert(value !== undefined, `Accessing undefined constant GL.${name}`);
|
|
21
25
|
return value;
|
|
22
26
|
}
|
|
23
|
-
|
|
24
|
-
export function getKey(gl: WebGLRenderingContext, value: any): string {
|
|
25
|
-
// @ts-expect-error
|
|
26
|
-
gl = gl.gl || gl;
|
|
27
|
-
value = Number(value);
|
|
28
|
-
for (const key in gl) {
|
|
29
|
-
if (gl[key] === value) {
|
|
30
|
-
return `GL.${key}`;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return String(value);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export function getKeyType(gl: WebGLRenderingContext, value: any): string {
|
|
37
|
-
assert(value !== undefined, 'undefined key');
|
|
38
|
-
value = Number(value);
|
|
39
|
-
for (const key in gl) {
|
|
40
|
-
if (gl[key] === value) {
|
|
41
|
-
return `GL.${key}`;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return String(value);
|
|
45
|
-
}
|