@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +3 -1
- package/dist/adapter/converters/device-parameters.d.ts +12 -3
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +89 -74
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +29 -180
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/shader-formats.d.ts +9 -0
- package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
- package/dist/adapter/converters/shader-formats.js +52 -0
- package/dist/adapter/converters/shader-formats.js.map +1 -0
- package/dist/adapter/converters/texture-formats.d.ts +32 -44
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +306 -343
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts +9 -3
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +53 -22
- 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 +9 -25
- 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 +54 -58
- 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 +49 -22
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.d.ts.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/decode-webgl-types.d.ts +26 -0
- package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
- package/dist/adapter/helpers/decode-webgl-types.js +89 -0
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +58 -138
- 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 +16 -11
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts +3 -2
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +51 -82
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
- 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 +2 -29
- 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 +36 -44
- 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 +26 -83
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +19 -14
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +67 -101
- 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 +175 -48
- 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 +10 -20
- 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 -25
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +63 -175
- 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 +98 -12
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +11 -21
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +5 -5
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +18 -44
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +51 -31
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +123 -244
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.js +167 -0
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +6 -7
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +12 -23
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +92 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +205 -158
- 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 +26 -52
- package/dist/classic/accessor.js.map +1 -1
- 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 +192 -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 +37 -0
- package/dist/classic/format-utils.js.map +1 -0
- package/dist/classic/typed-array-utils.d.ts +17 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +18 -39
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.d.ts +17 -18
- package/dist/context/context/create-browser-context.d.ts.map +1 -1
- package/dist/context/context/create-browser-context.js +11 -19
- package/dist/context/context/create-browser-context.js.map +1 -1
- package/dist/context/context/create-headless-context.d.ts +1 -1
- package/dist/context/context/create-headless-context.d.ts.map +1 -1
- package/dist/context/context/create-headless-context.js +6 -7
- package/dist/context/context/create-headless-context.js.map +1 -1
- package/dist/context/context/webgl-checks.d.ts.map +1 -1
- 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 +7 -19
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +18 -41
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -17
- 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 +267 -286
- 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 +37 -43
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +27 -31
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +7 -7
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +17 -40
- 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 +17 -87
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.d.ts.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 +25 -61
- 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 +8 -10
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +9344 -0
- package/dist/index.cjs +6556 -0
- package/dist/index.d.ts +23 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -27
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist.min.js +52 -0
- package/package.json +21 -9
- package/src/adapter/converters/device-parameters.ts +120 -43
- package/src/adapter/converters/sampler-parameters.ts +54 -126
- package/src/adapter/converters/shader-formats.ts +44 -0
- package/src/adapter/converters/texture-formats.ts +265 -192
- package/src/adapter/converters/vertex-formats.ts +71 -10
- package/src/adapter/device-helpers/device-features.ts +5 -2
- package/src/adapter/device-helpers/device-limits.ts +4 -2
- package/src/adapter/device-helpers/get-device-info.ts +72 -18
- package/src/adapter/device-helpers/is-old-ie.ts +3 -0
- package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
- package/src/adapter/helpers/get-shader-layout.ts +87 -131
- package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
- package/src/adapter/helpers/set-uniform.ts +39 -35
- package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
- package/src/adapter/objects/constants-to-keys.ts +6 -25
- package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
- package/src/adapter/objects/webgl-resource.ts +16 -23
- package/src/adapter/resources/webgl-buffer.ts +101 -106
- package/src/adapter/resources/webgl-command-buffer.ts +327 -25
- package/src/adapter/resources/webgl-command-encoder.ts +20 -12
- package/src/adapter/resources/webgl-external-texture.ts +5 -2
- package/src/adapter/resources/webgl-framebuffer.ts +86 -133
- package/src/adapter/resources/webgl-render-pass.ts +165 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
- package/src/adapter/resources/webgl-sampler.ts +12 -8
- package/src/adapter/resources/webgl-shader.ts +32 -27
- package/src/adapter/resources/webgl-texture.ts +117 -91
- package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
- package/src/adapter/resources/webgl-vertex-array.ts +283 -0
- package/src/adapter/webgl-canvas-context.ts +18 -13
- package/src/adapter/webgl-device.ts +327 -92
- package/src/classic/accessor.ts +8 -5
- package/src/classic/clear.ts +113 -0
- package/src/classic/copy-and-blit.ts +312 -0
- package/src/classic/format-utils.ts +46 -0
- package/src/classic/typed-array-utils.ts +19 -27
- package/src/context/context/create-browser-context.ts +53 -31
- package/src/context/context/create-headless-context.ts +5 -2
- package/src/context/context/webgl-checks.ts +3 -1
- package/src/context/debug/spector.ts +8 -5
- package/src/context/debug/webgl-developer-tools.ts +26 -17
- package/src/context/parameters/unified-parameter-api.ts +15 -9
- package/src/context/parameters/webgl-parameter-tables.ts +120 -98
- package/src/context/polyfill/context-data.ts +30 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
- package/src/context/polyfill/polyfill-context.ts +15 -8
- package/src/context/polyfill/polyfill-table.ts +20 -15
- package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
- package/src/context/state-tracker/deep-array-equal.ts +2 -0
- package/src/context/state-tracker/track-context-state.ts +13 -10
- package/src/context/state-tracker/with-parameters.ts +13 -4
- package/src/index.ts +65 -39
- package/src/types.ts +5 -0
- package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
- package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
- package/dist/adapter/helpers/attribute-utils.js +0 -81
- package/dist/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/adapter/helpers/uniforms.d.ts +0 -26
- package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
- package/dist/adapter/helpers/uniforms.js +0 -99
- package/dist/adapter/helpers/uniforms.js.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/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 +0 -95
- package/dist/classic/buffer.d.ts.map +0 -1
- package/dist/classic/buffer.js +0 -392
- package/dist/classic/buffer.js.map +0 -1
- package/dist/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/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -103
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/es5/adapter/converters/device-parameters.js +0 -185
- package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
- package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/texture-formats.js +0 -1031
- package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
- package/dist/es5/adapter/converters/vertex-formats.js +0 -45
- package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-features.js +0 -155
- package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
- package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
- package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/adapter/helpers/set-uniform.js +0 -125
- package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/es5/adapter/helpers/uniforms.js +0 -112
- package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
- package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
- package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-resource.js +0 -292
- package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
- package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
- package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-shader.js +0 -150
- package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-texture.js +0 -986
- package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/es5/adapter/webgl-canvas-context.js +0 -97
- package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/es5/adapter/webgl-device.js +0 -463
- package/dist/es5/adapter/webgl-device.js.map +0 -1
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/classic/accessor.js +0 -181
- package/dist/es5/classic/accessor.js.map +0 -1
- package/dist/es5/classic/buffer.js +0 -478
- package/dist/es5/classic/buffer.js.map +0 -1
- package/dist/es5/classic/typed-array-utils.js +0 -126
- package/dist/es5/classic/typed-array-utils.js.map +0 -1
- package/dist/es5/context/context/context-state.js +0 -31
- package/dist/es5/context/context/context-state.js.map +0 -1
- package/dist/es5/context/context/create-browser-context.js +0 -83
- package/dist/es5/context/context/create-browser-context.js.map +0 -1
- package/dist/es5/context/context/create-headless-context.js +0 -60
- package/dist/es5/context/context/create-headless-context.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -121
- package/dist/es5/context/context/device-pixels.js.map +0 -1
- package/dist/es5/context/context/webgl-checks.js +0 -54
- package/dist/es5/context/context/webgl-checks.js.map +0 -1
- package/dist/es5/context/debug/spector.js +0 -133
- package/dist/es5/context/debug/spector.js.map +0 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
- package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
- package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-context.js +0 -134
- package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-table.js +0 -166
- package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/es5/context/state-tracker/track-context-state.js +0 -211
- package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/es5/context/state-tracker/with-parameters.js +0 -44
- package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/es5/index.js +0 -290
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/init.js +0 -10
- package/dist/es5/init.js.map +0 -1
- package/dist/es5/types/webgl.js +0 -6
- package/dist/es5/types/webgl.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/types.js.map +0 -1
- package/dist/esm/adapter/converters/device-parameters.js +0 -168
- package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
- package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/texture-formats.js +0 -954
- package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
- package/dist/esm/adapter/converters/vertex-formats.js +0 -35
- package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-features.js +0 -112
- package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
- package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
- package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/adapter/helpers/set-uniform.js +0 -115
- package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/esm/adapter/helpers/uniforms.js +0 -99
- package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
- package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
- package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-resource.js +0 -216
- package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
- package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
- package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-shader.js +0 -76
- package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-texture.js +0 -834
- package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/esm/adapter/webgl-canvas-context.js +0 -54
- package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/esm/adapter/webgl-device.js +0 -337
- package/dist/esm/adapter/webgl-device.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/classic/accessor.js +0 -144
- package/dist/esm/classic/accessor.js.map +0 -1
- package/dist/esm/classic/buffer.js +0 -392
- package/dist/esm/classic/buffer.js.map +0 -1
- package/dist/esm/classic/typed-array-utils.js +0 -112
- package/dist/esm/classic/typed-array-utils.js.map +0 -1
- package/dist/esm/context/context/context-state.js +0 -26
- package/dist/esm/context/context/context-state.js.map +0 -1
- package/dist/esm/context/context/create-browser-context.js +0 -61
- package/dist/esm/context/context/create-browser-context.js.map +0 -1
- package/dist/esm/context/context/create-headless-context.js +0 -43
- package/dist/esm/context/context/create-headless-context.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -103
- package/dist/esm/context/context/device-pixels.js.map +0 -1
- package/dist/esm/context/context/webgl-checks.js +0 -34
- package/dist/esm/context/context/webgl-checks.js.map +0 -1
- package/dist/esm/context/debug/spector.js +0 -76
- package/dist/esm/context/debug/spector.js.map +0 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
- package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
- package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-context.js +0 -91
- package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-table.js +0 -160
- package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/esm/context/state-tracker/track-context-state.js +0 -183
- package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/esm/context/state-tracker/with-parameters.js +0 -36
- package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/esm/index.js +0 -28
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/init.js +0 -4
- package/dist/esm/init.js.map +0 -1
- package/dist/esm/types/webgl.js +0 -2
- package/dist/esm/types/webgl.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/init.d.ts +0 -2
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -4
- package/dist/init.js.map +0 -1
- package/dist/types/webgl.d.ts +0 -145
- package/dist/types/webgl.d.ts.map +0 -1
- package/dist/types/webgl.js +0 -2
- package/dist/types/webgl.js.map +0 -1
- package/src/adapter/converters/renderbuffer-formats.ts +0 -92
- package/src/adapter/helpers/attribute-utils.ts +0 -61
- package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
- package/src/bundle.ts +0 -4
- package/src/classic/buffer.ts +0 -474
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/device-pixels.ts +0 -158
- package/src/init.ts +0 -4
- package/src/types/webgl.ts +0 -284
|
@@ -1,29 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
} from '../converters/
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import {assert, ResourceProps, TextureFormat} from '@luma.gl/core';
|
|
5
|
+
import {GL} from '@luma.gl/constants';
|
|
6
|
+
import {WebGLDevice} from '../webgl-device';
|
|
7
|
+
import {WebGLResource} from './webgl-resource';
|
|
8
|
+
import {isRenderbufferFormatSupported} from '../converters/texture-formats';
|
|
9
|
+
import {convertTextureFormatToGL, getTextureFormatBytesPerPixel} from '../converters/texture-formats';
|
|
9
10
|
|
|
10
11
|
export type RenderbufferProps = ResourceProps & {
|
|
11
|
-
format:
|
|
12
|
+
format: TextureFormat;
|
|
12
13
|
width?: number;
|
|
13
14
|
height?: number;
|
|
14
15
|
samples?: number;
|
|
15
16
|
};
|
|
16
17
|
|
|
17
|
-
const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
|
|
18
|
-
id: undefined,
|
|
19
|
-
handle: undefined,
|
|
20
|
-
userData: undefined,
|
|
21
|
-
format: 0,
|
|
22
|
-
width: 1,
|
|
23
|
-
height: 1,
|
|
24
|
-
samples: 0
|
|
25
|
-
};
|
|
26
|
-
|
|
27
18
|
/**
|
|
28
19
|
* Renderbuffers are GPU objects that contain images.
|
|
29
20
|
* In contrast to Textures they are optimized for use as render targets, with Framebuffers.
|
|
@@ -34,36 +25,54 @@ const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
|
|
|
34
25
|
* use Textures instead.
|
|
35
26
|
* Renderbuffer objects also natively accommodate Multisampling (MSAA).
|
|
36
27
|
*/
|
|
37
|
-
export
|
|
38
|
-
|
|
28
|
+
export class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps> {
|
|
29
|
+
static override readonly defaultProps: Required<RenderbufferProps> = {
|
|
30
|
+
id: undefined,
|
|
31
|
+
handle: undefined,
|
|
32
|
+
userData: undefined,
|
|
33
|
+
format: undefined, // 'depth16unorm'
|
|
34
|
+
width: 1,
|
|
35
|
+
height: 1,
|
|
36
|
+
samples: 0
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
override get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
|
|
39
40
|
|
|
40
41
|
get width(): number { return this.props.width; }
|
|
41
42
|
get height(): number { return this.props.height; }
|
|
42
|
-
get format():
|
|
43
|
+
get format(): TextureFormat { return this.props.format; }
|
|
43
44
|
get samples(): number { return this.props.samples; }
|
|
45
|
+
get attachment() { return }
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
/** WebGL format constant */
|
|
48
|
+
glFormat: GL;
|
|
49
|
+
|
|
50
|
+
static isTextureFormatSupported(device: WebGLDevice, format: TextureFormat): boolean {
|
|
51
|
+
return isRenderbufferFormatSupported(device.gl, format);
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
constructor(device: WebGLDevice, props: RenderbufferProps) {
|
|
50
|
-
|
|
55
|
+
// TODO - remove temporary sanity check
|
|
56
|
+
if (typeof props.format === 'number') {
|
|
57
|
+
throw new Error('Renderbuffer');
|
|
58
|
+
}
|
|
59
|
+
super(device, props, WEBGLRenderbuffer.defaultProps);
|
|
60
|
+
this.glFormat = convertTextureFormatToGL(this.props.format, device.isWebGL2);
|
|
51
61
|
this._initialize(this.props);
|
|
52
62
|
}
|
|
53
63
|
|
|
54
|
-
resize(size: {width: number, height: number}):
|
|
64
|
+
resize(size: {width: number, height: number}): void {
|
|
55
65
|
// Don't resize if width/height haven't changed
|
|
56
66
|
if (size.width !== this.width || size.height !== this.height) {
|
|
57
67
|
Object.assign(this.props, {...size, format: this.format, samples: this.samples});
|
|
58
68
|
this._initialize(this.props);
|
|
59
69
|
}
|
|
60
|
-
return this;
|
|
61
70
|
}
|
|
62
71
|
|
|
63
72
|
// PRIVATE METHODS
|
|
64
73
|
|
|
65
74
|
/** Creates and initializes a renderbuffer object's data store */
|
|
66
|
-
protected _initialize(props: Required<RenderbufferProps>) {
|
|
75
|
+
protected _initialize(props: Required<RenderbufferProps>): void {
|
|
67
76
|
const {format, width, height, samples} = props;
|
|
68
77
|
assert(format, 'Needs format');
|
|
69
78
|
|
|
@@ -72,33 +81,30 @@ export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps>
|
|
|
72
81
|
this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
|
|
73
82
|
|
|
74
83
|
if (samples !== 0 && this.device.isWebGL2) {
|
|
75
|
-
|
|
76
|
-
this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);
|
|
84
|
+
this.gl2.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, this.glFormat, width, height);
|
|
77
85
|
} else {
|
|
78
|
-
this.gl.renderbufferStorage(GL.RENDERBUFFER,
|
|
86
|
+
this.gl.renderbufferStorage(GL.RENDERBUFFER, this.glFormat, width, height);
|
|
79
87
|
}
|
|
80
88
|
|
|
81
89
|
this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
|
|
82
90
|
|
|
83
91
|
this.trackAllocatedMemory(
|
|
84
|
-
width * height * (samples || 1) *
|
|
92
|
+
width * height * (samples || 1) * getTextureFormatBytesPerPixel(this.glFormat, this.device.isWebGL2)
|
|
85
93
|
);
|
|
86
|
-
|
|
87
|
-
return this;
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
// RESOURCE IMPLEMENTATION
|
|
91
97
|
|
|
92
|
-
_createHandle() {
|
|
98
|
+
override _createHandle() {
|
|
93
99
|
return this.gl.createRenderbuffer();
|
|
94
100
|
}
|
|
95
101
|
|
|
96
|
-
_deleteHandle(): void {
|
|
102
|
+
override _deleteHandle(): void {
|
|
97
103
|
this.gl.deleteRenderbuffer(this.handle);
|
|
98
104
|
this.trackDeallocatedMemory();
|
|
99
105
|
}
|
|
100
106
|
|
|
101
|
-
_bindHandle(handle: WEBGLRenderbuffer): void {
|
|
107
|
+
override _bindHandle(handle: WEBGLRenderbuffer): void {
|
|
102
108
|
this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
|
|
103
109
|
}
|
|
104
110
|
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/core';
|
|
5
|
+
import type {Device, ResourceProps} from '@luma.gl/core';
|
|
6
|
+
import {GL} from '@luma.gl/constants';
|
|
5
7
|
import {isWebGL2, assertWebGLContext} from '../../context/context/webgl-checks';
|
|
6
|
-
import WebGLDevice from '../webgl-device';
|
|
8
|
+
import {WebGLDevice} from '../webgl-device';
|
|
7
9
|
|
|
8
10
|
// Requires full GL enum to be bundled... Make these bindings dependent on dynamic import (debug)?
|
|
9
|
-
import {
|
|
11
|
+
import {getKeyValue} from './constants-to-keys';
|
|
10
12
|
|
|
11
13
|
const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* Base class for WebGL object wrappers
|
|
15
17
|
*/
|
|
16
|
-
|
|
17
|
-
id: string;
|
|
18
|
-
userData: any;
|
|
18
|
+
export abstract class WebGLResource<Props extends ResourceProps> extends Resource<Props> {
|
|
19
19
|
readonly device: WebGLDevice;
|
|
20
20
|
readonly gl: WebGLRenderingContext;
|
|
21
21
|
readonly gl2: WebGL2RenderingContext;
|
|
@@ -34,12 +34,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
34
34
|
assertWebGLContext(gl);
|
|
35
35
|
|
|
36
36
|
// extends
|
|
37
|
-
|
|
38
|
-
const {id, userData = {}} = props || {};
|
|
37
|
+
const {id} = props || {};
|
|
39
38
|
this.gl = gl;
|
|
40
39
|
this.gl2 = gl as WebGL2RenderingContext;
|
|
41
40
|
this.id = id || uid(this.constructor.name);
|
|
42
|
-
this.userData = userData;
|
|
43
41
|
|
|
44
42
|
// Set the handle
|
|
45
43
|
// If handle was provided, use it, otherwise create a new handle
|
|
@@ -48,7 +46,6 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
48
46
|
// this.glCount = glGetContextLossCount(this.gl);
|
|
49
47
|
|
|
50
48
|
// Default VertexArray needs to be created with null handle, so compare against undefined
|
|
51
|
-
// @ts-expect-error
|
|
52
49
|
this._handle = props?.handle;
|
|
53
50
|
if (this._handle === undefined) {
|
|
54
51
|
this._handle = this._createHandle();
|
|
@@ -57,7 +54,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
57
54
|
this.byteLength = 0;
|
|
58
55
|
}
|
|
59
56
|
|
|
60
|
-
toString(): string {
|
|
57
|
+
override toString(): string {
|
|
61
58
|
return `${this.constructor.name}(${this.id})`;
|
|
62
59
|
}
|
|
63
60
|
|
|
@@ -74,11 +71,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
74
71
|
return this._handle;
|
|
75
72
|
}
|
|
76
73
|
|
|
77
|
-
|
|
78
|
-
this.delete();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
delete({deleteChildren = false} = {}) {
|
|
74
|
+
override delete({deleteChildren = false} = {}) {
|
|
82
75
|
// Delete this object, and get refs to any children
|
|
83
76
|
// @ts-expect-error
|
|
84
77
|
const children = this._handle && this._deleteHandle(this._handle);
|
|
@@ -91,7 +84,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
91
84
|
// @ts-expect-error
|
|
92
85
|
if (children && deleteChildren) {
|
|
93
86
|
// @ts-expect-error
|
|
94
|
-
children.filter(Boolean).forEach((child) => child.
|
|
87
|
+
children.filter(Boolean).forEach((child) => child.destroy());
|
|
95
88
|
}
|
|
96
89
|
|
|
97
90
|
return this;
|
|
@@ -130,7 +123,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
130
123
|
* @param name
|
|
131
124
|
* @return param
|
|
132
125
|
*/
|
|
133
|
-
getParameter(pname: number, props = {}): any {
|
|
126
|
+
getParameter(pname: number, props: any = {}): any {
|
|
134
127
|
pname = getKeyValue(this.gl, pname);
|
|
135
128
|
assert(pname);
|
|
136
129
|
|
|
@@ -163,7 +156,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
163
156
|
// Many resources support a getParameter call -
|
|
164
157
|
// getParameters will get all parameters - slow but useful for debugging
|
|
165
158
|
// eslint-disable-next-line complexity
|
|
166
|
-
getParameters(options: {parameters
|
|
159
|
+
getParameters(options: {parameters?: any, keys?: any} = {}) {
|
|
167
160
|
const {parameters, keys} = options;
|
|
168
161
|
|
|
169
162
|
// Get parameter definitions for this Resource
|
|
@@ -188,10 +181,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
188
181
|
(!('extension' in parameter) || this.gl.getExtension(parameter.extension));
|
|
189
182
|
|
|
190
183
|
if (parameterAvailable) {
|
|
191
|
-
const key = keys ?
|
|
184
|
+
const key = keys ? this.device.getGLKey(pname) : pname;
|
|
192
185
|
values[key] = this.getParameter(pname, options);
|
|
193
186
|
if (keys && parameter.type === 'GLenum') {
|
|
194
|
-
values[key] =
|
|
187
|
+
values[key] = this.device.getGLKey(values[key]);
|
|
195
188
|
}
|
|
196
189
|
}
|
|
197
190
|
}
|
|
@@ -1,25 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import GL from '@luma.gl/constants';
|
|
4
|
-
import WebGLDevice from '../webgl-device';
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
5
3
|
|
|
6
|
-
|
|
4
|
+
import type {BufferProps} from '@luma.gl/core';
|
|
5
|
+
import {Buffer, assert} from '@luma.gl/core';
|
|
6
|
+
import {GL} from '@luma.gl/constants';
|
|
7
|
+
import {WebGLDevice} from '../webgl-device';
|
|
7
8
|
|
|
8
9
|
/** WebGL Buffer interface */
|
|
9
|
-
export
|
|
10
|
+
export class WEBGLBuffer extends Buffer {
|
|
10
11
|
readonly device: WebGLDevice;
|
|
11
12
|
readonly gl: WebGLRenderingContext;
|
|
12
13
|
readonly gl2: WebGL2RenderingContext | null;
|
|
13
14
|
readonly handle: WebGLBuffer;
|
|
14
|
-
readonly target: number;
|
|
15
15
|
|
|
16
|
+
/** Target in OpenGL defines the type of buffer */
|
|
17
|
+
readonly glTarget: GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER;
|
|
18
|
+
/** Usage is a hint on how frequently the buffer will be updates */
|
|
19
|
+
readonly glUsage: GL.STATIC_DRAW | GL.DYNAMIC_DRAW;
|
|
20
|
+
/** Index type is needed when issuing draw calls, so we pre-compute it */
|
|
21
|
+
readonly glIndexType: GL.UNSIGNED_SHORT | GL.UNSIGNED_INT = GL.UNSIGNED_SHORT;
|
|
22
|
+
|
|
23
|
+
/** Number of bytes allocated on the GPU for this buffer */
|
|
16
24
|
byteLength: number;
|
|
25
|
+
/** Number of bytes used */
|
|
17
26
|
bytesUsed: number;
|
|
18
|
-
debugData: ArrayBuffer | null = null;
|
|
19
|
-
|
|
20
|
-
webglUsage: number;
|
|
21
|
-
|
|
22
|
-
accessor: {};
|
|
23
27
|
|
|
24
28
|
constructor(device: WebGLDevice, props: BufferProps = {}) {
|
|
25
29
|
super(device, props);
|
|
@@ -28,19 +32,16 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
28
32
|
this.gl = this.device.gl;
|
|
29
33
|
this.gl2 = this.device.gl2;
|
|
30
34
|
|
|
31
|
-
const handle = typeof props === 'object' ?
|
|
35
|
+
const handle = typeof props === 'object' ? props.handle : undefined;
|
|
32
36
|
this.handle = handle || this.gl.createBuffer();
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
this.
|
|
41
|
-
// @ts-expect-error Hack - Checking for subclass prop
|
|
42
|
-
this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
|
|
43
|
-
this.debugData = null;
|
|
37
|
+
device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data});
|
|
38
|
+
|
|
39
|
+
// - In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
|
|
40
|
+
// otherwise buffer type will lock to generic (non-element) buffer
|
|
41
|
+
// - In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
|
|
42
|
+
this.glTarget = getWebGLTarget(this.props.usage);
|
|
43
|
+
this.glUsage = getWebGLUsage(this.props.usage);
|
|
44
|
+
this.glIndexType = this.props.indexType === 'uint32' ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;
|
|
44
45
|
|
|
45
46
|
// Set data: (re)initializes the buffer
|
|
46
47
|
if (props.data) {
|
|
@@ -48,32 +49,28 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
48
49
|
} else {
|
|
49
50
|
this._initWithByteLength(props.byteLength || 0);
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
// Deprecated: Merge main props and accessor
|
|
53
|
-
// this.accessor = {...props.accessor};
|
|
54
|
-
|
|
55
|
-
// Object.seal(this);
|
|
56
52
|
}
|
|
57
53
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// Allocate a new buffer and initialize to contents of typed array
|
|
61
|
-
_initWithData(data, byteOffset: number = 0, byteLength: number = data.byteLength + byteOffset): this {
|
|
62
|
-
assert(ArrayBuffer.isView(data));
|
|
54
|
+
// PRIVATE METHODS
|
|
63
55
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
56
|
+
/** Allocate a new buffer and initialize to contents of typed array */
|
|
57
|
+
_initWithData(
|
|
58
|
+
data: ArrayBuffer | ArrayBufferView,
|
|
59
|
+
byteOffset: number = 0,
|
|
60
|
+
byteLength: number = data.byteLength + byteOffset
|
|
61
|
+
): void {
|
|
62
|
+
// const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
|
|
63
|
+
const glTarget = this.glTarget;
|
|
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
|
-
this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
|
|
72
69
|
this.bytesUsed = byteLength;
|
|
73
70
|
this.byteLength = byteLength;
|
|
74
|
-
this.trackAllocatedMemory(byteLength);
|
|
75
71
|
|
|
76
|
-
|
|
72
|
+
this._setDebugData(data, byteOffset, byteLength);
|
|
73
|
+
this.trackAllocatedMemory(byteLength);
|
|
77
74
|
}
|
|
78
75
|
|
|
79
76
|
// Allocate a GPU buffer of specified size.
|
|
@@ -88,59 +85,63 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
88
85
|
data = new Float32Array(0);
|
|
89
86
|
}
|
|
90
87
|
|
|
91
|
-
const
|
|
88
|
+
// const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
|
|
89
|
+
const glTarget = this.glTarget;
|
|
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
|
-
this.debugData = null;
|
|
98
95
|
this.bytesUsed = byteLength;
|
|
99
96
|
this.byteLength = byteLength;
|
|
100
97
|
|
|
98
|
+
this._setDebugData(null, 0, byteLength);
|
|
99
|
+
this.trackAllocatedMemory(byteLength);
|
|
100
|
+
|
|
101
101
|
return this;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
destroy(): void {
|
|
105
|
-
if (this.handle) {
|
|
104
|
+
override destroy(): void {
|
|
105
|
+
if (!this.destroyed && this.handle) {
|
|
106
106
|
this.removeStats();
|
|
107
107
|
this.trackDeallocatedMemory();
|
|
108
108
|
this.gl.deleteBuffer(this.handle);
|
|
109
|
-
// this.handle = null;
|
|
110
109
|
this.destroyed = true;
|
|
110
|
+
// @ts-expect-error
|
|
111
|
+
this.handle = null;
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
114
|
|
|
114
|
-
write(data: ArrayBufferView, byteOffset: number = 0): void {
|
|
115
|
+
override write(data: ArrayBufferView, byteOffset: number = 0): void {
|
|
115
116
|
const srcOffset = 0;
|
|
116
|
-
const byteLength = data.byteLength;
|
|
117
|
+
const byteLength = undefined; // data.byteLength;
|
|
117
118
|
|
|
118
119
|
// Create the buffer - binding it here for the first time locks the type
|
|
119
120
|
// In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
|
|
120
|
-
const
|
|
121
|
-
this.gl.bindBuffer(
|
|
121
|
+
const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
|
|
122
|
+
this.gl.bindBuffer(glTarget, this.handle);
|
|
122
123
|
// WebGL2: subData supports additional srcOffset and length parameters
|
|
123
124
|
if (srcOffset !== 0 || byteLength !== undefined) {
|
|
124
125
|
this.device.assertWebGL2();
|
|
125
|
-
|
|
126
|
-
// @ts-expect-error
|
|
127
|
-
this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
|
|
126
|
+
this.gl2.bufferSubData(glTarget, byteOffset, data, srcOffset, byteLength);
|
|
128
127
|
} else {
|
|
129
|
-
this.gl.bufferSubData(
|
|
128
|
+
this.gl.bufferSubData(glTarget, byteOffset, data);
|
|
130
129
|
}
|
|
131
|
-
this.gl.bindBuffer(
|
|
130
|
+
this.gl.bindBuffer(glTarget, null);
|
|
132
131
|
|
|
133
|
-
|
|
134
|
-
// this.debugData = data.slice(byteOffset, 40);
|
|
132
|
+
this._setDebugData(data, byteOffset, data.byteLength);
|
|
135
133
|
}
|
|
136
134
|
|
|
137
|
-
/**
|
|
138
|
-
async readAsync(
|
|
139
|
-
byteOffset
|
|
140
|
-
|
|
141
|
-
|
|
135
|
+
/** Asynchronously read data from the buffer */
|
|
136
|
+
override async readAsync(byteOffset = 0, byteLength?: number): Promise<Uint8Array> {
|
|
137
|
+
return this.readSyncWebGL2(byteOffset, byteLength);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** Synchronously read data from the buffer. WebGL only. */
|
|
141
|
+
override readSyncWebGL2(byteOffset = 0, byteLength?: number): Uint8Array {
|
|
142
142
|
this.device.assertWebGL2();
|
|
143
143
|
|
|
144
|
+
byteLength = byteLength ?? this.byteLength - byteOffset;
|
|
144
145
|
const data = new Uint8Array(byteLength);
|
|
145
146
|
const dstOffset = 0;
|
|
146
147
|
|
|
@@ -149,41 +150,40 @@ export default class WEBGLBuffer extends Buffer {
|
|
|
149
150
|
this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
|
|
150
151
|
this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
|
|
151
152
|
|
|
152
|
-
//
|
|
153
|
-
|
|
153
|
+
// Update local `data` if offsets are 0
|
|
154
|
+
this._setDebugData(data, byteOffset, byteLength);
|
|
154
155
|
|
|
155
156
|
return data;
|
|
156
157
|
}
|
|
157
|
-
|
|
158
|
-
// PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)
|
|
159
|
-
|
|
160
|
-
_invalidateDebugData() {
|
|
161
|
-
this.debugData = null;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
_getWriteTarget() {
|
|
165
|
-
return this.target;
|
|
166
|
-
// return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
_getReadTarget() {
|
|
170
|
-
return this.target;
|
|
171
|
-
return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
|
|
172
|
-
}
|
|
173
158
|
}
|
|
174
159
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
160
|
+
/**
|
|
161
|
+
* Returns a WebGL buffer target
|
|
162
|
+
*
|
|
163
|
+
* @param usage
|
|
164
|
+
* static MAP_READ = 0x01;
|
|
165
|
+
* static MAP_WRITE = 0x02;
|
|
166
|
+
* static COPY_SRC = 0x0004;
|
|
167
|
+
* static COPY_DST = 0x0008;
|
|
168
|
+
* static INDEX = 0x0010;
|
|
169
|
+
* static VERTEX = 0x0020;
|
|
170
|
+
* static UNIFORM = 0x0040;
|
|
171
|
+
* static STORAGE = 0x0080;
|
|
172
|
+
* static INDIRECT = 0x0100;
|
|
173
|
+
* static QUERY_RESOLVE = 0x0200;
|
|
174
|
+
*
|
|
175
|
+
* @returns WebGL buffer targe
|
|
176
|
+
*
|
|
177
|
+
* Buffer bind points in WebGL2
|
|
178
|
+
* gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.
|
|
179
|
+
* gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.
|
|
180
|
+
* gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.
|
|
181
|
+
* gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.
|
|
182
|
+
* gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.
|
|
183
|
+
*/
|
|
184
|
+
function getWebGLTarget(
|
|
185
|
+
usage: number
|
|
186
|
+
): GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER {
|
|
187
187
|
if (usage & Buffer.INDEX) {
|
|
188
188
|
return GL.ELEMENT_ARRAY_BUFFER;
|
|
189
189
|
}
|
|
@@ -194,18 +194,13 @@ function getWebGLTarget(usage: number): GL {
|
|
|
194
194
|
return GL.UNIFORM_BUFFER;
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
// gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.
|
|
198
|
-
// gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.
|
|
199
|
-
// gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.
|
|
200
|
-
// gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.
|
|
201
|
-
// gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.
|
|
202
|
-
|
|
203
197
|
// Binding a buffer for the first time locks the type
|
|
204
|
-
// In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
|
|
198
|
+
// In WebGL2, we can use GL.COPY_WRITE_BUFFER to avoid locking the type
|
|
205
199
|
return GL.ARRAY_BUFFER;
|
|
206
200
|
}
|
|
207
201
|
|
|
208
|
-
|
|
202
|
+
/** @todo usage is not passed correctly */
|
|
203
|
+
function getWebGLUsage(usage: number): GL.STATIC_DRAW | GL.DYNAMIC_DRAW {
|
|
209
204
|
if (usage & Buffer.INDEX) {
|
|
210
205
|
return GL.STATIC_DRAW;
|
|
211
206
|
}
|
|
@@ -215,5 +210,5 @@ function getWebGLUsage(usage: number): GL {
|
|
|
215
210
|
if (usage & Buffer.UNIFORM) {
|
|
216
211
|
return GL.DYNAMIC_DRAW;
|
|
217
212
|
}
|
|
218
|
-
return GL.
|
|
213
|
+
return GL.STATIC_DRAW;
|
|
219
214
|
}
|