@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
|
@@ -6,17 +6,20 @@ import type {
|
|
|
6
6
|
DeviceFeature,
|
|
7
7
|
CanvasContextProps,
|
|
8
8
|
TextureFormat
|
|
9
|
-
} from '@luma.gl/
|
|
10
|
-
import {Device, CanvasContext, log,
|
|
9
|
+
} from '@luma.gl/core';
|
|
10
|
+
import {Device, CanvasContext, log, uid} from '@luma.gl/core';
|
|
11
11
|
import {isBrowser} from '@probe.gl/env';
|
|
12
12
|
import {polyfillContext} from '../context/polyfill/polyfill-context';
|
|
13
|
-
import {trackContextState} from '../context/state-tracker/track-context-state';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
13
|
+
import {popContextState, pushContextState, trackContextState} from '../context/state-tracker/track-context-state';
|
|
14
|
+
import {createBrowserContext} from '../context/context/create-browser-context';
|
|
15
|
+
import {
|
|
16
|
+
createHeadlessContext,
|
|
17
|
+
isHeadlessGLRegistered
|
|
18
|
+
} from '../context/context/create-headless-context';
|
|
16
19
|
import {getDeviceInfo} from './device-helpers/get-device-info';
|
|
17
20
|
import {getDeviceFeatures} from './device-helpers/device-features';
|
|
18
21
|
import {getDeviceLimits, getWebGLLimits, WebGLLimits} from './device-helpers/device-limits';
|
|
19
|
-
import WebGLCanvasContext from './webgl-canvas-context';
|
|
22
|
+
import {WebGLCanvasContext} from './webgl-canvas-context';
|
|
20
23
|
import {loadSpectorJS, initializeSpectorJS} from '../context/debug/spector';
|
|
21
24
|
import {loadWebGLDeveloperTools, makeDebugContext} from '../context/debug/webgl-developer-tools';
|
|
22
25
|
import {
|
|
@@ -29,48 +32,51 @@ import {
|
|
|
29
32
|
import type {
|
|
30
33
|
BufferProps,
|
|
31
34
|
ShaderProps,
|
|
32
|
-
Sampler,
|
|
35
|
+
// Sampler,
|
|
33
36
|
SamplerProps,
|
|
34
37
|
TextureProps,
|
|
35
38
|
ExternalTexture,
|
|
36
39
|
ExternalTextureProps,
|
|
37
40
|
FramebufferProps,
|
|
38
|
-
RenderPipeline,
|
|
41
|
+
// RenderPipeline,
|
|
39
42
|
RenderPipelineProps,
|
|
40
43
|
ComputePipeline,
|
|
41
44
|
ComputePipelineProps,
|
|
42
|
-
RenderPass,
|
|
45
|
+
// RenderPass,
|
|
43
46
|
RenderPassProps,
|
|
44
47
|
ComputePass,
|
|
45
|
-
ComputePassProps
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
import
|
|
51
|
-
import
|
|
52
|
-
import
|
|
53
|
-
import
|
|
54
|
-
import
|
|
55
|
-
import
|
|
48
|
+
ComputePassProps,
|
|
49
|
+
// CommandEncoder,
|
|
50
|
+
CommandEncoderProps
|
|
51
|
+
} from '@luma.gl/core';
|
|
52
|
+
|
|
53
|
+
import {BufferWithAccessor} from '../classic/buffer-with-accessor';
|
|
54
|
+
import {WEBGLBuffer} from './resources/webgl-buffer';
|
|
55
|
+
import {WEBGLShader} from './resources/webgl-shader';
|
|
56
|
+
import {WEBGLSampler} from './resources/webgl-sampler';
|
|
57
|
+
import {WEBGLTexture} from './resources/webgl-texture';
|
|
58
|
+
import {WEBGLFramebuffer} from './resources/webgl-framebuffer';
|
|
59
|
+
import {WEBGLRenderPass} from './resources/webgl-render-pass';
|
|
60
|
+
import {WEBGLRenderPipeline} from './resources/webgl-render-pipeline';
|
|
61
|
+
import {WEBGLCommandEncoder} from './resources/webgl-command-encoder';
|
|
56
62
|
|
|
57
63
|
const LOG_LEVEL = 1;
|
|
58
64
|
|
|
59
|
-
let counter = 0;
|
|
60
|
-
|
|
61
65
|
/** WebGPU style Device API for a WebGL context */
|
|
62
|
-
export
|
|
63
|
-
//
|
|
66
|
+
export class WebGLDevice extends Device {
|
|
67
|
+
//
|
|
68
|
+
// Public `Device` API
|
|
69
|
+
//
|
|
64
70
|
|
|
65
71
|
static type: string = 'webgl';
|
|
66
72
|
|
|
67
73
|
static isSupported(): boolean {
|
|
68
|
-
return typeof WebGLRenderingContext !== 'undefined';
|
|
74
|
+
return typeof WebGLRenderingContext !== 'undefined' || isHeadlessGLRegistered();
|
|
69
75
|
}
|
|
70
76
|
|
|
71
77
|
readonly info: DeviceInfo;
|
|
72
78
|
readonly canvasContext: WebGLCanvasContext;
|
|
73
|
-
|
|
79
|
+
|
|
74
80
|
readonly handle: WebGLRenderingContext;
|
|
75
81
|
|
|
76
82
|
get features(): Set<DeviceFeature> {
|
|
@@ -83,36 +89,15 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
83
89
|
return this._limits;
|
|
84
90
|
}
|
|
85
91
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
/** WebGL1 typed context. Can always be used. */
|
|
89
|
-
readonly gl: WebGLRenderingContext;
|
|
90
|
-
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
91
|
-
readonly gl2: WebGL2RenderingContext;
|
|
92
|
-
readonly debug: boolean = false;
|
|
93
|
-
|
|
94
|
-
/** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
|
|
95
|
-
readonly isWebGL1: boolean;
|
|
96
|
-
/** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
|
|
97
|
-
readonly isWebGL2: boolean;
|
|
98
|
-
|
|
99
|
-
get webglLimits(): WebGLLimits {
|
|
100
|
-
this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
|
|
101
|
-
return this._webglLimits;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
private _features: Set<DeviceFeature>;
|
|
105
|
-
private _limits: DeviceLimits;
|
|
106
|
-
private _webglLimits: WebGLLimits;
|
|
92
|
+
readonly lost: Promise<{reason: 'destroyed'; message: string}>;
|
|
107
93
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
readonly _extensions: Record<string, any> = {};
|
|
112
|
-
_polyfilled: boolean = false;
|
|
94
|
+
private _resolveContextLost?: (value: {reason: 'destroyed'; message: string}) => void;
|
|
95
|
+
private _features?: Set<DeviceFeature>;
|
|
96
|
+
private _limits?: DeviceLimits;
|
|
113
97
|
|
|
114
|
-
|
|
115
|
-
|
|
98
|
+
//
|
|
99
|
+
// Static methods, expected to be present by `luma.createDevice()`
|
|
100
|
+
//
|
|
116
101
|
|
|
117
102
|
/**
|
|
118
103
|
* Get a device instance from a GL context
|
|
@@ -135,7 +120,7 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
135
120
|
return new WebGLDevice({gl: gl as WebGLRenderingContext});
|
|
136
121
|
}
|
|
137
122
|
|
|
138
|
-
static async create(props
|
|
123
|
+
static async create(props: DeviceProps = {}): Promise<WebGLDevice> {
|
|
139
124
|
log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
|
|
140
125
|
|
|
141
126
|
// Wait for page to load. Only wait when props. canvas is string
|
|
@@ -145,33 +130,64 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
145
130
|
}
|
|
146
131
|
|
|
147
132
|
// Load webgl and spector debug scripts from CDN if requested
|
|
148
|
-
if (props.debug) {
|
|
133
|
+
if (log.get('debug') || props.debug) {
|
|
149
134
|
await loadWebGLDeveloperTools();
|
|
150
135
|
}
|
|
136
|
+
|
|
151
137
|
// @ts-expect-error spector not on props
|
|
152
|
-
|
|
138
|
+
const {spector} = props;
|
|
139
|
+
if (log.get('spector') || spector) {
|
|
153
140
|
await loadSpectorJS();
|
|
154
141
|
}
|
|
155
142
|
|
|
156
|
-
log.probe(LOG_LEVEL, 'DOM is loaded')();
|
|
143
|
+
log.probe(LOG_LEVEL + 1, 'DOM is loaded')();
|
|
144
|
+
|
|
145
|
+
// @ts-expect-error
|
|
146
|
+
if (props.gl && props.gl.device) {
|
|
147
|
+
return WebGLDevice.attach(props.gl);
|
|
148
|
+
}
|
|
149
|
+
|
|
157
150
|
return new WebGLDevice(props);
|
|
158
151
|
}
|
|
159
152
|
|
|
153
|
+
//
|
|
154
|
+
// Public API
|
|
155
|
+
//
|
|
156
|
+
|
|
160
157
|
constructor(props: DeviceProps) {
|
|
161
|
-
super(props);
|
|
158
|
+
super({...props, id: props.id || uid('webgl-device')});
|
|
162
159
|
|
|
163
160
|
// If attaching to an already attached context, return the attached device
|
|
164
161
|
// @ts-expect-error device is attached to context
|
|
165
162
|
const device: WebGLDevice | undefined = props.gl?.device;
|
|
166
163
|
if (device) {
|
|
167
|
-
|
|
168
|
-
return device;
|
|
164
|
+
throw new Error(`WebGL context already attached to device ${device.id}`);
|
|
169
165
|
}
|
|
170
166
|
|
|
171
167
|
// Create and instrument context
|
|
172
168
|
this.canvasContext = new WebGLCanvasContext(this, props);
|
|
173
169
|
|
|
174
|
-
this.
|
|
170
|
+
this.lost = new Promise<{reason: 'destroyed'; message: string}>((resolve) => {
|
|
171
|
+
this._resolveContextLost = resolve;
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
const onContextLost = (event: Event) =>
|
|
175
|
+
this._resolveContextLost?.({
|
|
176
|
+
reason: 'destroyed',
|
|
177
|
+
message: 'Computer entered sleep mode, or too many apps or browser tabs are using the GPU.'
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
let gl: WebGLRenderingContext | WebGL2RenderingContext | null = props.gl || null;
|
|
181
|
+
gl =
|
|
182
|
+
gl ||
|
|
183
|
+
(isBrowser() ? createBrowserContext(this.canvasContext.canvas, {...props, onContextLost}) : null);
|
|
184
|
+
gl = gl || (!isBrowser() ? createHeadlessContext({...props, onContextLost}) : null);
|
|
185
|
+
|
|
186
|
+
if (!gl) {
|
|
187
|
+
throw new Error('WebGL context creation failed');
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
this.handle = gl;
|
|
175
191
|
this.gl = this.handle;
|
|
176
192
|
this.gl2 = this.gl as WebGL2RenderingContext;
|
|
177
193
|
this.isWebGL2 = isWebGL2(this.gl);
|
|
@@ -182,13 +198,20 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
182
198
|
|
|
183
199
|
// @ts-expect-error Link webgl context back to device
|
|
184
200
|
this.gl.device = this;
|
|
185
|
-
// @ts-expect-error Annotate webgl context to handle
|
|
201
|
+
// @ts-expect-error Annotate webgl context to handle
|
|
186
202
|
this.gl._version = this.isWebGL2 ? 2 : 1;
|
|
187
203
|
|
|
188
204
|
// Add subset of WebGL2 methods to WebGL1 context
|
|
189
205
|
polyfillContext(this.gl);
|
|
206
|
+
|
|
190
207
|
// Install context state tracking
|
|
191
|
-
|
|
208
|
+
// @ts-expect-error - hidden parameters
|
|
209
|
+
const {enable = true, copyState = false} = props;
|
|
210
|
+
trackContextState(this.gl, {
|
|
211
|
+
enable,
|
|
212
|
+
copyState,
|
|
213
|
+
log: (...args: any[]) => log.log(1, ...args)()
|
|
214
|
+
});
|
|
192
215
|
|
|
193
216
|
// DEBUG contexts: Add debug instrumentation to the context, force log level to at least 1
|
|
194
217
|
if (isBrowser() && props.debug) {
|
|
@@ -218,16 +241,11 @@ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`
|
|
|
218
241
|
* Destroys the context
|
|
219
242
|
* @note Has no effect for browser contexts, there is no browser API for destroying contexts
|
|
220
243
|
*/
|
|
221
|
-
destroy() {
|
|
222
|
-
|
|
244
|
+
destroy(): void {
|
|
245
|
+
const ext = this.gl.getExtension('STACKGL_destroy_context');
|
|
223
246
|
if (ext) {
|
|
224
247
|
ext.destroy();
|
|
225
248
|
}
|
|
226
|
-
// ext = this.gl.getExtension('WEBGL_lose_context');
|
|
227
|
-
// if (ext) {
|
|
228
|
-
// // TODO - disconnect context lost callbacks?
|
|
229
|
-
// ext.loseContext();
|
|
230
|
-
// }
|
|
231
249
|
}
|
|
232
250
|
|
|
233
251
|
get isLost(): boolean {
|
|
@@ -254,7 +272,9 @@ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`
|
|
|
254
272
|
|
|
255
273
|
/** Returns a WebGL2RenderingContext or throws an error */
|
|
256
274
|
assertWebGL2(): WebGL2RenderingContext {
|
|
257
|
-
|
|
275
|
+
if (!this.gl2) {
|
|
276
|
+
throw new Error('Requires WebGL2');
|
|
277
|
+
}
|
|
258
278
|
return this.gl2;
|
|
259
279
|
}
|
|
260
280
|
|
|
@@ -264,8 +284,9 @@ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`
|
|
|
264
284
|
throw new Error('WebGL only supports a single canvas');
|
|
265
285
|
}
|
|
266
286
|
|
|
267
|
-
|
|
268
|
-
|
|
287
|
+
createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WEBGLBuffer {
|
|
288
|
+
const newProps = this._getBufferProps(props);
|
|
289
|
+
return new BufferWithAccessor(this, newProps);
|
|
269
290
|
}
|
|
270
291
|
|
|
271
292
|
_createTexture(props: TextureProps): WEBGLTexture {
|
|
@@ -304,7 +325,7 @@ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`
|
|
|
304
325
|
throw new Error('compute shaders not supported in WebGL');
|
|
305
326
|
}
|
|
306
327
|
|
|
307
|
-
private renderPass: WEBGLRenderPass;
|
|
328
|
+
private renderPass: WEBGLRenderPass | null = null;
|
|
308
329
|
|
|
309
330
|
getDefaultRenderPass(): WEBGLRenderPass {
|
|
310
331
|
this.renderPass =
|
|
@@ -315,16 +336,111 @@ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`
|
|
|
315
336
|
return this.renderPass;
|
|
316
337
|
}
|
|
317
338
|
|
|
339
|
+
override createCommandEncoder(props: CommandEncoderProps): WEBGLCommandEncoder {
|
|
340
|
+
return new WEBGLCommandEncoder(this, props);
|
|
341
|
+
}
|
|
342
|
+
|
|
318
343
|
/**
|
|
319
344
|
* Offscreen Canvas Support: Commit the frame
|
|
320
345
|
* https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
|
|
321
346
|
* Chrome's offscreen canvas does not require gl.commit
|
|
322
347
|
*/
|
|
323
348
|
submit(): void {
|
|
324
|
-
this.renderPass
|
|
349
|
+
this.renderPass?.end();
|
|
325
350
|
this.renderPass = null;
|
|
326
351
|
// this.canvasContext.commit();
|
|
327
352
|
}
|
|
353
|
+
|
|
354
|
+
//
|
|
355
|
+
// WebGL-only API (not part of `Device` API)
|
|
356
|
+
//
|
|
357
|
+
|
|
358
|
+
/** WebGL1 typed context. Can always be used. */
|
|
359
|
+
readonly gl: WebGLRenderingContext;
|
|
360
|
+
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
361
|
+
readonly gl2: WebGL2RenderingContext | null = null;
|
|
362
|
+
readonly debug: boolean = false;
|
|
363
|
+
|
|
364
|
+
/** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
|
|
365
|
+
readonly isWebGL1: boolean;
|
|
366
|
+
/** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
|
|
367
|
+
readonly isWebGL2: boolean;
|
|
368
|
+
|
|
369
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
370
|
+
readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
|
|
371
|
+
|
|
372
|
+
/** State used by luma.gl classes - TODO - not used? */
|
|
373
|
+
readonly _extensions: Record<string, any> = {};
|
|
374
|
+
_polyfilled: boolean = false;
|
|
375
|
+
|
|
376
|
+
/** Instance of Spector.js (if initialized) */
|
|
377
|
+
spector;
|
|
378
|
+
|
|
379
|
+
private _webglLimits?: WebGLLimits;
|
|
380
|
+
|
|
381
|
+
/** Return WebGL specific limits */
|
|
382
|
+
get webglLimits() : WebGLLimits {
|
|
383
|
+
this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
|
|
384
|
+
return this._webglLimits;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Triggers device (or WebGL context) loss.
|
|
389
|
+
* @note primarily intended for testing how application reacts to device loss
|
|
390
|
+
*/
|
|
391
|
+
override loseDevice(): boolean {
|
|
392
|
+
let deviceLossTriggered = false;
|
|
393
|
+
const ext = this.gl.getExtension('WEBGL_lose_context');
|
|
394
|
+
if (ext) {
|
|
395
|
+
deviceLossTriggered = true;
|
|
396
|
+
ext.loseContext();
|
|
397
|
+
// ext.loseContext should trigger context loss callback but the platform may not do this, so do it explicitly
|
|
398
|
+
}
|
|
399
|
+
this._resolveContextLost?.({
|
|
400
|
+
reason: 'destroyed',
|
|
401
|
+
message: 'Application triggered context loss'
|
|
402
|
+
});
|
|
403
|
+
return deviceLossTriggered;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/** Save current WebGL context state onto an internal stack */
|
|
407
|
+
pushState(): void {
|
|
408
|
+
pushContextState(this.gl);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/** Restores previously saved context state */
|
|
412
|
+
popState(): void {
|
|
413
|
+
popContextState(this.gl);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Storing data on a special field on WebGLObjects makes that data visible in SPECTOR chrome debug extension
|
|
418
|
+
* luma.gl ids and props can be inspected
|
|
419
|
+
*/
|
|
420
|
+
setSpectorMetadata(handle: unknown, props: Record<string, unknown>) {
|
|
421
|
+
// @ts-expect-error
|
|
422
|
+
// eslint-disable-next-line camelcase
|
|
423
|
+
handle.__SPECTOR_Metadata = props;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Returns the GL.<KEY> constant that corresponds to a numeric value of a GL constant
|
|
428
|
+
* Be aware that there are some duplicates especially for constants that are 0,
|
|
429
|
+
* so this isn't guaranteed to return the right key in all cases.
|
|
430
|
+
*/
|
|
431
|
+
getGLKey(value: unknown, gl?: WebGLRenderingContext): string {
|
|
432
|
+
// @ts-ignore expect-error depends on settings
|
|
433
|
+
gl = gl || this.gl2 || this.gl;
|
|
434
|
+
const number = Number(value);
|
|
435
|
+
for (const key in gl) {
|
|
436
|
+
// @ts-ignore expect-error depends on settings
|
|
437
|
+
if (gl[key] === number) {
|
|
438
|
+
return `GL.${key}`;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
// No constant found. Stringify the value and return it.
|
|
442
|
+
return String(value);
|
|
443
|
+
}
|
|
328
444
|
}
|
|
329
445
|
|
|
330
446
|
/** Check if supplied parameter is a WebGLRenderingContext */
|
|
@@ -339,7 +455,6 @@ function isWebGL(gl: any): boolean {
|
|
|
339
455
|
return Boolean(gl && Number.isFinite(gl._version));
|
|
340
456
|
}
|
|
341
457
|
|
|
342
|
-
|
|
343
458
|
/** Check if supplied parameter is a WebGL2RenderingContext */
|
|
344
459
|
function isWebGL2(gl: any): boolean {
|
|
345
460
|
if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
|
package/src/classic/accessor.ts
CHANGED
|
@@ -1,20 +1,7 @@
|
|
|
1
|
-
import {assert, checkProps, Buffer, AccessorObject} from '@luma.gl/
|
|
2
|
-
import GL from '@luma.gl/constants';
|
|
1
|
+
import {assert, checkProps, Buffer, AccessorObject} from '@luma.gl/core';
|
|
2
|
+
import {GL} from '@luma.gl/constants';
|
|
3
3
|
import {getTypedArrayFromGLType} from './typed-array-utils';
|
|
4
4
|
|
|
5
|
-
// export interface AccessorObject {
|
|
6
|
-
// offset?: number;
|
|
7
|
-
// stride?: number;
|
|
8
|
-
// type?: number;
|
|
9
|
-
// size?: number;
|
|
10
|
-
// divisor?: number;
|
|
11
|
-
// normalized?: boolean;
|
|
12
|
-
// integer?: boolean;
|
|
13
|
-
|
|
14
|
-
// buffer?: Buffer;
|
|
15
|
-
// index?: number;
|
|
16
|
-
// }
|
|
17
|
-
|
|
18
5
|
const DEFAULT_ACCESSOR_VALUES = {
|
|
19
6
|
offset: 0,
|
|
20
7
|
stride: 0,
|
|
@@ -32,7 +19,7 @@ const PROP_CHECKS = {
|
|
|
32
19
|
}
|
|
33
20
|
};
|
|
34
21
|
|
|
35
|
-
export
|
|
22
|
+
export class Accessor implements AccessorObject {
|
|
36
23
|
offset?: number;
|
|
37
24
|
stride?: number;
|
|
38
25
|
type?: number;
|
|
@@ -98,7 +85,7 @@ export default class Accessor implements AccessorObject {
|
|
|
98
85
|
|
|
99
86
|
// Auto-deduce integer type?
|
|
100
87
|
if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {
|
|
101
|
-
|
|
88
|
+
this.integer = true;
|
|
102
89
|
}
|
|
103
90
|
}
|
|
104
91
|
if (props.size !== undefined) {
|