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