@luma.gl/webgl 9.0.0-alpha.9 → 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,29 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import { decodeUniformType, decodeAttributeType } from './uniforms';
|
|
5
|
-
import { getVertexFormat } from '../converters/vertex-formats';
|
|
6
|
-
import { isSamplerUniform } from './uniforms';
|
|
1
|
+
import { isWebGL2 } from "../../context/context/webgl-checks.js";
|
|
2
|
+
import { Accessor } from "../../classic/accessor.js";
|
|
3
|
+
import { decodeGLUniformType, decodeGLAttributeType, isSamplerUniform } from "./decode-webgl-types.js";
|
|
7
4
|
export function getShaderLayout(gl, program) {
|
|
8
|
-
var _programBindings$unif, _programBindings$vary;
|
|
9
|
-
|
|
10
|
-
const programBindings = getProgramBindings(gl, program);
|
|
11
5
|
const shaderLayout = {
|
|
12
6
|
attributes: [],
|
|
13
7
|
bindings: []
|
|
14
8
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
shaderLayout.attributes.push({
|
|
19
|
-
name: attribute.name,
|
|
20
|
-
location: attribute.location,
|
|
21
|
-
format,
|
|
22
|
-
stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
for (const uniformBlock of programBindings.uniformBlocks) {
|
|
9
|
+
shaderLayout.attributes = readAttributeDeclarations(gl, program);
|
|
10
|
+
const uniformBlocks = readUniformBlocks(gl, program);
|
|
11
|
+
for (const uniformBlock of uniformBlocks) {
|
|
27
12
|
const uniforms = uniformBlock.uniforms.map(uniform => ({
|
|
28
13
|
name: uniform.name,
|
|
29
14
|
format: uniform.format,
|
|
@@ -40,10 +25,9 @@ export function getShaderLayout(gl, program) {
|
|
|
40
25
|
uniforms
|
|
41
26
|
});
|
|
42
27
|
}
|
|
43
|
-
|
|
28
|
+
const uniforms = readUniformBindings(gl, program);
|
|
44
29
|
let textureUnit = 0;
|
|
45
|
-
|
|
46
|
-
for (const uniform of programBindings.uniforms) {
|
|
30
|
+
for (const uniform of uniforms) {
|
|
47
31
|
if (isSamplerUniform(uniform.type)) {
|
|
48
32
|
const {
|
|
49
33
|
viewDimension,
|
|
@@ -60,92 +44,56 @@ export function getShaderLayout(gl, program) {
|
|
|
60
44
|
textureUnit += 1;
|
|
61
45
|
}
|
|
62
46
|
}
|
|
63
|
-
|
|
64
|
-
const uniforms = ((_programBindings$unif = programBindings.uniforms) === null || _programBindings$unif === void 0 ? void 0 : _programBindings$unif.filter(uniform => uniform.location !== null)) || [];
|
|
65
|
-
|
|
66
47
|
if (uniforms.length) {
|
|
67
48
|
shaderLayout.uniforms = uniforms;
|
|
68
49
|
}
|
|
69
|
-
|
|
70
|
-
if (
|
|
71
|
-
shaderLayout.varyings =
|
|
50
|
+
const varyings = readVaryings(gl, program);
|
|
51
|
+
if (varyings !== null && varyings !== void 0 && varyings.length) {
|
|
52
|
+
shaderLayout.varyings = varyings;
|
|
72
53
|
}
|
|
73
|
-
|
|
74
54
|
return shaderLayout;
|
|
75
55
|
}
|
|
76
|
-
|
|
77
|
-
const config = {
|
|
78
|
-
attributes: readAttributeBindings(gl, program),
|
|
79
|
-
uniforms: readUniformBindings(gl, program),
|
|
80
|
-
uniformBlocks: readUniformBlocks(gl, program),
|
|
81
|
-
varyings: readVaryings(gl, program)
|
|
82
|
-
};
|
|
83
|
-
Object.seal(config);
|
|
84
|
-
return config;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function readAttributeBindings(gl, program) {
|
|
56
|
+
function readAttributeDeclarations(gl, program) {
|
|
88
57
|
const attributes = [];
|
|
89
|
-
const count = gl.getProgramParameter(program,
|
|
90
|
-
|
|
58
|
+
const count = gl.getProgramParameter(program, 35721);
|
|
91
59
|
for (let index = 0; index < count; index++) {
|
|
92
60
|
const activeInfo = gl.getActiveAttrib(program, index);
|
|
93
|
-
|
|
94
61
|
if (!activeInfo) {
|
|
95
62
|
throw new Error('activeInfo');
|
|
96
63
|
}
|
|
97
|
-
|
|
98
64
|
const {
|
|
99
65
|
name,
|
|
100
|
-
type: compositeType
|
|
101
|
-
size
|
|
66
|
+
type: compositeType
|
|
102
67
|
} = activeInfo;
|
|
103
68
|
const location = gl.getAttribLocation(program, name);
|
|
104
|
-
|
|
105
69
|
if (location >= 0) {
|
|
106
70
|
const {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
const accessor = {
|
|
112
|
-
type: glType,
|
|
113
|
-
size: size * components
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
if (/instance/i.test(name)) {
|
|
117
|
-
accessor.divisor = 1;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const attributeInfo = {
|
|
121
|
-
location,
|
|
71
|
+
attributeType
|
|
72
|
+
} = decodeGLAttributeType(compositeType);
|
|
73
|
+
const stepMode = /instance/i.test(name) ? 'instance' : 'vertex';
|
|
74
|
+
attributes.push({
|
|
122
75
|
name,
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
76
|
+
location,
|
|
77
|
+
stepMode,
|
|
78
|
+
type: attributeType
|
|
79
|
+
});
|
|
126
80
|
}
|
|
127
81
|
}
|
|
128
|
-
|
|
129
82
|
attributes.sort((a, b) => a.location - b.location);
|
|
130
83
|
return attributes;
|
|
131
84
|
}
|
|
132
|
-
|
|
133
85
|
function readVaryings(gl, program) {
|
|
134
86
|
if (!isWebGL2(gl)) {
|
|
135
87
|
return [];
|
|
136
88
|
}
|
|
137
|
-
|
|
138
89
|
const gl2 = gl;
|
|
139
90
|
const varyings = [];
|
|
140
|
-
const count = gl.getProgramParameter(program,
|
|
141
|
-
|
|
91
|
+
const count = gl.getProgramParameter(program, 35971);
|
|
142
92
|
for (let location = 0; location < count; location++) {
|
|
143
93
|
const activeInfo = gl2.getTransformFeedbackVarying(program, location);
|
|
144
|
-
|
|
145
94
|
if (!activeInfo) {
|
|
146
95
|
throw new Error('activeInfo');
|
|
147
96
|
}
|
|
148
|
-
|
|
149
97
|
const {
|
|
150
98
|
name,
|
|
151
99
|
type: compositeType,
|
|
@@ -154,8 +102,7 @@ function readVaryings(gl, program) {
|
|
|
154
102
|
const {
|
|
155
103
|
glType,
|
|
156
104
|
components
|
|
157
|
-
} =
|
|
158
|
-
;
|
|
105
|
+
} = decodeGLUniformType(compositeType);
|
|
159
106
|
const accessor = new Accessor({
|
|
160
107
|
type: glType,
|
|
161
108
|
size: size * components
|
|
@@ -167,22 +114,17 @@ function readVaryings(gl, program) {
|
|
|
167
114
|
};
|
|
168
115
|
varyings.push(varying);
|
|
169
116
|
}
|
|
170
|
-
|
|
171
117
|
varyings.sort((a, b) => a.location - b.location);
|
|
172
118
|
return varyings;
|
|
173
119
|
}
|
|
174
|
-
|
|
175
120
|
function readUniformBindings(gl, program) {
|
|
176
121
|
const uniforms = [];
|
|
177
|
-
const uniformCount = gl.getProgramParameter(program,
|
|
178
|
-
|
|
122
|
+
const uniformCount = gl.getProgramParameter(program, 35718);
|
|
179
123
|
for (let i = 0; i < uniformCount; i++) {
|
|
180
124
|
const activeInfo = gl.getActiveUniform(program, i);
|
|
181
|
-
|
|
182
125
|
if (!activeInfo) {
|
|
183
126
|
throw new Error('activeInfo');
|
|
184
127
|
}
|
|
185
|
-
|
|
186
128
|
const {
|
|
187
129
|
name: rawName,
|
|
188
130
|
size,
|
|
@@ -201,12 +143,12 @@ function readUniformBindings(gl, program) {
|
|
|
201
143
|
isArray
|
|
202
144
|
};
|
|
203
145
|
uniforms.push(uniformInfo);
|
|
204
|
-
|
|
205
146
|
if (uniformInfo.size > 1) {
|
|
206
147
|
for (let j = 0; j < uniformInfo.size; j++) {
|
|
207
|
-
const elementName =
|
|
148
|
+
const elementName = `${name}[${j}]`;
|
|
208
149
|
webglLocation = gl.getUniformLocation(program, elementName);
|
|
209
|
-
const arrayElementUniformInfo = {
|
|
150
|
+
const arrayElementUniformInfo = {
|
|
151
|
+
...uniformInfo,
|
|
210
152
|
name: elementName,
|
|
211
153
|
location: webglLocation
|
|
212
154
|
};
|
|
@@ -214,97 +156,78 @@ function readUniformBindings(gl, program) {
|
|
|
214
156
|
}
|
|
215
157
|
}
|
|
216
158
|
}
|
|
217
|
-
|
|
218
159
|
return uniforms;
|
|
219
160
|
}
|
|
220
|
-
|
|
221
161
|
function readUniformBlocks(gl, program) {
|
|
222
162
|
if (!isWebGL2(gl)) {
|
|
223
163
|
return [];
|
|
224
164
|
}
|
|
225
|
-
|
|
226
165
|
const gl2 = gl;
|
|
227
|
-
|
|
228
166
|
const getBlockParameter = (blockIndex, pname) => gl2.getActiveUniformBlockParameter(program, blockIndex, pname);
|
|
229
|
-
|
|
230
167
|
const uniformBlocks = [];
|
|
231
|
-
const blockCount = gl2.getProgramParameter(program,
|
|
232
|
-
|
|
168
|
+
const blockCount = gl2.getProgramParameter(program, 35382);
|
|
233
169
|
for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
|
|
234
170
|
const blockInfo = {
|
|
235
171
|
name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
|
|
236
|
-
location: getBlockParameter(blockIndex,
|
|
237
|
-
byteLength: getBlockParameter(blockIndex,
|
|
238
|
-
vertex: getBlockParameter(blockIndex,
|
|
239
|
-
fragment: getBlockParameter(blockIndex,
|
|
240
|
-
uniformCount: getBlockParameter(blockIndex,
|
|
172
|
+
location: getBlockParameter(blockIndex, 35391),
|
|
173
|
+
byteLength: getBlockParameter(blockIndex, 35392),
|
|
174
|
+
vertex: getBlockParameter(blockIndex, 35396),
|
|
175
|
+
fragment: getBlockParameter(blockIndex, 35398),
|
|
176
|
+
uniformCount: getBlockParameter(blockIndex, 35394),
|
|
241
177
|
uniforms: []
|
|
242
178
|
};
|
|
243
|
-
const uniformIndices = getBlockParameter(blockIndex,
|
|
244
|
-
const uniformType = gl2.getActiveUniforms(program, uniformIndices,
|
|
245
|
-
const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices,
|
|
246
|
-
const
|
|
247
|
-
const
|
|
248
|
-
const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE);
|
|
249
|
-
const uniformMatrixStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_MATRIX_STRIDE);
|
|
250
|
-
const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
|
|
251
|
-
|
|
179
|
+
const uniformIndices = getBlockParameter(blockIndex, 35395) || [];
|
|
180
|
+
const uniformType = gl2.getActiveUniforms(program, uniformIndices, 35383);
|
|
181
|
+
const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, 35384);
|
|
182
|
+
const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, 35387);
|
|
183
|
+
const uniformStride = gl2.getActiveUniforms(program, uniformIndices, 35388);
|
|
252
184
|
for (let i = 0; i < blockInfo.uniformCount; ++i) {
|
|
253
185
|
const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
|
|
254
|
-
|
|
255
186
|
if (!activeInfo) {
|
|
256
187
|
throw new Error('activeInfo');
|
|
257
188
|
}
|
|
258
|
-
|
|
259
189
|
blockInfo.uniforms.push({
|
|
260
190
|
name: activeInfo.name,
|
|
261
|
-
format:
|
|
191
|
+
format: decodeGLUniformType(uniformType[i]).format,
|
|
262
192
|
type: uniformType[i],
|
|
263
193
|
arrayLength: uniformArrayLength[i],
|
|
264
194
|
byteOffset: uniformOffset[i],
|
|
265
195
|
byteStride: uniformStride[i]
|
|
266
196
|
});
|
|
267
197
|
}
|
|
268
|
-
|
|
269
198
|
uniformBlocks.push(blockInfo);
|
|
270
199
|
}
|
|
271
|
-
|
|
272
200
|
uniformBlocks.sort((a, b) => a.location - b.location);
|
|
273
201
|
return uniformBlocks;
|
|
274
202
|
}
|
|
275
|
-
|
|
276
203
|
const SAMPLER_UNIFORMS_GL_TO_GPU = {
|
|
277
|
-
[
|
|
278
|
-
[
|
|
279
|
-
[
|
|
280
|
-
[
|
|
281
|
-
[
|
|
282
|
-
[
|
|
283
|
-
[
|
|
284
|
-
[
|
|
285
|
-
[
|
|
286
|
-
[
|
|
287
|
-
[
|
|
288
|
-
[
|
|
289
|
-
[
|
|
290
|
-
[
|
|
291
|
-
[
|
|
204
|
+
[35678]: ['2d', 'float'],
|
|
205
|
+
[35680]: ['cube', 'float'],
|
|
206
|
+
[35679]: ['3d', 'float'],
|
|
207
|
+
[35682]: ['3d', 'depth'],
|
|
208
|
+
[36289]: ['2d-array', 'float'],
|
|
209
|
+
[36292]: ['2d-array', 'depth'],
|
|
210
|
+
[36293]: ['cube', 'float'],
|
|
211
|
+
[36298]: ['2d', 'sint'],
|
|
212
|
+
[36299]: ['3d', 'sint'],
|
|
213
|
+
[36300]: ['cube', 'sint'],
|
|
214
|
+
[36303]: ['2d-array', 'uint'],
|
|
215
|
+
[36306]: ['2d', 'uint'],
|
|
216
|
+
[36307]: ['3d', 'uint'],
|
|
217
|
+
[36308]: ['cube', 'uint'],
|
|
218
|
+
[36311]: ['2d-array', 'uint']
|
|
292
219
|
};
|
|
293
|
-
|
|
294
220
|
function getSamplerInfo(type) {
|
|
295
|
-
|
|
296
|
-
|
|
221
|
+
const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
|
|
297
222
|
if (!sampler) {
|
|
298
223
|
throw new Error('sampler');
|
|
299
224
|
}
|
|
300
|
-
|
|
301
225
|
const [viewDimension, sampleType] = sampler;
|
|
302
226
|
return {
|
|
303
227
|
viewDimension,
|
|
304
228
|
sampleType
|
|
305
229
|
};
|
|
306
230
|
}
|
|
307
|
-
|
|
308
231
|
function parseUniformName(name) {
|
|
309
232
|
if (name[name.length - 1] !== ']') {
|
|
310
233
|
return {
|
|
@@ -313,14 +236,11 @@ function parseUniformName(name) {
|
|
|
313
236
|
isArray: false
|
|
314
237
|
};
|
|
315
238
|
}
|
|
316
|
-
|
|
317
239
|
const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
|
|
318
|
-
const matches =
|
|
319
|
-
|
|
240
|
+
const matches = UNIFORM_NAME_REGEXP.exec(name);
|
|
320
241
|
if (!matches || matches.length < 2) {
|
|
321
|
-
throw new Error(
|
|
242
|
+
throw new Error(`Failed to parse GLSL uniform name ${name}`);
|
|
322
243
|
}
|
|
323
|
-
|
|
324
244
|
return {
|
|
325
245
|
name: matches[1],
|
|
326
246
|
length: matches[2] ? 1 : 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapter/helpers/get-shader-layout.ts"],"names":["GL","isWebGL2","Accessor","decodeUniformType","decodeAttributeType","getVertexFormat","isSamplerUniform","getShaderLayout","gl","program","programBindings","getProgramBindings","shaderLayout","attributes","bindings","attribute","format","accessor","type","FLOAT","size","push","name","location","stepMode","divisor","uniformBlock","uniformBlocks","uniforms","map","uniform","byteOffset","byteStride","arrayLength","visibility","vertex","fragment","minBindingSize","byteLength","textureUnit","viewDimension","sampleType","getSamplerInfo","filter","length","varyings","config","readAttributeBindings","readUniformBindings","readUniformBlocks","readVaryings","Object","seal","count","getProgramParameter","ACTIVE_ATTRIBUTES","index","activeInfo","getActiveAttrib","Error","compositeType","getAttribLocation","glType","components","test","attributeInfo","sort","a","b","gl2","TRANSFORM_FEEDBACK_VARYINGS","getTransformFeedbackVarying","varying","uniformCount","ACTIVE_UNIFORMS","i","getActiveUniform","rawName","isArray","parseUniformName","webglLocation","getUniformLocation","uniformInfo","j","elementName","arrayElementUniformInfo","getBlockParameter","blockIndex","pname","getActiveUniformBlockParameter","blockCount","ACTIVE_UNIFORM_BLOCKS","blockInfo","getActiveUniformBlockName","UNIFORM_BLOCK_BINDING","UNIFORM_BLOCK_DATA_SIZE","UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER","UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER","UNIFORM_BLOCK_ACTIVE_UNIFORMS","uniformIndices","UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES","uniformType","getActiveUniforms","UNIFORM_TYPE","uniformArrayLength","UNIFORM_SIZE","uniformBlockIndex","UNIFORM_BLOCK_INDEX","uniformOffset","UNIFORM_OFFSET","uniformStride","UNIFORM_ARRAY_STRIDE","uniformMatrixStride","UNIFORM_MATRIX_STRIDE","uniformRowMajor","UNIFORM_IS_ROW_MAJOR","SAMPLER_UNIFORMS_GL_TO_GPU","SAMPLER_2D","SAMPLER_CUBE","SAMPLER_3D","SAMPLER_2D_SHADOW","SAMPLER_2D_ARRAY","SAMPLER_2D_ARRAY_SHADOW","SAMPLER_CUBE_SHADOW","INT_SAMPLER_2D","INT_SAMPLER_3D","INT_SAMPLER_CUBE","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D_ARRAY","sampler","UNIFORM_NAME_REGEXP","matches","match","Boolean"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\n\nimport {\n ShaderLayout,\n BindingLayout,\n UniformBinding,\n UniformBlockBinding,\n ProgramBindings,\n AttributeBinding,\n VaryingBinding,\n AttributeLayout,\n AccessorObject\n} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\nimport Accessor from '../../classic/accessor'; // TODO - should NOT depend on classic API\nimport {decodeUniformType, decodeAttributeType} from './uniforms';\nimport {getVertexFormat} from '../converters/vertex-formats';\nimport {isSamplerUniform} from './uniforms';\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n */\nexport function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {\n const programBindings = getProgramBindings(gl, program);\n\n const shaderLayout: ShaderLayout = {\n attributes: [],\n bindings: []\n };\n\n for (const attribute of programBindings.attributes) {\n const format =\n // attribute.accessor.format ||\n getVertexFormat(attribute.accessor.type || GL.FLOAT, attribute.accessor.size);\n shaderLayout.attributes.push({\n name: attribute.name,\n location: attribute.location,\n format,\n stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'\n });\n }\n\n // Uniform blocks\n for (const uniformBlock of programBindings.uniformBlocks) {\n const uniforms = uniformBlock.uniforms.map((uniform) => ({\n name: uniform.name,\n format: uniform.format,\n byteOffset: uniform.byteOffset,\n byteStride: uniform.byteStride,\n arrayLength: uniform.arrayLength\n }));\n shaderLayout.bindings.push({\n type: 'uniform',\n name: uniformBlock.name,\n location: uniformBlock.location,\n visibility: (uniformBlock.vertex ? 0x1 : 0) & (uniformBlock.fragment ? 0x2 : 0),\n minBindingSize: uniformBlock.byteLength,\n uniforms\n });\n }\n\n let textureUnit = 0;\n for (const uniform of programBindings.uniforms) {\n if (isSamplerUniform(uniform.type)) {\n const {viewDimension, sampleType} = getSamplerInfo(uniform.type);\n shaderLayout.bindings.push({\n type: 'texture',\n name: uniform.name,\n location: textureUnit,\n viewDimension,\n sampleType\n });\n\n // @ts-expect-error\n uniform.textureUnit = textureUnit;\n textureUnit += 1;\n }\n }\n\n const uniforms = programBindings.uniforms?.filter((uniform) => uniform.location !== null) || [];\n if (uniforms.length) {\n shaderLayout.uniforms = uniforms;\n }\n if (programBindings.varyings?.length) {\n shaderLayout.varyings = programBindings.varyings;\n }\n\n return shaderLayout;\n}\n\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n */\nexport function getProgramBindings(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): ProgramBindings {\n const config: ProgramBindings = {\n attributes: readAttributeBindings(gl, program),\n uniforms: readUniformBindings(gl, program),\n uniformBlocks: readUniformBlocks(gl, program),\n varyings: readVaryings(gl, program)\n };\n\n Object.seal(config);\n return config;\n // generateWebGPUStyleBindings(bindings);\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readAttributeBindings(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): AttributeBinding[] {\n const attributes: AttributeBinding[] = [];\n\n const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const activeInfo = gl.getActiveAttrib(program, index);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType, size} = activeInfo;\n const location = gl.getAttribLocation(program, name);\n // Add only user provided attributes, for built-in attributes like\n // `gl_InstanceID` locaiton will be < 0\n if (location >= 0) {\n const {glType, components} = decodeAttributeType(compositeType);;\n const accessor: AccessorObject = {type: glType, size: size * components};\n // Any attribute name containing the word \"instance\" will be assumed to be instanced\n if (/instance/i.test(name)) {\n accessor.divisor = 1;\n }\n const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values\n attributes.push(attributeInfo);\n }\n }\n\n attributes.sort((a: AttributeBinding, b: AttributeBinding) => a.location - b.location);\n return attributes;\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): VaryingBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const varyings: VaryingBinding[] = [];\n\n const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const activeInfo = gl2.getTransformFeedbackVarying(program, location);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType, size} = activeInfo;\n const {glType, components} = decodeUniformType(compositeType);;\n const accessor = new Accessor({type: glType, size: size * components});\n const varying = {location, name, accessor}; // Base values\n varyings.push(varying);\n }\n\n varyings.sort((a, b) => a.location - b.location);\n return varyings;\n}\n\n/**\n * Extract info about all uniforms\n *\n * Query uniform locations and build name to setter map.\n */\nfunction readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram): UniformBinding[] {\n const uniforms: UniformBinding[] = [];\n\n const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < uniformCount; i++) {\n const activeInfo = gl.getActiveUniform(program, i);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name: rawName, size, type} = activeInfo;\n const {name, isArray} = parseUniformName(rawName);\n let webglLocation = gl.getUniformLocation(program, name);\n const uniformInfo = {\n // WebGL locations are uniquely typed but just numbers\n location: webglLocation as number,\n name,\n size,\n type,\n isArray\n };\n uniforms.push(uniformInfo);\n\n // Array (e.g. matrix) uniforms can occupy several 4x4 byte banks\n if (uniformInfo.size > 1) {\n for (let j = 0; j < uniformInfo.size; j++) {\n const elementName = `${name}[${j}]`;\n\n webglLocation = gl.getUniformLocation(program, elementName);\n\n const arrayElementUniformInfo = {\n ...uniformInfo,\n name: elementName,\n location: webglLocation as number\n };\n\n uniforms.push(arrayElementUniformInfo);\n }\n }\n }\n return uniforms;\n}\n\n/**\n * Extract info about all \"active\" uniform blocks\n *\n * (\"Active\" just means that unused (aka inactive) blocks may have been\n * optimized away during linking)\n */\nfunction readUniformBlocks(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): UniformBlockBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const getBlockParameter = (blockIndex: number, pname: GL): any =>\n gl2.getActiveUniformBlockParameter(program, blockIndex, pname);\n\n const uniformBlocks: UniformBlockBinding[] = [];\n\n const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {\n const blockInfo: UniformBlockBinding = {\n name: gl2.getActiveUniformBlockName(program, blockIndex) || '',\n location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),\n byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),\n vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n fragment: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n uniformCount: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n uniforms: [] as any[]\n };\n\n const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[] || [];\n\n const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.\n const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.\n const uniformBlockIndex = gl2.getActiveUniforms(\n program,\n uniformIndices,\n GL.UNIFORM_BLOCK_INDEX\n ); // Array of GLint indicating the block indices of the uniforms.\n const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.\n const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.\n const uniformMatrixStride = gl2.getActiveUniforms(\n program,\n uniformIndices,\n GL.UNIFORM_MATRIX_STRIDE\n ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.\n const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);\n for (let i = 0; i < blockInfo.uniformCount; ++i) {\n const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n \n blockInfo.uniforms.push({\n name: activeInfo.name,\n format: decodeUniformType(uniformType[i]).format,\n type: uniformType[i],\n arrayLength: uniformArrayLength[i],\n byteOffset: uniformOffset[i],\n byteStride: uniformStride[i],\n // matrixStride: uniformStride[i],\n // rowMajor: uniformRowMajor[i]\n });\n }\n\n uniformBlocks.push(blockInfo);\n }\n\n uniformBlocks.sort((a, b) => a.location - b.location);\n return uniformBlocks;\n}\n\nconst SAMPLER_UNIFORMS_GL_TO_GPU: Record<\n number,\n [\n '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d',\n 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint'\n ]\n> = {\n [GL.SAMPLER_2D]: ['2d', 'float'],\n [GL.SAMPLER_CUBE]: ['cube', 'float'],\n [GL.SAMPLER_3D]: ['3d', 'float'],\n [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],\n [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],\n [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],\n [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],\n [GL.INT_SAMPLER_2D]: ['2d', 'sint'],\n [GL.INT_SAMPLER_3D]: ['3d', 'sint'],\n [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],\n [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']\n};\n\ntype SamplerInfo = | {\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\n sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';\n};\n\nfunction getSamplerInfo(type: GL): SamplerInfo {\n let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];\n if (!sampler) {\n throw new Error('sampler');\n }\n const [viewDimension, sampleType] = sampler;\n return {viewDimension, sampleType};\n}\n\n// HELPERS\n\nfunction parseUniformName(name: string): {name: string; length: number; isArray: boolean} {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] ? 1 : 0,\n isArray: Boolean(matches[2])\n };\n}\n\n/**\n * TODO - verify this is a copy of above and delete\n * import type {TextureFormat} from '@luma.gl/api';\n* Extract info about all \"active\" uniform blocks\n * (\"Active\" just means that unused (inactive) blocks may have been optimized away during linking)\n *\n function getUniformBlockBindings(gl, program): Binding[] {\n if (!isWebGL2(gl)) {\n return;\n }\n const bindings: Binding[] = [];\n const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < count; blockIndex++) {\n const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n const visibility = (vertex) + (fragment);\n const binding: BufferBinding = {\n location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),\n // name: gl.getActiveUniformBlockName(program, blockIndex),\n type: 'uniform',\n visibility,\n minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),\n // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),\n }\n bindings.push(binding);\n }\n return bindings;\n}\n\nfunction setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {\n for (const bindGroup of bindings) {\n for (const binding of bindGroup) {\n\n }\n }\n\n // Set up indirection table\n // this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n}\n */\n"],"file":"get-shader-layout.js"}
|
|
1
|
+
{"version":3,"file":"get-shader-layout.js","names":["isWebGL2","Accessor","decodeGLUniformType","decodeGLAttributeType","isSamplerUniform","getShaderLayout","gl","program","shaderLayout","attributes","bindings","readAttributeDeclarations","uniformBlocks","readUniformBlocks","uniformBlock","uniforms","map","uniform","name","format","byteOffset","byteStride","arrayLength","push","type","location","visibility","vertex","fragment","minBindingSize","byteLength","readUniformBindings","textureUnit","viewDimension","sampleType","getSamplerInfo","length","varyings","readVaryings","count","getProgramParameter","index","activeInfo","getActiveAttrib","Error","compositeType","getAttribLocation","attributeType","stepMode","test","sort","a","b","gl2","getTransformFeedbackVarying","size","glType","components","accessor","varying","uniformCount","i","getActiveUniform","rawName","isArray","parseUniformName","webglLocation","getUniformLocation","uniformInfo","j","elementName","arrayElementUniformInfo","getBlockParameter","blockIndex","pname","getActiveUniformBlockParameter","blockCount","blockInfo","getActiveUniformBlockName","uniformIndices","uniformType","getActiveUniforms","uniformArrayLength","uniformOffset","uniformStride","SAMPLER_UNIFORMS_GL_TO_GPU","sampler","UNIFORM_NAME_REGEXP","matches","exec","Boolean"],"sources":["../../../src/adapter/helpers/get-shader-layout.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {\n ShaderLayout,\n UniformBinding,\n UniformBlockBinding,\n AttributeDeclaration,\n VaryingBinding\n} from '@luma.gl/core';\n\nimport {GL} from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\nimport {Accessor} from '../../classic/accessor'; // TODO - should NOT depend on classic API\nimport {decodeGLUniformType, decodeGLAttributeType, isSamplerUniform} from './decode-webgl-types';\n\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n */\nexport function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {\n const shaderLayout: ShaderLayout = {\n attributes: [],\n bindings: []\n };\n\n shaderLayout.attributes = readAttributeDeclarations(gl, program);\n\n // Uniform blocks\n const uniformBlocks: UniformBlockBinding[] = readUniformBlocks(gl, program);\n for (const uniformBlock of uniformBlocks) {\n const uniforms = uniformBlock.uniforms.map(uniform => ({\n name: uniform.name,\n format: uniform.format,\n byteOffset: uniform.byteOffset,\n byteStride: uniform.byteStride,\n arrayLength: uniform.arrayLength\n }));\n shaderLayout.bindings.push({\n type: 'uniform',\n name: uniformBlock.name,\n location: uniformBlock.location,\n visibility: (uniformBlock.vertex ? 0x1 : 0) & (uniformBlock.fragment ? 0x2 : 0),\n minBindingSize: uniformBlock.byteLength,\n uniforms\n });\n }\n\n const uniforms: UniformBinding[] = readUniformBindings(gl, program);\n let textureUnit = 0;\n for (const uniform of uniforms) {\n if (isSamplerUniform(uniform.type)) {\n const {viewDimension, sampleType} = getSamplerInfo(uniform.type);\n shaderLayout.bindings.push({\n type: 'texture',\n name: uniform.name,\n location: textureUnit,\n viewDimension,\n sampleType\n });\n\n // @ts-expect-error\n uniform.textureUnit = textureUnit;\n textureUnit += 1;\n }\n }\n\n if (uniforms.length) {\n shaderLayout.uniforms = uniforms;\n }\n\n // Varyings\n const varyings: VaryingBinding[] = readVaryings(gl, program);\n // Note - samplers are always in unform bindings, even if uniform blocks are used\n if (varyings?.length) {\n shaderLayout.varyings = varyings;\n }\n\n return shaderLayout;\n}\n\n// HELPERS\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readAttributeDeclarations(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): AttributeDeclaration[] {\n const attributes: AttributeDeclaration[] = [];\n\n const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const activeInfo = gl.getActiveAttrib(program, index);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType /* , size*/} = activeInfo;\n const location = gl.getAttribLocation(program, name);\n // Add only user provided attributes, for built-in attributes like `gl_InstanceID` location will be < 0\n if (location >= 0) {\n const {attributeType} = decodeGLAttributeType(compositeType);\n\n // Whether an attribute is instanced is essentially fixed by the structure of the shader code, \n // so it is arguably a static property of the shader.\n // There is no hint in the shader declarations\n // Heuristic: Any attribute name containing the word \"instance\" will be assumed to be instanced\n const stepMode = /instance/i.test(name) ? 'instance' : 'vertex';\n\n attributes.push({\n name,\n location,\n stepMode,\n type: attributeType,\n // size - for arrays, size is the number of elements in the array\n });\n }\n }\n\n // Sort by declaration order\n attributes.sort((a: AttributeDeclaration, b: AttributeDeclaration) => a.location - b.location);\n return attributes;\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): VaryingBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const varyings: VaryingBinding[] = [];\n\n const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const activeInfo = gl2.getTransformFeedbackVarying(program, location);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType, size} = activeInfo;\n const {glType, components} = decodeGLUniformType(compositeType);\n const accessor = new Accessor({type: glType, size: size * components});\n const varying = {location, name, accessor}; // Base values\n varyings.push(varying);\n }\n\n varyings.sort((a, b) => a.location - b.location);\n return varyings;\n}\n\n/**\n * Extract info about all uniforms\n *\n * Query uniform locations and build name to setter map.\n */\nfunction readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram): UniformBinding[] {\n const uniforms: UniformBinding[] = [];\n\n const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < uniformCount; i++) {\n const activeInfo = gl.getActiveUniform(program, i);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name: rawName, size, type} = activeInfo;\n const {name, isArray} = parseUniformName(rawName);\n let webglLocation = gl.getUniformLocation(program, name);\n const uniformInfo = {\n // WebGL locations are uniquely typed but just numbers\n location: webglLocation as number,\n name,\n size,\n type,\n isArray\n };\n uniforms.push(uniformInfo);\n\n // Array (e.g. matrix) uniforms can occupy several 4x4 byte banks\n if (uniformInfo.size > 1) {\n for (let j = 0; j < uniformInfo.size; j++) {\n const elementName = `${name}[${j}]`;\n\n webglLocation = gl.getUniformLocation(program, elementName);\n\n const arrayElementUniformInfo = {\n ...uniformInfo,\n name: elementName,\n location: webglLocation as number\n };\n\n uniforms.push(arrayElementUniformInfo);\n }\n }\n }\n return uniforms;\n}\n\n/**\n * Extract info about all \"active\" uniform blocks\n * @note In WebGL, \"active\" just means that unused (inactive) blocks may have been optimized away during linking)\n */\nfunction readUniformBlocks(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): UniformBlockBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const getBlockParameter = (blockIndex: number, pname: GL): any =>\n gl2.getActiveUniformBlockParameter(program, blockIndex, pname);\n\n const uniformBlocks: UniformBlockBinding[] = [];\n\n const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {\n const blockInfo: UniformBlockBinding = {\n name: gl2.getActiveUniformBlockName(program, blockIndex) || '',\n location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),\n byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),\n vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n fragment: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n uniformCount: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n uniforms: [] as any[]\n };\n\n const uniformIndices =\n (getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[]) || [];\n\n const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.\n const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.\n // const uniformBlockIndex = gl2.getActiveUniforms(\n // program,\n // uniformIndices,\n // GL.UNIFORM_BLOCK_INDEX\n // ); // Array of GLint indicating the block indices of the uniforms.\n const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.\n const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.\n // const uniformMatrixStride = gl2.getActiveUniforms(\n // program,\n // uniformIndices,\n // GL.UNIFORM_MATRIX_STRIDE\n // ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.\n // const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);\n for (let i = 0; i < blockInfo.uniformCount; ++i) {\n const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n\n blockInfo.uniforms.push({\n name: activeInfo.name,\n format: decodeGLUniformType(uniformType[i]).format,\n type: uniformType[i],\n arrayLength: uniformArrayLength[i],\n byteOffset: uniformOffset[i],\n byteStride: uniformStride[i]\n // matrixStride: uniformStride[i],\n // rowMajor: uniformRowMajor[i]\n });\n }\n\n uniformBlocks.push(blockInfo);\n }\n\n uniformBlocks.sort((a, b) => a.location - b.location);\n return uniformBlocks;\n}\n\n/**\n * TOOD - compare with a above, confirm copy, then delete\n const bindings: Binding[] = [];\n const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < count; blockIndex++) {\n const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n const visibility = (vertex) + (fragment);\n const binding: BufferBinding = {\n location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),\n // name: gl.getActiveUniformBlockName(program, blockIndex),\n type: 'uniform',\n visibility,\n minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),\n // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),\n }\n bindings.push(binding);\n }\n*/\n\nconst SAMPLER_UNIFORMS_GL_TO_GPU: Record<\n number,\n [\n '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d',\n 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint'\n ]\n> = {\n [GL.SAMPLER_2D]: ['2d', 'float'],\n [GL.SAMPLER_CUBE]: ['cube', 'float'],\n [GL.SAMPLER_3D]: ['3d', 'float'],\n [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],\n [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],\n [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],\n [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],\n [GL.INT_SAMPLER_2D]: ['2d', 'sint'],\n [GL.INT_SAMPLER_3D]: ['3d', 'sint'],\n [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],\n [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']\n};\n\ntype SamplerInfo = {\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\n sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';\n};\n\nfunction getSamplerInfo(type: GL): SamplerInfo {\n const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];\n if (!sampler) {\n throw new Error('sampler');\n }\n const [viewDimension, sampleType] = sampler;\n return {viewDimension, sampleType};\n}\n\n// HELPERS\n\nfunction parseUniformName(name: string): {name: string; length: number; isArray: boolean} {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = UNIFORM_NAME_REGEXP.exec(name);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] ? 1 : 0,\n isArray: Boolean(matches[2])\n };\n}\n"],"mappings":"SAYQA,QAAQ;AAAA,SACRC,QAAQ;AAAA,SACRC,mBAAmB,EAAEC,qBAAqB,EAAEC,gBAAgB;AAOpE,OAAO,SAASC,eAAeA,CAACC,EAAyB,EAAEC,OAAqB,EAAgB;EAC9F,MAAMC,YAA0B,GAAG;IACjCC,UAAU,EAAE,EAAE;IACdC,QAAQ,EAAE;EACZ,CAAC;EAEDF,YAAY,CAACC,UAAU,GAAGE,yBAAyB,CAACL,EAAE,EAAEC,OAAO,CAAC;EAGhE,MAAMK,aAAoC,GAAGC,iBAAiB,CAACP,EAAE,EAAEC,OAAO,CAAC;EAC3E,KAAK,MAAMO,YAAY,IAAIF,aAAa,EAAE;IACxC,MAAMG,QAAQ,GAAGD,YAAY,CAACC,QAAQ,CAACC,GAAG,CAACC,OAAO,KAAK;MACrDC,IAAI,EAAED,OAAO,CAACC,IAAI;MAClBC,MAAM,EAAEF,OAAO,CAACE,MAAM;MACtBC,UAAU,EAAEH,OAAO,CAACG,UAAU;MAC9BC,UAAU,EAAEJ,OAAO,CAACI,UAAU;MAC9BC,WAAW,EAAEL,OAAO,CAACK;IACvB,CAAC,CAAC,CAAC;IACHd,YAAY,CAACE,QAAQ,CAACa,IAAI,CAAC;MACzBC,IAAI,EAAE,SAAS;MACfN,IAAI,EAAEJ,YAAY,CAACI,IAAI;MACvBO,QAAQ,EAAEX,YAAY,CAACW,QAAQ;MAC/BC,UAAU,EAAE,CAACZ,YAAY,CAACa,MAAM,GAAG,GAAG,GAAG,CAAC,KAAKb,YAAY,CAACc,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;MAC/EC,cAAc,EAAEf,YAAY,CAACgB,UAAU;MACvCf;IACF,CAAC,CAAC;EACJ;EAEA,MAAMA,QAA0B,GAAGgB,mBAAmB,CAACzB,EAAE,EAAEC,OAAO,CAAC;EACnE,IAAIyB,WAAW,GAAG,CAAC;EACnB,KAAK,MAAMf,OAAO,IAAIF,QAAQ,EAAE;IAC9B,IAAIX,gBAAgB,CAACa,OAAO,CAACO,IAAI,CAAC,EAAE;MAClC,MAAM;QAACS,aAAa;QAAEC;MAAU,CAAC,GAAGC,cAAc,CAAClB,OAAO,CAACO,IAAI,CAAC;MAChEhB,YAAY,CAACE,QAAQ,CAACa,IAAI,CAAC;QACzBC,IAAI,EAAE,SAAS;QACfN,IAAI,EAAED,OAAO,CAACC,IAAI;QAClBO,QAAQ,EAAEO,WAAW;QACrBC,aAAa;QACbC;MACF,CAAC,CAAC;MAGFjB,OAAO,CAACe,WAAW,GAAGA,WAAW;MACjCA,WAAW,IAAI,CAAC;IAClB;EACF;EAEA,IAAIjB,QAAQ,CAACqB,MAAM,EAAE;IACnB5B,YAAY,CAACO,QAAQ,GAAGA,QAAQ;EAClC;EAGA,MAAMsB,QAA0B,GAAGC,YAAY,CAAChC,EAAE,EAAEC,OAAO,CAAC;EAE5D,IAAI8B,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAED,MAAM,EAAE;IACpB5B,YAAY,CAAC6B,QAAQ,GAAGA,QAAQ;EAClC;EAEA,OAAO7B,YAAY;AACrB;AASA,SAASG,yBAAyBA,CAChCL,EAAyB,EACzBC,OAAqB,EACG;EACxB,MAAME,UAAkC,GAAG,EAAE;EAE7C,MAAM8B,KAAK,GAAGjC,EAAE,CAACkC,mBAAmB,CAACjC,OAAO,OAAsB,CAAC;EAEnE,KAAK,IAAIkC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,KAAK,EAAEE,KAAK,EAAE,EAAE;IAC1C,MAAMC,UAAU,GAAGpC,EAAE,CAACqC,eAAe,CAACpC,OAAO,EAAEkC,KAAK,CAAC;IACrD,IAAI,CAACC,UAAU,EAAE;MACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM;MAAC1B,IAAI;MAAEM,IAAI,EAAEqB;IAAyB,CAAC,GAAGH,UAAU;IAC1D,MAAMjB,QAAQ,GAAGnB,EAAE,CAACwC,iBAAiB,CAACvC,OAAO,EAAEW,IAAI,CAAC;IAEpD,IAAIO,QAAQ,IAAI,CAAC,EAAE;MACjB,MAAM;QAACsB;MAAa,CAAC,GAAG5C,qBAAqB,CAAC0C,aAAa,CAAC;MAM5D,MAAMG,QAAQ,GAAG,WAAW,CAACC,IAAI,CAAC/B,IAAI,CAAC,GAAG,UAAU,GAAG,QAAQ;MAE/DT,UAAU,CAACc,IAAI,CAAC;QACdL,IAAI;QACJO,QAAQ;QACRuB,QAAQ;QACRxB,IAAI,EAAEuB;MAER,CAAC,CAAC;IACJ;EACF;EAGAtC,UAAU,CAACyC,IAAI,CAAC,CAACC,CAAuB,EAAEC,CAAuB,KAAKD,CAAC,CAAC1B,QAAQ,GAAG2B,CAAC,CAAC3B,QAAQ,CAAC;EAC9F,OAAOhB,UAAU;AACnB;AAOA,SAAS6B,YAAYA,CAAChC,EAAyB,EAAEC,OAAqB,EAAoB;EACxF,IAAI,CAACP,QAAQ,CAACM,EAAE,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EACA,MAAM+C,GAAG,GAAG/C,EAA4B;EAExC,MAAM+B,QAA0B,GAAG,EAAE;EAErC,MAAME,KAAK,GAAGjC,EAAE,CAACkC,mBAAmB,CAACjC,OAAO,OAAgC,CAAC;EAC7E,KAAK,IAAIkB,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGc,KAAK,EAAEd,QAAQ,EAAE,EAAE;IACnD,MAAMiB,UAAU,GAAGW,GAAG,CAACC,2BAA2B,CAAC/C,OAAO,EAAEkB,QAAQ,CAAC;IACrE,IAAI,CAACiB,UAAU,EAAE;MACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM;MAAC1B,IAAI;MAAEM,IAAI,EAAEqB,aAAa;MAAEU;IAAI,CAAC,GAAGb,UAAU;IACpD,MAAM;MAACc,MAAM;MAAEC;IAAU,CAAC,GAAGvD,mBAAmB,CAAC2C,aAAa,CAAC;IAC/D,MAAMa,QAAQ,GAAG,IAAIzD,QAAQ,CAAC;MAACuB,IAAI,EAAEgC,MAAM;MAAED,IAAI,EAAEA,IAAI,GAAGE;IAAU,CAAC,CAAC;IACtE,MAAME,OAAO,GAAG;MAAClC,QAAQ;MAAEP,IAAI;MAAEwC;IAAQ,CAAC;IAC1CrB,QAAQ,CAACd,IAAI,CAACoC,OAAO,CAAC;EACxB;EAEAtB,QAAQ,CAACa,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC1B,QAAQ,GAAG2B,CAAC,CAAC3B,QAAQ,CAAC;EAChD,OAAOY,QAAQ;AACjB;AAOA,SAASN,mBAAmBA,CAACzB,EAAyB,EAAEC,OAAqB,EAAoB;EAC/F,MAAMQ,QAA0B,GAAG,EAAE;EAErC,MAAM6C,YAAY,GAAGtD,EAAE,CAACkC,mBAAmB,CAACjC,OAAO,OAAoB,CAAC;EACxE,KAAK,IAAIsD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,YAAY,EAAEC,CAAC,EAAE,EAAE;IACrC,MAAMnB,UAAU,GAAGpC,EAAE,CAACwD,gBAAgB,CAACvD,OAAO,EAAEsD,CAAC,CAAC;IAClD,IAAI,CAACnB,UAAU,EAAE;MACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM;MAAC1B,IAAI,EAAE6C,OAAO;MAAER,IAAI;MAAE/B;IAAI,CAAC,GAAGkB,UAAU;IAC9C,MAAM;MAACxB,IAAI;MAAE8C;IAAO,CAAC,GAAGC,gBAAgB,CAACF,OAAO,CAAC;IACjD,IAAIG,aAAa,GAAG5D,EAAE,CAAC6D,kBAAkB,CAAC5D,OAAO,EAAEW,IAAI,CAAC;IACxD,MAAMkD,WAAW,GAAG;MAElB3C,QAAQ,EAAEyC,aAAuB;MACjChD,IAAI;MACJqC,IAAI;MACJ/B,IAAI;MACJwC;IACF,CAAC;IACDjD,QAAQ,CAACQ,IAAI,CAAC6C,WAAW,CAAC;IAG1B,IAAIA,WAAW,CAACb,IAAI,GAAG,CAAC,EAAE;MACxB,KAAK,IAAIc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,WAAW,CAACb,IAAI,EAAEc,CAAC,EAAE,EAAE;QACzC,MAAMC,WAAW,GAAI,GAAEpD,IAAK,IAAGmD,CAAE,GAAE;QAEnCH,aAAa,GAAG5D,EAAE,CAAC6D,kBAAkB,CAAC5D,OAAO,EAAE+D,WAAW,CAAC;QAE3D,MAAMC,uBAAuB,GAAG;UAC9B,GAAGH,WAAW;UACdlD,IAAI,EAAEoD,WAAW;UACjB7C,QAAQ,EAAEyC;QACZ,CAAC;QAEDnD,QAAQ,CAACQ,IAAI,CAACgD,uBAAuB,CAAC;MACxC;IACF;EACF;EACA,OAAOxD,QAAQ;AACjB;AAMA,SAASF,iBAAiBA,CACxBP,EAAyB,EACzBC,OAAqB,EACE;EACvB,IAAI,CAACP,QAAQ,CAACM,EAAE,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EACA,MAAM+C,GAAG,GAAG/C,EAA4B;EAExC,MAAMkE,iBAAiB,GAAGA,CAACC,UAAkB,EAAEC,KAAS,KACtDrB,GAAG,CAACsB,8BAA8B,CAACpE,OAAO,EAAEkE,UAAU,EAAEC,KAAK,CAAC;EAEhE,MAAM9D,aAAoC,GAAG,EAAE;EAE/C,MAAMgE,UAAU,GAAGvB,GAAG,CAACb,mBAAmB,CAACjC,OAAO,OAA0B,CAAC;EAC7E,KAAK,IAAIkE,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGG,UAAU,EAAEH,UAAU,EAAE,EAAE;IAC9D,MAAMI,SAA8B,GAAG;MACrC3D,IAAI,EAAEmC,GAAG,CAACyB,yBAAyB,CAACvE,OAAO,EAAEkE,UAAU,CAAC,IAAI,EAAE;MAC9DhD,QAAQ,EAAE+C,iBAAiB,CAACC,UAAU,OAA0B,CAAC;MACjE3C,UAAU,EAAE0C,iBAAiB,CAACC,UAAU,OAA4B,CAAC;MACrE9C,MAAM,EAAE6C,iBAAiB,CAACC,UAAU,OAA8C,CAAC;MACnF7C,QAAQ,EAAE4C,iBAAiB,CAACC,UAAU,OAAgD,CAAC;MACvFb,YAAY,EAAEY,iBAAiB,CAACC,UAAU,OAAkC,CAAC;MAC7E1D,QAAQ,EAAE;IACZ,CAAC;IAED,MAAMgE,cAAc,GACjBP,iBAAiB,CAACC,UAAU,OAAyC,CAAC,IAAiB,EAAE;IAE5F,MAAMO,WAAW,GAAG3B,GAAG,CAAC4B,iBAAiB,CAAC1E,OAAO,EAAEwE,cAAc,OAAiB,CAAC;IACnF,MAAMG,kBAAkB,GAAG7B,GAAG,CAAC4B,iBAAiB,CAAC1E,OAAO,EAAEwE,cAAc,OAAiB,CAAC;IAM1F,MAAMI,aAAa,GAAG9B,GAAG,CAAC4B,iBAAiB,CAAC1E,OAAO,EAAEwE,cAAc,OAAmB,CAAC;IACvF,MAAMK,aAAa,GAAG/B,GAAG,CAAC4B,iBAAiB,CAAC1E,OAAO,EAAEwE,cAAc,OAAyB,CAAC;IAO7F,KAAK,IAAIlB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgB,SAAS,CAACjB,YAAY,EAAE,EAAEC,CAAC,EAAE;MAC/C,MAAMnB,UAAU,GAAGW,GAAG,CAACS,gBAAgB,CAACvD,OAAO,EAAEwE,cAAc,CAAClB,CAAC,CAAC,CAAC;MACnE,IAAI,CAACnB,UAAU,EAAE;QACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;MAC/B;MAEAiC,SAAS,CAAC9D,QAAQ,CAACQ,IAAI,CAAC;QACtBL,IAAI,EAAEwB,UAAU,CAACxB,IAAI;QACrBC,MAAM,EAAEjB,mBAAmB,CAAC8E,WAAW,CAACnB,CAAC,CAAC,CAAC,CAAC1C,MAAM;QAClDK,IAAI,EAAEwD,WAAW,CAACnB,CAAC,CAAC;QACpBvC,WAAW,EAAE4D,kBAAkB,CAACrB,CAAC,CAAC;QAClCzC,UAAU,EAAE+D,aAAa,CAACtB,CAAC,CAAC;QAC5BxC,UAAU,EAAE+D,aAAa,CAACvB,CAAC;MAG7B,CAAC,CAAC;IACJ;IAEAjD,aAAa,CAACW,IAAI,CAACsD,SAAS,CAAC;EAC/B;EAEAjE,aAAa,CAACsC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC1B,QAAQ,GAAG2B,CAAC,CAAC3B,QAAQ,CAAC;EACrD,OAAOb,aAAa;AACtB;AAuBA,MAAMyE,0BAML,GAAG;EACF,SAAiB,CAAC,IAAI,EAAE,OAAO,CAAC;EAChC,SAAmB,CAAC,MAAM,EAAE,OAAO,CAAC;EACpC,SAAiB,CAAC,IAAI,EAAE,OAAO,CAAC;EAChC,SAAwB,CAAC,IAAI,EAAE,OAAO,CAAC;EACvC,SAAuB,CAAC,UAAU,EAAE,OAAO,CAAC;EAC5C,SAA8B,CAAC,UAAU,EAAE,OAAO,CAAC;EACnD,SAA0B,CAAC,MAAM,EAAE,OAAO,CAAC;EAC3C,SAAqB,CAAC,IAAI,EAAE,MAAM,CAAC;EACnC,SAAqB,CAAC,IAAI,EAAE,MAAM,CAAC;EACnC,SAAuB,CAAC,MAAM,EAAE,MAAM,CAAC;EACvC,SAA2B,CAAC,UAAU,EAAE,MAAM,CAAC;EAC/C,SAA8B,CAAC,IAAI,EAAE,MAAM,CAAC;EAC5C,SAA8B,CAAC,IAAI,EAAE,MAAM,CAAC;EAC5C,SAAgC,CAAC,MAAM,EAAE,MAAM,CAAC;EAChD,SAAoC,CAAC,UAAU,EAAE,MAAM;AACzD,CAAC;AAOD,SAASlD,cAAcA,CAACX,IAAQ,EAAe;EAC7C,MAAM8D,OAAO,GAAGD,0BAA0B,CAAC7D,IAAI,CAAC;EAChD,IAAI,CAAC8D,OAAO,EAAE;IACZ,MAAM,IAAI1C,KAAK,CAAC,SAAS,CAAC;EAC5B;EACA,MAAM,CAACX,aAAa,EAAEC,UAAU,CAAC,GAAGoD,OAAO;EAC3C,OAAO;IAACrD,aAAa;IAAEC;EAAU,CAAC;AACpC;AAIA,SAAS+B,gBAAgBA,CAAC/C,IAAY,EAAoD;EAExF,IAAIA,IAAI,CAACA,IAAI,CAACkB,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;IACjC,OAAO;MACLlB,IAAI;MACJkB,MAAM,EAAE,CAAC;MACT4B,OAAO,EAAE;IACX,CAAC;EACH;EAGA,MAAMuB,mBAAmB,GAAG,sBAAsB;EAClD,MAAMC,OAAO,GAAGD,mBAAmB,CAACE,IAAI,CAACvE,IAAI,CAAC;EAC9C,IAAI,CAACsE,OAAO,IAAIA,OAAO,CAACpD,MAAM,GAAG,CAAC,EAAE;IAClC,MAAM,IAAIQ,KAAK,CAAE,qCAAoC1B,IAAK,EAAC,CAAC;EAC9D;EAEA,OAAO;IACLA,IAAI,EAAEsE,OAAO,CAAC,CAAC,CAAC;IAChBpD,MAAM,EAAEoD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC1BxB,OAAO,EAAE0B,OAAO,CAACF,OAAO,CAAC,CAAC,CAAC;EAC7B,CAAC;AACH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CompilerMessage } from '@luma.gl/
|
|
1
|
+
import type { CompilerMessage } from '@luma.gl/core';
|
|
2
2
|
/**
|
|
3
3
|
* Parse a WebGL-format GLSL compilation log into an array of WebGPU style message records.
|
|
4
4
|
* This follows documented WebGL conventions for compilation logs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-shader-compiler-log.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/parse-shader-compiler-log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-shader-compiler-log.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/parse-shader-compiler-log.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAI,SAAS,eAAe,EAAE,CA8ClF"}
|
|
@@ -1,37 +1,42 @@
|
|
|
1
|
-
const MESSAGE_TYPES = ['warning', 'error', 'info'];
|
|
2
1
|
export function parseShaderCompilerLog(errLog) {
|
|
3
2
|
const lines = errLog.split(/\r?\n/);
|
|
4
3
|
const messages = [];
|
|
5
|
-
|
|
6
4
|
for (const line of lines) {
|
|
7
5
|
if (line.length <= 1) {
|
|
8
6
|
continue;
|
|
9
7
|
}
|
|
10
|
-
|
|
11
8
|
const segments = line.split(':');
|
|
9
|
+
if (segments.length === 2) {
|
|
10
|
+
const [messageType, message] = segments;
|
|
11
|
+
messages.push({
|
|
12
|
+
message: message.trim(),
|
|
13
|
+
type: getMessageType(messageType),
|
|
14
|
+
lineNum: 0,
|
|
15
|
+
linePos: 0
|
|
16
|
+
});
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
12
19
|
const [messageType, linePosition, lineNumber, ...rest] = segments;
|
|
13
20
|
let lineNum = parseInt(lineNumber, 10);
|
|
14
|
-
|
|
15
21
|
if (isNaN(lineNum)) {
|
|
16
22
|
lineNum = 0;
|
|
17
23
|
}
|
|
18
|
-
|
|
19
24
|
let linePos = parseInt(linePosition, 10);
|
|
20
|
-
|
|
21
25
|
if (isNaN(linePos)) {
|
|
22
26
|
linePos = 0;
|
|
23
27
|
}
|
|
24
|
-
|
|
25
|
-
const lowerCaseType = messageType.toLowerCase();
|
|
26
|
-
const type = MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info';
|
|
27
28
|
messages.push({
|
|
28
29
|
message: rest.join(':').trim(),
|
|
29
|
-
type,
|
|
30
|
+
type: getMessageType(messageType),
|
|
30
31
|
lineNum,
|
|
31
32
|
linePos
|
|
32
33
|
});
|
|
33
34
|
}
|
|
34
|
-
|
|
35
35
|
return messages;
|
|
36
36
|
}
|
|
37
|
+
function getMessageType(messageType) {
|
|
38
|
+
const MESSAGE_TYPES = ['warning', 'error', 'info'];
|
|
39
|
+
const lowerCaseType = messageType.toLowerCase();
|
|
40
|
+
return MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info';
|
|
41
|
+
}
|
|
37
42
|
//# sourceMappingURL=parse-shader-compiler-log.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"parse-shader-compiler-log.js","names":["parseShaderCompilerLog","errLog","lines","split","messages","line","length","segments","messageType","message","push","trim","type","getMessageType","lineNum","linePos","linePosition","lineNumber","rest","parseInt","isNaN","join","MESSAGE_TYPES","lowerCaseType","toLowerCase","includes"],"sources":["../../../src/adapter/helpers/parse-shader-compiler-log.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {CompilerMessage} from '@luma.gl/core';\n\n/**\n * Parse a WebGL-format GLSL compilation log into an array of WebGPU style message records.\n * This follows documented WebGL conventions for compilation logs.\n * Based on https://github.com/wwwtyro/gl-format-compiler-error (public domain)\n */\nexport function parseShaderCompilerLog(errLog: string) : readonly CompilerMessage[] {\n // Parse the error - note: browser and driver dependent\n const lines = errLog.split(/\\r?\\n/);\n\n const messages: CompilerMessage[] = [];\n\n for (const line of lines) {\n if (line.length <= 1) {\n continue; // eslint-disable-line no-continue\n }\n\n const segments: string[] = line.split(':');\n\n // Check for messages with no line information `ERROR: unsupported shader version`\n if (segments.length === 2) {\n const [messageType, message] = segments;\n messages.push({\n message: message.trim(),\n type: getMessageType(messageType),\n lineNum: 0,\n linePos: 0\n });\n continue; // eslint-disable-line no-continue \n }\n\n const [messageType, linePosition, lineNumber, ...rest] = segments;\n\n let lineNum = parseInt(lineNumber, 10);\n if (isNaN(lineNum)) {\n lineNum = 0;\n }\n\n let linePos = parseInt(linePosition, 10);\n if (isNaN(linePos)) {\n linePos = 0;\n }\n\n messages.push({\n message: rest.join(':').trim(),\n type: getMessageType(messageType),\n lineNum,\n linePos // TODO\n })\n }\n\n return messages;\n}\n\n/** Ensure supported type */\nfunction getMessageType(messageType: string): 'warning' | 'error' | 'info' { \n const MESSAGE_TYPES = ['warning', 'error', 'info'];\n const lowerCaseType = messageType.toLowerCase();\n return (MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info') as 'warning' | 'error' | 'info';\n}\n"],"mappings":"AAUA,OAAO,SAASA,sBAAsBA,CAACC,MAAc,EAA+B;EAElF,MAAMC,KAAK,GAAGD,MAAM,CAACE,KAAK,CAAC,OAAO,CAAC;EAEnC,MAAMC,QAA2B,GAAG,EAAE;EAEtC,KAAK,MAAMC,IAAI,IAAIH,KAAK,EAAE;IACxB,IAAIG,IAAI,CAACC,MAAM,IAAI,CAAC,EAAE;MACpB;IACF;IAEA,MAAMC,QAAkB,GAAGF,IAAI,CAACF,KAAK,CAAC,GAAG,CAAC;IAG1C,IAAII,QAAQ,CAACD,MAAM,KAAK,CAAC,EAAE;MACzB,MAAM,CAACE,WAAW,EAAEC,OAAO,CAAC,GAAGF,QAAQ;MACvCH,QAAQ,CAACM,IAAI,CAAC;QACZD,OAAO,EAAEA,OAAO,CAACE,IAAI,CAAC,CAAC;QACvBC,IAAI,EAAEC,cAAc,CAACL,WAAW,CAAC;QACjCM,OAAO,EAAE,CAAC;QACVC,OAAO,EAAE;MACX,CAAC,CAAC;MACF;IACF;IAEA,MAAM,CAACP,WAAW,EAAEQ,YAAY,EAAEC,UAAU,EAAE,GAAGC,IAAI,CAAC,GAAGX,QAAQ;IAEjE,IAAIO,OAAO,GAAGK,QAAQ,CAACF,UAAU,EAAE,EAAE,CAAC;IACtC,IAAIG,KAAK,CAACN,OAAO,CAAC,EAAE;MAClBA,OAAO,GAAG,CAAC;IACb;IAEA,IAAIC,OAAO,GAAGI,QAAQ,CAACH,YAAY,EAAE,EAAE,CAAC;IACxC,IAAII,KAAK,CAACL,OAAO,CAAC,EAAE;MAClBA,OAAO,GAAG,CAAC;IACb;IAEAX,QAAQ,CAACM,IAAI,CAAC;MACZD,OAAO,EAAES,IAAI,CAACG,IAAI,CAAC,GAAG,CAAC,CAACV,IAAI,CAAC,CAAC;MAC9BC,IAAI,EAAEC,cAAc,CAACL,WAAW,CAAC;MACjCM,OAAO;MACPC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOX,QAAQ;AACjB;AAGA,SAASS,cAAcA,CAACL,WAAmB,EAAgC;EACzE,MAAMc,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;EAClD,MAAMC,aAAa,GAAGf,WAAW,CAACgB,WAAW,CAAC,CAAC;EAC/C,OAAQF,aAAa,CAACG,QAAQ,CAACF,aAAa,CAAC,GAAGA,aAAa,GAAG,MAAM;AACxE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { UniformValue } from '@luma.gl/core';
|
|
2
|
+
import { GLCompositeType, GLSamplerType } from '@luma.gl/constants';
|
|
2
3
|
/** Set a raw uniform (without type conversion and caching) */
|
|
3
|
-
export declare function setUniform(gl: WebGLRenderingContext, location: WebGLUniformLocation, type:
|
|
4
|
+
export declare function setUniform(gl: WebGLRenderingContext, location: WebGLUniformLocation, type: GLCompositeType | GLSamplerType, value: UniformValue): void;
|
|
4
5
|
//# sourceMappingURL=set-uniform.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-uniform.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/set-uniform.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"set-uniform.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/set-uniform.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,EAAK,eAAe,EAAE,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEtE,8DAA8D;AAE9D,wBAAgB,UAAU,CACxB,EAAE,EAAE,qBAAqB,EACzB,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,eAAe,GAAG,aAAa,EACrC,KAAK,EAAE,YAAY,GAClB,IAAI,CA0EN"}
|