@luma.gl/webgl 9.0.0-alpha.14 → 9.0.0-alpha.16
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/dist/adapter/converters/device-parameters.js +199 -136
- package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
- package/dist/adapter/converters/renderbuffer-formats.js +62 -176
- package/dist/adapter/converters/sampler-parameters.js +149 -206
- package/dist/adapter/converters/texture-formats.d.ts +2 -2
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +437 -890
- package/dist/adapter/converters/vertex-formats.js +15 -33
- package/dist/adapter/device-helpers/device-features.js +119 -100
- package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +88 -86
- package/dist/adapter/device-helpers/get-device-info.js +42 -43
- package/dist/adapter/device-helpers/is-old-ie.js +9 -6
- package/dist/adapter/helpers/attribute-utils.js +50 -74
- 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 +27 -0
- package/dist/adapter/helpers/get-shader-layout.js +307 -296
- 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 +32 -33
- package/dist/adapter/helpers/set-uniform.js +67 -110
- package/dist/adapter/helpers/uniforms.js +80 -85
- package/dist/adapter/objects/constants-to-keys.js +33 -33
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +67 -86
- package/dist/adapter/objects/webgl-resource.js +213 -205
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +74 -76
- package/dist/adapter/resources/webgl-buffer.js +150 -147
- package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +39 -55
- package/dist/adapter/resources/webgl-command-encoder.js +25 -49
- package/dist/adapter/resources/webgl-external-texture.js +91 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +231 -258
- package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +8 -18
- package/dist/adapter/resources/webgl-render-pipeline.js +316 -378
- package/dist/adapter/resources/webgl-sampler.js +42 -47
- package/dist/adapter/resources/webgl-shader.d.ts +1 -2
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +58 -68
- package/dist/adapter/resources/webgl-texture.d.ts +5 -5
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +661 -815
- package/dist/adapter/webgl-canvas-context.js +55 -49
- package/dist/adapter/webgl-device.js +288 -338
- package/dist/bundle.js +1 -2
- package/dist/classic/accessor.js +120 -127
- package/dist/classic/buffer.d.ts +1 -1
- package/dist/classic/buffer.d.ts.map +1 -1
- package/dist/classic/buffer.js +325 -356
- package/dist/classic/typed-array-utils.d.ts +1 -1
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +91 -101
- package/dist/context/context/create-browser-context.d.ts +1 -2
- package/dist/context/context/create-browser-context.d.ts.map +1 -1
- package/dist/context/context/create-browser-context.js +61 -52
- 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 +26 -33
- package/dist/context/context/webgl-checks.js +25 -20
- 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 +53 -62
- 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 +106 -93
- package/dist/context/parameters/unified-parameter-api.js +91 -55
- package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +462 -423
- package/dist/context/polyfill/context-data.js +16 -12
- package/dist/context/polyfill/get-parameter-polyfill.js +91 -76
- package/dist/context/polyfill/polyfill-context.js +75 -80
- package/dist/context/polyfill/polyfill-table.js +133 -139
- package/dist/context/polyfill/polyfill-vertex-array-object.js +255 -297
- package/dist/context/state-tracker/deep-array-equal.js +16 -18
- package/dist/context/state-tracker/track-context-state.js +183 -161
- package/dist/context/state-tracker/with-parameters.js +43 -35
- package/dist/dist.min.js +1 -0
- package/dist/es5/adapter/converters/device-parameters.js +3 -38
- package/dist/es5/adapter/converters/device-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js +2 -14
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -1
- package/dist/es5/adapter/converters/sampler-parameters.js +2 -65
- package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/texture-formats.js +9 -81
- package/dist/es5/adapter/converters/texture-formats.js.map +1 -1
- package/dist/es5/adapter/converters/vertex-formats.js +0 -12
- package/dist/es5/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-features.js +6 -40
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +0 -10
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +0 -10
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +3 -25
- package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -1
- package/dist/es5/adapter/helpers/get-shader-info.js +31 -0
- package/dist/es5/adapter/helpers/get-shader-info.js.map +1 -0
- package/dist/es5/adapter/helpers/get-shader-layout.js +23 -101
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +6 -24
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/es5/adapter/helpers/set-uniform.js +0 -33
- package/dist/es5/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/es5/adapter/helpers/uniforms.js +13 -37
- package/dist/es5/adapter/helpers/uniforms.js.map +1 -1
- package/dist/es5/adapter/objects/constants-to-keys.js +1 -12
- package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +5 -33
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-resource.js +6 -60
- package/dist/es5/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +7 -35
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +20 -66
- package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-command-buffer.js +6 -32
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -18
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +10 -82
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +2 -19
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +24 -133
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +2 -28
- package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-shader.js +13 -52
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-texture.js +137 -291
- package/dist/es5/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/es5/adapter/webgl-canvas-context.js +0 -24
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/es5/adapter/webgl-device.js +40 -127
- package/dist/es5/adapter/webgl-device.js.map +1 -1
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/classic/accessor.js +1 -31
- package/dist/es5/classic/accessor.js.map +1 -1
- package/dist/es5/classic/buffer.js +32 -102
- package/dist/es5/classic/buffer.js.map +1 -1
- package/dist/es5/classic/typed-array-utils.js +10 -37
- package/dist/es5/classic/typed-array-utils.js.map +1 -1
- package/dist/es5/context/context/create-browser-context.js +4 -21
- package/dist/es5/context/context/create-browser-context.js.map +1 -1
- package/dist/es5/context/context/create-headless-context.js +8 -21
- package/dist/es5/context/context/create-headless-context.js.map +1 -1
- package/dist/es5/context/context/webgl-checks.js +4 -14
- package/dist/es5/context/context/webgl-checks.js.map +1 -1
- package/dist/es5/context/debug/spector.js +20 -54
- package/dist/es5/context/debug/spector.js.map +1 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +19 -65
- package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/es5/context/parameters/unified-parameter-api.js +3 -28
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +18 -65
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/es5/context/polyfill/context-data.js +0 -3
- package/dist/es5/context/polyfill/context-data.js.map +1 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -12
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-context.js +8 -33
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-table.js +3 -27
- package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -70
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js +0 -5
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/es5/context/state-tracker/track-context-state.js +10 -53
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/context/state-tracker/with-parameters.js +1 -13
- package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/es5/index.js +72 -99
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +0 -3
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/types/webgl.js +0 -1
- package/dist/es5/types/webgl.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/esm/adapter/converters/device-parameters.js +0 -20
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -4
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -1
- package/dist/esm/adapter/converters/sampler-parameters.js +2 -57
- package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/esm/adapter/converters/texture-formats.js +8 -52
- package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
- package/dist/esm/adapter/converters/vertex-formats.js +0 -9
- package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-features.js +2 -19
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +0 -3
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +0 -6
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js +2 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +0 -17
- package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -1
- package/dist/esm/adapter/helpers/get-shader-info.js +25 -0
- package/dist/esm/adapter/helpers/get-shader-info.js.map +1 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js +2 -48
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -7
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/esm/adapter/helpers/set-uniform.js +0 -30
- package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/esm/adapter/helpers/uniforms.js +0 -10
- package/dist/esm/adapter/helpers/uniforms.js.map +1 -1
- package/dist/esm/adapter/objects/constants-to-keys.js +0 -7
- package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +2 -18
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-resource.js +10 -57
- package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +5 -15
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +12 -40
- package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-command-buffer.js +2 -17
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -12
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -60
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +1 -8
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -89
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +0 -12
- package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-shader.js +2 -16
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-texture.js +36 -154
- package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/esm/adapter/webgl-canvas-context.js +0 -14
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/esm/adapter/webgl-device.js +19 -89
- package/dist/esm/adapter/webgl-device.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/classic/accessor.js +10 -34
- package/dist/esm/classic/accessor.js.map +1 -1
- package/dist/esm/classic/buffer.js +15 -71
- package/dist/esm/classic/buffer.js.map +1 -1
- package/dist/esm/classic/typed-array-utils.js +0 -20
- package/dist/esm/classic/typed-array-utils.js.map +1 -1
- package/dist/esm/context/context/create-browser-context.js +6 -14
- package/dist/esm/context/context/create-browser-context.js.map +1 -1
- package/dist/esm/context/context/create-headless-context.js +2 -6
- package/dist/esm/context/context/create-headless-context.js.map +1 -1
- package/dist/esm/context/context/webgl-checks.js +0 -3
- package/dist/esm/context/context/webgl-checks.js.map +1 -1
- package/dist/esm/context/debug/spector.js +2 -14
- package/dist/esm/context/debug/spector.js.map +1 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +4 -22
- package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/esm/context/parameters/unified-parameter-api.js +2 -13
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -19
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/esm/context/polyfill/context-data.js +0 -2
- package/dist/esm/context/polyfill/context-data.js.map +1 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -5
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-context.js +14 -21
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-table.js +0 -23
- package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -70
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js +0 -4
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/esm/context/state-tracker/track-context-state.js +11 -45
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/context/state-tracker/with-parameters.js +0 -6
- package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/webgl.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/index.js +39 -25
- package/dist/init.js +1 -2
- package/dist/types/webgl.d.ts +20 -20
- package/dist/types/webgl.d.ts.map +1 -1
- package/dist/types/webgl.js +0 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/package.json +8 -8
- package/src/adapter/helpers/get-shader-info.ts +37 -0
- package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
- package/src/adapter/resources/webgl-render-pass.ts +1 -1
- package/src/adapter/resources/webgl-shader.ts +2 -2
- package/src/adapter/webgl-device.ts +1 -1
- package/src/context/debug/webgl-developer-tools.ts +0 -1
- package/src/types/webgl.ts +4 -4
- package/dist/adapter/converters/device-parameters.js.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/adapter/converters/texture-formats.js.map +0 -1
- package/dist/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/adapter/helpers/uniforms.js.map +0 -1
- package/dist/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/adapter/webgl-device.js.map +0 -1
- package/dist/bundle.js.map +0 -1
- package/dist/classic/accessor.js.map +0 -1
- package/dist/classic/buffer.js.map +0 -1
- package/dist/classic/typed-array-utils.js.map +0 -1
- package/dist/context/context/create-browser-context.js.map +0 -1
- package/dist/context/context/create-headless-context.js.map +0 -1
- package/dist/context/context/webgl-checks.js.map +0 -1
- package/dist/context/debug/spector.js.map +0 -1
- package/dist/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/context/polyfill/context-data.js.map +0 -1
- package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.js.map +0 -1
- package/dist/types/webgl.js.map +0 -1
- package/dist/types.js.map +0 -1
|
@@ -1,84 +1,82 @@
|
|
|
1
1
|
import { assert } from '@luma.gl/api';
|
|
2
2
|
import GL from '@luma.gl/constants';
|
|
3
3
|
import { getBrowser } from '@probe.gl/env';
|
|
4
|
-
import WebGLResource from './webgl-resource';
|
|
4
|
+
import WebGLResource from './webgl-resource.js';
|
|
5
5
|
const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
|
|
6
|
+
/** VertexArrayObject wrapper */
|
|
6
7
|
export default class WEBGLVertexArrayObject extends WebGLResource {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
constructor(device, props) {
|
|
12
|
-
super(device, props, {});
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
_createHandle() {
|
|
16
|
-
return this.gl2.createVertexArray();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
_deleteHandle() {
|
|
20
|
-
this.gl2.deleteVertexArray(this.handle);
|
|
21
|
-
return [this.elements];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
_bindHandle(handle) {
|
|
25
|
-
this.gl2.bindVertexArray(handle);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
setElementBuffer(elementBuffer = null, opts = {}) {
|
|
29
|
-
assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
|
|
30
|
-
this.bind(() => {
|
|
31
|
-
this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
|
|
32
|
-
});
|
|
33
|
-
return this;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
setBuffer(location, buffer, accessor) {
|
|
37
|
-
if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
|
|
38
|
-
return this.setElementBuffer(buffer, accessor);
|
|
8
|
+
get [Symbol.toStringTag]() {
|
|
9
|
+
return 'BaseVertexArrayObject';
|
|
39
10
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
11
|
+
constructor(device, props) {
|
|
12
|
+
// @ts-expect-error
|
|
13
|
+
super(device, props, {});
|
|
14
|
+
}
|
|
15
|
+
_createHandle() {
|
|
16
|
+
return this.gl2.createVertexArray();
|
|
17
|
+
}
|
|
18
|
+
_deleteHandle() {
|
|
19
|
+
this.gl2.deleteVertexArray(this.handle);
|
|
20
|
+
// @ts-expect-error
|
|
21
|
+
return [this.elements];
|
|
22
|
+
// return [this.elements, ...this.buffers];
|
|
23
|
+
}
|
|
24
|
+
_bindHandle(handle) {
|
|
25
|
+
this.gl2.bindVertexArray(handle);
|
|
26
|
+
}
|
|
27
|
+
// Set (bind) an elements buffer, for indexed rendering.
|
|
28
|
+
// Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported
|
|
29
|
+
setElementBuffer(elementBuffer = null, opts = {}) {
|
|
30
|
+
assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
|
|
31
|
+
// The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...
|
|
32
|
+
this.bind(() => {
|
|
33
|
+
this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
|
|
34
|
+
});
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
/** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
|
|
38
|
+
setBuffer(location, buffer, accessor) {
|
|
39
|
+
// Check target
|
|
40
|
+
if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
|
|
41
|
+
return this.setElementBuffer(buffer, accessor);
|
|
42
|
+
}
|
|
43
|
+
const { size, type, stride, offset, normalized, integer, divisor } = accessor;
|
|
44
|
+
const { gl, gl2 } = this;
|
|
45
|
+
location = Number(location);
|
|
46
|
+
this.bind(() => {
|
|
47
|
+
// A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target
|
|
48
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);
|
|
49
|
+
// WebGL2 supports *integer* data formats, i.e. GPU will see integer values
|
|
50
|
+
if (integer) {
|
|
51
|
+
this.device.assertWebGL2();
|
|
52
|
+
gl2.vertexAttribIPointer(location, size, type, stride, offset);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Attaches ARRAY_BUFFER with specified buffer format to location
|
|
56
|
+
gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
|
|
57
|
+
}
|
|
58
|
+
gl.enableVertexAttribArray(location);
|
|
59
|
+
gl2.vertexAttribDivisor(location, divisor || 0);
|
|
60
|
+
// NOTE We don't unbind buffer here, typically another buffer will be bound just after
|
|
61
|
+
});
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Enabling an attribute location makes it reference the currently bound buffer
|
|
66
|
+
* Disabling an attribute location makes it reference the global constant value
|
|
67
|
+
* TODO - handle single values for size 1 attributes?
|
|
68
|
+
* TODO - convert classic arrays based on known type?
|
|
69
|
+
*/
|
|
70
|
+
enable(location, enable = true) {
|
|
71
|
+
// Attribute 0 cannot be disabled in most desktop OpenGL based browsers...
|
|
72
|
+
const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';
|
|
73
|
+
const canDisableAttribute = canDisableAttributeZero || location !== 0;
|
|
74
|
+
if (enable || canDisableAttribute) {
|
|
75
|
+
location = Number(location);
|
|
76
|
+
this.bind(() => enable
|
|
77
|
+
? this.gl.enableVertexAttribArray(location)
|
|
78
|
+
: this.gl.disableVertexAttribArray(location));
|
|
79
|
+
}
|
|
80
|
+
return this;
|
|
78
81
|
}
|
|
79
|
-
|
|
80
|
-
return this;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
82
|
}
|
|
84
|
-
//# sourceMappingURL=webgl-vertex-array-object.js.map
|
|
@@ -1,162 +1,165 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
1
|
import { Buffer, assert } from '@luma.gl/api';
|
|
3
2
|
import GL from '@luma.gl/constants';
|
|
4
3
|
const DEBUG_DATA_LENGTH = 10;
|
|
4
|
+
/** WebGL Buffer interface */
|
|
5
5
|
export default class WEBGLBuffer extends Buffer {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
this.target = this.props.target || getWebGLTarget(this.props.usage);
|
|
36
|
-
this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
|
|
37
|
-
this.debugData = null;
|
|
38
|
-
|
|
39
|
-
if (props.data) {
|
|
40
|
-
this._initWithData(props.data, props.byteOffset, props.byteLength);
|
|
41
|
-
} else {
|
|
42
|
-
this._initWithByteLength(props.byteLength || 0);
|
|
6
|
+
// accessor: {};
|
|
7
|
+
constructor(device, props = {}) {
|
|
8
|
+
super(device, props);
|
|
9
|
+
this.debugData = null;
|
|
10
|
+
this.device = device;
|
|
11
|
+
this.gl = this.device.gl;
|
|
12
|
+
this.gl2 = this.device.gl2;
|
|
13
|
+
const handle = typeof props === 'object' ? props.handle : undefined;
|
|
14
|
+
this.handle = handle || this.gl.createBuffer();
|
|
15
|
+
// @ts-expect-error Add metadata for spector
|
|
16
|
+
this.handle.__SPECTOR_Metadata = { ...this.props, data: typeof this.props.data }; // {name: this.props.id};
|
|
17
|
+
// In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
|
|
18
|
+
// otherwise buffer type will lock to generic (non-element) buffer
|
|
19
|
+
// In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
|
|
20
|
+
// @ts-expect-error Hack - Checking for subclass prop
|
|
21
|
+
this.target = this.props.target || getWebGLTarget(this.props.usage);
|
|
22
|
+
// @ts-expect-error Hack - Checking for subclass prop
|
|
23
|
+
this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
|
|
24
|
+
this.debugData = null;
|
|
25
|
+
// Set data: (re)initializes the buffer
|
|
26
|
+
if (props.data) {
|
|
27
|
+
this._initWithData(props.data, props.byteOffset, props.byteLength);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this._initWithByteLength(props.byteLength || 0);
|
|
31
|
+
}
|
|
32
|
+
// Deprecated: Merge main props and accessor
|
|
33
|
+
// this.accessor = {...props.accessor};
|
|
34
|
+
// Object.seal(this);
|
|
43
35
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
this.trackAllocatedMemory(byteLength);
|
|
59
|
-
return this;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
_initWithByteLength(byteLength) {
|
|
63
|
-
assert(byteLength >= 0);
|
|
64
|
-
let data = byteLength;
|
|
65
|
-
|
|
66
|
-
if (byteLength === 0) {
|
|
67
|
-
data = new Float32Array(0);
|
|
36
|
+
// PRIVATE METHODS
|
|
37
|
+
// Allocate a new buffer and initialize to contents of typed array
|
|
38
|
+
_initWithData(data, byteOffset = 0, byteLength = data.byteLength + byteOffset) {
|
|
39
|
+
assert(ArrayBuffer.isView(data));
|
|
40
|
+
const target = this._getWriteTarget();
|
|
41
|
+
this.gl.bindBuffer(target, this.handle);
|
|
42
|
+
this.gl.bufferData(target, byteLength, this.webglUsage);
|
|
43
|
+
this.gl.bufferSubData(target, byteOffset, data);
|
|
44
|
+
this.gl.bindBuffer(target, null);
|
|
45
|
+
this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
|
|
46
|
+
this.bytesUsed = byteLength;
|
|
47
|
+
this.byteLength = byteLength;
|
|
48
|
+
this.trackAllocatedMemory(byteLength);
|
|
49
|
+
return this;
|
|
68
50
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
51
|
+
// Allocate a GPU buffer of specified size.
|
|
52
|
+
_initWithByteLength(byteLength) {
|
|
53
|
+
assert(byteLength >= 0);
|
|
54
|
+
// Workaround needed for Safari (#291):
|
|
55
|
+
// gl.bufferData with size equal to 0 crashes. Instead create zero sized array.
|
|
56
|
+
let data = byteLength;
|
|
57
|
+
if (byteLength === 0) {
|
|
58
|
+
// @ts-expect-error
|
|
59
|
+
data = new Float32Array(0);
|
|
60
|
+
}
|
|
61
|
+
const target = this._getWriteTarget();
|
|
62
|
+
this.gl.bindBuffer(target, this.handle);
|
|
63
|
+
this.gl.bufferData(target, data, this.webglUsage);
|
|
64
|
+
this.gl.bindBuffer(target, null);
|
|
65
|
+
this.debugData = null;
|
|
66
|
+
this.bytesUsed = byteLength;
|
|
67
|
+
this.byteLength = byteLength;
|
|
68
|
+
return this;
|
|
87
69
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
70
|
+
destroy() {
|
|
71
|
+
if (!this.destroyed && this.handle) {
|
|
72
|
+
this.removeStats();
|
|
73
|
+
this.trackDeallocatedMemory();
|
|
74
|
+
this.gl.deleteBuffer(this.handle);
|
|
75
|
+
this.destroyed = true;
|
|
76
|
+
// this.handle = null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
write(data, byteOffset = 0) {
|
|
80
|
+
const srcOffset = 0;
|
|
81
|
+
const byteLength = data.byteLength;
|
|
82
|
+
// Create the buffer - binding it here for the first time locks the type
|
|
83
|
+
// In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
|
|
84
|
+
const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
|
|
85
|
+
this.gl.bindBuffer(target, this.handle);
|
|
86
|
+
// WebGL2: subData supports additional srcOffset and length parameters
|
|
87
|
+
if (srcOffset !== 0 || byteLength !== undefined) {
|
|
88
|
+
this.device.assertWebGL2();
|
|
89
|
+
// @ts-expect-error
|
|
90
|
+
this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.gl.bufferSubData(target, byteOffset, data);
|
|
94
|
+
}
|
|
95
|
+
this.gl.bindBuffer(target, null);
|
|
96
|
+
// TODO - update local `data` if offsets are right
|
|
97
|
+
// this.debugData = data.slice(byteOffset, 40);
|
|
98
|
+
}
|
|
99
|
+
/** Read data from the buffer */
|
|
100
|
+
async readAsync(byteOffset = 0, byteLength) {
|
|
101
|
+
this.device.assertWebGL2();
|
|
102
|
+
const data = new Uint8Array(byteLength);
|
|
103
|
+
const dstOffset = 0;
|
|
104
|
+
// Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type
|
|
105
|
+
this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
|
|
106
|
+
this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
|
|
107
|
+
this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
|
|
108
|
+
// TODO - update local `data` if offsets are 0
|
|
109
|
+
// this.debugData = null;
|
|
110
|
+
return data;
|
|
111
|
+
}
|
|
112
|
+
// PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)
|
|
113
|
+
_invalidateDebugData() {
|
|
114
|
+
this.debugData = null;
|
|
115
|
+
}
|
|
116
|
+
_getWriteTarget() {
|
|
117
|
+
return this.target;
|
|
118
|
+
// return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
|
|
119
|
+
}
|
|
120
|
+
_getReadTarget() {
|
|
121
|
+
return this.target;
|
|
122
|
+
return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
|
|
101
123
|
}
|
|
102
|
-
|
|
103
|
-
this.gl.bindBuffer(target, null);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
async readAsync(byteOffset = 0, byteLength) {
|
|
107
|
-
this.device.assertWebGL2();
|
|
108
|
-
const data = new Uint8Array(byteLength);
|
|
109
|
-
const dstOffset = 0;
|
|
110
|
-
this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
|
|
111
|
-
this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
|
|
112
|
-
this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
|
|
113
|
-
return data;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
_invalidateDebugData() {
|
|
117
|
-
this.debugData = null;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
_getWriteTarget() {
|
|
121
|
-
return this.target;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
_getReadTarget() {
|
|
125
|
-
return this.target;
|
|
126
|
-
return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
124
|
}
|
|
130
|
-
|
|
125
|
+
// static MAP_READ = 0x01;
|
|
126
|
+
// static MAP_WRITE = 0x02;
|
|
127
|
+
// static COPY_SRC = 0x0004;
|
|
128
|
+
// static COPY_DST = 0x0008;
|
|
129
|
+
// static INDEX = 0x0010;
|
|
130
|
+
// static VERTEX = 0x0020;
|
|
131
|
+
// static UNIFORM = 0x0040;
|
|
132
|
+
// static STORAGE = 0x0080;
|
|
133
|
+
// static INDIRECT = 0x0100;
|
|
134
|
+
// static QUERY_RESOLVE = 0x0200;
|
|
131
135
|
function getWebGLTarget(usage) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
136
|
+
if (usage & Buffer.INDEX) {
|
|
137
|
+
return GL.ELEMENT_ARRAY_BUFFER;
|
|
138
|
+
}
|
|
139
|
+
if (usage & Buffer.VERTEX) {
|
|
140
|
+
return GL.ARRAY_BUFFER;
|
|
141
|
+
}
|
|
142
|
+
if (usage & Buffer.UNIFORM) {
|
|
143
|
+
return GL.UNIFORM_BUFFER;
|
|
144
|
+
}
|
|
145
|
+
// gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.
|
|
146
|
+
// gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.
|
|
147
|
+
// gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.
|
|
148
|
+
// gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.
|
|
149
|
+
// gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.
|
|
150
|
+
// Binding a buffer for the first time locks the type
|
|
151
|
+
// In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
|
|
137
152
|
return GL.ARRAY_BUFFER;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if (usage & Buffer.UNIFORM) {
|
|
141
|
-
return GL.UNIFORM_BUFFER;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return GL.ARRAY_BUFFER;
|
|
145
153
|
}
|
|
146
|
-
|
|
147
154
|
function getWebGLUsage(usage) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
if (usage & Buffer.INDEX) {
|
|
156
|
+
return GL.STATIC_DRAW;
|
|
157
|
+
}
|
|
158
|
+
if (usage & Buffer.VERTEX) {
|
|
159
|
+
return GL.STATIC_DRAW;
|
|
160
|
+
}
|
|
161
|
+
if (usage & Buffer.UNIFORM) {
|
|
162
|
+
return GL.DYNAMIC_DRAW;
|
|
163
|
+
}
|
|
157
164
|
return GL.DYNAMIC_DRAW;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return GL.DYNAMIC_DRAW;
|
|
161
165
|
}
|
|
162
|
-
//# sourceMappingURL=webgl-buffer.js.map
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import type { CopyBufferToBufferOptions, CopyBufferToTextureOptions, CopyTextureToBufferOptions, CopyTextureToTextureOptions } from '@luma.gl/api';
|
|
2
2
|
import WebGLDevice from '../webgl-device';
|
|
3
|
-
|
|
3
|
+
type CopyBufferToBufferCommand = {
|
|
4
4
|
name: 'copy-buffer-to-buffer';
|
|
5
5
|
options: CopyBufferToBufferOptions;
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
type CopyBufferToTextureCommand = {
|
|
8
8
|
name: 'copy-buffer-to-texture';
|
|
9
9
|
options: CopyBufferToTextureOptions;
|
|
10
10
|
};
|
|
11
|
-
|
|
11
|
+
type CopyTextureToBufferCommand = {
|
|
12
12
|
name: 'copy-texture-to-buffer';
|
|
13
13
|
options: CopyTextureToBufferOptions;
|
|
14
14
|
};
|
|
15
|
-
|
|
15
|
+
type CopyTextureToTextureCommand = {
|
|
16
16
|
name: 'copy-texture-to-texture';
|
|
17
17
|
options: CopyTextureToTextureOptions;
|
|
18
18
|
};
|
|
19
|
-
|
|
19
|
+
type Command = CopyBufferToBufferCommand | CopyBufferToTextureCommand | CopyTextureToBufferCommand | CopyTextureToTextureCommand;
|
|
20
20
|
export default class CommandBuffer {
|
|
21
21
|
commands: Command[];
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-command-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAO1C,
|
|
1
|
+
{"version":3,"file":"webgl-command-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAO1C,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,KAAK,OAAO,GACR,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,GAC1B,2BAA2B,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAM;CAC1B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAE,OAAO,EAAO,QAiB3E"}
|
|
@@ -1,65 +1,49 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
1
|
import GL from '@luma.gl/constants';
|
|
3
|
-
|
|
4
2
|
function cast(value) {
|
|
5
|
-
|
|
3
|
+
return value;
|
|
6
4
|
}
|
|
7
|
-
|
|
8
5
|
export default class CommandBuffer {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
constructor() {
|
|
7
|
+
this.commands = [];
|
|
8
|
+
}
|
|
13
9
|
}
|
|
14
10
|
export function submitCommands(device, commands = []) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
break;
|
|
31
|
-
|
|
32
|
-
case 'copy-texture-to-texture':
|
|
33
|
-
_copyTextureToTexture(device, command.options);
|
|
34
|
-
|
|
35
|
-
break;
|
|
11
|
+
for (const command of commands) {
|
|
12
|
+
switch (command.name) {
|
|
13
|
+
case 'copy-buffer-to-buffer':
|
|
14
|
+
_copyBufferToBuffer(device, command.options);
|
|
15
|
+
break;
|
|
16
|
+
case 'copy-buffer-to-texture':
|
|
17
|
+
_copyBufferToTexture(device, command.options);
|
|
18
|
+
break;
|
|
19
|
+
case 'copy-texture-to-buffer':
|
|
20
|
+
_copyTextureToBuffer(device, command.options);
|
|
21
|
+
break;
|
|
22
|
+
case 'copy-texture-to-texture':
|
|
23
|
+
_copyTextureToTexture(device, command.options);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
36
26
|
}
|
|
37
|
-
}
|
|
38
27
|
}
|
|
39
|
-
|
|
40
28
|
function _copyBufferToBuffer(device, options) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
gl2
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
29
|
+
const source = cast(options.source);
|
|
30
|
+
const destination = cast(options.destination);
|
|
31
|
+
const { gl2 } = device;
|
|
32
|
+
if (gl2) {
|
|
33
|
+
// In WebGL2 we can perform the copy on the GPU
|
|
34
|
+
// Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type
|
|
35
|
+
gl2.bindBuffer(GL.COPY_READ_BUFFER, source.handle);
|
|
36
|
+
gl2.bindBuffer(GL.COPY_WRITE_BUFFER, destination.handle);
|
|
37
|
+
gl2.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, options.sourceOffset ?? 0, options.destinationOffset ?? 0, options.size);
|
|
38
|
+
gl2.bindBuffer(GL.COPY_READ_BUFFER, null);
|
|
39
|
+
gl2.bindBuffer(GL.COPY_WRITE_BUFFER, null);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// TODO - in WebGL1 we would have to read back to CPU
|
|
43
|
+
// read / write buffer from / to CPU
|
|
44
|
+
throw new Error('copyBufferToBuffer not implemented in WebGL1');
|
|
45
|
+
}
|
|
58
46
|
}
|
|
59
|
-
|
|
60
|
-
function
|
|
61
|
-
|
|
62
|
-
function _copyTextureToBuffer(device, options) {}
|
|
63
|
-
|
|
64
|
-
function _copyTextureToTexture(device, options) {}
|
|
65
|
-
//# sourceMappingURL=webgl-command-buffer.js.map
|
|
47
|
+
function _copyBufferToTexture(device, options) { }
|
|
48
|
+
function _copyTextureToBuffer(device, options) { }
|
|
49
|
+
function _copyTextureToTexture(device, options) { }
|