@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,25 +1,30 @@
|
|
|
1
|
-
import type {BufferProps} from '@luma.gl/
|
|
2
|
-
import {Buffer, assert} from '@luma.gl/
|
|
3
|
-
import GL from '@luma.gl/constants';
|
|
4
|
-
import WebGLDevice from '../webgl-device';
|
|
1
|
+
import type {BufferProps} from '@luma.gl/core';
|
|
2
|
+
import {Buffer, assert} from '@luma.gl/core';
|
|
3
|
+
import {GL} from '@luma.gl/constants';
|
|
4
|
+
import {WebGLDevice} from '../webgl-device';
|
|
5
5
|
|
|
6
6
|
const DEBUG_DATA_LENGTH = 10;
|
|
7
7
|
|
|
8
8
|
/** WebGL Buffer interface */
|
|
9
|
-
export
|
|
9
|
+
export class WEBGLBuffer extends Buffer {
|
|
10
10
|
readonly device: WebGLDevice;
|
|
11
11
|
readonly gl: WebGLRenderingContext;
|
|
12
12
|
readonly gl2: WebGL2RenderingContext | null;
|
|
13
13
|
readonly handle: WebGLBuffer;
|
|
14
|
-
readonly target: number;
|
|
15
14
|
|
|
15
|
+
/** Target in OpenGL defines the type of buffer */
|
|
16
|
+
readonly glTarget: GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER;
|
|
17
|
+
/** Usage is a hint on how frequently the buffer will be updates */
|
|
18
|
+
readonly glUsage: GL.STATIC_DRAW | GL.DYNAMIC_DRAW;
|
|
19
|
+
/** Index type is needed when issuing draw calls, so we pre-compute it */
|
|
20
|
+
readonly glIndexType: GL.UNSIGNED_SHORT | GL.UNSIGNED_INT = GL.UNSIGNED_SHORT;
|
|
21
|
+
|
|
22
|
+
/** Number of bytes allocated on the GPU for this buffer */
|
|
16
23
|
byteLength: number;
|
|
24
|
+
/** Number of bytes used */
|
|
17
25
|
bytesUsed: number;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
webglUsage: number;
|
|
21
|
-
|
|
22
|
-
accessor: {};
|
|
26
|
+
/** A partial CPU-side copy of the data in this buffer, for debugging purposes */
|
|
27
|
+
debugData: ArrayBuffer | null = null;
|
|
23
28
|
|
|
24
29
|
constructor(device: WebGLDevice, props: BufferProps = {}) {
|
|
25
30
|
super(device, props);
|
|
@@ -28,18 +33,17 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
28
33
|
this.gl = this.device.gl;
|
|
29
34
|
this.gl2 = this.device.gl2;
|
|
30
35
|
|
|
31
|
-
const handle = typeof props === 'object' ? (props
|
|
36
|
+
const handle = typeof props === 'object' ? (props ).handle : undefined;
|
|
32
37
|
this.handle = handle || this.gl.createBuffer();
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
this.
|
|
41
|
-
|
|
42
|
-
this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
|
|
38
|
+
device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data});
|
|
39
|
+
|
|
40
|
+
// - In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
|
|
41
|
+
// otherwise buffer type will lock to generic (non-element) buffer
|
|
42
|
+
// - In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
|
|
43
|
+
this.glTarget = getWebGLTarget(this.props.usage);
|
|
44
|
+
this.glUsage = getWebGLUsage(this.props.usage);
|
|
45
|
+
this.glIndexType = this.props.indexType === 'uint32' ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;
|
|
46
|
+
|
|
43
47
|
this.debugData = null;
|
|
44
48
|
|
|
45
49
|
// Set data: (re)initializes the buffer
|
|
@@ -48,25 +52,19 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
48
52
|
} else {
|
|
49
53
|
this._initWithByteLength(props.byteLength || 0);
|
|
50
54
|
}
|
|
51
|
-
|
|
52
|
-
// Deprecated: Merge main props and accessor
|
|
53
|
-
// this.accessor = {...props.accessor};
|
|
54
|
-
|
|
55
|
-
// Object.seal(this);
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
// PRIVATE METHODS
|
|
59
58
|
|
|
60
|
-
|
|
59
|
+
/** Allocate a new buffer and initialize to contents of typed array */
|
|
61
60
|
_initWithData(data, byteOffset: number = 0, byteLength: number = data.byteLength + byteOffset): this {
|
|
62
61
|
assert(ArrayBuffer.isView(data));
|
|
63
62
|
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
this.gl.
|
|
67
|
-
this.gl.
|
|
68
|
-
this.gl.
|
|
69
|
-
this.gl.bindBuffer(target, null);
|
|
63
|
+
const glTarget = this._getWriteTarget();
|
|
64
|
+
this.gl.bindBuffer(glTarget, this.handle);
|
|
65
|
+
this.gl.bufferData(glTarget, byteLength, this.glUsage);
|
|
66
|
+
this.gl.bufferSubData(glTarget, byteOffset, data);
|
|
67
|
+
this.gl.bindBuffer(glTarget, null);
|
|
70
68
|
|
|
71
69
|
this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
|
|
72
70
|
this.bytesUsed = byteLength;
|
|
@@ -88,11 +86,11 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
88
86
|
data = new Float32Array(0);
|
|
89
87
|
}
|
|
90
88
|
|
|
91
|
-
const
|
|
89
|
+
const glTarget = this._getWriteTarget();
|
|
92
90
|
|
|
93
|
-
this.gl.bindBuffer(
|
|
94
|
-
this.gl.bufferData(
|
|
95
|
-
this.gl.bindBuffer(
|
|
91
|
+
this.gl.bindBuffer(glTarget, this.handle);
|
|
92
|
+
this.gl.bufferData(glTarget, data, this.glUsage);
|
|
93
|
+
this.gl.bindBuffer(glTarget, null);
|
|
96
94
|
|
|
97
95
|
this.debugData = null;
|
|
98
96
|
this.bytesUsed = byteLength;
|
|
@@ -101,41 +99,40 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
101
99
|
return this;
|
|
102
100
|
}
|
|
103
101
|
|
|
104
|
-
destroy(): void {
|
|
105
|
-
if (this.handle) {
|
|
102
|
+
override destroy(): void {
|
|
103
|
+
if (!this.destroyed && this.handle) {
|
|
106
104
|
this.removeStats();
|
|
107
105
|
this.trackDeallocatedMemory();
|
|
108
106
|
this.gl.deleteBuffer(this.handle);
|
|
107
|
+
this.destroyed = true;
|
|
109
108
|
// @ts-expect-error
|
|
110
109
|
this.handle = null;
|
|
111
110
|
}
|
|
112
111
|
}
|
|
113
112
|
|
|
114
|
-
write(data: ArrayBufferView, byteOffset: number = 0): void {
|
|
113
|
+
override write(data: ArrayBufferView, byteOffset: number = 0): void {
|
|
115
114
|
const srcOffset = 0;
|
|
116
|
-
const byteLength = data.byteLength;
|
|
115
|
+
const byteLength = undefined; // data.byteLength;
|
|
117
116
|
|
|
118
117
|
// Create the buffer - binding it here for the first time locks the type
|
|
119
118
|
// In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
|
|
120
|
-
const
|
|
121
|
-
this.gl.bindBuffer(
|
|
119
|
+
const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
|
|
120
|
+
this.gl.bindBuffer(glTarget, this.handle);
|
|
122
121
|
// WebGL2: subData supports additional srcOffset and length parameters
|
|
123
122
|
if (srcOffset !== 0 || byteLength !== undefined) {
|
|
124
123
|
this.device.assertWebGL2();
|
|
125
|
-
|
|
126
|
-
// @ts-expect-error
|
|
127
|
-
this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
|
|
124
|
+
this.gl2.bufferSubData(glTarget, byteOffset, data, srcOffset, byteLength);
|
|
128
125
|
} else {
|
|
129
|
-
this.gl.bufferSubData(
|
|
126
|
+
this.gl.bufferSubData(glTarget, byteOffset, data);
|
|
130
127
|
}
|
|
131
|
-
this.gl.bindBuffer(
|
|
128
|
+
this.gl.bindBuffer(glTarget, null);
|
|
132
129
|
|
|
133
130
|
// TODO - update local `data` if offsets are right
|
|
134
131
|
// this.debugData = data.slice(byteOffset, 40);
|
|
135
132
|
}
|
|
136
133
|
|
|
137
134
|
/** Read data from the buffer */
|
|
138
|
-
async readAsync(
|
|
135
|
+
override async readAsync(
|
|
139
136
|
byteOffset: number = 0,
|
|
140
137
|
byteLength?: number
|
|
141
138
|
): Promise<ArrayBuffer> {
|
|
@@ -162,13 +159,13 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
162
159
|
}
|
|
163
160
|
|
|
164
161
|
_getWriteTarget() {
|
|
165
|
-
return this.
|
|
166
|
-
// return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.
|
|
162
|
+
return this.glTarget;
|
|
163
|
+
// return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
|
|
167
164
|
}
|
|
168
165
|
|
|
169
166
|
_getReadTarget() {
|
|
170
|
-
return this.
|
|
171
|
-
return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.
|
|
167
|
+
return this.glTarget;
|
|
168
|
+
// return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.glTarget;
|
|
172
169
|
}
|
|
173
170
|
}
|
|
174
171
|
|
|
@@ -183,7 +180,7 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
183
180
|
// static INDIRECT = 0x0100;
|
|
184
181
|
// static QUERY_RESOLVE = 0x0200;
|
|
185
182
|
|
|
186
|
-
function getWebGLTarget(usage: number): GL {
|
|
183
|
+
function getWebGLTarget(usage: number): GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER {
|
|
187
184
|
if (usage & Buffer.INDEX) {
|
|
188
185
|
return GL.ELEMENT_ARRAY_BUFFER;
|
|
189
186
|
}
|
|
@@ -205,7 +202,8 @@ function getWebGLTarget(usage: number): GL {
|
|
|
205
202
|
return GL.ARRAY_BUFFER;
|
|
206
203
|
}
|
|
207
204
|
|
|
208
|
-
|
|
205
|
+
/** @todo usage is not passed correctly */
|
|
206
|
+
function getWebGLUsage(usage: number): GL.STATIC_DRAW | GL.DYNAMIC_DRAW {
|
|
209
207
|
if (usage & Buffer.INDEX) {
|
|
210
208
|
return GL.STATIC_DRAW;
|
|
211
209
|
}
|
|
@@ -215,5 +213,5 @@ function getWebGLUsage(usage: number): GL {
|
|
|
215
213
|
if (usage & Buffer.UNIFORM) {
|
|
216
214
|
return GL.DYNAMIC_DRAW;
|
|
217
215
|
}
|
|
218
|
-
return GL.
|
|
216
|
+
return GL.STATIC_DRAW;
|
|
219
217
|
}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
|
|
1
3
|
import type {
|
|
2
4
|
CopyBufferToBufferOptions,
|
|
3
5
|
CopyBufferToTextureOptions,
|
|
4
6
|
CopyTextureToBufferOptions,
|
|
5
7
|
CopyTextureToTextureOptions
|
|
6
|
-
} from '@luma.gl/
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
} from '@luma.gl/core';
|
|
9
|
+
import {
|
|
10
|
+
CommandBuffer,
|
|
11
|
+
Texture,
|
|
12
|
+
// Buffer,
|
|
13
|
+
Framebuffer
|
|
14
|
+
} from '@luma.gl/core';
|
|
15
|
+
import {GL} from '@luma.gl/constants';
|
|
16
|
+
|
|
17
|
+
// import {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../../classic/typed-array-utils';
|
|
18
|
+
import {WebGLDevice} from '../webgl-device';
|
|
19
|
+
import {WEBGLBuffer} from './webgl-buffer';
|
|
20
|
+
import {WEBGLTexture} from './webgl-texture';
|
|
21
|
+
import {WEBGLFramebuffer} from './webgl-framebuffer';
|
|
10
22
|
|
|
11
23
|
function cast<T>(value: unknown): T {
|
|
12
24
|
return value as T;
|
|
@@ -38,25 +50,31 @@ type Command =
|
|
|
38
50
|
| CopyTextureToBufferCommand
|
|
39
51
|
| CopyTextureToTextureCommand;
|
|
40
52
|
|
|
41
|
-
export
|
|
53
|
+
export class WEBGLCommandBuffer extends CommandBuffer {
|
|
54
|
+
device: WebGLDevice;
|
|
42
55
|
commands: Command[] = [];
|
|
43
|
-
}
|
|
44
56
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
constructor(device: WebGLDevice) {
|
|
58
|
+
super({});
|
|
59
|
+
this.device = device;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
submitCommands(commands: Command[] = this.commands) {
|
|
63
|
+
for (const command of commands) {
|
|
64
|
+
switch (command.name) {
|
|
65
|
+
case 'copy-buffer-to-buffer':
|
|
66
|
+
_copyBufferToBuffer(this.device, command.options);
|
|
67
|
+
break;
|
|
68
|
+
case 'copy-buffer-to-texture':
|
|
69
|
+
_copyBufferToTexture(this.device, command.options);
|
|
70
|
+
break;
|
|
71
|
+
case 'copy-texture-to-buffer':
|
|
72
|
+
_copyTextureToBuffer(this.device, command.options);
|
|
73
|
+
break;
|
|
74
|
+
case 'copy-texture-to-texture':
|
|
75
|
+
_copyTextureToTexture(this.device, command.options);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
60
78
|
}
|
|
61
79
|
}
|
|
62
80
|
}
|
|
@@ -65,7 +83,7 @@ function _copyBufferToBuffer(device: WebGLDevice, options: CopyBufferToBufferOpt
|
|
|
65
83
|
const source = cast<WEBGLBuffer>(options.source);
|
|
66
84
|
const destination = cast<WEBGLBuffer>(options.destination);
|
|
67
85
|
|
|
68
|
-
const
|
|
86
|
+
const gl2 = device.assertWebGL2();
|
|
69
87
|
if (gl2) {
|
|
70
88
|
// In WebGL2 we can perform the copy on the GPU
|
|
71
89
|
// Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type
|
|
@@ -87,8 +105,297 @@ function _copyBufferToBuffer(device: WebGLDevice, options: CopyBufferToBufferOpt
|
|
|
87
105
|
}
|
|
88
106
|
}
|
|
89
107
|
|
|
90
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Copies data from a Buffer object into a Texture object
|
|
110
|
+
* NOTE: doesn't wait for copy to be complete
|
|
111
|
+
*/
|
|
112
|
+
function _copyBufferToTexture(device: WebGLDevice, options: CopyBufferToTextureOptions): void {
|
|
113
|
+
throw new Error('Not implemented');
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Copies data from a Texture object into a Buffer object.
|
|
118
|
+
* NOTE: doesn't wait for copy to be complete
|
|
119
|
+
*/
|
|
120
|
+
function _copyTextureToBuffer(device: WebGLDevice, options: CopyTextureToBufferOptions): void {
|
|
121
|
+
const {
|
|
122
|
+
/** Texture to copy to/from. */
|
|
123
|
+
source,
|
|
124
|
+
/** Mip-map level of the texture to copy to/from. (Default 0) */
|
|
125
|
+
mipLevel = 0,
|
|
126
|
+
/** Defines which aspects of the texture to copy to/from. */
|
|
127
|
+
aspect = 'all',
|
|
128
|
+
|
|
129
|
+
/** Width to copy */
|
|
130
|
+
width = options.source.width,
|
|
131
|
+
/** Height to copy */
|
|
132
|
+
height = options.source.height,
|
|
133
|
+
depthOrArrayLayers = 0,
|
|
134
|
+
/** Defines the origin of the copy - the minimum corner of the texture sub-region to copy to/from. */
|
|
135
|
+
origin = [0, 0],
|
|
136
|
+
|
|
137
|
+
/** Destination buffer */
|
|
138
|
+
destination,
|
|
139
|
+
/** Offset, in bytes, from the beginning of the buffer to the start of the image data (default 0) */
|
|
140
|
+
byteOffset = 0,
|
|
141
|
+
/**
|
|
142
|
+
* The stride, in bytes, between the beginning of each block row and the subsequent block row.
|
|
143
|
+
* Required if there are multiple block rows (i.e. the copy height or depth is more than one block).
|
|
144
|
+
*/
|
|
145
|
+
bytesPerRow,
|
|
146
|
+
/**
|
|
147
|
+
* Number of block rows per single image of the texture.
|
|
148
|
+
* rowsPerImage × bytesPerRow is the stride, in bytes, between the beginning of each image of data and the subsequent image.
|
|
149
|
+
* Required if there are multiple images (i.e. the copy depth is more than one).
|
|
150
|
+
*/
|
|
151
|
+
rowsPerImage
|
|
152
|
+
} = options;
|
|
153
|
+
|
|
154
|
+
// TODO - Not possible to read just stencil or depth part in WebGL?
|
|
155
|
+
if (aspect !== 'all') {
|
|
156
|
+
throw new Error('not supported');
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// TODO - mipLevels are set when attaching texture to framebuffer
|
|
160
|
+
if (mipLevel !== 0 || depthOrArrayLayers !== undefined || bytesPerRow || rowsPerImage) {
|
|
161
|
+
throw new Error('not implemented');
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Asynchronous read (PIXEL_PACK_BUFFER) is WebGL2 only feature
|
|
165
|
+
const gl2 = device.assertWebGL2();
|
|
166
|
+
|
|
167
|
+
const {framebuffer, destroyFramebuffer} = getFramebuffer(source);
|
|
168
|
+
try {
|
|
169
|
+
const webglBuffer = destination as WEBGLBuffer;
|
|
170
|
+
const sourceWidth = width || framebuffer.width;
|
|
171
|
+
const sourceHeight = height || framebuffer.height;
|
|
172
|
+
|
|
173
|
+
// TODO - hack - should be deduced
|
|
174
|
+
const sourceFormat = GL.RGBA;
|
|
175
|
+
const sourceType = GL.UNSIGNED_BYTE;
|
|
176
|
+
|
|
177
|
+
// if (!target) {
|
|
178
|
+
// // Create new buffer with enough size
|
|
179
|
+
// const components = glFormatToComponents(sourceFormat);
|
|
180
|
+
// const byteCount = glTypeToBytes(sourceType);
|
|
181
|
+
// const byteLength = byteOffset + sourceWidth * sourceHeight * components * byteCount;
|
|
182
|
+
// target = device.createBuffer({byteLength});
|
|
183
|
+
// }
|
|
184
|
+
|
|
185
|
+
gl2.bindBuffer(GL.PIXEL_PACK_BUFFER, webglBuffer.handle);
|
|
186
|
+
gl2.bindFramebuffer(GL.FRAMEBUFFER, framebuffer.handle);
|
|
187
|
+
|
|
188
|
+
gl2.readPixels(
|
|
189
|
+
origin[0],
|
|
190
|
+
origin[1],
|
|
191
|
+
sourceWidth,
|
|
192
|
+
sourceHeight,
|
|
193
|
+
sourceFormat,
|
|
194
|
+
sourceType,
|
|
195
|
+
byteOffset
|
|
196
|
+
);
|
|
197
|
+
} finally {
|
|
198
|
+
gl2.bindBuffer(GL.PIXEL_PACK_BUFFER, null);
|
|
199
|
+
gl2.bindFramebuffer(GL.FRAMEBUFFER, null);
|
|
200
|
+
|
|
201
|
+
if (destroyFramebuffer) {
|
|
202
|
+
framebuffer.destroy();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Copies data from a Framebuffer or a Texture object into a Buffer object.
|
|
209
|
+
* NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transfer.
|
|
210
|
+
export function readPixelsToBuffer(
|
|
211
|
+
source: Framebuffer | Texture,
|
|
212
|
+
options?: {
|
|
213
|
+
sourceX?: number;
|
|
214
|
+
sourceY?: number;
|
|
215
|
+
sourceFormat?: number;
|
|
216
|
+
target?: Buffer; // A new Buffer object is created when not provided.
|
|
217
|
+
targetByteOffset?: number; // byte offset in buffer object
|
|
218
|
+
// following parameters are auto deduced if not provided
|
|
219
|
+
sourceWidth?: number;
|
|
220
|
+
sourceHeight?: number;
|
|
221
|
+
sourceType?: number;
|
|
222
|
+
}
|
|
223
|
+
): Buffer
|
|
224
|
+
*/
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)
|
|
228
|
+
*/
|
|
229
|
+
// eslint-disable-next-line complexity, max-statements
|
|
230
|
+
function _copyTextureToTexture(device: WebGLDevice, options: CopyTextureToTextureOptions): void {
|
|
231
|
+
const {
|
|
232
|
+
/** Texture to copy to/from. */
|
|
233
|
+
source,
|
|
234
|
+
/** Mip-map level of the texture to copy to/from. (Default 0) */
|
|
235
|
+
// mipLevel = 0,
|
|
236
|
+
/** Defines which aspects of the texture to copy to/from. */
|
|
237
|
+
// aspect = 'all',
|
|
238
|
+
/** Defines the origin of the copy - the minimum corner of the texture sub-region to copy to/from. */
|
|
239
|
+
origin = [0, 0],
|
|
91
240
|
|
|
92
|
-
|
|
241
|
+
/** Texture to copy to/from. */
|
|
242
|
+
destination,
|
|
243
|
+
/** Mip-map level of the texture to copy to/from. (Default 0) */
|
|
244
|
+
// destinationMipLevel = options.mipLevel,
|
|
245
|
+
/** Defines the origin of the copy - the minimum corner of the texture sub-region to copy to/from. */
|
|
246
|
+
// destinationOrigin = [0, 0],
|
|
247
|
+
/** Defines which aspects of the texture to copy to/from. */
|
|
248
|
+
// destinationAspect = options.aspect,
|
|
93
249
|
|
|
94
|
-
|
|
250
|
+
} = options;
|
|
251
|
+
|
|
252
|
+
let {
|
|
253
|
+
width = options.destination.width,
|
|
254
|
+
height = options.destination.width,
|
|
255
|
+
// depthOrArrayLayers = 0
|
|
256
|
+
} = options;
|
|
257
|
+
|
|
258
|
+
const destinationMipmaplevel = 0;
|
|
259
|
+
const destinationInternalFormat = GL.RGBA;
|
|
260
|
+
|
|
261
|
+
const {framebuffer, destroyFramebuffer} = getFramebuffer(source);
|
|
262
|
+
const [sourceX, sourceY] = origin;
|
|
263
|
+
|
|
264
|
+
const isSubCopy = false;
|
|
265
|
+
// typeof destinationX !== 'undefined' ||
|
|
266
|
+
// typeof destinationY !== 'undefined' ||
|
|
267
|
+
// typeof destinationZ !== 'undefined';
|
|
268
|
+
|
|
269
|
+
// destinationX = destinationX || 0;
|
|
270
|
+
// destinationY = destinationY || 0;
|
|
271
|
+
// destinationZ = destinationZ || 0;
|
|
272
|
+
device.gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer.handle);
|
|
273
|
+
// TODO - support gl.readBuffer (WebGL2 only)
|
|
274
|
+
// const prevBuffer = gl.readBuffer(attachment);
|
|
275
|
+
|
|
276
|
+
let texture = null;
|
|
277
|
+
let textureTarget: GL;
|
|
278
|
+
if (destination instanceof WEBGLTexture) {
|
|
279
|
+
texture = destination;
|
|
280
|
+
width = Number.isFinite(width) ? width : texture.width;
|
|
281
|
+
height = Number.isFinite(height) ? height : texture.height;
|
|
282
|
+
texture.bind(0);
|
|
283
|
+
textureTarget = texture.destination;
|
|
284
|
+
} else {
|
|
285
|
+
throw new Error('whoops');
|
|
286
|
+
// textureTarget = destination;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (!isSubCopy) {
|
|
290
|
+
device.gl.copyTexImage2D(
|
|
291
|
+
textureTarget,
|
|
292
|
+
destinationMipmaplevel,
|
|
293
|
+
destinationInternalFormat,
|
|
294
|
+
sourceX,
|
|
295
|
+
sourceY,
|
|
296
|
+
width,
|
|
297
|
+
height,
|
|
298
|
+
0 /* border must be 0 */
|
|
299
|
+
);
|
|
300
|
+
} else {
|
|
301
|
+
// switch (textureTarget) {
|
|
302
|
+
// case GL.TEXTURE_2D:
|
|
303
|
+
// case GL.TEXTURE_CUBE_MAP:
|
|
304
|
+
// device.gl.copyTexSubImage2D(
|
|
305
|
+
// textureTarget,
|
|
306
|
+
// destinationMipmaplevel,
|
|
307
|
+
// destinationX,
|
|
308
|
+
// destinationY,
|
|
309
|
+
// sourceX,
|
|
310
|
+
// sourceY,
|
|
311
|
+
// width,
|
|
312
|
+
// height
|
|
313
|
+
// );
|
|
314
|
+
// break;
|
|
315
|
+
// case GL.TEXTURE_2D_ARRAY:
|
|
316
|
+
// case GL.TEXTURE_3D:
|
|
317
|
+
// const gl2 = device.assertWebGL2();
|
|
318
|
+
// gl2.copyTexSubImage3D(
|
|
319
|
+
// textureTarget,
|
|
320
|
+
// destinationMipmaplevel,
|
|
321
|
+
// destinationX,
|
|
322
|
+
// destinationY,
|
|
323
|
+
// destinationZ,
|
|
324
|
+
// sourceX,
|
|
325
|
+
// sourceY,
|
|
326
|
+
// width,
|
|
327
|
+
// height
|
|
328
|
+
// );
|
|
329
|
+
// break;
|
|
330
|
+
// default:
|
|
331
|
+
// }
|
|
332
|
+
}
|
|
333
|
+
if (texture) {
|
|
334
|
+
texture.unbind();
|
|
335
|
+
}
|
|
336
|
+
// @ts-expect-error
|
|
337
|
+
device.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
338
|
+
if (destroyFramebuffer) {
|
|
339
|
+
framebuffer.destroy();
|
|
340
|
+
}
|
|
341
|
+
return texture;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// Returns number of components in a specific readPixels WebGL format
|
|
345
|
+
export function glFormatToComponents(format): 1 | 2 | 3 | 4 {
|
|
346
|
+
switch (format) {
|
|
347
|
+
case GL.ALPHA:
|
|
348
|
+
case GL.R32F:
|
|
349
|
+
case GL.RED:
|
|
350
|
+
return 1;
|
|
351
|
+
case GL.RG32F:
|
|
352
|
+
case GL.RG:
|
|
353
|
+
return 2;
|
|
354
|
+
case GL.RGB:
|
|
355
|
+
case GL.RGB32F:
|
|
356
|
+
return 3;
|
|
357
|
+
case GL.RGBA:
|
|
358
|
+
case GL.RGBA32F:
|
|
359
|
+
return 4;
|
|
360
|
+
// TODO: Add support for additional WebGL2 formats
|
|
361
|
+
default:
|
|
362
|
+
throw new Error('GLFormat');
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Return byte count for given readPixels WebGL type
|
|
367
|
+
export function glTypeToBytes(type: GL): 1 | 2 | 4 {
|
|
368
|
+
switch (type) {
|
|
369
|
+
case GL.UNSIGNED_BYTE:
|
|
370
|
+
return 1;
|
|
371
|
+
case GL.UNSIGNED_SHORT_5_6_5:
|
|
372
|
+
case GL.UNSIGNED_SHORT_4_4_4_4:
|
|
373
|
+
case GL.UNSIGNED_SHORT_5_5_5_1:
|
|
374
|
+
return 2;
|
|
375
|
+
case GL.FLOAT:
|
|
376
|
+
return 4;
|
|
377
|
+
// TODO: Add support for additional WebGL2 types
|
|
378
|
+
default:
|
|
379
|
+
throw new Error('GLType');
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// Helper methods
|
|
384
|
+
|
|
385
|
+
function getFramebuffer(source: Texture | Framebuffer): {
|
|
386
|
+
framebuffer: WEBGLFramebuffer;
|
|
387
|
+
destroyFramebuffer: boolean;
|
|
388
|
+
} {
|
|
389
|
+
if (source instanceof Texture) {
|
|
390
|
+
const {width, height, id} = source;
|
|
391
|
+
const framebuffer = source.device.createFramebuffer({
|
|
392
|
+
id: `framebuffer-for-${id}`,
|
|
393
|
+
width,
|
|
394
|
+
height,
|
|
395
|
+
colorAttachments: [source]
|
|
396
|
+
}) as unknown as WEBGLFramebuffer;
|
|
397
|
+
|
|
398
|
+
return {framebuffer, destroyFramebuffer: true};
|
|
399
|
+
}
|
|
400
|
+
return {framebuffer: source as unknown as WEBGLFramebuffer, destroyFramebuffer: false};
|
|
401
|
+
}
|
|
@@ -1,25 +1,30 @@
|
|
|
1
|
-
import {CommandEncoder, CommandEncoderProps} from '@luma.gl/
|
|
1
|
+
import {CommandEncoder, CommandEncoderProps} from '@luma.gl/core';
|
|
2
2
|
import type {
|
|
3
3
|
CopyBufferToBufferOptions,
|
|
4
4
|
CopyBufferToTextureOptions,
|
|
5
5
|
CopyTextureToBufferOptions,
|
|
6
6
|
CopyTextureToTextureOptions
|
|
7
|
-
} from '@luma.gl/
|
|
7
|
+
} from '@luma.gl/core';
|
|
8
8
|
|
|
9
|
-
import
|
|
10
|
-
import WebGLDevice from '../webgl-device';
|
|
9
|
+
import {WEBGLCommandBuffer} from './webgl-command-buffer';
|
|
10
|
+
import {WebGLDevice} from '../webgl-device';
|
|
11
11
|
|
|
12
|
-
export
|
|
12
|
+
export class WEBGLCommandEncoder extends CommandEncoder {
|
|
13
13
|
readonly device: WebGLDevice;
|
|
14
14
|
|
|
15
|
-
readonly commandBuffer
|
|
15
|
+
readonly commandBuffer: WEBGLCommandBuffer;
|
|
16
16
|
|
|
17
17
|
constructor(device: WebGLDevice, props: CommandEncoderProps) {
|
|
18
18
|
super(props);
|
|
19
19
|
this.device = device;
|
|
20
|
+
this.commandBuffer = new WEBGLCommandBuffer(device);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
destroy() {}
|
|
23
|
+
override destroy(): void {}
|
|
24
|
+
|
|
25
|
+
override finish(): void {
|
|
26
|
+
this.commandBuffer.submitCommands();
|
|
27
|
+
}
|
|
23
28
|
|
|
24
29
|
// beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;
|
|
25
30
|
// beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;
|
|
@@ -41,10 +46,10 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
|
|
|
41
46
|
this.commandBuffer.commands.push({name: 'copy-texture-to-texture', options});
|
|
42
47
|
}
|
|
43
48
|
|
|
44
|
-
pushDebugGroup(groupLabel: string): void {}
|
|
45
|
-
popDebugGroup() {}
|
|
49
|
+
override pushDebugGroup(groupLabel: string): void {}
|
|
50
|
+
override popDebugGroup() {}
|
|
46
51
|
|
|
47
|
-
insertDebugMarker(markerLabel: string): void {}
|
|
52
|
+
override insertDebugMarker(markerLabel: string): void {}
|
|
48
53
|
|
|
49
54
|
// writeTimestamp(querySet: Query, queryIndex: number): void {}
|
|
50
55
|
|
|
@@ -55,4 +60,4 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
|
|
|
55
60
|
// destination: Buffer,
|
|
56
61
|
// destinationOffset?: number;
|
|
57
62
|
// }): void;
|
|
58
|
-
}
|
|
63
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
export
|
|
2
|
+
export class WEBGLExternalTexture extends WEBGLTexture {
|
|
3
3
|
readonly device: WebGLDevice;
|
|
4
4
|
readonly gl: WebGLRenderingContext;
|
|
5
5
|
readonly gl2: WebGL2RenderingContext | null;
|
|
@@ -53,7 +53,7 @@ export default class WEBGLExternalTexture extends WEBGLTexture {
|
|
|
53
53
|
constructor(device: Device | WebGLRenderingContext, props: TextureProps) {
|
|
54
54
|
super(WebGLDevice.attach(device), {id: uid('texture'), ...props});
|
|
55
55
|
|
|
56
|
-
this.
|
|
56
|
+
this.glTarget = getWebGLTextureTarget(props);
|
|
57
57
|
|
|
58
58
|
this.device = WebGLDevice.attach(device);
|
|
59
59
|
this.gl = this.device.gl;
|