@luma.gl/webgl 9.0.0-alpha.3 → 9.0.0-alpha.30
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 +2 -1
- package/dist/adapter/converters/device-parameters.d.ts +14 -4
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +28 -46
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +20 -56
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/texture-formats.d.ts +31 -42
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +163 -178
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts +2 -2
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +3 -9
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +13 -20
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +2 -5
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +9 -11
- 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.d.ts +4 -4
- package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/attribute-utils.js +1 -18
- 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 +10 -7
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +101 -84
- 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 +2 -2
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +3 -33
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/uniforms.d.ts +9 -10
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
- package/dist/adapter/helpers/uniforms.js +8 -18
- package/dist/adapter/helpers/uniforms.js.map +1 -1
- package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +1 -28
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +35 -41
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +6 -9
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +19 -75
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +38 -11
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +122 -32
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +43 -71
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +169 -41
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +8 -17
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +41 -149
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +88 -9
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -11
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +90 -152
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +7 -15
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +3 -4
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +9 -22
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +64 -44
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +98 -213
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- 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 +8 -20
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +64 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +133 -113
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +3 -3
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +14 -38
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -28
- package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
- package/dist/classic/{buffer.js → buffer-with-accessor.js} +54 -122
- package/dist/classic/buffer-with-accessor.js.map +1 -0
- package/dist/classic/clear.d.ts +22 -0
- package/dist/classic/clear.d.ts.map +1 -0
- package/dist/classic/clear.js +88 -0
- package/dist/classic/clear.js.map +1 -0
- package/dist/classic/copy-and-blit.d.ts +62 -0
- package/dist/classic/copy-and-blit.d.ts.map +1 -0
- package/dist/classic/copy-and-blit.js +202 -0
- package/dist/classic/copy-and-blit.js.map +1 -0
- package/dist/classic/format-utils.d.ts +3 -0
- package/dist/classic/format-utils.d.ts.map +1 -0
- package/dist/classic/format-utils.js +38 -0
- package/dist/classic/format-utils.js.map +1 -0
- package/dist/classic/typed-array-utils.d.ts +15 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +1 -21
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.d.ts +40 -0
- package/dist/context/context/create-browser-context.d.ts.map +1 -0
- package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +23 -19
- 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 +1 -4
- package/dist/context/context/webgl-checks.js.map +1 -1
- package/dist/context/debug/spector.d.ts +1 -2
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +8 -20
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +11 -34
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +8 -7
- 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 +105 -106
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +18 -36
- 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 +4 -9
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +21 -29
- 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 +10 -32
- 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 +16 -51
- 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 +10158 -0
- package/dist/index.cjs +6604 -0
- package/dist/index.d.ts +25 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -26
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist.min.js +37 -0
- package/package.json +21 -9
- package/src/adapter/converters/device-parameters.ts +88 -35
- package/src/adapter/converters/sampler-parameters.ts +19 -9
- package/src/adapter/converters/texture-formats.ts +261 -178
- package/src/adapter/converters/vertex-formats.ts +3 -2
- package/src/adapter/device-helpers/device-features.ts +10 -3
- package/src/adapter/device-helpers/device-limits.ts +3 -3
- package/src/adapter/device-helpers/get-device-info.ts +14 -10
- package/src/adapter/helpers/attribute-utils.ts +4 -5
- package/src/adapter/helpers/get-shader-info.ts +40 -0
- package/src/adapter/helpers/get-shader-layout.ts +150 -68
- package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
- package/src/adapter/helpers/set-uniform.ts +7 -6
- package/src/adapter/helpers/uniforms.ts +23 -13
- package/src/adapter/objects/constants-to-keys.ts +3 -25
- package/src/adapter/objects/webgl-renderbuffer.ts +40 -37
- package/src/adapter/objects/webgl-resource.ts +14 -23
- package/src/adapter/objects/webgl-vertex-array-object.ts +201 -37
- package/src/adapter/resources/webgl-buffer.ts +56 -58
- package/src/adapter/resources/webgl-command-buffer.ts +332 -25
- package/src/adapter/resources/webgl-command-encoder.ts +16 -11
- package/src/adapter/resources/webgl-external-texture.ts +2 -2
- package/src/adapter/resources/webgl-framebuffer.ts +88 -133
- package/src/adapter/resources/webgl-render-pass.ts +155 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +161 -104
- package/src/adapter/resources/webgl-sampler.ts +13 -8
- package/src/adapter/resources/webgl-shader.ts +11 -10
- package/src/adapter/resources/webgl-texture.ts +113 -85
- package/src/adapter/webgl-canvas-context.ts +14 -14
- package/src/adapter/webgl-device.ts +192 -77
- package/src/classic/accessor.ts +4 -17
- package/src/classic/{buffer.ts → buffer-with-accessor.ts} +67 -75
- package/src/classic/clear.ts +110 -0
- package/src/classic/copy-and-blit.ts +308 -0
- package/src/classic/format-utils.ts +43 -0
- package/src/classic/typed-array-utils.ts +18 -27
- package/src/context/context/{create-context.ts → create-browser-context.ts} +48 -31
- package/src/context/context/create-headless-context.ts +48 -0
- package/src/context/context/webgl-checks.ts +1 -1
- package/src/context/debug/spector.ts +7 -6
- package/src/context/debug/webgl-developer-tools.ts +21 -15
- package/src/context/parameters/unified-parameter-api.ts +20 -14
- package/src/context/parameters/webgl-parameter-tables.ts +117 -98
- package/src/context/polyfill/context-data.ts +27 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +8 -7
- package/src/context/polyfill/polyfill-context.ts +7 -9
- package/src/context/polyfill/polyfill-table.ts +18 -16
- package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
- package/src/context/state-tracker/track-context-state.ts +14 -13
- package/src/context/state-tracker/with-parameters.ts +8 -2
- package/src/index.ts +42 -33
- 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/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/bundle.js.map +0 -1
- package/dist/classic/buffer.d.ts.map +0 -1
- package/dist/classic/buffer.js.map +0 -1
- package/dist/context/context/context-state.d.ts +0 -18
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -26
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/context/context/create-context.d.ts +0 -41
- package/dist/context/context/create-context.d.ts.map +0 -1
- package/dist/context/context/create-context.js +0 -49
- 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.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/dist/types/webgl.d.ts +0 -144
- package/dist/types/webgl.d.ts.map +0 -1
- package/dist/types/webgl.js +0 -2
- package/dist/types/webgl.js.map +0 -1
- package/src/adapter/converters/renderbuffer-formats.ts +0 -92
- package/src/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
- package/src/types/webgl.ts +0 -283
|
@@ -1,56 +1,74 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
RenderPipelineProps,
|
|
3
|
-
RenderPipelineParameters,
|
|
4
3
|
RenderPass,
|
|
5
4
|
Buffer,
|
|
6
5
|
Binding,
|
|
7
6
|
ShaderLayout,
|
|
8
7
|
PrimitiveTopology,
|
|
9
|
-
BindingLayout,
|
|
10
|
-
AttributeLayout
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
// BindingLayout,
|
|
9
|
+
AttributeLayout,
|
|
10
|
+
TypedArray,
|
|
11
|
+
BufferMapping
|
|
12
|
+
} from '@luma.gl/core';
|
|
13
|
+
import {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/core';
|
|
14
|
+
import {GL} from '@luma.gl/constants';
|
|
15
|
+
|
|
14
16
|
import {getWebGLDataType} from '../converters/texture-formats';
|
|
15
|
-
import {getShaderLayout} from '../helpers/get-shader-layout';
|
|
16
|
-
import {withDeviceParameters} from '../converters/device-parameters';
|
|
17
|
+
import {getShaderLayout, mergeShaderLayout, mergeBufferMap} from '../helpers/get-shader-layout';
|
|
18
|
+
import {withDeviceParameters, withGLParameters} from '../converters/device-parameters';
|
|
17
19
|
import {setUniform} from '../helpers/set-uniform';
|
|
18
20
|
// import {copyUniform, checkUniformValues} from '../../classes/uniforms';
|
|
19
21
|
|
|
20
|
-
import WebGLDevice from '../webgl-device';
|
|
21
|
-
import WEBGLBuffer from './webgl-buffer';
|
|
22
|
-
import WEBGLShader from './webgl-shader';
|
|
23
|
-
import WEBGLTexture from './webgl-texture';
|
|
24
|
-
import WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';
|
|
22
|
+
import {WebGLDevice} from '../webgl-device';
|
|
23
|
+
import {WEBGLBuffer} from './webgl-buffer';
|
|
24
|
+
import {WEBGLShader} from './webgl-shader';
|
|
25
|
+
import {WEBGLTexture} from './webgl-texture';
|
|
26
|
+
import {WEBGLVertexArrayObject} from '../objects/webgl-vertex-array-object';
|
|
27
|
+
import {WEBGLRenderPass} from './webgl-render-pass';
|
|
25
28
|
|
|
26
29
|
const LOG_PROGRAM_PERF_PRIORITY = 4;
|
|
27
30
|
|
|
28
31
|
/** Creates a new render pipeline */
|
|
29
|
-
export
|
|
32
|
+
export class WEBGLRenderPipeline extends RenderPipeline {
|
|
33
|
+
/** The WebGL device that created this render pipeline */
|
|
30
34
|
device: WebGLDevice;
|
|
35
|
+
/** Handle to underlying WebGL program */
|
|
31
36
|
handle: WebGLProgram;
|
|
37
|
+
/** vertex shader */
|
|
32
38
|
vs: WEBGLShader;
|
|
39
|
+
/** fragment shader */
|
|
33
40
|
fs: WEBGLShader;
|
|
41
|
+
/** The merged layout */
|
|
34
42
|
layout: ShaderLayout;
|
|
43
|
+
/** The layout extracted from shader by WebGL introspection APIs */
|
|
44
|
+
introspectedLayout: ShaderLayout;
|
|
45
|
+
/** Buffer map describing buffer interleaving etc */
|
|
46
|
+
bufferMap: BufferMapping[];
|
|
35
47
|
|
|
36
|
-
|
|
37
|
-
// Experimental flag to avoid deleting Program object while it is cached
|
|
38
|
-
varyings: string[];
|
|
39
|
-
vertexArrayObject: WEBGLVertexArrayObject;
|
|
40
|
-
_indexBuffer?: Buffer;
|
|
48
|
+
/** Uniforms set on this model */
|
|
41
49
|
uniforms: Record<string, any> = {};
|
|
50
|
+
/** Bindings set on this model */
|
|
42
51
|
bindings: Record<string, any> = {};
|
|
52
|
+
/** Any constant attributes */
|
|
53
|
+
constantAttributes: Record<string, TypedArray> = {};
|
|
54
|
+
/** Index buffer is stored separately */
|
|
55
|
+
_indexBuffer?: WEBGLBuffer;
|
|
56
|
+
/** WebGL varyings */
|
|
57
|
+
varyings: string[] | null = null;
|
|
58
|
+
|
|
59
|
+
/** Stores attribute bindings */
|
|
60
|
+
vertexArrayObject: WEBGLVertexArrayObject;
|
|
61
|
+
|
|
43
62
|
_textureUniforms: Record<string, any> = {};
|
|
44
63
|
_textureIndexCounter: number = 0;
|
|
45
64
|
_uniformCount: number = 0;
|
|
46
|
-
_uniformSetters: Record<string, Function
|
|
65
|
+
_uniformSetters: Record<string, Function> = {}; // TODO are these used?
|
|
47
66
|
|
|
48
67
|
constructor(device: WebGLDevice, props: RenderPipelineProps) {
|
|
49
68
|
super(device, props);
|
|
50
69
|
this.device = device;
|
|
51
70
|
this.handle = this.props.handle || this.device.gl.createProgram();
|
|
52
|
-
|
|
53
|
-
this.handle.__SPECTOR_Metadata = {id: this.props.id};
|
|
71
|
+
this.device.setSpectorMetadata(this.handle, {id: this.props.id});
|
|
54
72
|
|
|
55
73
|
// Create shaders if needed
|
|
56
74
|
this.vs = cast<WEBGLShader>(props.vs);
|
|
@@ -64,26 +82,32 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
64
82
|
if (varyings && varyings.length > 0) {
|
|
65
83
|
this.device.assertWebGL2();
|
|
66
84
|
this.varyings = varyings;
|
|
67
|
-
this.device.gl2
|
|
85
|
+
this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);
|
|
68
86
|
}
|
|
69
87
|
|
|
70
88
|
this._compileAndLink();
|
|
71
89
|
|
|
72
|
-
this.
|
|
90
|
+
this.introspectedLayout = getShaderLayout(this.device.gl, this.handle);
|
|
91
|
+
// Merge provided layout with introspected layout
|
|
92
|
+
this.layout = mergeShaderLayout(this.introspectedLayout, props.layout);
|
|
93
|
+
// Merge layout with any buffer map overrides
|
|
94
|
+
this.bufferMap = props.bufferMap || [];
|
|
95
|
+
this.layout = mergeBufferMap(this.layout, this.bufferMap);
|
|
73
96
|
this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);
|
|
74
97
|
}
|
|
75
98
|
|
|
76
|
-
destroy(): void {
|
|
99
|
+
override destroy(): void {
|
|
77
100
|
if (this.handle) {
|
|
78
101
|
this.device.gl.deleteProgram(this.handle);
|
|
79
|
-
this.handle = null;
|
|
102
|
+
// this.handle = null;
|
|
103
|
+
this.destroyed = true;
|
|
80
104
|
}
|
|
81
105
|
}
|
|
82
106
|
|
|
83
107
|
setIndexBuffer(indexBuffer: Buffer): void {
|
|
84
108
|
const webglBuffer = cast<WEBGLBuffer>(indexBuffer);
|
|
85
109
|
this.vertexArrayObject.setElementBuffer(webglBuffer);
|
|
86
|
-
this._indexBuffer =
|
|
110
|
+
this._indexBuffer = webglBuffer;
|
|
87
111
|
}
|
|
88
112
|
|
|
89
113
|
/** @todo needed for portable model */
|
|
@@ -93,10 +117,10 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
93
117
|
const attribute = getAttributeLayout(this.layout, name);
|
|
94
118
|
if (!attribute) {
|
|
95
119
|
log.warn(`Ignoring buffer supplied for unknown attribute "${name}" in pipeline "${this.id}" (buffer "${buffer.id}")`)();
|
|
96
|
-
continue;
|
|
120
|
+
continue; // eslint-disable-line no-continue
|
|
97
121
|
}
|
|
98
122
|
const decoded = decodeVertexFormat(attribute.format);
|
|
99
|
-
const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;
|
|
123
|
+
const {type: typeString, components: size, byteLength: stride, normalized /* , integer*/} = decoded;
|
|
100
124
|
const divisor = attribute.stepMode === 'instance' ? 1 : 0;
|
|
101
125
|
const type = getWebGLDataType(typeString);
|
|
102
126
|
this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {
|
|
@@ -105,13 +129,39 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
105
129
|
stride,
|
|
106
130
|
offset: 0,
|
|
107
131
|
normalized,
|
|
108
|
-
|
|
109
|
-
|
|
132
|
+
// it is the shader attribute declaration, not the vertex memory format,
|
|
133
|
+
// that determines if the data in the buffer will be treated as integers.
|
|
134
|
+
// /
|
|
135
|
+
// Also note that WebGL supports assigning non-normalized integer data to floating point attributes,
|
|
136
|
+
// but as far as we can tell, WebGPU does not.
|
|
137
|
+
integer: false,
|
|
138
|
+
divisor
|
|
110
139
|
});
|
|
111
140
|
}
|
|
112
141
|
}
|
|
113
142
|
|
|
114
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* Constant attributes are only supported in WebGL, not in WebGPU
|
|
145
|
+
* Any attribute that is disabled in the current vertex array object
|
|
146
|
+
* is read from the context's global constant value for that attribute location.
|
|
147
|
+
* @param attributes
|
|
148
|
+
*/
|
|
149
|
+
setConstantAttributes(attributes: Record<string, TypedArray>): void {
|
|
150
|
+
for (const [name, value] of Object.entries(attributes)) {
|
|
151
|
+
const attribute = getAttributeLayout(this.layout, name);
|
|
152
|
+
if (!attribute) {
|
|
153
|
+
log.warn(`Ignoring constant value supplied for unknown attribute "${name}" in pipeline "${this.id}"`)();
|
|
154
|
+
continue; // eslint-disable-line no-continue
|
|
155
|
+
}
|
|
156
|
+
this.vertexArrayObject.setConstant(attribute.location, value);
|
|
157
|
+
}
|
|
158
|
+
Object.assign(this.constantAttributes, attributes);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Bindings include: textures, samplers and uniform buffers
|
|
163
|
+
* @todo needed for portable model
|
|
164
|
+
*/
|
|
115
165
|
setBindings(bindings: Record<string, Binding>): void {
|
|
116
166
|
// if (log.priority >= 2) {
|
|
117
167
|
// checkUniformValues(uniforms, this.id, this._uniformSetters);
|
|
@@ -121,6 +171,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
121
171
|
const binding = this.layout.bindings.find((binding) => binding.name === name);
|
|
122
172
|
if (!binding) {
|
|
123
173
|
log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();
|
|
174
|
+
continue; // eslint-disable-line no-continue
|
|
124
175
|
}
|
|
125
176
|
if (!value) {
|
|
126
177
|
log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();
|
|
@@ -158,7 +209,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
158
209
|
* This function unifies those ways into a single call using common parameters with sane defaults
|
|
159
210
|
*/
|
|
160
211
|
draw(options: {
|
|
161
|
-
renderPass
|
|
212
|
+
renderPass: RenderPass;
|
|
162
213
|
vertexCount?: number;
|
|
163
214
|
indexCount?: number;
|
|
164
215
|
instanceCount?: number;
|
|
@@ -168,20 +219,20 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
168
219
|
baseVertex?: number;
|
|
169
220
|
}): boolean {
|
|
170
221
|
const {
|
|
171
|
-
renderPass
|
|
222
|
+
renderPass,
|
|
172
223
|
vertexCount,
|
|
173
|
-
indexCount,
|
|
224
|
+
// indexCount,
|
|
174
225
|
instanceCount,
|
|
175
226
|
firstVertex = 0,
|
|
176
|
-
firstIndex,
|
|
177
|
-
firstInstance,
|
|
178
|
-
baseVertex
|
|
227
|
+
// firstIndex,
|
|
228
|
+
// firstInstance,
|
|
229
|
+
// baseVertex
|
|
179
230
|
} = options;
|
|
180
231
|
|
|
181
232
|
const drawMode = getDrawMode(this.props.topology);
|
|
182
233
|
const isIndexed: boolean = Boolean(this._indexBuffer);
|
|
183
|
-
const indexType = this._indexBuffer?.
|
|
184
|
-
const isInstanced: boolean = options.instanceCount > 0;
|
|
234
|
+
const indexType = this._indexBuffer?.glIndexType;
|
|
235
|
+
const isInstanced: boolean = Number(options.instanceCount) > 0;
|
|
185
236
|
|
|
186
237
|
// Avoid WebGL draw call when not rendering any data or values are incomplete
|
|
187
238
|
// Note: async textures set as uniforms might still be loading.
|
|
@@ -195,8 +246,6 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
195
246
|
this.device.gl.useProgram(this.handle);
|
|
196
247
|
|
|
197
248
|
this.vertexArrayObject.bind(() => {
|
|
198
|
-
const parameters = {...this.props.parameters, framebuffer: renderPass.props.framebuffer};
|
|
199
|
-
|
|
200
249
|
const primitiveMode = getGLPrimitive(this.props.topology);
|
|
201
250
|
const transformFeedback: any = null;
|
|
202
251
|
if (transformFeedback) {
|
|
@@ -206,33 +255,38 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
206
255
|
// We have to apply bindings before every draw call since other draw calls will overwrite
|
|
207
256
|
this._applyBindings();
|
|
208
257
|
this._applyUniforms();
|
|
258
|
+
this._applyConstantAttributes();
|
|
259
|
+
|
|
260
|
+
const webglRenderPass = renderPass as WEBGLRenderPass;
|
|
209
261
|
|
|
210
262
|
// TODO - double context push/pop
|
|
211
|
-
withDeviceParameters(this.device, parameters, () => {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
263
|
+
withDeviceParameters(this.device, this.props.parameters, () => {
|
|
264
|
+
withGLParameters(this.device, webglRenderPass.glParameters, () => {
|
|
265
|
+
// TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension
|
|
266
|
+
if (isIndexed && isInstanced) {
|
|
267
|
+
// ANGLE_instanced_arrays extension
|
|
268
|
+
this.device.gl2?.drawElementsInstanced(
|
|
269
|
+
drawMode,
|
|
270
|
+
vertexCount || 0, // indexCount?
|
|
271
|
+
indexType,
|
|
272
|
+
firstVertex,
|
|
273
|
+
instanceCount || 0
|
|
274
|
+
);
|
|
275
|
+
// } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {
|
|
276
|
+
// this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);
|
|
277
|
+
} else if (isIndexed) {
|
|
278
|
+
this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?
|
|
279
|
+
} else if (isInstanced) {
|
|
280
|
+
this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);
|
|
281
|
+
} else {
|
|
282
|
+
this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
if (transformFeedback) {
|
|
287
|
+
transformFeedback.end();
|
|
230
288
|
}
|
|
231
289
|
});
|
|
232
|
-
|
|
233
|
-
if (transformFeedback) {
|
|
234
|
-
transformFeedback.end();
|
|
235
|
-
}
|
|
236
290
|
});
|
|
237
291
|
|
|
238
292
|
return true;
|
|
@@ -275,12 +329,12 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
275
329
|
_areTexturesRenderable() {
|
|
276
330
|
let texturesRenderable = true;
|
|
277
331
|
|
|
278
|
-
for (const [
|
|
332
|
+
for (const [, texture] of Object.entries(this._textureUniforms)) {
|
|
279
333
|
texture.update();
|
|
280
334
|
texturesRenderable = texturesRenderable && texture.loaded;
|
|
281
335
|
}
|
|
282
336
|
|
|
283
|
-
for (const [
|
|
337
|
+
for (const [, texture] of Object.entries(this.bindings)) {
|
|
284
338
|
// texture.update();
|
|
285
339
|
if (texture.loaded !== undefined) {
|
|
286
340
|
texturesRenderable = texturesRenderable && texture.loaded;
|
|
@@ -295,6 +349,9 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
295
349
|
this.device.gl.useProgram(this.handle);
|
|
296
350
|
|
|
297
351
|
const {gl2} = this.device;
|
|
352
|
+
if (!gl2) {
|
|
353
|
+
throw new Error('bindings');
|
|
354
|
+
}
|
|
298
355
|
|
|
299
356
|
let textureUnit = 0;
|
|
300
357
|
let uniformBufferIndex = 0;
|
|
@@ -352,26 +409,44 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
352
409
|
_applyUniforms() {
|
|
353
410
|
for (const uniformLayout of this.layout.uniforms || []) {
|
|
354
411
|
const {name, location, type, textureUnit} = uniformLayout;
|
|
355
|
-
const value = this.uniforms[name]
|
|
412
|
+
const value = this.uniforms[name] ?? textureUnit;
|
|
356
413
|
if (value !== undefined) {
|
|
357
414
|
setUniform(this.device.gl, location, type, value);
|
|
358
415
|
}
|
|
359
416
|
}
|
|
360
417
|
}
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Constant attributes are only supported in WebGL, not in WebGPU
|
|
421
|
+
* Any attribute that is disabled in the current vertex array object
|
|
422
|
+
* is read from the context's global constant value for that attribute location.
|
|
423
|
+
*/
|
|
424
|
+
_applyConstantAttributes(): void {
|
|
425
|
+
for (const [name, value] of Object.entries(this.constantAttributes)) {
|
|
426
|
+
const attribute = getAttributeLayout(this.layout, name);
|
|
427
|
+
if (!attribute) {
|
|
428
|
+
log.warn(`Ignoring constant value supplied for unknown attribute "${name}" in pipeline "${this.id}"`)();
|
|
429
|
+
continue; // eslint-disable-line no-continue
|
|
430
|
+
}
|
|
431
|
+
this.vertexArrayObject.setConstant(attribute.location, value);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
361
434
|
}
|
|
362
435
|
|
|
363
|
-
/** Get the primitive type for
|
|
436
|
+
/** Get the primitive type for draw */
|
|
364
437
|
function getDrawMode(
|
|
365
438
|
topology: PrimitiveTopology
|
|
366
|
-
): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.TRIANGLES | GL.TRIANGLE_STRIP {
|
|
439
|
+
): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.LINE_LOOP | GL.TRIANGLES | GL.TRIANGLE_STRIP | GL.TRIANGLE_FAN {
|
|
367
440
|
// prettier-ignore
|
|
368
441
|
switch (topology) {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
442
|
+
case 'point-list': return GL.POINTS;
|
|
443
|
+
case 'line-list': return GL.LINES;
|
|
444
|
+
case 'line-strip': return GL.LINE_STRIP;
|
|
445
|
+
case 'line-loop-webgl': return GL.LINE_LOOP;
|
|
446
|
+
case 'triangle-list': return GL.TRIANGLES;
|
|
447
|
+
case 'triangle-strip': return GL.TRIANGLE_STRIP;
|
|
448
|
+
case 'triangle-fan-webgl': return GL.TRIANGLE_FAN;
|
|
449
|
+
default: throw new Error(topology);
|
|
375
450
|
}
|
|
376
451
|
}
|
|
377
452
|
|
|
@@ -379,35 +454,17 @@ function getDrawMode(
|
|
|
379
454
|
function getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {
|
|
380
455
|
// prettier-ignore
|
|
381
456
|
switch (topology) {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
457
|
+
case 'point-list': return GL.POINTS;
|
|
458
|
+
case 'line-list': return GL.LINES;
|
|
459
|
+
case 'line-strip': return GL.LINES;
|
|
460
|
+
case 'line-loop-webgl': return GL.LINES;
|
|
461
|
+
case 'triangle-list': return GL.TRIANGLES;
|
|
462
|
+
case 'triangle-strip': return GL.TRIANGLES;
|
|
463
|
+
case 'triangle-fan-webgl': return GL.TRIANGLES;
|
|
464
|
+
default: throw new Error(topology);
|
|
388
465
|
}
|
|
389
466
|
}
|
|
390
467
|
|
|
391
|
-
function
|
|
392
|
-
attributes
|
|
393
|
-
layout: ShaderLayout
|
|
394
|
-
): Record<number, Buffer> {
|
|
395
|
-
const byLocation: Record<number, Buffer> = {};
|
|
396
|
-
for (const [name, buffer] of Object.entries(attributes)) {
|
|
397
|
-
const attribute = getAttributeLayout(layout, name);
|
|
398
|
-
byLocation[attribute.location] = buffer;
|
|
399
|
-
}
|
|
400
|
-
return byLocation;
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
function getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | undefined {
|
|
404
|
-
return layout.attributes.find((binding) => binding.name === name);
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
function getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {
|
|
408
|
-
const binding = layout.bindings.find((binding) => binding.name === name);
|
|
409
|
-
if (!binding) {
|
|
410
|
-
throw new Error(`Unknown binding ${name}`);
|
|
411
|
-
}
|
|
412
|
-
return binding;
|
|
468
|
+
function getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {
|
|
469
|
+
return layout.attributes.find((binding) => binding.name === name) || null;
|
|
413
470
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import {Sampler, SamplerProps} from '@luma.gl/core';
|
|
4
|
+
import {GL, GLSamplerParameters} from '@luma.gl/constants';
|
|
4
5
|
import {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';
|
|
5
|
-
import type WebGLDevice from '../webgl-device';
|
|
6
|
+
import type {WebGLDevice} from '../webgl-device';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Sampler object -
|
|
@@ -11,10 +12,10 @@ import type WebGLDevice from '../webgl-device';
|
|
|
11
12
|
* so that they can be set directly on the texture
|
|
12
13
|
* https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html
|
|
13
14
|
*/
|
|
14
|
-
export
|
|
15
|
+
export class WEBGLSampler extends Sampler {
|
|
15
16
|
readonly device: WebGLDevice;
|
|
16
17
|
readonly handle: WebGLSampler;
|
|
17
|
-
readonly parameters:
|
|
18
|
+
readonly parameters: GLSamplerParameters;
|
|
18
19
|
|
|
19
20
|
constructor(device: WebGLDevice, props: SamplerProps) {
|
|
20
21
|
super(device, props);
|
|
@@ -26,7 +27,7 @@ export default class WEBGLSampler extends Sampler {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
destroy(): void {
|
|
30
|
+
override destroy(): void {
|
|
30
31
|
if (this.handle) {
|
|
31
32
|
this.device.gl2.deleteSampler(this.handle);
|
|
32
33
|
// @ts-expect-error
|
|
@@ -34,8 +35,12 @@ export default class WEBGLSampler extends Sampler {
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
override toString(): string {
|
|
39
|
+
return `Sampler(${this.id},${JSON.stringify(this.props)})`;
|
|
40
|
+
}
|
|
41
|
+
|
|
37
42
|
/** Set sampler parameters on the sampler */
|
|
38
|
-
private _setSamplerParameters(parameters:
|
|
43
|
+
private _setSamplerParameters(parameters: GLSamplerParameters): void {
|
|
39
44
|
for (const [pname, value] of Object.entries(parameters)) {
|
|
40
45
|
// Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
|
|
41
46
|
// For now, pick the float version for parameters specified as GLfloat.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
import {log, uid, Shader, ShaderProps} from '@luma.gl/
|
|
3
|
-
import GL from '@luma.gl/constants';
|
|
4
|
-
import {getShaderInfo
|
|
2
|
+
import {log, uid, Shader, ShaderProps, CompilerMessage, formatCompilerLog} from '@luma.gl/core';
|
|
3
|
+
import {GL} from '@luma.gl/constants';
|
|
4
|
+
import {getShaderInfo} from '../helpers/get-shader-info';
|
|
5
5
|
import {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';
|
|
6
|
-
import WebGLDevice from '../webgl-device';
|
|
6
|
+
import {WebGLDevice} from '../webgl-device';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* An immutable compiled shader program that execute portions of the GPU Pipeline
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
export class WEBGLShader extends Shader {
|
|
12
12
|
readonly device: WebGLDevice;
|
|
13
13
|
readonly handle: WebGLShader;
|
|
14
14
|
|
|
@@ -28,18 +28,18 @@ import WebGLDevice from '../webgl-device';
|
|
|
28
28
|
this._compile(this.source);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
destroy(): void {
|
|
31
|
+
override destroy(): void {
|
|
32
32
|
if (this.handle) {
|
|
33
33
|
this.removeStats();
|
|
34
34
|
this.device.gl.deleteShader(this.handle);
|
|
35
|
-
//
|
|
36
|
-
this.
|
|
35
|
+
// this.handle = null;
|
|
36
|
+
this.destroyed = true;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
async compilationInfo(): Promise<readonly CompilerMessage[]> {
|
|
41
41
|
const log = this.device.gl.getShaderInfoLog(this.handle);
|
|
42
|
-
return parseShaderCompilerLog(log);
|
|
42
|
+
return log ? parseShaderCompilerLog(log) : [];
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// PRIVATE METHODS
|
|
@@ -58,7 +58,8 @@ import WebGLDevice from '../webgl-device';
|
|
|
58
58
|
const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);
|
|
59
59
|
if (!compileStatus) {
|
|
60
60
|
const shaderLog = gl.getShaderInfoLog(this.handle);
|
|
61
|
-
const
|
|
61
|
+
const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
|
|
62
|
+
const messages = parsedLog.filter(message => message.type === 'error');
|
|
62
63
|
const formattedLog = formatCompilerLog(messages, source);
|
|
63
64
|
const shaderName: string = getShaderInfo(source).name;
|
|
64
65
|
const shaderDescription = `${this.stage} shader ${shaderName}`;
|