@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,5 +1,5 @@
|
|
|
1
|
-
import {assert} from '@luma.gl/
|
|
2
|
-
import GL from '@luma.gl/constants';
|
|
1
|
+
import {assert} from '@luma.gl/core';
|
|
2
|
+
import {GL} from '@luma.gl/constants';
|
|
3
3
|
|
|
4
4
|
// Resolve a WebGL enumeration name (returns itself if already a number)
|
|
5
5
|
export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
|
|
@@ -16,30 +16,8 @@ export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
|
|
|
16
16
|
|
|
17
17
|
// Look up string, after removing any 'GL.' or 'gl.' prefix
|
|
18
18
|
name = name.replace(/^.*\./, '');
|
|
19
|
+
// @ts-ignore expect-error depends on settings
|
|
19
20
|
const value = gl[name];
|
|
20
21
|
assert(value !== undefined, `Accessing undefined constant GL.${name}`);
|
|
21
22
|
return value;
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
export function getKey(gl: WebGLRenderingContext, value: any): string {
|
|
25
|
-
// @ts-expect-error
|
|
26
|
-
gl = gl.gl || gl;
|
|
27
|
-
value = Number(value);
|
|
28
|
-
for (const key in gl) {
|
|
29
|
-
if (gl[key] === value) {
|
|
30
|
-
return `GL.${key}`;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return String(value);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export function getKeyType(gl: WebGLRenderingContext, value: any): string {
|
|
37
|
-
assert(value !== undefined, 'undefined key');
|
|
38
|
-
value = Number(value);
|
|
39
|
-
for (const key in gl) {
|
|
40
|
-
if (gl[key] === value) {
|
|
41
|
-
return `GL.${key}`;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return String(value);
|
|
45
|
-
}
|
|
@@ -1,29 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
isRenderbufferFormatSupported, getRenderbufferFormatBytesPerPixel
|
|
8
|
-
} from '../converters/renderbuffer-formats';
|
|
1
|
+
import {assert, ResourceProps, TextureFormat} from '@luma.gl/core';
|
|
2
|
+
import {GL} from '@luma.gl/constants';
|
|
3
|
+
import {WebGLDevice} from '../webgl-device';
|
|
4
|
+
import {WebGLResource} from './webgl-resource';
|
|
5
|
+
import {isRenderbufferFormatSupported} from '../converters/texture-formats';
|
|
6
|
+
import {convertTextureFormatToGL, getTextureFormatBytesPerPixel} from '../converters/texture-formats';
|
|
9
7
|
|
|
10
8
|
export type RenderbufferProps = ResourceProps & {
|
|
11
|
-
format:
|
|
9
|
+
format: TextureFormat;
|
|
12
10
|
width?: number;
|
|
13
11
|
height?: number;
|
|
14
12
|
samples?: number;
|
|
15
13
|
};
|
|
16
14
|
|
|
17
|
-
const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
|
|
18
|
-
id: undefined,
|
|
19
|
-
handle: undefined,
|
|
20
|
-
userData: undefined,
|
|
21
|
-
format: 0,
|
|
22
|
-
width: 1,
|
|
23
|
-
height: 1,
|
|
24
|
-
samples: 0
|
|
25
|
-
};
|
|
26
|
-
|
|
27
15
|
/**
|
|
28
16
|
* Renderbuffers are GPU objects that contain images.
|
|
29
17
|
* In contrast to Textures they are optimized for use as render targets, with Framebuffers.
|
|
@@ -34,36 +22,54 @@ const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
|
|
|
34
22
|
* use Textures instead.
|
|
35
23
|
* Renderbuffer objects also natively accommodate Multisampling (MSAA).
|
|
36
24
|
*/
|
|
37
|
-
export
|
|
38
|
-
|
|
25
|
+
export class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps> {
|
|
26
|
+
static override readonly defaultProps: Required<RenderbufferProps> = {
|
|
27
|
+
id: undefined,
|
|
28
|
+
handle: undefined,
|
|
29
|
+
userData: undefined,
|
|
30
|
+
format: undefined, // 'depth16unorm'
|
|
31
|
+
width: 1,
|
|
32
|
+
height: 1,
|
|
33
|
+
samples: 0
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
override get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
|
|
39
37
|
|
|
40
38
|
get width(): number { return this.props.width; }
|
|
41
39
|
get height(): number { return this.props.height; }
|
|
42
|
-
get format():
|
|
40
|
+
get format(): TextureFormat { return this.props.format; }
|
|
43
41
|
get samples(): number { return this.props.samples; }
|
|
42
|
+
get attachment() { return }
|
|
43
|
+
|
|
44
|
+
/** WebGL format constant */
|
|
45
|
+
glFormat: GL;
|
|
44
46
|
|
|
45
|
-
static
|
|
46
|
-
return
|
|
47
|
+
static isTextureFormatSupported(device: WebGLDevice, format: TextureFormat): boolean {
|
|
48
|
+
return isRenderbufferFormatSupported(device.gl, format);
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
constructor(device: WebGLDevice, props: RenderbufferProps) {
|
|
50
|
-
|
|
52
|
+
// TODO - remove temporary sanity check
|
|
53
|
+
if (typeof props.format === 'number') {
|
|
54
|
+
throw new Error('Renderbuffer');
|
|
55
|
+
}
|
|
56
|
+
super(device, props, WEBGLRenderbuffer.defaultProps);
|
|
57
|
+
this.glFormat = convertTextureFormatToGL(this.props.format, device.isWebGL2);
|
|
51
58
|
this._initialize(this.props);
|
|
52
59
|
}
|
|
53
60
|
|
|
54
|
-
resize(size: {width: number, height: number}):
|
|
61
|
+
resize(size: {width: number, height: number}): void {
|
|
55
62
|
// Don't resize if width/height haven't changed
|
|
56
63
|
if (size.width !== this.width || size.height !== this.height) {
|
|
57
64
|
Object.assign(this.props, {...size, format: this.format, samples: this.samples});
|
|
58
65
|
this._initialize(this.props);
|
|
59
66
|
}
|
|
60
|
-
return this;
|
|
61
67
|
}
|
|
62
68
|
|
|
63
69
|
// PRIVATE METHODS
|
|
64
70
|
|
|
65
71
|
/** Creates and initializes a renderbuffer object's data store */
|
|
66
|
-
protected _initialize(props: Required<RenderbufferProps>) {
|
|
72
|
+
protected _initialize(props: Required<RenderbufferProps>): void {
|
|
67
73
|
const {format, width, height, samples} = props;
|
|
68
74
|
assert(format, 'Needs format');
|
|
69
75
|
|
|
@@ -72,33 +78,30 @@ export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps>
|
|
|
72
78
|
this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
|
|
73
79
|
|
|
74
80
|
if (samples !== 0 && this.device.isWebGL2) {
|
|
75
|
-
|
|
76
|
-
this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);
|
|
81
|
+
this.gl2.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, this.glFormat, width, height);
|
|
77
82
|
} else {
|
|
78
|
-
this.gl.renderbufferStorage(GL.RENDERBUFFER,
|
|
83
|
+
this.gl.renderbufferStorage(GL.RENDERBUFFER, this.glFormat, width, height);
|
|
79
84
|
}
|
|
80
85
|
|
|
81
86
|
this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
|
|
82
87
|
|
|
83
88
|
this.trackAllocatedMemory(
|
|
84
|
-
width * height * (samples || 1) *
|
|
89
|
+
width * height * (samples || 1) * getTextureFormatBytesPerPixel(this.glFormat, this.device.isWebGL2)
|
|
85
90
|
);
|
|
86
|
-
|
|
87
|
-
return this;
|
|
88
91
|
}
|
|
89
92
|
|
|
90
93
|
// RESOURCE IMPLEMENTATION
|
|
91
94
|
|
|
92
|
-
_createHandle() {
|
|
95
|
+
override _createHandle() {
|
|
93
96
|
return this.gl.createRenderbuffer();
|
|
94
97
|
}
|
|
95
98
|
|
|
96
|
-
_deleteHandle(): void {
|
|
99
|
+
override _deleteHandle(): void {
|
|
97
100
|
this.gl.deleteRenderbuffer(this.handle);
|
|
98
101
|
this.trackDeallocatedMemory();
|
|
99
102
|
}
|
|
100
103
|
|
|
101
|
-
_bindHandle(handle: WEBGLRenderbuffer): void {
|
|
104
|
+
override _bindHandle(handle: WEBGLRenderbuffer): void {
|
|
102
105
|
this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
|
|
103
106
|
}
|
|
104
107
|
}
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
import {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/
|
|
3
|
-
import type {Device, ResourceProps} from '@luma.gl/
|
|
4
|
-
import GL from '@luma.gl/constants';
|
|
2
|
+
import {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/core';
|
|
3
|
+
import type {Device, ResourceProps} from '@luma.gl/core';
|
|
4
|
+
import {GL} from '@luma.gl/constants';
|
|
5
5
|
import {isWebGL2, assertWebGLContext} from '../../context/context/webgl-checks';
|
|
6
|
-
import WebGLDevice from '../webgl-device';
|
|
6
|
+
import {WebGLDevice} from '../webgl-device';
|
|
7
7
|
|
|
8
8
|
// Requires full GL enum to be bundled... Make these bindings dependent on dynamic import (debug)?
|
|
9
|
-
import {
|
|
9
|
+
import {getKeyValue} from './constants-to-keys';
|
|
10
10
|
|
|
11
11
|
const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Base class for WebGL object wrappers
|
|
15
15
|
*/
|
|
16
|
-
|
|
17
|
-
id: string;
|
|
18
|
-
userData: any;
|
|
16
|
+
export abstract class WebGLResource<Props extends ResourceProps> extends Resource<Props> {
|
|
19
17
|
readonly device: WebGLDevice;
|
|
20
18
|
readonly gl: WebGLRenderingContext;
|
|
21
19
|
readonly gl2: WebGL2RenderingContext;
|
|
@@ -34,12 +32,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
34
32
|
assertWebGLContext(gl);
|
|
35
33
|
|
|
36
34
|
// extends
|
|
37
|
-
|
|
38
|
-
const {id, userData = {}} = props || {};
|
|
35
|
+
const {id} = props || {};
|
|
39
36
|
this.gl = gl;
|
|
40
37
|
this.gl2 = gl as WebGL2RenderingContext;
|
|
41
38
|
this.id = id || uid(this.constructor.name);
|
|
42
|
-
this.userData = userData;
|
|
43
39
|
|
|
44
40
|
// Set the handle
|
|
45
41
|
// If handle was provided, use it, otherwise create a new handle
|
|
@@ -48,7 +44,6 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
48
44
|
// this.glCount = glGetContextLossCount(this.gl);
|
|
49
45
|
|
|
50
46
|
// Default VertexArray needs to be created with null handle, so compare against undefined
|
|
51
|
-
// @ts-expect-error
|
|
52
47
|
this._handle = props?.handle;
|
|
53
48
|
if (this._handle === undefined) {
|
|
54
49
|
this._handle = this._createHandle();
|
|
@@ -57,7 +52,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
57
52
|
this.byteLength = 0;
|
|
58
53
|
}
|
|
59
54
|
|
|
60
|
-
toString(): string {
|
|
55
|
+
override toString(): string {
|
|
61
56
|
return `${this.constructor.name}(${this.id})`;
|
|
62
57
|
}
|
|
63
58
|
|
|
@@ -74,11 +69,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
74
69
|
return this._handle;
|
|
75
70
|
}
|
|
76
71
|
|
|
77
|
-
|
|
78
|
-
this.delete();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
delete({deleteChildren = false} = {}) {
|
|
72
|
+
override delete({deleteChildren = false} = {}) {
|
|
82
73
|
// Delete this object, and get refs to any children
|
|
83
74
|
// @ts-expect-error
|
|
84
75
|
const children = this._handle && this._deleteHandle(this._handle);
|
|
@@ -91,7 +82,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
91
82
|
// @ts-expect-error
|
|
92
83
|
if (children && deleteChildren) {
|
|
93
84
|
// @ts-expect-error
|
|
94
|
-
children.filter(Boolean).forEach((child) => child.
|
|
85
|
+
children.filter(Boolean).forEach((child) => child.destroy());
|
|
95
86
|
}
|
|
96
87
|
|
|
97
88
|
return this;
|
|
@@ -130,7 +121,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
130
121
|
* @param name
|
|
131
122
|
* @return param
|
|
132
123
|
*/
|
|
133
|
-
getParameter(pname: number, props = {}): any {
|
|
124
|
+
getParameter(pname: number, props: any = {}): any {
|
|
134
125
|
pname = getKeyValue(this.gl, pname);
|
|
135
126
|
assert(pname);
|
|
136
127
|
|
|
@@ -163,7 +154,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
163
154
|
// Many resources support a getParameter call -
|
|
164
155
|
// getParameters will get all parameters - slow but useful for debugging
|
|
165
156
|
// eslint-disable-next-line complexity
|
|
166
|
-
getParameters(options: {parameters
|
|
157
|
+
getParameters(options: {parameters?: any, keys?: any} = {}) {
|
|
167
158
|
const {parameters, keys} = options;
|
|
168
159
|
|
|
169
160
|
// Get parameter definitions for this Resource
|
|
@@ -188,10 +179,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
188
179
|
(!('extension' in parameter) || this.gl.getExtension(parameter.extension));
|
|
189
180
|
|
|
190
181
|
if (parameterAvailable) {
|
|
191
|
-
const key = keys ?
|
|
182
|
+
const key = keys ? this.device.getGLKey(pname) : pname;
|
|
192
183
|
values[key] = this.getParameter(pname, options);
|
|
193
184
|
if (keys && parameter.type === 'GLenum') {
|
|
194
|
-
values[key] =
|
|
185
|
+
values[key] = this.device.getGLKey(values[key]);
|
|
195
186
|
}
|
|
196
187
|
}
|
|
197
188
|
}
|
|
@@ -1,64 +1,103 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import type {Device, Buffer, ResourceProps, TypedArray, NumericArray} from '@luma.gl/core';
|
|
2
|
+
import {Resource, assert, getScratchArray, fillArray} from '@luma.gl/core';
|
|
3
|
+
import {GL} from '@luma.gl/constants';
|
|
3
4
|
import {getBrowser} from '@probe.gl/env';
|
|
4
5
|
|
|
5
|
-
import WebGLDevice from '../webgl-device';
|
|
6
|
-
import WebGLResource from './webgl-resource';
|
|
6
|
+
import {WebGLDevice} from '../webgl-device';
|
|
7
|
+
import {WebGLResource} from './webgl-resource';
|
|
8
|
+
import {WEBGLBuffer} from '../resources/webgl-buffer';
|
|
7
9
|
|
|
8
|
-
import
|
|
10
|
+
import {BufferWithAccessor} from '../../classic/buffer-with-accessor';
|
|
9
11
|
|
|
10
12
|
const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* VertexArrayObject properties
|
|
16
|
+
* @param constantAttributeZero Attribute 0 can not be disable on most desktop OpenGL based browsers
|
|
17
|
+
* and on iOS Safari browser.
|
|
14
18
|
*/
|
|
15
19
|
export type VertexArrayObjectProps = ResourceProps & {
|
|
20
|
+
constantAttributeZero?: boolean;
|
|
16
21
|
};
|
|
17
22
|
|
|
18
23
|
/** VertexArrayObject wrapper */
|
|
19
|
-
export
|
|
20
|
-
get [Symbol.toStringTag](): string {
|
|
24
|
+
export class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
|
|
25
|
+
override get [Symbol.toStringTag](): string {
|
|
21
26
|
return 'BaseVertexArrayObject';
|
|
22
27
|
}
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
/** Buffer constant */
|
|
30
|
+
private buffer: BufferWithAccessor | null = null;
|
|
31
|
+
private bufferValue = null;
|
|
32
|
+
|
|
33
|
+
static isConstantAttributeZeroSupported(device: Device): boolean {
|
|
34
|
+
return device.info.type === 'webgl2' || getBrowser() === 'Chrome';
|
|
27
35
|
}
|
|
28
36
|
|
|
29
|
-
|
|
37
|
+
// Create a VertexArray
|
|
38
|
+
constructor(device: Device, props?: VertexArrayObjectProps) {
|
|
39
|
+
super(device, props, {...Resource.defaultProps, constantAttributeZero: false});
|
|
40
|
+
Object.seal(this);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
override destroy(): void {
|
|
44
|
+
super.destroy();
|
|
45
|
+
if (this.buffer) {
|
|
46
|
+
this.buffer?.destroy();
|
|
47
|
+
} }
|
|
48
|
+
|
|
49
|
+
override _createHandle() {
|
|
30
50
|
return this.gl2.createVertexArray();
|
|
31
51
|
}
|
|
32
52
|
|
|
33
|
-
_deleteHandle(): void {
|
|
53
|
+
override _deleteHandle(): void {
|
|
34
54
|
this.gl2.deleteVertexArray(this.handle);
|
|
35
55
|
// @ts-expect-error
|
|
36
56
|
return [this.elements];
|
|
37
57
|
// return [this.elements, ...this.buffers];
|
|
38
58
|
}
|
|
39
59
|
|
|
40
|
-
_bindHandle(handle: WEBGLVertexArrayObject): void {
|
|
60
|
+
override _bindHandle(handle: WEBGLVertexArrayObject): void {
|
|
41
61
|
this.gl2.bindVertexArray(handle);
|
|
42
62
|
}
|
|
43
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Enabling an attribute location makes it reference the currently bound buffer
|
|
66
|
+
* Disabling an attribute location makes it reference the global constant value
|
|
67
|
+
* TODO - handle single values for size 1 attributes?
|
|
68
|
+
* TODO - convert classic arrays based on known type?
|
|
69
|
+
*/
|
|
70
|
+
enable(location: number, enable = true): void {
|
|
71
|
+
// Attribute 0 cannot be disabled in most desktop OpenGL based browsers...
|
|
72
|
+
const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';
|
|
73
|
+
const canDisableAttribute = canDisableAttributeZero || location !== 0;
|
|
74
|
+
|
|
75
|
+
if (enable || canDisableAttribute) {
|
|
76
|
+
location = Number(location);
|
|
77
|
+
this.bind(() =>
|
|
78
|
+
enable
|
|
79
|
+
? this.gl.enableVertexAttribArray(location)
|
|
80
|
+
: this.gl.disableVertexAttribArray(location)
|
|
81
|
+
);
|
|
82
|
+
} }
|
|
83
|
+
|
|
44
84
|
// Set (bind) an elements buffer, for indexed rendering.
|
|
45
85
|
// Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported
|
|
46
|
-
setElementBuffer(elementBuffer:
|
|
47
|
-
assert(!elementBuffer || elementBuffer.
|
|
86
|
+
setElementBuffer(elementBuffer: WEBGLBuffer | null = null, opts = {}) {
|
|
87
|
+
assert(!elementBuffer || elementBuffer.glTarget === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
|
|
48
88
|
|
|
49
89
|
// The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...
|
|
50
90
|
this.bind(() => {
|
|
51
91
|
this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
|
|
52
92
|
});
|
|
53
|
-
|
|
54
|
-
return this;
|
|
55
93
|
}
|
|
56
94
|
|
|
57
95
|
/** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
|
|
58
|
-
setBuffer(location: number, buffer:
|
|
96
|
+
setBuffer(location: number, buffer: WEBGLBuffer, accessor: any): void {
|
|
59
97
|
// Check target
|
|
60
|
-
if (buffer.
|
|
61
|
-
|
|
98
|
+
if (buffer.glTarget === GL.ELEMENT_ARRAY_BUFFER) {
|
|
99
|
+
this.setElementBuffer(buffer, accessor);
|
|
100
|
+
return;
|
|
62
101
|
}
|
|
63
102
|
|
|
64
103
|
const {size, type, stride, offset, normalized, integer, divisor} = accessor;
|
|
@@ -83,29 +122,154 @@ export default class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObj
|
|
|
83
122
|
|
|
84
123
|
// NOTE We don't unbind buffer here, typically another buffer will be bound just after
|
|
85
124
|
});
|
|
125
|
+
}
|
|
86
126
|
|
|
87
|
-
|
|
127
|
+
/**
|
|
128
|
+
* Set an attribute to a constant value
|
|
129
|
+
* @param device
|
|
130
|
+
* @param location
|
|
131
|
+
* @param array
|
|
132
|
+
*
|
|
133
|
+
* @note Constants are stored globally on the WebGL context, not the VAO
|
|
134
|
+
* so they need to be updated before every render
|
|
135
|
+
* @todo - use known type (in configuration or passed in) to allow non-typed arrays?
|
|
136
|
+
* @todo - remember/cache values to avoid setting them unnecessarily?
|
|
137
|
+
*/
|
|
138
|
+
setConstant(location: any, array: TypedArray): void {
|
|
139
|
+
switch (array.constructor) {
|
|
140
|
+
case Float32Array:
|
|
141
|
+
setConstantFloatArray(this.device, location, array as Float32Array);
|
|
142
|
+
break;
|
|
143
|
+
case Int32Array:
|
|
144
|
+
setConstantIntArray(this.device, location, array as Int32Array);
|
|
145
|
+
break;
|
|
146
|
+
case Uint32Array:
|
|
147
|
+
setConstantUintArray(this.device, location, array as Uint32Array);
|
|
148
|
+
break;
|
|
149
|
+
default:
|
|
150
|
+
assert(false);
|
|
151
|
+
}
|
|
88
152
|
}
|
|
89
153
|
|
|
90
154
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
155
|
+
* Provide a means to create a buffer that is equivalent to a constant.
|
|
156
|
+
* NOTE: Desktop OpenGL cannot disable attribute 0.
|
|
157
|
+
* https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-
|
|
158
|
+
* this-has-significant-performance-penalty
|
|
95
159
|
*/
|
|
96
|
-
|
|
97
|
-
//
|
|
98
|
-
const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';
|
|
99
|
-
const canDisableAttribute = canDisableAttributeZero || location !== 0;
|
|
160
|
+
getConstantBuffer(elementCount: number, value): Buffer {
|
|
161
|
+
// Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)
|
|
100
162
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
163
|
+
const constantValue = normalizeConstantArrayValue(value);
|
|
164
|
+
|
|
165
|
+
const byteLength = constantValue.byteLength * elementCount;
|
|
166
|
+
const length = constantValue.length * elementCount;
|
|
167
|
+
|
|
168
|
+
let updateNeeded = !this.buffer;
|
|
169
|
+
|
|
170
|
+
this.buffer = this.buffer || this.device.createBuffer({byteLength}) as BufferWithAccessor;
|
|
171
|
+
updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);
|
|
172
|
+
|
|
173
|
+
// Reallocate and update contents if needed
|
|
174
|
+
updateNeeded =
|
|
175
|
+
updateNeeded || !compareConstantArrayValues(constantValue, this.bufferValue);
|
|
176
|
+
|
|
177
|
+
if (updateNeeded) {
|
|
178
|
+
// Create a typed array that is big enough, and fill it with the required data
|
|
179
|
+
const typedArray = getScratchArray(value.constructor, length);
|
|
180
|
+
fillArray({target: typedArray, source: constantValue, start: 0, count: length});
|
|
181
|
+
this.buffer.subData(typedArray);
|
|
182
|
+
this.bufferValue = value;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return this.buffer;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function setConstantFloatArray(device: WebGLDevice, location: number, array: Float32Array): void {
|
|
190
|
+
switch (array.length) {
|
|
191
|
+
case 1:
|
|
192
|
+
device.gl.vertexAttrib1fv(location, array);
|
|
193
|
+
break;
|
|
194
|
+
case 2:
|
|
195
|
+
device.gl.vertexAttrib2fv(location, array);
|
|
196
|
+
break;
|
|
197
|
+
case 3:
|
|
198
|
+
device.gl.vertexAttrib3fv(location, array);
|
|
199
|
+
break;
|
|
200
|
+
case 4:
|
|
201
|
+
device.gl.vertexAttrib4fv(location, array);
|
|
202
|
+
break;
|
|
203
|
+
default:
|
|
204
|
+
assert(false);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function setConstantIntArray(device: WebGLDevice, location: number, array: Int32Array): void {
|
|
209
|
+
device.assertWebGL2();
|
|
210
|
+
device.gl2?.vertexAttribI4iv(location, array);
|
|
211
|
+
// switch (array.length) {
|
|
212
|
+
// case 1:
|
|
213
|
+
// gl.vertexAttribI1iv(location, array);
|
|
214
|
+
// break;
|
|
215
|
+
// case 2:
|
|
216
|
+
// gl.vertexAttribI2iv(location, array);
|
|
217
|
+
// break;
|
|
218
|
+
// case 3:
|
|
219
|
+
// gl.vertexAttribI3iv(location, array);
|
|
220
|
+
// break;
|
|
221
|
+
// case 4:
|
|
222
|
+
// break;
|
|
223
|
+
// default:
|
|
224
|
+
// assert(false);
|
|
225
|
+
// }
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function setConstantUintArray(device: WebGLDevice, location: number, array: Uint32Array) {
|
|
229
|
+
device.assertWebGL2();
|
|
230
|
+
device.gl2?.vertexAttribI4uiv(location, array);
|
|
231
|
+
// switch (array.length) {
|
|
232
|
+
// case 1:
|
|
233
|
+
// gl.vertexAttribI1uiv(location, array);
|
|
234
|
+
// break;
|
|
235
|
+
// case 2:
|
|
236
|
+
// gl.vertexAttribI2uiv(location, array);
|
|
237
|
+
// break;
|
|
238
|
+
// case 3:
|
|
239
|
+
// gl.vertexAttribI3uiv(location, array);
|
|
240
|
+
// break;
|
|
241
|
+
// case 4:
|
|
242
|
+
// gl.vertexAttribI4uiv(location, array);
|
|
243
|
+
// break;
|
|
244
|
+
// default:
|
|
245
|
+
// assert(false);
|
|
246
|
+
// }
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// HELPERS
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)
|
|
253
|
+
* TODO - handle single values for size 1 attributes?
|
|
254
|
+
*/
|
|
255
|
+
function normalizeConstantArrayValue(arrayValue: NumericArray) {
|
|
256
|
+
if (Array.isArray(arrayValue)) {
|
|
257
|
+
return new Float32Array(arrayValue);
|
|
258
|
+
}
|
|
259
|
+
return arrayValue;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
*
|
|
264
|
+
*/
|
|
265
|
+
function compareConstantArrayValues(v1: NumericArray, v2: NumericArray): boolean {
|
|
266
|
+
if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
for (let i = 0; i < v1.length; ++i) {
|
|
270
|
+
if (v1[i] !== v2[i]) {
|
|
271
|
+
return false;
|
|
108
272
|
}
|
|
109
|
-
return this;
|
|
110
273
|
}
|
|
274
|
+
return true;
|
|
111
275
|
}
|