@luma.gl/webgl 9.0.0-alpha.2 → 9.0.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/converters/device-parameters.d.ts +11 -1
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +17 -35
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/renderbuffer-formats.js +1 -5
- package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +4 -4
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +19 -55
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +13 -66
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +2 -8
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +13 -20
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +1 -4
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +8 -10
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.js +2 -1
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
- package/dist/adapter/helpers/attribute-utils.js +0 -17
- package/dist/adapter/helpers/attribute-utils.js.map +1 -1
- package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
- package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
- package/dist/adapter/helpers/get-shader-info.js +25 -0
- package/dist/adapter/helpers/get-shader-info.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +41 -67
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +1 -31
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/uniforms.d.ts +1 -1
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
- package/dist/adapter/helpers/uniforms.js +4 -14
- package/dist/adapter/helpers/uniforms.js.map +1 -1
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +0 -7
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +5 -21
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +2 -4
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +14 -67
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +6 -16
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +1 -2
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +17 -48
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +2 -17
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +1 -14
- 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 +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +9 -67
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +2 -7
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +50 -139
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +3 -2
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +4 -12
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +1 -2
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +7 -20
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +23 -23
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +65 -182
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +5 -18
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +45 -29
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +107 -108
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +11 -35
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/buffer.d.ts +0 -1
- package/dist/classic/buffer.d.ts.map +1 -1
- package/dist/classic/buffer.js +29 -86
- package/dist/classic/buffer.js.map +1 -1
- package/dist/classic/typed-array-utils.d.ts +1 -1
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +0 -20
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
- package/dist/context/context/create-browser-context.d.ts.map +1 -0
- package/dist/context/context/{create-context.js → create-browser-context.js} +19 -15
- package/dist/context/context/create-browser-context.js.map +1 -0
- package/dist/context/context/create-headless-context.d.ts +9 -0
- package/dist/context/context/create-headless-context.d.ts.map +1 -0
- package/dist/context/context/create-headless-context.js +42 -0
- package/dist/context/context/create-headless-context.js.map +1 -0
- package/dist/context/context/webgl-checks.js +0 -3
- package/dist/context/context/webgl-checks.js.map +1 -1
- package/dist/context/debug/spector.d.ts +1 -0
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +7 -19
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +8 -32
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +6 -5
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +8 -18
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +16 -34
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/context-data.d.ts +13 -0
- package/dist/context/polyfill/context-data.d.ts.map +1 -0
- package/dist/context/polyfill/context-data.js +12 -0
- package/dist/context/polyfill/context-data.js.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +1 -6
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +20 -28
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +8 -8
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +8 -30
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +0 -4
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +15 -50
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts +2 -1
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +7 -9
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +9205 -0
- package/dist/index.cjs +5948 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -26
- package/dist/index.js.map +1 -1
- package/dist/types/webgl.d.ts +8 -7
- package/dist/types/webgl.d.ts.map +1 -1
- package/dist/types/webgl.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist.min.js +36 -0
- package/package.json +18 -9
- package/src/adapter/converters/device-parameters.ts +44 -15
- package/src/adapter/converters/sampler-parameters.ts +18 -7
- package/src/adapter/converters/texture-formats.ts +18 -16
- package/src/adapter/converters/vertex-formats.ts +1 -0
- package/src/adapter/device-helpers/device-features.ts +9 -2
- package/src/adapter/device-helpers/device-limits.ts +1 -1
- package/src/adapter/device-helpers/get-device-info.ts +12 -8
- package/src/adapter/helpers/get-shader-info.ts +37 -0
- package/src/adapter/helpers/get-shader-layout.ts +58 -36
- package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
- package/src/adapter/helpers/set-uniform.ts +3 -1
- package/src/adapter/helpers/uniforms.ts +21 -10
- package/src/adapter/objects/constants-to-keys.ts +4 -1
- package/src/adapter/objects/webgl-renderbuffer.ts +5 -5
- package/src/adapter/objects/webgl-resource.ts +7 -12
- package/src/adapter/objects/webgl-vertex-array-object.ts +5 -5
- package/src/adapter/resources/webgl-buffer.ts +14 -14
- package/src/adapter/resources/webgl-command-encoder.ts +5 -5
- package/src/adapter/resources/webgl-framebuffer.ts +14 -11
- package/src/adapter/resources/webgl-render-pass.ts +2 -1
- package/src/adapter/resources/webgl-render-pipeline.ts +83 -71
- package/src/adapter/resources/webgl-sampler.ts +10 -4
- package/src/adapter/resources/webgl-shader.ts +9 -8
- package/src/adapter/resources/webgl-texture.ts +51 -41
- package/src/adapter/webgl-canvas-context.ts +5 -6
- package/src/adapter/webgl-device.ts +144 -60
- package/src/classic/accessor.ts +1 -14
- package/src/classic/buffer.ts +14 -21
- package/src/classic/typed-array-utils.ts +4 -2
- package/src/context/context/{create-context.ts → create-browser-context.ts} +17 -7
- package/src/context/context/create-headless-context.ts +48 -0
- package/src/context/debug/spector.ts +6 -5
- package/src/context/debug/webgl-developer-tools.ts +13 -13
- package/src/context/parameters/unified-parameter-api.ts +17 -11
- package/src/context/parameters/webgl-parameter-tables.ts +113 -94
- package/src/context/polyfill/context-data.ts +27 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
- package/src/context/polyfill/polyfill-context.ts +6 -8
- package/src/context/polyfill/polyfill-table.ts +16 -14
- package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
- package/src/context/state-tracker/track-context-state.ts +13 -12
- package/src/context/state-tracker/with-parameters.ts +8 -2
- package/src/index.ts +14 -12
- package/src/types/webgl.ts +10 -7
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/bundle.js.map +0 -1
- package/dist/context/context/context-state.d.ts +0 -18
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -26
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/context/context/create-context.d.ts.map +0 -1
- package/dist/context/context/create-context.js.map +0 -1
- package/dist/context/context/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -98
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/es5/adapter/converters/device-parameters.js +0 -170
- package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
- package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/texture-formats.js +0 -1031
- package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
- package/dist/es5/adapter/converters/vertex-formats.js +0 -45
- package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-features.js +0 -144
- package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
- package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
- package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/adapter/helpers/set-uniform.js +0 -125
- package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/es5/adapter/helpers/uniforms.js +0 -112
- package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
- package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
- package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-resource.js +0 -292
- package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
- package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
- package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-shader.js +0 -149
- package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-texture.js +0 -986
- package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/es5/adapter/webgl-canvas-context.js +0 -97
- package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/es5/adapter/webgl-device.js +0 -399
- package/dist/es5/adapter/webgl-device.js.map +0 -1
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/classic/accessor.js +0 -181
- package/dist/es5/classic/accessor.js.map +0 -1
- package/dist/es5/classic/buffer.js +0 -470
- package/dist/es5/classic/buffer.js.map +0 -1
- package/dist/es5/classic/typed-array-utils.js +0 -126
- package/dist/es5/classic/typed-array-utils.js.map +0 -1
- package/dist/es5/context/context/context-state.js +0 -31
- package/dist/es5/context/context/context-state.js.map +0 -1
- package/dist/es5/context/context/create-context.js +0 -69
- package/dist/es5/context/context/create-context.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -115
- package/dist/es5/context/context/device-pixels.js.map +0 -1
- package/dist/es5/context/context/webgl-checks.js +0 -54
- package/dist/es5/context/context/webgl-checks.js.map +0 -1
- package/dist/es5/context/debug/spector.js +0 -133
- package/dist/es5/context/debug/spector.js.map +0 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
- package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
- package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-context.js +0 -135
- package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-table.js +0 -166
- package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/es5/context/state-tracker/track-context-state.js +0 -211
- package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/es5/context/state-tracker/with-parameters.js +0 -44
- package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/es5/index.js +0 -276
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/init.js +0 -10
- package/dist/es5/init.js.map +0 -1
- package/dist/es5/types/webgl.js +0 -6
- package/dist/es5/types/webgl.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/types.js.map +0 -1
- package/dist/esm/adapter/converters/device-parameters.js +0 -155
- package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
- package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/texture-formats.js +0 -954
- package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
- package/dist/esm/adapter/converters/vertex-formats.js +0 -35
- package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-features.js +0 -102
- package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
- package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
- package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/adapter/helpers/set-uniform.js +0 -115
- package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/esm/adapter/helpers/uniforms.js +0 -99
- package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
- package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
- package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-resource.js +0 -216
- package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
- package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
- package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-shader.js +0 -75
- package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-texture.js +0 -831
- package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/esm/adapter/webgl-canvas-context.js +0 -54
- package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/esm/adapter/webgl-device.js +0 -280
- package/dist/esm/adapter/webgl-device.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/classic/accessor.js +0 -144
- package/dist/esm/classic/accessor.js.map +0 -1
- package/dist/esm/classic/buffer.js +0 -384
- package/dist/esm/classic/buffer.js.map +0 -1
- package/dist/esm/classic/typed-array-utils.js +0 -112
- package/dist/esm/classic/typed-array-utils.js.map +0 -1
- package/dist/esm/context/context/context-state.js +0 -26
- package/dist/esm/context/context/context-state.js.map +0 -1
- package/dist/esm/context/context/create-context.js +0 -49
- package/dist/esm/context/context/create-context.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -98
- package/dist/esm/context/context/device-pixels.js.map +0 -1
- package/dist/esm/context/context/webgl-checks.js +0 -34
- package/dist/esm/context/context/webgl-checks.js.map +0 -1
- package/dist/esm/context/debug/spector.js +0 -76
- package/dist/esm/context/debug/spector.js.map +0 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
- package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
- package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-context.js +0 -92
- package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-table.js +0 -160
- package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/esm/context/state-tracker/track-context-state.js +0 -183
- package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/esm/context/state-tracker/with-parameters.js +0 -36
- package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/esm/index.js +0 -27
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/init.js +0 -4
- package/dist/esm/init.js.map +0 -1
- package/dist/esm/types/webgl.js +0 -2
- package/dist/esm/types/webgl.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/init.d.ts +0 -2
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -4
- package/dist/init.js.map +0 -1
- package/src/bundle.ts +0 -4
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/device-pixels.ts +0 -152
- package/src/init.ts +0 -4
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
|
-
import { isWebGL2 } from
|
|
3
|
-
import Accessor from
|
|
4
|
-
import { decodeUniformType, decodeAttributeType } from
|
|
5
|
-
import { getVertexFormat } from
|
|
6
|
-
import { isSamplerUniform } from
|
|
2
|
+
import { isWebGL2 } from "../../context/context/webgl-checks.js";
|
|
3
|
+
import Accessor from "../../classic/accessor.js";
|
|
4
|
+
import { decodeUniformType, decodeAttributeType } from "./uniforms.js";
|
|
5
|
+
import { getVertexFormat } from "../converters/vertex-formats.js";
|
|
6
|
+
import { isSamplerUniform } from "./uniforms.js";
|
|
7
7
|
export function getShaderLayout(gl, program) {
|
|
8
8
|
var _programBindings$unif, _programBindings$vary;
|
|
9
|
-
|
|
10
9
|
const programBindings = getProgramBindings(gl, program);
|
|
11
10
|
const shaderLayout = {
|
|
12
11
|
attributes: [],
|
|
13
12
|
bindings: []
|
|
14
13
|
};
|
|
15
|
-
|
|
16
14
|
for (const attribute of programBindings.attributes) {
|
|
17
|
-
const
|
|
15
|
+
const size = Math.min(attribute.accessor.size, 4);
|
|
16
|
+
const format = getVertexFormat(attribute.accessor.type || GL.FLOAT, size);
|
|
18
17
|
shaderLayout.attributes.push({
|
|
19
18
|
name: attribute.name,
|
|
20
19
|
location: attribute.location,
|
|
@@ -22,7 +21,6 @@ export function getShaderLayout(gl, program) {
|
|
|
22
21
|
stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
|
|
23
22
|
});
|
|
24
23
|
}
|
|
25
|
-
|
|
26
24
|
for (const uniformBlock of programBindings.uniformBlocks) {
|
|
27
25
|
const uniforms = uniformBlock.uniforms.map(uniform => ({
|
|
28
26
|
name: uniform.name,
|
|
@@ -40,9 +38,7 @@ export function getShaderLayout(gl, program) {
|
|
|
40
38
|
uniforms
|
|
41
39
|
});
|
|
42
40
|
}
|
|
43
|
-
|
|
44
41
|
let textureUnit = 0;
|
|
45
|
-
|
|
46
42
|
for (const uniform of programBindings.uniforms) {
|
|
47
43
|
if (isSamplerUniform(uniform.type)) {
|
|
48
44
|
const {
|
|
@@ -60,17 +56,13 @@ export function getShaderLayout(gl, program) {
|
|
|
60
56
|
textureUnit += 1;
|
|
61
57
|
}
|
|
62
58
|
}
|
|
63
|
-
|
|
64
59
|
const uniforms = ((_programBindings$unif = programBindings.uniforms) === null || _programBindings$unif === void 0 ? void 0 : _programBindings$unif.filter(uniform => uniform.location !== null)) || [];
|
|
65
|
-
|
|
66
60
|
if (uniforms.length) {
|
|
67
61
|
shaderLayout.uniforms = uniforms;
|
|
68
62
|
}
|
|
69
|
-
|
|
70
63
|
if ((_programBindings$vary = programBindings.varyings) !== null && _programBindings$vary !== void 0 && _programBindings$vary.length) {
|
|
71
64
|
shaderLayout.varyings = programBindings.varyings;
|
|
72
65
|
}
|
|
73
|
-
|
|
74
66
|
return shaderLayout;
|
|
75
67
|
}
|
|
76
68
|
export function getProgramBindings(gl, program) {
|
|
@@ -83,19 +75,20 @@ export function getProgramBindings(gl, program) {
|
|
|
83
75
|
Object.seal(config);
|
|
84
76
|
return config;
|
|
85
77
|
}
|
|
86
|
-
|
|
87
78
|
function readAttributeBindings(gl, program) {
|
|
88
79
|
const attributes = [];
|
|
89
80
|
const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
|
|
90
|
-
|
|
91
81
|
for (let index = 0; index < count; index++) {
|
|
82
|
+
const activeInfo = gl.getActiveAttrib(program, index);
|
|
83
|
+
if (!activeInfo) {
|
|
84
|
+
throw new Error('activeInfo');
|
|
85
|
+
}
|
|
92
86
|
const {
|
|
93
87
|
name,
|
|
94
88
|
type: compositeType,
|
|
95
89
|
size
|
|
96
|
-
} =
|
|
90
|
+
} = activeInfo;
|
|
97
91
|
const location = gl.getAttribLocation(program, name);
|
|
98
|
-
|
|
99
92
|
if (location >= 0) {
|
|
100
93
|
const {
|
|
101
94
|
glType,
|
|
@@ -105,11 +98,9 @@ function readAttributeBindings(gl, program) {
|
|
|
105
98
|
type: glType,
|
|
106
99
|
size: size * components
|
|
107
100
|
};
|
|
108
|
-
|
|
109
101
|
if (/instance/i.test(name)) {
|
|
110
102
|
accessor.divisor = 1;
|
|
111
103
|
}
|
|
112
|
-
|
|
113
104
|
const attributeInfo = {
|
|
114
105
|
location,
|
|
115
106
|
name,
|
|
@@ -118,26 +109,26 @@ function readAttributeBindings(gl, program) {
|
|
|
118
109
|
attributes.push(attributeInfo);
|
|
119
110
|
}
|
|
120
111
|
}
|
|
121
|
-
|
|
122
112
|
attributes.sort((a, b) => a.location - b.location);
|
|
123
113
|
return attributes;
|
|
124
114
|
}
|
|
125
|
-
|
|
126
115
|
function readVaryings(gl, program) {
|
|
127
116
|
if (!isWebGL2(gl)) {
|
|
128
117
|
return [];
|
|
129
118
|
}
|
|
130
|
-
|
|
131
119
|
const gl2 = gl;
|
|
132
120
|
const varyings = [];
|
|
133
121
|
const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);
|
|
134
|
-
|
|
135
122
|
for (let location = 0; location < count; location++) {
|
|
123
|
+
const activeInfo = gl2.getTransformFeedbackVarying(program, location);
|
|
124
|
+
if (!activeInfo) {
|
|
125
|
+
throw new Error('activeInfo');
|
|
126
|
+
}
|
|
136
127
|
const {
|
|
137
128
|
name,
|
|
138
129
|
type: compositeType,
|
|
139
130
|
size
|
|
140
|
-
} =
|
|
131
|
+
} = activeInfo;
|
|
141
132
|
const {
|
|
142
133
|
glType,
|
|
143
134
|
components
|
|
@@ -153,21 +144,22 @@ function readVaryings(gl, program) {
|
|
|
153
144
|
};
|
|
154
145
|
varyings.push(varying);
|
|
155
146
|
}
|
|
156
|
-
|
|
157
147
|
varyings.sort((a, b) => a.location - b.location);
|
|
158
148
|
return varyings;
|
|
159
149
|
}
|
|
160
|
-
|
|
161
150
|
function readUniformBindings(gl, program) {
|
|
162
151
|
const uniforms = [];
|
|
163
152
|
const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);
|
|
164
|
-
|
|
165
153
|
for (let i = 0; i < uniformCount; i++) {
|
|
154
|
+
const activeInfo = gl.getActiveUniform(program, i);
|
|
155
|
+
if (!activeInfo) {
|
|
156
|
+
throw new Error('activeInfo');
|
|
157
|
+
}
|
|
166
158
|
const {
|
|
167
159
|
name: rawName,
|
|
168
160
|
size,
|
|
169
161
|
type
|
|
170
|
-
} =
|
|
162
|
+
} = activeInfo;
|
|
171
163
|
const {
|
|
172
164
|
name,
|
|
173
165
|
isArray
|
|
@@ -181,12 +173,12 @@ function readUniformBindings(gl, program) {
|
|
|
181
173
|
isArray
|
|
182
174
|
};
|
|
183
175
|
uniforms.push(uniformInfo);
|
|
184
|
-
|
|
185
176
|
if (uniformInfo.size > 1) {
|
|
186
177
|
for (let j = 0; j < uniformInfo.size; j++) {
|
|
187
178
|
const elementName = "".concat(name, "[").concat(j, "]");
|
|
188
179
|
webglLocation = gl.getUniformLocation(program, elementName);
|
|
189
|
-
const arrayElementUniformInfo = {
|
|
180
|
+
const arrayElementUniformInfo = {
|
|
181
|
+
...uniformInfo,
|
|
190
182
|
name: elementName,
|
|
191
183
|
location: webglLocation
|
|
192
184
|
};
|
|
@@ -194,25 +186,19 @@ function readUniformBindings(gl, program) {
|
|
|
194
186
|
}
|
|
195
187
|
}
|
|
196
188
|
}
|
|
197
|
-
|
|
198
189
|
return uniforms;
|
|
199
190
|
}
|
|
200
|
-
|
|
201
191
|
function readUniformBlocks(gl, program) {
|
|
202
192
|
if (!isWebGL2(gl)) {
|
|
203
193
|
return [];
|
|
204
194
|
}
|
|
205
|
-
|
|
206
195
|
const gl2 = gl;
|
|
207
|
-
|
|
208
196
|
const getBlockParameter = (blockIndex, pname) => gl2.getActiveUniformBlockParameter(program, blockIndex, pname);
|
|
209
|
-
|
|
210
197
|
const uniformBlocks = [];
|
|
211
198
|
const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);
|
|
212
|
-
|
|
213
199
|
for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
|
|
214
200
|
const blockInfo = {
|
|
215
|
-
name: gl2.getActiveUniformBlockName(program, blockIndex),
|
|
201
|
+
name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
|
|
216
202
|
location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),
|
|
217
203
|
byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),
|
|
218
204
|
vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
|
|
@@ -220,35 +206,30 @@ function readUniformBlocks(gl, program) {
|
|
|
220
206
|
uniformCount: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
|
|
221
207
|
uniforms: []
|
|
222
208
|
};
|
|
223
|
-
const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES);
|
|
209
|
+
const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) || [];
|
|
224
210
|
const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE);
|
|
225
211
|
const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE);
|
|
226
|
-
const uniformBlockIndex = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_BLOCK_INDEX);
|
|
227
212
|
const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET);
|
|
228
213
|
const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE);
|
|
229
|
-
const uniformMatrixStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_MATRIX_STRIDE);
|
|
230
|
-
const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
|
|
231
|
-
|
|
232
214
|
for (let i = 0; i < blockInfo.uniformCount; ++i) {
|
|
215
|
+
const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
|
|
216
|
+
if (!activeInfo) {
|
|
217
|
+
throw new Error('activeInfo');
|
|
218
|
+
}
|
|
233
219
|
blockInfo.uniforms.push({
|
|
234
|
-
name:
|
|
220
|
+
name: activeInfo.name,
|
|
235
221
|
format: decodeUniformType(uniformType[i]).format,
|
|
236
222
|
type: uniformType[i],
|
|
237
223
|
arrayLength: uniformArrayLength[i],
|
|
238
224
|
byteOffset: uniformOffset[i],
|
|
239
|
-
byteStride: uniformStride[i]
|
|
240
|
-
matrixStride: uniformStride[i],
|
|
241
|
-
rowMajor: uniformRowMajor[i]
|
|
225
|
+
byteStride: uniformStride[i]
|
|
242
226
|
});
|
|
243
227
|
}
|
|
244
|
-
|
|
245
228
|
uniformBlocks.push(blockInfo);
|
|
246
229
|
}
|
|
247
|
-
|
|
248
230
|
uniformBlocks.sort((a, b) => a.location - b.location);
|
|
249
231
|
return uniformBlocks;
|
|
250
232
|
}
|
|
251
|
-
|
|
252
233
|
const SAMPLER_UNIFORMS_GL_TO_GPU = {
|
|
253
234
|
[GL.SAMPLER_2D]: ['2d', 'float'],
|
|
254
235
|
[GL.SAMPLER_CUBE]: ['cube', 'float'],
|
|
@@ -266,21 +247,17 @@ const SAMPLER_UNIFORMS_GL_TO_GPU = {
|
|
|
266
247
|
[GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],
|
|
267
248
|
[GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
|
|
268
249
|
};
|
|
269
|
-
|
|
270
250
|
function getSamplerInfo(type) {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
const [viewDimension, sampleType] = sampler;
|
|
275
|
-
return {
|
|
276
|
-
viewDimension,
|
|
277
|
-
sampleType
|
|
278
|
-
};
|
|
251
|
+
const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
|
|
252
|
+
if (!sampler) {
|
|
253
|
+
throw new Error('sampler');
|
|
279
254
|
}
|
|
280
|
-
|
|
281
|
-
return
|
|
255
|
+
const [viewDimension, sampleType] = sampler;
|
|
256
|
+
return {
|
|
257
|
+
viewDimension,
|
|
258
|
+
sampleType
|
|
259
|
+
};
|
|
282
260
|
}
|
|
283
|
-
|
|
284
261
|
function parseUniformName(name) {
|
|
285
262
|
if (name[name.length - 1] !== ']') {
|
|
286
263
|
return {
|
|
@@ -289,14 +266,11 @@ function parseUniformName(name) {
|
|
|
289
266
|
isArray: false
|
|
290
267
|
};
|
|
291
268
|
}
|
|
292
|
-
|
|
293
269
|
const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
|
|
294
|
-
const matches =
|
|
295
|
-
|
|
270
|
+
const matches = UNIFORM_NAME_REGEXP.exec(name);
|
|
296
271
|
if (!matches || matches.length < 2) {
|
|
297
272
|
throw new Error("Failed to parse GLSL uniform name ".concat(name));
|
|
298
273
|
}
|
|
299
|
-
|
|
300
274
|
return {
|
|
301
275
|
name: matches[1],
|
|
302
276
|
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","compositeType","getActiveAttrib","getAttribLocation","glType","components","test","attributeInfo","sort","a","b","gl2","TRANSFORM_FEEDBACK_VARYINGS","getTransformFeedbackVarying","varying","uniformCount","ACTIVE_UNIFORMS","i","rawName","getActiveUniform","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","matrixStride","rowMajor","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","Error","Boolean"],"mappings":"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","sourcesContent":["import {\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 {name, type: compositeType, size} = gl.getActiveAttrib(program, index);\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 {name, type: compositeType, size} = gl2.getTransformFeedbackVarying(program, location);\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 {name: rawName, size, type} = gl.getActiveUniform(program, i);\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 = {\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);\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 blockInfo.uniforms.push({\n name: gl2.getActiveUniform(program, uniformIndices[i]).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\nfunction getSamplerInfo(type: GL):\n | {\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\n sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';\n }\n | undefined {\n let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];\n if (sampler) {\n const [viewDimension, sampleType] = sampler;\n return {viewDimension, sampleType};\n }\n return null;\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":["GL","isWebGL2","Accessor","decodeUniformType","decodeAttributeType","getVertexFormat","isSamplerUniform","getShaderLayout","gl","program","_programBindings$unif","_programBindings$vary","programBindings","getProgramBindings","shaderLayout","attributes","bindings","attribute","size","Math","min","accessor","format","type","FLOAT","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","concat","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","uniformOffset","UNIFORM_OFFSET","uniformStride","UNIFORM_ARRAY_STRIDE","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","exec","Boolean"],"sources":["../../../src/adapter/helpers/get-shader-layout.ts"],"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/**\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 // TODO - multicolumn attributes like a matrix4 can be up to 16 elts...\n const size = Math.min(attribute.accessor.size, 4);\n const format =\n // attribute.accessor.format ||\n getVertexFormat(attribute.accessor.type || GL.FLOAT, 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 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\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: WebGLRenderingContext, 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"],"mappings":"AAaA,OAAOA,EAAE,MAAM,oBAAoB;AAAC,SAC5BC,QAAQ;AAAA,OACTC,QAAQ;AAAA,SACPC,iBAAiB,EAAEC,mBAAmB;AAAA,SACtCC,eAAe;AAAA,SACfC,gBAAgB;AAOxB,OAAO,SAASC,eAAeA,CAACC,EAAyB,EAAEC,OAAqB,EAAgB;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EAC9F,MAAMC,eAAe,GAAGC,kBAAkB,CAACL,EAAE,EAAEC,OAAO,CAAC;EAEvD,MAAMK,YAA0B,GAAG;IACjCC,UAAU,EAAE,EAAE;IACdC,QAAQ,EAAE;EACZ,CAAC;EAED,KAAK,MAAMC,SAAS,IAAIL,eAAe,CAACG,UAAU,EAAE;IAElD,MAAMG,IAAI,GAAGC,IAAI,CAACC,GAAG,CAACH,SAAS,CAACI,QAAQ,CAACH,IAAI,EAAE,CAAC,CAAC;IACjD,MAAMI,MAAM,GAEVjB,eAAe,CAACY,SAAS,CAACI,QAAQ,CAACE,IAAI,IAAIvB,EAAE,CAACwB,KAAK,EAAEN,IAAI,CAAC;IAC5DJ,YAAY,CAACC,UAAU,CAACU,IAAI,CAAC;MAC3BC,IAAI,EAAET,SAAS,CAACS,IAAI;MACpBC,QAAQ,EAAEV,SAAS,CAACU,QAAQ;MAC5BL,MAAM;MACNM,QAAQ,EAAEX,SAAS,CAACI,QAAQ,CAACQ,OAAO,KAAK,CAAC,GAAG,UAAU,GAAG;IAC5D,CAAC,CAAC;EACJ;EAGA,KAAK,MAAMC,YAAY,IAAIlB,eAAe,CAACmB,aAAa,EAAE;IACxD,MAAMC,QAAQ,GAAGF,YAAY,CAACE,QAAQ,CAACC,GAAG,CAAEC,OAAO,KAAM;MACvDR,IAAI,EAAEQ,OAAO,CAACR,IAAI;MAClBJ,MAAM,EAAEY,OAAO,CAACZ,MAAM;MACtBa,UAAU,EAAED,OAAO,CAACC,UAAU;MAC9BC,UAAU,EAAEF,OAAO,CAACE,UAAU;MAC9BC,WAAW,EAAEH,OAAO,CAACG;IACvB,CAAC,CAAC,CAAC;IACHvB,YAAY,CAACE,QAAQ,CAACS,IAAI,CAAC;MACzBF,IAAI,EAAE,SAAS;MACfG,IAAI,EAAEI,YAAY,CAACJ,IAAI;MACvBC,QAAQ,EAAEG,YAAY,CAACH,QAAQ;MAC/BW,UAAU,EAAE,CAACR,YAAY,CAACS,MAAM,GAAG,GAAG,GAAG,CAAC,KAAKT,YAAY,CAACU,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;MAC/EC,cAAc,EAAEX,YAAY,CAACY,UAAU;MACvCV;IACF,CAAC,CAAC;EACJ;EAEA,IAAIW,WAAW,GAAG,CAAC;EACnB,KAAK,MAAMT,OAAO,IAAItB,eAAe,CAACoB,QAAQ,EAAE;IAC9C,IAAI1B,gBAAgB,CAAC4B,OAAO,CAACX,IAAI,CAAC,EAAE;MAClC,MAAM;QAACqB,aAAa;QAAEC;MAAU,CAAC,GAAGC,cAAc,CAACZ,OAAO,CAACX,IAAI,CAAC;MAChET,YAAY,CAACE,QAAQ,CAACS,IAAI,CAAC;QACzBF,IAAI,EAAE,SAAS;QACfG,IAAI,EAAEQ,OAAO,CAACR,IAAI;QAClBC,QAAQ,EAAEgB,WAAW;QACrBC,aAAa;QACbC;MACF,CAAC,CAAC;MAGFX,OAAO,CAACS,WAAW,GAAGA,WAAW;MACjCA,WAAW,IAAI,CAAC;IAClB;EACF;EAEA,MAAMX,QAAQ,GAAG,EAAAtB,qBAAA,GAAAE,eAAe,CAACoB,QAAQ,cAAAtB,qBAAA,uBAAxBA,qBAAA,CAA0BqC,MAAM,CAAEb,OAAO,IAAKA,OAAO,CAACP,QAAQ,KAAK,IAAI,CAAC,KAAI,EAAE;EAC/F,IAAIK,QAAQ,CAACgB,MAAM,EAAE;IACnBlC,YAAY,CAACkB,QAAQ,GAAGA,QAAQ;EAClC;EACA,KAAArB,qBAAA,GAAIC,eAAe,CAACqC,QAAQ,cAAAtC,qBAAA,eAAxBA,qBAAA,CAA0BqC,MAAM,EAAE;IACpClC,YAAY,CAACmC,QAAQ,GAAGrC,eAAe,CAACqC,QAAQ;EAClD;EAEA,OAAOnC,YAAY;AACrB;AAOA,OAAO,SAASD,kBAAkBA,CAChCL,EAAyB,EACzBC,OAAqB,EACJ;EACjB,MAAMyC,MAAuB,GAAG;IAC9BnC,UAAU,EAAEoC,qBAAqB,CAAC3C,EAAE,EAAEC,OAAO,CAAC;IAC9CuB,QAAQ,EAAEoB,mBAAmB,CAAC5C,EAAE,EAAEC,OAAO,CAAC;IAC1CsB,aAAa,EAAEsB,iBAAiB,CAAC7C,EAAE,EAAEC,OAAO,CAAC;IAC7CwC,QAAQ,EAAEK,YAAY,CAAC9C,EAAE,EAAEC,OAAO;EACpC,CAAC;EAED8C,MAAM,CAACC,IAAI,CAACN,MAAM,CAAC;EACnB,OAAOA,MAAM;AAEf;AAOA,SAASC,qBAAqBA,CAC5B3C,EAAyB,EACzBC,OAAqB,EACD;EACpB,MAAMM,UAA8B,GAAG,EAAE;EAEzC,MAAM0C,KAAK,GAAGjD,EAAE,CAACkD,mBAAmB,CAACjD,OAAO,EAAED,EAAE,CAACmD,iBAAiB,CAAC;EAEnE,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGH,KAAK,EAAEG,KAAK,EAAE,EAAE;IAC1C,MAAMC,UAAU,GAAGrD,EAAE,CAACsD,eAAe,CAACrD,OAAO,EAAEmD,KAAK,CAAC;IACrD,IAAI,CAACC,UAAU,EAAE;MACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM;MAACrC,IAAI;MAAEH,IAAI,EAAEyC,aAAa;MAAE9C;IAAI,CAAC,GAAG2C,UAAU;IACpD,MAAMlC,QAAQ,GAAGnB,EAAE,CAACyD,iBAAiB,CAACxD,OAAO,EAAEiB,IAAI,CAAC;IAGpD,IAAIC,QAAQ,IAAI,CAAC,EAAE;MACjB,MAAM;QAACuC,MAAM;QAAEC;MAAU,CAAC,GAAG/D,mBAAmB,CAAC4D,aAAa,CAAC;MAC/D,MAAM3C,QAAwB,GAAG;QAACE,IAAI,EAAE2C,MAAM;QAAEhD,IAAI,EAAEA,IAAI,GAAGiD;MAAU,CAAC;MAExE,IAAI,WAAW,CAACC,IAAI,CAAC1C,IAAI,CAAC,EAAE;QAC1BL,QAAQ,CAACQ,OAAO,GAAG,CAAC;MACtB;MACA,MAAMwC,aAAa,GAAG;QAAC1C,QAAQ;QAAED,IAAI;QAAEL,QAAQ,EAAE,IAAInB,QAAQ,CAACmB,QAAQ;MAAC,CAAC;MACxEN,UAAU,CAACU,IAAI,CAAC4C,aAAa,CAAC;IAChC;EACF;EAEAtD,UAAU,CAACuD,IAAI,CAAC,CAACC,CAAmB,EAAEC,CAAmB,KAAKD,CAAC,CAAC5C,QAAQ,GAAG6C,CAAC,CAAC7C,QAAQ,CAAC;EACtF,OAAOZ,UAAU;AACnB;AAOA,SAASuC,YAAYA,CAAC9C,EAAyB,EAAEC,OAAqB,EAAoB;EACxF,IAAI,CAACR,QAAQ,CAACO,EAAE,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EACA,MAAMiE,GAAG,GAAGjE,EAA4B;EAExC,MAAMyC,QAA0B,GAAG,EAAE;EAErC,MAAMQ,KAAK,GAAGjD,EAAE,CAACkD,mBAAmB,CAACjD,OAAO,EAAET,EAAE,CAAC0E,2BAA2B,CAAC;EAC7E,KAAK,IAAI/C,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAG8B,KAAK,EAAE9B,QAAQ,EAAE,EAAE;IACnD,MAAMkC,UAAU,GAAGY,GAAG,CAACE,2BAA2B,CAAClE,OAAO,EAAEkB,QAAQ,CAAC;IACrE,IAAI,CAACkC,UAAU,EAAE;MACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM;MAACrC,IAAI;MAAEH,IAAI,EAAEyC,aAAa;MAAE9C;IAAI,CAAC,GAAG2C,UAAU;IACpD,MAAM;MAACK,MAAM;MAAEC;IAAU,CAAC,GAAGhE,iBAAiB,CAAC6D,aAAa,CAAC;IAC7D,MAAM3C,QAAQ,GAAG,IAAInB,QAAQ,CAAC;MAACqB,IAAI,EAAE2C,MAAM;MAAEhD,IAAI,EAAEA,IAAI,GAAGiD;IAAU,CAAC,CAAC;IACtE,MAAMS,OAAO,GAAG;MAACjD,QAAQ;MAAED,IAAI;MAAEL;IAAQ,CAAC;IAC1C4B,QAAQ,CAACxB,IAAI,CAACmD,OAAO,CAAC;EACxB;EAEA3B,QAAQ,CAACqB,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC5C,QAAQ,GAAG6C,CAAC,CAAC7C,QAAQ,CAAC;EAChD,OAAOsB,QAAQ;AACjB;AAOA,SAASG,mBAAmBA,CAAC5C,EAAyB,EAAEC,OAAqB,EAAoB;EAC/F,MAAMuB,QAA0B,GAAG,EAAE;EAErC,MAAM6C,YAAY,GAAGrE,EAAE,CAACkD,mBAAmB,CAACjD,OAAO,EAAET,EAAE,CAAC8E,eAAe,CAAC;EACxE,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,YAAY,EAAEE,CAAC,EAAE,EAAE;IACrC,MAAMlB,UAAU,GAAGrD,EAAE,CAACwE,gBAAgB,CAACvE,OAAO,EAAEsE,CAAC,CAAC;IAClD,IAAI,CAAClB,UAAU,EAAE;MACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM;MAACrC,IAAI,EAAEuD,OAAO;MAAE/D,IAAI;MAAEK;IAAI,CAAC,GAAGsC,UAAU;IAC9C,MAAM;MAACnC,IAAI;MAAEwD;IAAO,CAAC,GAAGC,gBAAgB,CAACF,OAAO,CAAC;IACjD,IAAIG,aAAa,GAAG5E,EAAE,CAAC6E,kBAAkB,CAAC5E,OAAO,EAAEiB,IAAI,CAAC;IACxD,MAAM4D,WAAW,GAAG;MAElB3D,QAAQ,EAAEyD,aAAuB;MACjC1D,IAAI;MACJR,IAAI;MACJK,IAAI;MACJ2D;IACF,CAAC;IACDlD,QAAQ,CAACP,IAAI,CAAC6D,WAAW,CAAC;IAG1B,IAAIA,WAAW,CAACpE,IAAI,GAAG,CAAC,EAAE;MACxB,KAAK,IAAIqE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,WAAW,CAACpE,IAAI,EAAEqE,CAAC,EAAE,EAAE;QACzC,MAAMC,WAAW,MAAAC,MAAA,CAAM/D,IAAI,OAAA+D,MAAA,CAAIF,CAAC,MAAG;QAEnCH,aAAa,GAAG5E,EAAE,CAAC6E,kBAAkB,CAAC5E,OAAO,EAAE+E,WAAW,CAAC;QAE3D,MAAME,uBAAuB,GAAG;UAC9B,GAAGJ,WAAW;UACd5D,IAAI,EAAE8D,WAAW;UACjB7D,QAAQ,EAAEyD;QACZ,CAAC;QAEDpD,QAAQ,CAACP,IAAI,CAACiE,uBAAuB,CAAC;MACxC;IACF;EACF;EACA,OAAO1D,QAAQ;AACjB;AAQA,SAASqB,iBAAiBA,CACxB7C,EAAyB,EACzBC,OAAqB,EACE;EACvB,IAAI,CAACR,QAAQ,CAACO,EAAE,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EACA,MAAMiE,GAAG,GAAGjE,EAA4B;EAExC,MAAMmF,iBAAiB,GAAGA,CAACC,UAAkB,EAAEC,KAAS,KACtDpB,GAAG,CAACqB,8BAA8B,CAACrF,OAAO,EAAEmF,UAAU,EAAEC,KAAK,CAAC;EAEhE,MAAM9D,aAAoC,GAAG,EAAE;EAE/C,MAAMgE,UAAU,GAAGtB,GAAG,CAACf,mBAAmB,CAACjD,OAAO,EAAET,EAAE,CAACgG,qBAAqB,CAAC;EAC7E,KAAK,IAAIJ,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGG,UAAU,EAAEH,UAAU,EAAE,EAAE;IAC9D,MAAMK,SAA8B,GAAG;MACrCvE,IAAI,EAAE+C,GAAG,CAACyB,yBAAyB,CAACzF,OAAO,EAAEmF,UAAU,CAAC,IAAI,EAAE;MAC9DjE,QAAQ,EAAEgE,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACmG,qBAAqB,CAAC;MACjEzD,UAAU,EAAEiD,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACoG,uBAAuB,CAAC;MACrE7D,MAAM,EAAEoD,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACqG,yCAAyC,CAAC;MACnF7D,QAAQ,EAAEmD,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACsG,2CAA2C,CAAC;MACvFzB,YAAY,EAAEc,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACuG,6BAA6B,CAAC;MAC7EvE,QAAQ,EAAE;IACZ,CAAC;IAED,MAAMwE,cAAc,GAAGb,iBAAiB,CAACC,UAAU,EAAE5F,EAAE,CAACyG,oCAAoC,CAAC,IAAgB,EAAE;IAE/G,MAAMC,WAAW,GAAGjC,GAAG,CAACkC,iBAAiB,CAAClG,OAAO,EAAE+F,cAAc,EAAExG,EAAE,CAAC4G,YAAY,CAAC;IACnF,MAAMC,kBAAkB,GAAGpC,GAAG,CAACkC,iBAAiB,CAAClG,OAAO,EAAE+F,cAAc,EAAExG,EAAE,CAAC8G,YAAY,CAAC;IAM1F,MAAMC,aAAa,GAAGtC,GAAG,CAACkC,iBAAiB,CAAClG,OAAO,EAAE+F,cAAc,EAAExG,EAAE,CAACgH,cAAc,CAAC;IACvF,MAAMC,aAAa,GAAGxC,GAAG,CAACkC,iBAAiB,CAAClG,OAAO,EAAE+F,cAAc,EAAExG,EAAE,CAACkH,oBAAoB,CAAC;IAO7F,KAAK,IAAInC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkB,SAAS,CAACpB,YAAY,EAAE,EAAEE,CAAC,EAAE;MAC/C,MAAMlB,UAAU,GAAGY,GAAG,CAACO,gBAAgB,CAACvE,OAAO,EAAE+F,cAAc,CAACzB,CAAC,CAAC,CAAC;MACnE,IAAI,CAAClB,UAAU,EAAE;QACf,MAAM,IAAIE,KAAK,CAAC,YAAY,CAAC;MAC/B;MAEAkC,SAAS,CAACjE,QAAQ,CAACP,IAAI,CAAC;QACtBC,IAAI,EAAEmC,UAAU,CAACnC,IAAI;QACrBJ,MAAM,EAAEnB,iBAAiB,CAACuG,WAAW,CAAC3B,CAAC,CAAC,CAAC,CAACzD,MAAM;QAChDC,IAAI,EAAEmF,WAAW,CAAC3B,CAAC,CAAC;QACpB1C,WAAW,EAAEwE,kBAAkB,CAAC9B,CAAC,CAAC;QAClC5C,UAAU,EAAE4E,aAAa,CAAChC,CAAC,CAAC;QAC5B3C,UAAU,EAAE6E,aAAa,CAAClC,CAAC;MAG7B,CAAC,CAAC;IACJ;IAEAhD,aAAa,CAACN,IAAI,CAACwE,SAAS,CAAC;EAC/B;EAEAlE,aAAa,CAACuC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC5C,QAAQ,GAAG6C,CAAC,CAAC7C,QAAQ,CAAC;EACrD,OAAOI,aAAa;AACtB;AAEA,MAAMoF,0BAML,GAAG;EACF,CAACnH,EAAE,CAACoH,UAAU,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;EAChC,CAACpH,EAAE,CAACqH,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;EACpC,CAACrH,EAAE,CAACsH,UAAU,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;EAChC,CAACtH,EAAE,CAACuH,iBAAiB,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;EACvC,CAACvH,EAAE,CAACwH,gBAAgB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;EAC5C,CAACxH,EAAE,CAACyH,uBAAuB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;EACnD,CAACzH,EAAE,CAAC0H,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;EAC3C,CAAC1H,EAAE,CAAC2H,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;EACnC,CAAC3H,EAAE,CAAC4H,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;EACnC,CAAC5H,EAAE,CAAC6H,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;EACvC,CAAC7H,EAAE,CAAC8H,oBAAoB,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC;EAC/C,CAAC9H,EAAE,CAAC+H,uBAAuB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;EAC5C,CAAC/H,EAAE,CAACgI,uBAAuB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;EAC5C,CAAChI,EAAE,CAACiI,yBAAyB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;EAChD,CAACjI,EAAE,CAACkI,6BAA6B,GAAG,CAAC,UAAU,EAAE,MAAM;AACzD,CAAC;AAOD,SAASpF,cAAcA,CAACvB,IAAQ,EAAe;EAC7C,MAAM4G,OAAO,GAAGhB,0BAA0B,CAAC5F,IAAI,CAAC;EAChD,IAAI,CAAC4G,OAAO,EAAE;IACZ,MAAM,IAAIpE,KAAK,CAAC,SAAS,CAAC;EAC5B;EACA,MAAM,CAACnB,aAAa,EAAEC,UAAU,CAAC,GAAGsF,OAAO;EAC3C,OAAO;IAACvF,aAAa;IAAEC;EAAU,CAAC;AACpC;AAIA,SAASsC,gBAAgBA,CAACzD,IAAY,EAAoD;EAExF,IAAIA,IAAI,CAACA,IAAI,CAACsB,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;IACjC,OAAO;MACLtB,IAAI;MACJsB,MAAM,EAAE,CAAC;MACTkC,OAAO,EAAE;IACX,CAAC;EACH;EAGA,MAAMkD,mBAAmB,GAAG,sBAAsB;EAClD,MAAMC,OAAO,GAAGD,mBAAmB,CAACE,IAAI,CAAC5G,IAAI,CAAC;EAC9C,IAAI,CAAC2G,OAAO,IAAIA,OAAO,CAACrF,MAAM,GAAG,CAAC,EAAE;IAClC,MAAM,IAAIe,KAAK,sCAAA0B,MAAA,CAAsC/D,IAAI,EAAG;EAC9D;EAEA,OAAO;IACLA,IAAI,EAAE2G,OAAO,CAAC,CAAC,CAAC;IAChBrF,MAAM,EAAEqF,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC1BnD,OAAO,EAAEqD,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/api';
|
|
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":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"parse-shader-compiler-log.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/parse-shader-compiler-log.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAIlD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAI,SAAS,eAAe,EAAE,CAqClF"}
|
|
@@ -2,26 +2,20 @@ const MESSAGE_TYPES = ['warning', 'error', 'info'];
|
|
|
2
2
|
export function parseShaderCompilerLog(errLog) {
|
|
3
3
|
const lines = errLog.split(/\r?\n/);
|
|
4
4
|
const messages = [];
|
|
5
|
-
|
|
6
5
|
for (const line of lines) {
|
|
7
6
|
if (line.length <= 1) {
|
|
8
7
|
continue;
|
|
9
8
|
}
|
|
10
|
-
|
|
11
9
|
const segments = line.split(':');
|
|
12
10
|
const [messageType, linePosition, lineNumber, ...rest] = segments;
|
|
13
11
|
let lineNum = parseInt(lineNumber, 10);
|
|
14
|
-
|
|
15
12
|
if (isNaN(lineNum)) {
|
|
16
13
|
lineNum = 0;
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
let linePos = parseInt(linePosition, 10);
|
|
20
|
-
|
|
21
16
|
if (isNaN(linePos)) {
|
|
22
17
|
linePos = 0;
|
|
23
18
|
}
|
|
24
|
-
|
|
25
19
|
const lowerCaseType = messageType.toLowerCase();
|
|
26
20
|
const type = MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info';
|
|
27
21
|
messages.push({
|
|
@@ -31,7 +25,6 @@ export function parseShaderCompilerLog(errLog) {
|
|
|
31
25
|
linePos
|
|
32
26
|
});
|
|
33
27
|
}
|
|
34
|
-
|
|
35
28
|
return messages;
|
|
36
29
|
}
|
|
37
30
|
//# sourceMappingURL=parse-shader-compiler-log.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"parse-shader-compiler-log.js","names":["MESSAGE_TYPES","parseShaderCompilerLog","errLog","lines","split","messages","line","length","segments","messageType","linePosition","lineNumber","rest","lineNum","parseInt","isNaN","linePos","lowerCaseType","toLowerCase","type","includes","push","message","join","trim"],"sources":["../../../src/adapter/helpers/parse-shader-compiler-log.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {CompilerMessage} from '@luma.gl/api';\n\nconst MESSAGE_TYPES = ['warning', 'error', 'info'];\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 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 // Ensure supported type\n const lowerCaseType = messageType.toLowerCase();\n const type = (MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info') as 'warning' | 'error' | 'info';\n\n messages.push({\n message: rest.join(':').trim(),\n type,\n lineNum,\n linePos // TODO\n })\n }\n\n return messages;\n}\n"],"mappings":"AAGA,MAAMA,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAOlD,OAAO,SAASC,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;IAC1C,MAAM,CAACK,WAAW,EAAEC,YAAY,EAAEC,UAAU,EAAE,GAAGC,IAAI,CAAC,GAAGJ,QAAQ;IAEjE,IAAIK,OAAO,GAAGC,QAAQ,CAACH,UAAU,EAAE,EAAE,CAAC;IACtC,IAAII,KAAK,CAACF,OAAO,CAAC,EAAE;MAClBA,OAAO,GAAG,CAAC;IACb;IAEA,IAAIG,OAAO,GAAGF,QAAQ,CAACJ,YAAY,EAAE,EAAE,CAAC;IACxC,IAAIK,KAAK,CAACC,OAAO,CAAC,EAAE;MAClBA,OAAO,GAAG,CAAC;IACb;IAGA,MAAMC,aAAa,GAAGR,WAAW,CAACS,WAAW,EAAE;IAC/C,MAAMC,IAAI,GAAInB,aAAa,CAACoB,QAAQ,CAACH,aAAa,CAAC,GAAGA,aAAa,GAAG,MAAuC;IAE7GZ,QAAQ,CAACgB,IAAI,CAAC;MACZC,OAAO,EAAEV,IAAI,CAACW,IAAI,CAAC,GAAG,CAAC,CAACC,IAAI,EAAE;MAC9BL,IAAI;MACJN,OAAO;MACPG;IACF,CAAC,CAAC;EACJ;EAEA,OAAOX,QAAQ;AACjB"}
|
|
@@ -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":"AAGA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEpC,8DAA8D;AAE9D,wBAAgB,UAAU,CACxB,EAAE,EAAE,qBAAqB,EACzB,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GACtD,IAAI,CA4EN"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
2
|
export function setUniform(gl, location, type, value) {
|
|
3
3
|
const gl2 = gl;
|
|
4
|
-
|
|
5
4
|
if (typeof value === 'number') {
|
|
6
5
|
switch (type) {
|
|
7
6
|
case GL.SAMPLER_2D:
|
|
@@ -22,94 +21,65 @@ export function setUniform(gl, location, type, value) {
|
|
|
22
21
|
return gl.uniform1i(location, value);
|
|
23
22
|
}
|
|
24
23
|
}
|
|
25
|
-
|
|
26
24
|
if (value === true) {
|
|
27
25
|
value = 1;
|
|
28
26
|
}
|
|
29
|
-
|
|
30
27
|
if (value === false) {
|
|
31
28
|
value = 1;
|
|
32
29
|
}
|
|
33
|
-
|
|
34
30
|
const arrayValue = typeof value === 'number' ? [value] : value;
|
|
35
|
-
|
|
36
31
|
switch (type) {
|
|
37
32
|
case GL.FLOAT:
|
|
38
33
|
return gl.uniform1fv(location, arrayValue);
|
|
39
|
-
|
|
40
34
|
case GL.FLOAT_VEC2:
|
|
41
35
|
return gl.uniform2fv(location, arrayValue);
|
|
42
|
-
|
|
43
36
|
case GL.FLOAT_VEC3:
|
|
44
37
|
return gl.uniform3fv(location, arrayValue);
|
|
45
|
-
|
|
46
38
|
case GL.FLOAT_VEC4:
|
|
47
39
|
return gl.uniform4fv(location, arrayValue);
|
|
48
|
-
|
|
49
40
|
case GL.INT:
|
|
50
41
|
return gl.uniform1iv(location, arrayValue);
|
|
51
|
-
|
|
52
42
|
case GL.INT_VEC2:
|
|
53
43
|
return gl.uniform2iv(location, arrayValue);
|
|
54
|
-
|
|
55
44
|
case GL.INT_VEC3:
|
|
56
45
|
return gl.uniform3iv(location, arrayValue);
|
|
57
|
-
|
|
58
46
|
case GL.INT_VEC4:
|
|
59
47
|
return gl.uniform4iv(location, arrayValue);
|
|
60
|
-
|
|
61
48
|
case GL.BOOL:
|
|
62
49
|
return gl.uniform1iv(location, arrayValue);
|
|
63
|
-
|
|
64
50
|
case GL.BOOL_VEC2:
|
|
65
51
|
return gl.uniform2iv(location, arrayValue);
|
|
66
|
-
|
|
67
52
|
case GL.BOOL_VEC3:
|
|
68
53
|
return gl.uniform3iv(location, arrayValue);
|
|
69
|
-
|
|
70
54
|
case GL.BOOL_VEC4:
|
|
71
|
-
gl.uniform4iv(location, arrayValue);
|
|
72
|
-
|
|
55
|
+
return gl.uniform4iv(location, arrayValue);
|
|
73
56
|
case GL.UNSIGNED_INT:
|
|
74
57
|
return gl2.uniform1uiv(location, arrayValue, 1);
|
|
75
|
-
|
|
76
58
|
case GL.UNSIGNED_INT_VEC2:
|
|
77
59
|
return gl2.uniform2uiv(location, arrayValue, 2);
|
|
78
|
-
|
|
79
60
|
case GL.UNSIGNED_INT_VEC3:
|
|
80
61
|
return gl2.uniform3uiv(location, arrayValue, 3);
|
|
81
|
-
|
|
82
62
|
case GL.UNSIGNED_INT_VEC4:
|
|
83
63
|
return gl2.uniform4uiv(location, arrayValue, 4);
|
|
84
|
-
|
|
85
64
|
case GL.FLOAT_MAT2:
|
|
86
65
|
return gl.uniformMatrix2fv(location, false, arrayValue);
|
|
87
|
-
|
|
88
66
|
case GL.FLOAT_MAT3:
|
|
89
67
|
return gl.uniformMatrix3fv(location, false, arrayValue);
|
|
90
|
-
|
|
91
68
|
case GL.FLOAT_MAT4:
|
|
92
69
|
return gl.uniformMatrix4fv(location, false, arrayValue);
|
|
93
|
-
|
|
94
70
|
case GL.FLOAT_MAT2x3:
|
|
95
71
|
return gl2.uniformMatrix2x3fv(location, false, arrayValue);
|
|
96
|
-
|
|
97
72
|
case GL.FLOAT_MAT2x4:
|
|
98
73
|
return gl2.uniformMatrix2x4fv(location, false, arrayValue);
|
|
99
|
-
|
|
100
74
|
case GL.FLOAT_MAT3x2:
|
|
101
75
|
return gl2.uniformMatrix3x2fv(location, false, arrayValue);
|
|
102
|
-
|
|
103
76
|
case GL.FLOAT_MAT3x4:
|
|
104
77
|
return gl2.uniformMatrix3x4fv(location, false, arrayValue);
|
|
105
|
-
|
|
106
78
|
case GL.FLOAT_MAT4x2:
|
|
107
79
|
return gl2.uniformMatrix4x2fv(location, false, arrayValue);
|
|
108
|
-
|
|
109
80
|
case GL.FLOAT_MAT4x3:
|
|
110
81
|
return gl2.uniformMatrix4x3fv(location, false, arrayValue);
|
|
111
82
|
}
|
|
112
|
-
|
|
113
83
|
throw new Error('Illegal uniform');
|
|
114
84
|
}
|
|
115
85
|
//# sourceMappingURL=set-uniform.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"set-uniform.js","names":["GL","setUniform","gl","location","type","value","gl2","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","uniform1i","arrayValue","FLOAT","uniform1fv","FLOAT_VEC2","uniform2fv","FLOAT_VEC3","uniform3fv","FLOAT_VEC4","uniform4fv","INT","uniform1iv","INT_VEC2","uniform2iv","INT_VEC3","uniform3iv","INT_VEC4","uniform4iv","BOOL","BOOL_VEC2","BOOL_VEC3","BOOL_VEC4","UNSIGNED_INT","uniform1uiv","UNSIGNED_INT_VEC2","uniform2uiv","UNSIGNED_INT_VEC3","uniform3uiv","UNSIGNED_INT_VEC4","uniform4uiv","FLOAT_MAT2","uniformMatrix2fv","FLOAT_MAT3","uniformMatrix3fv","FLOAT_MAT4","uniformMatrix4fv","FLOAT_MAT2x3","uniformMatrix2x3fv","FLOAT_MAT2x4","uniformMatrix2x4fv","FLOAT_MAT3x2","uniformMatrix3x2fv","FLOAT_MAT3x4","uniformMatrix3x4fv","FLOAT_MAT4x2","uniformMatrix4x2fv","FLOAT_MAT4x3","uniformMatrix4x3fv","Error"],"sources":["../../../src/adapter/helpers/set-uniform.ts"],"sourcesContent":["/* eslint-disable */\n\n// Uniforms\nimport GL from '@luma.gl/constants';\n\n/** Set a raw uniform (without type conversion and caching) */\n/* eslint-disable max-len */\nexport function setUniform(\n gl: WebGLRenderingContext,\n location: WebGLUniformLocation,\n type: GL,\n value: number | Float32Array | Int32Array | Uint32Array\n): void {\n const gl2 = gl as WebGL2RenderingContext;\n\n if (typeof value === 'number') {\n // prettier-ignore\n switch (type) {\n // WebGL1 samplers\n case GL.SAMPLER_2D:\n case GL.SAMPLER_CUBE:\n // WebGL2 samplers\n case GL.SAMPLER_3D:\n case GL.SAMPLER_2D_SHADOW:\n case GL.SAMPLER_2D_ARRAY:\n case GL.SAMPLER_2D_ARRAY_SHADOW:\n case GL.SAMPLER_CUBE_SHADOW:\n case GL.INT_SAMPLER_2D:\n case GL.INT_SAMPLER_3D:\n case GL.INT_SAMPLER_CUBE:\n case GL.INT_SAMPLER_2D_ARRAY:\n case GL.UNSIGNED_INT_SAMPLER_2D:\n case GL.UNSIGNED_INT_SAMPLER_3D:\n case GL.UNSIGNED_INT_SAMPLER_CUBE:\n case GL.UNSIGNED_INT_SAMPLER_2D_ARRAY:\n return gl.uniform1i(location, value);\n }\n }\n\n // @ts-expect-error\n if (value === true) {\n value = 1;\n }\n // @ts-expect-error\n if (value === false) {\n value = 1;\n }\n const arrayValue = (typeof value === 'number') ? [value] : value;\n\n // prettier-ignore\n switch (type) {\n case GL.FLOAT: return gl.uniform1fv(location, arrayValue);\n case GL.FLOAT_VEC2: return gl.uniform2fv(location, arrayValue);\n case GL.FLOAT_VEC3: return gl.uniform3fv(location, arrayValue);\n case GL.FLOAT_VEC4: return gl.uniform4fv(location, arrayValue);\n\n case GL.INT: return gl.uniform1iv(location, arrayValue);\n case GL.INT_VEC2: return gl.uniform2iv(location, arrayValue);\n case GL.INT_VEC3: return gl.uniform3iv(location, arrayValue);\n case GL.INT_VEC4: return gl.uniform4iv(location, arrayValue);\n\n case GL.BOOL: return gl.uniform1iv(location, arrayValue);\n case GL.BOOL_VEC2: return gl.uniform2iv(location, arrayValue);\n case GL.BOOL_VEC3: return gl.uniform3iv(location, arrayValue);\n case GL.BOOL_VEC4: return gl.uniform4iv(location, arrayValue);\n\n // WEBGL2 - unsigned integers\n case GL.UNSIGNED_INT: return gl2.uniform1uiv(location, arrayValue, 1);\n case GL.UNSIGNED_INT_VEC2: return gl2.uniform2uiv(location, arrayValue, 2);\n case GL.UNSIGNED_INT_VEC3: return gl2.uniform3uiv(location, arrayValue, 3);\n case GL.UNSIGNED_INT_VEC4: return gl2.uniform4uiv(location, arrayValue, 4);\n\n // WebGL2 - quadratic matrices\n // false: don't transpose the matrix\n case GL.FLOAT_MAT2: return gl.uniformMatrix2fv(location, false, arrayValue);\n case GL.FLOAT_MAT3: return gl.uniformMatrix3fv(location, false, arrayValue);\n case GL.FLOAT_MAT4: return gl.uniformMatrix4fv(location, false, arrayValue);\n\n // WebGL2 - rectangular matrices\n case GL.FLOAT_MAT2x3: return gl2.uniformMatrix2x3fv(location, false, arrayValue);\n case GL.FLOAT_MAT2x4: return gl2.uniformMatrix2x4fv(location, false, arrayValue);\n case GL.FLOAT_MAT3x2: return gl2.uniformMatrix3x2fv(location, false, arrayValue);\n case GL.FLOAT_MAT3x4: return gl2.uniformMatrix3x4fv(location, false, arrayValue);\n case GL.FLOAT_MAT4x2: return gl2.uniformMatrix4x2fv(location, false, arrayValue);\n case GL.FLOAT_MAT4x3: return gl2.uniformMatrix4x3fv(location, false, arrayValue);\n }\n\n throw new Error('Illegal uniform');\n}\n"],"mappings":"AAGA,OAAOA,EAAE,MAAM,oBAAoB;AAInC,OAAO,SAASC,UAAUA,CACxBC,EAAyB,EACzBC,QAA8B,EAC9BC,IAAQ,EACRC,KAAuD,EACjD;EACN,MAAMC,GAAG,GAAGJ,EAA4B;EAExC,IAAI,OAAOG,KAAK,KAAK,QAAQ,EAAE;IAE7B,QAAQD,IAAI;MAEV,KAAKJ,EAAE,CAACO,UAAU;MAClB,KAAKP,EAAE,CAACQ,YAAY;MAEpB,KAAKR,EAAE,CAACS,UAAU;MAClB,KAAKT,EAAE,CAACU,iBAAiB;MACzB,KAAKV,EAAE,CAACW,gBAAgB;MACxB,KAAKX,EAAE,CAACY,uBAAuB;MAC/B,KAAKZ,EAAE,CAACa,mBAAmB;MAC3B,KAAKb,EAAE,CAACc,cAAc;MACtB,KAAKd,EAAE,CAACe,cAAc;MACtB,KAAKf,EAAE,CAACgB,gBAAgB;MACxB,KAAKhB,EAAE,CAACiB,oBAAoB;MAC5B,KAAKjB,EAAE,CAACkB,uBAAuB;MAC/B,KAAKlB,EAAE,CAACmB,uBAAuB;MAC/B,KAAKnB,EAAE,CAACoB,yBAAyB;MACjC,KAAKpB,EAAE,CAACqB,6BAA6B;QACnC,OAAOnB,EAAE,CAACoB,SAAS,CAACnB,QAAQ,EAAEE,KAAK,CAAC;IAAC;EAE3C;EAGA,IAAIA,KAAK,KAAK,IAAI,EAAE;IAClBA,KAAK,GAAG,CAAC;EACX;EAEA,IAAIA,KAAK,KAAK,KAAK,EAAE;IACnBA,KAAK,GAAG,CAAC;EACX;EACA,MAAMkB,UAAU,GAAI,OAAOlB,KAAK,KAAK,QAAQ,GAAI,CAACA,KAAK,CAAC,GAAGA,KAAK;EAGhE,QAAQD,IAAI;IACV,KAAKJ,EAAE,CAACwB,KAAK;MAAE,OAAOtB,EAAE,CAACuB,UAAU,CAACtB,QAAQ,EAAEoB,UAAU,CAAC;IACzD,KAAKvB,EAAE,CAAC0B,UAAU;MAAE,OAAOxB,EAAE,CAACyB,UAAU,CAACxB,QAAQ,EAAEoB,UAAU,CAAC;IAC9D,KAAKvB,EAAE,CAAC4B,UAAU;MAAE,OAAO1B,EAAE,CAAC2B,UAAU,CAAC1B,QAAQ,EAAEoB,UAAU,CAAC;IAC9D,KAAKvB,EAAE,CAAC8B,UAAU;MAAE,OAAO5B,EAAE,CAAC6B,UAAU,CAAC5B,QAAQ,EAAEoB,UAAU,CAAC;IAE9D,KAAKvB,EAAE,CAACgC,GAAG;MAAE,OAAO9B,EAAE,CAAC+B,UAAU,CAAC9B,QAAQ,EAAEoB,UAAU,CAAC;IACvD,KAAKvB,EAAE,CAACkC,QAAQ;MAAE,OAAOhC,EAAE,CAACiC,UAAU,CAAChC,QAAQ,EAAEoB,UAAU,CAAC;IAC5D,KAAKvB,EAAE,CAACoC,QAAQ;MAAE,OAAOlC,EAAE,CAACmC,UAAU,CAAClC,QAAQ,EAAEoB,UAAU,CAAC;IAC5D,KAAKvB,EAAE,CAACsC,QAAQ;MAAE,OAAOpC,EAAE,CAACqC,UAAU,CAACpC,QAAQ,EAAEoB,UAAU,CAAC;IAE5D,KAAKvB,EAAE,CAACwC,IAAI;MAAE,OAAOtC,EAAE,CAAC+B,UAAU,CAAC9B,QAAQ,EAAEoB,UAAU,CAAC;IACxD,KAAKvB,EAAE,CAACyC,SAAS;MAAE,OAAOvC,EAAE,CAACiC,UAAU,CAAChC,QAAQ,EAAEoB,UAAU,CAAC;IAC7D,KAAKvB,EAAE,CAAC0C,SAAS;MAAE,OAAOxC,EAAE,CAACmC,UAAU,CAAClC,QAAQ,EAAEoB,UAAU,CAAC;IAC7D,KAAKvB,EAAE,CAAC2C,SAAS;MAAE,OAAOzC,EAAE,CAACqC,UAAU,CAACpC,QAAQ,EAAEoB,UAAU,CAAC;IAG7D,KAAKvB,EAAE,CAAC4C,YAAY;MAAE,OAAOtC,GAAG,CAACuC,WAAW,CAAC1C,QAAQ,EAAEoB,UAAU,EAAE,CAAC,CAAC;IACrE,KAAKvB,EAAE,CAAC8C,iBAAiB;MAAE,OAAOxC,GAAG,CAACyC,WAAW,CAAC5C,QAAQ,EAAEoB,UAAU,EAAE,CAAC,CAAC;IAC1E,KAAKvB,EAAE,CAACgD,iBAAiB;MAAE,OAAO1C,GAAG,CAAC2C,WAAW,CAAC9C,QAAQ,EAAEoB,UAAU,EAAE,CAAC,CAAC;IAC1E,KAAKvB,EAAE,CAACkD,iBAAiB;MAAE,OAAO5C,GAAG,CAAC6C,WAAW,CAAChD,QAAQ,EAAEoB,UAAU,EAAE,CAAC,CAAC;IAI1E,KAAKvB,EAAE,CAACoD,UAAU;MAAE,OAAOlD,EAAE,CAACmD,gBAAgB,CAAClD,QAAQ,EAAE,KAAK,EAAEoB,UAAU,CAAC;IAC3E,KAAKvB,EAAE,CAACsD,UAAU;MAAE,OAAOpD,EAAE,CAACqD,gBAAgB,CAACpD,QAAQ,EAAE,KAAK,EAAEoB,UAAU,CAAC;IAC3E,KAAKvB,EAAE,CAACwD,UAAU;MAAE,OAAOtD,EAAE,CAACuD,gBAAgB,CAACtD,QAAQ,EAAE,KAAK,EAAEoB,UAAU,CAAC;IAG3E,KAAKvB,EAAE,CAAC0D,YAAY;MAAE,OAAOpD,GAAG,CAACqD,kBAAkB,CAACxD,QAAQ,EAAE,KAAK,EAAEoB,UAAU,CAAC;IAChF,KAAKvB,EAAE,CAAC4D,YAAY;MAAE,OAAOtD,GAAG,CAACuD,kBAAkB,CAAC1D,QAAQ,EAAE,KAAK,EAAEoB,UAAU,CAAC;IAChF,KAAKvB,EAAE,CAAC8D,YAAY;MAAE,OAAOxD,GAAG,CAACyD,kBAAkB,CAAC5D,QAAQ,EAAE,KAAK,EAAEoB,UAAU,CAAC;IAChF,KAAKvB,EAAE,CAACgE,YAAY;MAAE,OAAO1D,GAAG,CAAC2D,kBAAkB,CAAC9D,QAAQ,EAAE,KAAK,EAAEoB,UAAU,CAAC;IAChF,KAAKvB,EAAE,CAACkE,YAAY;MAAE,OAAO5D,GAAG,CAAC6D,kBAAkB,CAAChE,QAAQ,EAAE,KAAK,EAAEoB,UAAU,CAAC;IAChF,KAAKvB,EAAE,CAACoE,YAAY;MAAE,OAAO9D,GAAG,CAAC+D,kBAAkB,CAAClE,QAAQ,EAAE,KAAK,EAAEoB,UAAU,CAAC;EAAC;EAGnF,MAAM,IAAI+C,KAAK,CAAC,iBAAiB,CAAC;AACpC"}
|
|
@@ -9,7 +9,7 @@ export declare function decodeUniformType(uniformType: GL): {
|
|
|
9
9
|
components: number;
|
|
10
10
|
glType: GLType;
|
|
11
11
|
};
|
|
12
|
-
export declare function decodeAttributeType(
|
|
12
|
+
export declare function decodeAttributeType(attributeType: GL): {
|
|
13
13
|
format: VertexFormat;
|
|
14
14
|
components: number;
|
|
15
15
|
glType: GLType;
|