@luma.gl/webgl 8.6.0-alpha.4 → 9.0.0-alpha.10
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/README.md +3 -67
- package/dist/adapter/converters/device-parameters.d.ts +27 -0
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/{set-device-parameters.js → device-parameters.js} +50 -6
- package/dist/adapter/converters/device-parameters.js.map +1 -0
- package/dist/{classes → adapter/converters}/renderbuffer-formats.d.ts +0 -0
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -0
- package/dist/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/adapter/converters/sampler-parameters.d.ts +19 -0
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/sampler-parameters.js +227 -0
- package/dist/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/adapter/converters/texture-formats.d.ts +93 -0
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -0
- package/dist/adapter/converters/texture-formats.js +954 -0
- package/dist/adapter/converters/texture-formats.js.map +1 -0
- package/dist/adapter/converters/vertex-formats.d.ts +4 -0
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -0
- package/dist/adapter/converters/vertex-formats.js +35 -0
- package/dist/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/adapter/device-helpers/device-features.d.ts +3 -6
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +39 -50
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +1 -0
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +1 -0
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +11 -0
- package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/attribute-utils.js +81 -0
- package/dist/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +55 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.js +330 -0
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.d.ts +0 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/adapter/helpers/set-uniform.d.ts +4 -0
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -0
- package/dist/adapter/helpers/set-uniform.js +115 -0
- package/dist/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/adapter/helpers/uniforms.d.ts +26 -0
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -0
- package/dist/adapter/helpers/uniforms.js +99 -0
- package/dist/adapter/helpers/uniforms.js.map +1 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +5 -0
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
- package/dist/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +40 -0
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -0
- package/dist/{esm/classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +38 -72
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/{classes → adapter/objects}/webgl-resource.d.ts +15 -14
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -0
- package/dist/{classes → adapter/objects}/webgl-resource.js +7 -3
- package/dist/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +27 -0
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -0
- package/dist/adapter/objects/webgl-vertex-array-object.js +84 -0
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/adapter/resources/webgl-buffer.d.ts +27 -0
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-buffer.js +164 -0
- package/dist/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts +25 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.js +65 -0
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts +18 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.js +53 -0
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.d.ts +1 -0
- package/dist/adapter/resources/webgl-external-texture.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{es5/helpers/program-bindings.js.map → adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +41 -0
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-framebuffer.js +267 -0
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts +11 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.js +21 -0
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.js +428 -0
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/webgl-sampler.d.ts +20 -0
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-sampler.js +50 -0
- package/dist/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/adapter/{webgl-shader.d.ts → resources/webgl-shader.d.ts} +3 -6
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -0
- package/dist/{esm/adapter → adapter/resources}/webgl-shader.js +17 -23
- package/dist/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/adapter/resources/webgl-texture.d.ts +193 -0
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -0
- package/dist/{classes/texture.js → adapter/resources/webgl-texture.js} +280 -232
- package/dist/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +36 -0
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -0
- package/dist/adapter/webgl-canvas-context.js +54 -0
- package/dist/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +63 -76
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +244 -115
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +32 -0
- package/dist/classic/accessor.d.ts.map +1 -0
- package/dist/{classes → classic}/accessor.js +33 -1
- package/dist/classic/accessor.js.map +1 -0
- package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
- package/dist/classic/buffer.d.ts.map +1 -0
- package/dist/{esm/classes/webgl-buffer.js → classic/buffer.js} +67 -57
- package/dist/classic/buffer.js.map +1 -0
- package/dist/{webgl-utils → classic}/typed-array-utils.d.ts +3 -2
- package/dist/classic/typed-array-utils.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → classic}/typed-array-utils.js +0 -0
- package/dist/classic/typed-array-utils.js.map +1 -0
- package/dist/context/context/context-state.d.ts.map +1 -1
- package/dist/context/context/context-state.js +1 -1
- package/dist/context/context/context-state.js.map +1 -1
- package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
- package/dist/context/context/create-browser-context.d.ts.map +1 -0
- package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +27 -3
- package/dist/context/context/create-browser-context.js.map +1 -0
- package/dist/context/context/create-headless-context.d.ts +9 -0
- package/dist/context/context/create-headless-context.d.ts.map +1 -0
- package/dist/context/context/create-headless-context.js +43 -0
- package/dist/context/context/create-headless-context.js.map +1 -0
- package/dist/context/context/device-pixels.d.ts +1 -1
- package/dist/context/context/device-pixels.d.ts.map +1 -1
- package/dist/context/context/device-pixels.js +13 -8
- package/dist/context/context/device-pixels.js.map +1 -1
- package/dist/context/debug/spector.d.ts +18 -0
- package/dist/context/debug/spector.d.ts.map +1 -0
- package/dist/context/debug/spector.js +76 -0
- package/dist/context/debug/spector.js.map +1 -0
- package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
- package/dist/context/debug/webgl-developer-tools.js +121 -0
- package/dist/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/context/parameters/unified-parameter-api.d.ts +9 -7
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -8
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +3 -3
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +1 -1
- package/dist/context/polyfill/polyfill-table.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.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 +26 -12
- 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 +6 -2
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +53 -6
- package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
- package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/es5/adapter/converters/sampler-parameters.js +245 -0
- package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/es5/adapter/converters/texture-formats.js +1031 -0
- package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
- package/dist/es5/adapter/converters/vertex-formats.js +45 -0
- package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-features.js +61 -58
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
- package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +211 -94
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/es5/adapter/helpers/set-uniform.js +125 -0
- package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/es5/adapter/helpers/uniforms.js +112 -0
- package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
- package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
- package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
- package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +346 -0
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +26 -45
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +530 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
- package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +16 -21
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +374 -298
- package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/es5/adapter/webgl-canvas-context.js +97 -0
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/es5/adapter/webgl-device.js +316 -132
- package/dist/es5/adapter/webgl-device.js.map +1 -1
- package/dist/es5/{classes → classic}/accessor.js +25 -1
- package/dist/es5/classic/accessor.js.map +1 -0
- package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +88 -72
- package/dist/es5/classic/buffer.js.map +1 -0
- package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
- package/dist/es5/classic/typed-array-utils.js.map +1 -0
- package/dist/es5/context/context/context-state.js +1 -1
- package/dist/es5/context/context/context-state.js.map +1 -1
- package/dist/es5/context/context/{create-context.js → create-browser-context.js} +29 -3
- package/dist/es5/context/context/create-browser-context.js.map +1 -0
- package/dist/es5/context/context/create-headless-context.js +60 -0
- package/dist/es5/context/context/create-headless-context.js.map +1 -0
- package/dist/es5/context/context/device-pixels.js +14 -8
- package/dist/es5/context/context/device-pixels.js.map +1 -1
- package/dist/es5/context/debug/spector.js +133 -0
- package/dist/es5/context/debug/spector.js.map +1 -0
- package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
- package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/es5/context/parameters/unified-parameter-api.js +15 -9
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-context.js +3 -3
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-table.js +1 -1
- package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/es5/context/state-tracker/track-context-state.js +39 -24
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/context/state-tracker/with-parameters.js +8 -2
- package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/es5/index.js +72 -300
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +1 -41
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
- package/dist/es5/types/webgl.js.map +1 -0
- package/dist/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +50 -6
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
- package/dist/esm/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/esm/adapter/converters/sampler-parameters.js +227 -0
- package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/esm/adapter/converters/texture-formats.js +954 -0
- package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
- package/dist/esm/adapter/converters/vertex-formats.js +35 -0
- package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-features.js +39 -50
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
- package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js +330 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/esm/adapter/helpers/set-uniform.js +115 -0
- package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/esm/adapter/helpers/uniforms.js +99 -0
- package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
- package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/esm/{classes → adapter/objects}/webgl-resource.js +7 -3
- package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
- package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +267 -0
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js +21 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +428 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
- package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/{adapter → esm/adapter/resources}/webgl-shader.js +17 -23
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +280 -232
- package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/esm/adapter/webgl-canvas-context.js +54 -0
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/esm/adapter/webgl-device.js +244 -115
- package/dist/esm/adapter/webgl-device.js.map +1 -1
- package/dist/esm/{classes → classic}/accessor.js +33 -1
- package/dist/esm/classic/accessor.js.map +1 -0
- package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +67 -57
- package/dist/esm/classic/buffer.js.map +1 -0
- package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
- package/dist/esm/classic/typed-array-utils.js.map +1 -0
- package/dist/esm/context/context/context-state.js +1 -1
- package/dist/esm/context/context/context-state.js.map +1 -1
- package/dist/{context/context/create-context.js → esm/context/context/create-browser-context.js} +27 -3
- package/dist/esm/context/context/create-browser-context.js.map +1 -0
- package/dist/esm/context/context/create-headless-context.js +43 -0
- package/dist/esm/context/context/create-headless-context.js.map +1 -0
- package/dist/esm/context/context/device-pixels.js +13 -8
- package/dist/esm/context/context/device-pixels.js.map +1 -1
- package/dist/esm/context/debug/spector.js +76 -0
- package/dist/esm/context/debug/spector.js.map +1 -0
- package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
- package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/esm/context/parameters/unified-parameter-api.js +9 -8
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-context.js +3 -3
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-table.js +1 -1
- package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/esm/context/state-tracker/track-context-state.js +26 -12
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/context/state-tracker/with-parameters.js +6 -2
- package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/esm/index.js +20 -31
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +2 -31
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/webgl.js +2 -0
- package/dist/esm/types/webgl.js.map +1 -0
- package/dist/index.d.ts +25 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -31
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -4
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +2 -31
- package/dist/init.js.map +1 -1
- package/dist/types/webgl.d.ts +145 -0
- package/dist/types/webgl.d.ts.map +1 -0
- package/dist/types/webgl.js +2 -0
- package/dist/types/webgl.js.map +1 -0
- package/package.json +5 -5
- package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +81 -12
- package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
- package/src/adapter/converters/sampler-parameters.ts +184 -0
- package/src/adapter/converters/texture-formats.ts +633 -0
- package/src/adapter/converters/vertex-formats.ts +22 -0
- package/src/adapter/device-helpers/device-features.ts +55 -124
- package/src/adapter/device-helpers/device-limits.ts +6 -3
- package/src/adapter/device-helpers/get-device-info.ts +8 -8
- package/src/adapter/helpers/attribute-utils.ts +61 -0
- package/src/adapter/helpers/get-shader-layout.ts +407 -0
- package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
- package/src/adapter/helpers/set-uniform.ts +87 -0
- package/src/adapter/helpers/uniforms.ts +121 -0
- package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
- package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
- package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
- package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
- package/src/adapter/resources/webgl-buffer.ts +219 -0
- package/src/adapter/resources/webgl-command-buffer.ts +94 -0
- package/src/adapter/resources/webgl-command-encoder.ts +58 -0
- package/src/adapter/resources/webgl-external-texture.ts +92 -0
- package/src/adapter/resources/webgl-framebuffer.ts +282 -0
- package/src/adapter/resources/webgl-render-pass.ts +24 -0
- package/src/adapter/resources/webgl-render-pipeline.ts +425 -0
- package/src/adapter/resources/webgl-sampler.ts +56 -0
- package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +19 -24
- package/src/adapter/resources/webgl-texture.ts +1036 -0
- package/src/adapter/webgl-canvas-context.ts +74 -0
- package/src/adapter/webgl-device.ts +297 -289
- package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +38 -37
- package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +76 -84
- package/src/{webgl-utils → classic}/typed-array-utils.ts +5 -1
- package/src/context/context/context-state.ts +4 -2
- package/src/context/context/{create-context.ts → create-browser-context.ts} +41 -6
- package/src/context/context/create-headless-context.ts +48 -0
- package/src/context/context/device-pixels.ts +24 -13
- package/src/context/debug/spector.ts +92 -0
- package/src/context/debug/webgl-developer-tools.ts +162 -0
- package/src/context/parameters/unified-parameter-api.ts +21 -13
- package/src/context/parameters/webgl-parameter-tables.ts +38 -36
- package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
- package/src/context/polyfill/polyfill-context.ts +4 -5
- package/src/context/polyfill/polyfill-table.ts +1 -1
- package/src/context/state-tracker/deep-array-equal.ts +1 -1
- package/src/context/state-tracker/track-context-state.ts +34 -26
- package/src/context/state-tracker/with-parameters.ts +7 -2
- package/src/index.ts +42 -102
- package/src/init.ts +2 -46
- package/src/types/webgl.ts +284 -0
- package/dist/_deprecated/context-api.d.ts +0 -85
- package/dist/_deprecated/context-api.d.ts.map +0 -1
- package/dist/_deprecated/context-api.js +0 -70
- package/dist/_deprecated/context-api.js.map +0 -1
- package/dist/_deprecated/features.d.ts +0 -27
- package/dist/_deprecated/features.d.ts.map +0 -1
- package/dist/_deprecated/features.js +0 -111
- package/dist/_deprecated/features.js.map +0 -1
- package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
- package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
- package/dist/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
- package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
- package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
- package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/adapter/webgl-shader.d.ts.map +0 -1
- package/dist/adapter/webgl-shader.js.map +0 -1
- package/dist/classes/accessor.d.ts +0 -28
- package/dist/classes/accessor.d.ts.map +0 -1
- package/dist/classes/accessor.js.map +0 -1
- package/dist/classes/accessor.ts.disabled +0 -159
- package/dist/classes/clear.d.ts +0 -17
- package/dist/classes/clear.d.ts.map +0 -1
- package/dist/classes/clear.js +0 -105
- package/dist/classes/clear.js.map +0 -1
- package/dist/classes/copy-and-blit.d.ts +0 -86
- package/dist/classes/copy-and-blit.d.ts.map +0 -1
- package/dist/classes/copy-and-blit.js +0 -338
- package/dist/classes/copy-and-blit.js.map +0 -1
- package/dist/classes/framebuffer.d.ts +0 -139
- package/dist/classes/framebuffer.d.ts.map +0 -1
- package/dist/classes/framebuffer.js +0 -656
- package/dist/classes/framebuffer.js.map +0 -1
- package/dist/classes/program-configuration.d.ts +0 -24
- package/dist/classes/program-configuration.d.ts.map +0 -1
- package/dist/classes/program-configuration.js +0 -73
- package/dist/classes/program-configuration.js.map +0 -1
- package/dist/classes/program.d.ts +0 -66
- package/dist/classes/program.d.ts.map +0 -1
- package/dist/classes/program.js +0 -379
- package/dist/classes/program.js.map +0 -1
- package/dist/classes/query.d.ts +0 -27
- package/dist/classes/query.d.ts.map +0 -1
- package/dist/classes/query.js +0 -145
- package/dist/classes/query.js.map +0 -1
- package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
- package/dist/classes/renderbuffer-formats.js.map +0 -1
- package/dist/classes/renderbuffer.d.ts +0 -60
- package/dist/classes/renderbuffer.d.ts.map +0 -1
- package/dist/classes/renderbuffer.js.map +0 -1
- package/dist/classes/shader.d.ts +0 -42
- package/dist/classes/shader.d.ts.map +0 -1
- package/dist/classes/shader.js +0 -118
- package/dist/classes/shader.js.map +0 -1
- package/dist/classes/texture-2d.d.ts +0 -9
- package/dist/classes/texture-2d.d.ts.map +0 -1
- package/dist/classes/texture-2d.js +0 -36
- package/dist/classes/texture-2d.js.map +0 -1
- package/dist/classes/texture-3d.d.ts +0 -29
- package/dist/classes/texture-3d.d.ts.map +0 -1
- package/dist/classes/texture-3d.js +0 -76
- package/dist/classes/texture-3d.js.map +0 -1
- package/dist/classes/texture-cube.d.ts +0 -28
- package/dist/classes/texture-cube.d.ts.map +0 -1
- package/dist/classes/texture-cube.js +0 -130
- package/dist/classes/texture-cube.js.map +0 -1
- package/dist/classes/texture-formats.d.ts +0 -37
- package/dist/classes/texture-formats.d.ts.map +0 -1
- package/dist/classes/texture-formats.js +0 -98
- package/dist/classes/texture-formats.js.map +0 -1
- package/dist/classes/texture.d.ts +0 -123
- package/dist/classes/texture.d.ts.map +0 -1
- package/dist/classes/texture.js.map +0 -1
- package/dist/classes/transform-feedback.d.ts +0 -33
- package/dist/classes/transform-feedback.d.ts.map +0 -1
- package/dist/classes/transform-feedback.js +0 -198
- package/dist/classes/transform-feedback.js.map +0 -1
- package/dist/classes/uniform-buffer-layout.d.ts +0 -17
- package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
- package/dist/classes/uniform-buffer-layout.js +0 -104
- package/dist/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/classes/uniforms.d.ts +0 -37
- package/dist/classes/uniforms.d.ts.map +0 -1
- package/dist/classes/uniforms.js +0 -250
- package/dist/classes/uniforms.js.map +0 -1
- package/dist/classes/vertex-array-object.d.ts +0 -76
- package/dist/classes/vertex-array-object.d.ts.map +0 -1
- package/dist/classes/vertex-array-object.js +0 -261
- package/dist/classes/vertex-array-object.js.map +0 -1
- package/dist/classes/vertex-array.d.ts +0 -75
- package/dist/classes/vertex-array.d.ts.map +0 -1
- package/dist/classes/vertex-array.js +0 -408
- package/dist/classes/vertex-array.js.map +0 -1
- package/dist/classes/webgl-buffer.d.ts.map +0 -1
- package/dist/classes/webgl-buffer.js.map +0 -1
- package/dist/classes/webgl-resource.d.ts.map +0 -1
- package/dist/classes/webgl-resource.js.map +0 -1
- package/dist/context/context/create-context.d.ts.map +0 -1
- package/dist/context/context/create-context.js.map +0 -1
- package/dist/context/context/get-canvas.d.ts +0 -13
- package/dist/context/context/get-canvas.d.ts.map +0 -1
- package/dist/context/context/get-canvas.js +0 -31
- package/dist/context/context/get-canvas.js.map +0 -1
- package/dist/context/context/resize-context.d.ts +0 -20
- package/dist/context/context/resize-context.d.ts.map +0 -1
- package/dist/context/context/resize-context.js +0 -15
- package/dist/context/context/resize-context.js.map +0 -1
- package/dist/context/parameters/webgl-parameters.d.ts +0 -144
- package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
- package/dist/context/parameters/webgl-parameters.js +0 -2
- package/dist/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/debug/debug-program-configuration.d.ts +0 -2
- package/dist/debug/debug-program-configuration.d.ts.map +0 -1
- package/dist/debug/debug-program-configuration.js +0 -40
- package/dist/debug/debug-program-configuration.js.map +0 -1
- package/dist/debug/debug-uniforms.d.ts +0 -12
- package/dist/debug/debug-uniforms.d.ts.map +0 -1
- package/dist/debug/debug-uniforms.js +0 -108
- package/dist/debug/debug-uniforms.js.map +0 -1
- package/dist/debug/debug-vertex-array.d.ts +0 -5
- package/dist/debug/debug-vertex-array.d.ts.map +0 -1
- package/dist/debug/debug-vertex-array.js +0 -118
- package/dist/debug/debug-vertex-array.js.map +0 -1
- package/dist/es5/_deprecated/context-api.js +0 -110
- package/dist/es5/_deprecated/context-api.js.map +0 -1
- package/dist/es5/_deprecated/features.js +0 -118
- package/dist/es5/_deprecated/features.js.map +0 -1
- package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
- package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/es5/adapter/webgl-shader.js.map +0 -1
- package/dist/es5/classes/accessor.d.ts +0 -28
- package/dist/es5/classes/accessor.js.map +0 -1
- package/dist/es5/classes/accessor.ts.disabled +0 -159
- package/dist/es5/classes/clear.js +0 -135
- package/dist/es5/classes/clear.js.map +0 -1
- package/dist/es5/classes/copy-and-blit.js +0 -382
- package/dist/es5/classes/copy-and-blit.js.map +0 -1
- package/dist/es5/classes/framebuffer.js +0 -807
- package/dist/es5/classes/framebuffer.js.map +0 -1
- package/dist/es5/classes/program-configuration.js +0 -119
- package/dist/es5/classes/program-configuration.js.map +0 -1
- package/dist/es5/classes/program.js +0 -471
- package/dist/es5/classes/program.js.map +0 -1
- package/dist/es5/classes/query.js +0 -222
- package/dist/es5/classes/query.js.map +0 -1
- package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
- package/dist/es5/classes/renderbuffer.js.map +0 -1
- package/dist/es5/classes/shader.js +0 -195
- package/dist/es5/classes/shader.js.map +0 -1
- package/dist/es5/classes/texture-2d.js.map +0 -1
- package/dist/es5/classes/texture-3d.js +0 -142
- package/dist/es5/classes/texture-3d.js.map +0 -1
- package/dist/es5/classes/texture-cube.js +0 -202
- package/dist/es5/classes/texture-cube.js.map +0 -1
- package/dist/es5/classes/texture-formats.js +0 -87
- package/dist/es5/classes/texture-formats.js.map +0 -1
- package/dist/es5/classes/texture.js.map +0 -1
- package/dist/es5/classes/transform-feedback.js +0 -267
- package/dist/es5/classes/transform-feedback.js.map +0 -1
- package/dist/es5/classes/uniform-buffer-layout.js +0 -130
- package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/es5/classes/uniforms.js +0 -232
- package/dist/es5/classes/uniforms.js.map +0 -1
- package/dist/es5/classes/vertex-array-object.js +0 -337
- package/dist/es5/classes/vertex-array-object.js.map +0 -1
- package/dist/es5/classes/vertex-array.js +0 -465
- package/dist/es5/classes/vertex-array.js.map +0 -1
- package/dist/es5/classes/webgl-buffer.js.map +0 -1
- package/dist/es5/classes/webgl-resource.js.map +0 -1
- package/dist/es5/context/context/create-context.js.map +0 -1
- package/dist/es5/context/context/get-canvas.js +0 -40
- package/dist/es5/context/context/get-canvas.js.map +0 -1
- package/dist/es5/context/context/resize-context.js +0 -23
- package/dist/es5/context/context/resize-context.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/es5/debug/debug-program-configuration.js +0 -76
- package/dist/es5/debug/debug-program-configuration.js.map +0 -1
- package/dist/es5/debug/debug-uniforms.js +0 -156
- package/dist/es5/debug/debug-uniforms.js.map +0 -1
- package/dist/es5/debug/debug-vertex-array.js +0 -126
- package/dist/es5/debug/debug-vertex-array.js.map +0 -1
- package/dist/es5/helpers/get-program-bindings.js.map +0 -1
- package/dist/es5/helpers/program-bindings.js +0 -2
- package/dist/es5/types/accessor.d.ts +0 -29
- package/dist/es5/webgl-utils/attribute-utils.js +0 -186
- package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/es5/webgl-utils/format-utils.js +0 -58
- package/dist/es5/webgl-utils/format-utils.js.map +0 -1
- package/dist/es5/webgl-utils/get-error.js +0 -49
- package/dist/es5/webgl-utils/get-error.js.map +0 -1
- package/dist/es5/webgl-utils/index.js +0 -74
- package/dist/es5/webgl-utils/index.js.map +0 -1
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
- package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/es5/webgl-utils/texture-utils.js +0 -61
- package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
- package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
- package/dist/esm/_deprecated/context-api.js +0 -70
- package/dist/esm/_deprecated/context-api.js.map +0 -1
- package/dist/esm/_deprecated/features.js +0 -111
- package/dist/esm/_deprecated/features.js.map +0 -1
- package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
- package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/esm/adapter/webgl-shader.js.map +0 -1
- package/dist/esm/classes/accessor.d.ts +0 -28
- package/dist/esm/classes/accessor.js.map +0 -1
- package/dist/esm/classes/clear.js +0 -105
- package/dist/esm/classes/clear.js.map +0 -1
- package/dist/esm/classes/copy-and-blit.js +0 -338
- package/dist/esm/classes/copy-and-blit.js.map +0 -1
- package/dist/esm/classes/framebuffer.js +0 -656
- package/dist/esm/classes/framebuffer.js.map +0 -1
- package/dist/esm/classes/program-configuration.js +0 -73
- package/dist/esm/classes/program-configuration.js.map +0 -1
- package/dist/esm/classes/program.js +0 -379
- package/dist/esm/classes/program.js.map +0 -1
- package/dist/esm/classes/query.js +0 -145
- package/dist/esm/classes/query.js.map +0 -1
- package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
- package/dist/esm/classes/renderbuffer.js.map +0 -1
- package/dist/esm/classes/shader.js +0 -118
- package/dist/esm/classes/shader.js.map +0 -1
- package/dist/esm/classes/texture-2d.js +0 -36
- package/dist/esm/classes/texture-2d.js.map +0 -1
- package/dist/esm/classes/texture-3d.js +0 -76
- package/dist/esm/classes/texture-3d.js.map +0 -1
- package/dist/esm/classes/texture-cube.js +0 -130
- package/dist/esm/classes/texture-cube.js.map +0 -1
- package/dist/esm/classes/texture-formats.js +0 -98
- package/dist/esm/classes/texture-formats.js.map +0 -1
- package/dist/esm/classes/texture.js.map +0 -1
- package/dist/esm/classes/transform-feedback.js +0 -198
- package/dist/esm/classes/transform-feedback.js.map +0 -1
- package/dist/esm/classes/uniform-buffer-layout.js +0 -104
- package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/esm/classes/uniforms.js +0 -250
- package/dist/esm/classes/uniforms.js.map +0 -1
- package/dist/esm/classes/vertex-array-object.js +0 -261
- package/dist/esm/classes/vertex-array-object.js.map +0 -1
- package/dist/esm/classes/vertex-array.js +0 -408
- package/dist/esm/classes/vertex-array.js.map +0 -1
- package/dist/esm/classes/webgl-buffer.js.map +0 -1
- package/dist/esm/classes/webgl-resource.js.map +0 -1
- package/dist/esm/context/context/create-context.js.map +0 -1
- package/dist/esm/context/context/get-canvas.js +0 -31
- package/dist/esm/context/context/get-canvas.js.map +0 -1
- package/dist/esm/context/context/resize-context.js +0 -15
- package/dist/esm/context/context/resize-context.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameters.js +0 -2
- package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/esm/debug/debug-program-configuration.js +0 -40
- package/dist/esm/debug/debug-program-configuration.js.map +0 -1
- package/dist/esm/debug/debug-uniforms.js +0 -108
- package/dist/esm/debug/debug-uniforms.js.map +0 -1
- package/dist/esm/debug/debug-vertex-array.js +0 -118
- package/dist/esm/debug/debug-vertex-array.js.map +0 -1
- package/dist/esm/helpers/get-program-bindings.js +0 -228
- package/dist/esm/helpers/get-program-bindings.js.map +0 -1
- package/dist/esm/helpers/program-bindings.js +0 -2
- package/dist/esm/types/accessor.d.ts +0 -29
- package/dist/esm/webgl-utils/attribute-utils.js +0 -182
- package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/esm/webgl-utils/format-utils.js +0 -45
- package/dist/esm/webgl-utils/format-utils.js.map +0 -1
- package/dist/esm/webgl-utils/get-error.js +0 -41
- package/dist/esm/webgl-utils/get-error.js.map +0 -1
- package/dist/esm/webgl-utils/index.js +0 -5
- package/dist/esm/webgl-utils/index.js.map +0 -1
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
- package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/esm/webgl-utils/texture-utils.js +0 -48
- package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
- package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
- package/dist/helpers/get-program-bindings.d.ts +0 -8
- package/dist/helpers/get-program-bindings.d.ts.map +0 -1
- package/dist/helpers/get-program-bindings.js +0 -228
- package/dist/helpers/get-program-bindings.js.map +0 -1
- package/dist/helpers/program-bindings.d.ts +0 -41
- package/dist/helpers/program-bindings.d.ts.map +0 -1
- package/dist/helpers/program-bindings.js +0 -2
- package/dist/types/accessor.d.ts +0 -29
- package/dist/webgl-utils/attribute-utils.d.ts +0 -18
- package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
- package/dist/webgl-utils/attribute-utils.js +0 -182
- package/dist/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
- package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
- package/dist/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/webgl-utils/format-utils.d.ts +0 -3
- package/dist/webgl-utils/format-utils.d.ts.map +0 -1
- package/dist/webgl-utils/format-utils.js +0 -45
- package/dist/webgl-utils/format-utils.js.map +0 -1
- package/dist/webgl-utils/get-error.d.ts +0 -3
- package/dist/webgl-utils/get-error.d.ts.map +0 -1
- package/dist/webgl-utils/get-error.js +0 -41
- package/dist/webgl-utils/get-error.js.map +0 -1
- package/dist/webgl-utils/index.d.ts +0 -5
- package/dist/webgl-utils/index.d.ts.map +0 -1
- package/dist/webgl-utils/index.js +0 -5
- package/dist/webgl-utils/index.js.map +0 -1
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
- package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
- package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
- package/dist/webgl-utils/request-animation-frame.js +0 -7
- package/dist/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/webgl-utils/texture-utils.d.ts +0 -15
- package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
- package/dist/webgl-utils/texture-utils.js +0 -48
- package/dist/webgl-utils/texture-utils.js.map +0 -1
- package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
- package/dist/webgl-utils/typed-array-utils.js.map +0 -1
- package/src/.DS_Store +0 -0
- package/src/_deprecated/context-api.ts +0 -140
- package/src/_deprecated/features.ts +0 -159
- package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
- package/src/classes/accessor.d.ts +0 -28
- package/src/classes/accessor.js +0 -129
- package/src/classes/accessor.ts.disabled +0 -159
- package/src/classes/clear.ts +0 -108
- package/src/classes/copy-and-blit.ts +0 -460
- package/src/classes/framebuffer.ts +0 -763
- package/src/classes/program-configuration.ts +0 -77
- package/src/classes/program.ts +0 -431
- package/src/classes/query.ts +0 -171
- package/src/classes/renderbuffer.ts +0 -154
- package/src/classes/shader.ts +0 -129
- package/src/classes/texture-2d.ts +0 -35
- package/src/classes/texture-3d.ts +0 -123
- package/src/classes/texture-cube.ts +0 -162
- package/src/classes/texture-formats.ts +0 -171
- package/src/classes/texture.ts +0 -965
- package/src/classes/transform-feedback.ts +0 -191
- package/src/classes/uniform-buffer-layout.ts +0 -113
- package/src/classes/uniforms.ts +0 -394
- package/src/classes/vertex-array-object.ts +0 -339
- package/src/classes/vertex-array.ts +0 -484
- package/src/context/context/get-canvas.ts +0 -37
- package/src/context/context/resize-context.ts +0 -37
- package/src/context/parameters/webgl-parameters.ts +0 -197
- package/src/debug/debug-program-configuration.ts +0 -32
- package/src/debug/debug-uniforms.ts +0 -100
- package/src/debug/debug-vertex-array.ts +0 -123
- package/src/helpers/get-program-bindings.ts +0 -244
- package/src/helpers/program-bindings.ts +0 -46
- package/src/types/accessor.d.ts +0 -29
- package/src/webgl-utils/attribute-utils.ts +0 -171
- package/src/webgl-utils/format-utils.ts +0 -43
- package/src/webgl-utils/get-error.ts +0 -56
- package/src/webgl-utils/index.ts +0 -12
- package/src/webgl-utils/request-animation-frame.ts +0 -14
- package/src/webgl-utils/texture-utils.ts +0 -60
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* eslint-disable no-inline-comments */
|
|
2
|
+
import {assert, ResourceProps} from '@luma.gl/api';
|
|
3
|
+
import GL from '@luma.gl/constants';
|
|
4
|
+
import WebGLDevice from '../webgl-device';
|
|
5
|
+
import WebGLResource from './webgl-resource';
|
|
6
|
+
import {
|
|
7
|
+
isRenderbufferFormatSupported, getRenderbufferFormatBytesPerPixel
|
|
8
|
+
} from '../converters/renderbuffer-formats';
|
|
9
|
+
|
|
10
|
+
export type RenderbufferProps = ResourceProps & {
|
|
11
|
+
format: number;
|
|
12
|
+
width?: number;
|
|
13
|
+
height?: number;
|
|
14
|
+
samples?: number;
|
|
15
|
+
};
|
|
16
|
+
|
|
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
|
+
/**
|
|
28
|
+
* Renderbuffers are GPU objects that contain images.
|
|
29
|
+
* In contrast to Textures they are optimized for use as render targets, with Framebuffers.
|
|
30
|
+
* while Textures may not be, and are the logical choice when
|
|
31
|
+
* you do not need to sample (i.e. in a post-pass shader)
|
|
32
|
+
* from the produced image. If you need to resample
|
|
33
|
+
* (such as when reading depth back in a second shader pass),
|
|
34
|
+
* use Textures instead.
|
|
35
|
+
* Renderbuffer objects also natively accommodate Multisampling (MSAA).
|
|
36
|
+
*/
|
|
37
|
+
export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps> {
|
|
38
|
+
get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
|
|
39
|
+
|
|
40
|
+
get width(): number { return this.props.width; }
|
|
41
|
+
get height(): number { return this.props.height; }
|
|
42
|
+
get format(): number { return this.props.format; }
|
|
43
|
+
get samples(): number { return this.props.samples; }
|
|
44
|
+
|
|
45
|
+
static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
|
|
46
|
+
return !options.format || isRenderbufferFormatSupported(gl, options.format);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
constructor(device: WebGLDevice, props: RenderbufferProps) {
|
|
50
|
+
super(device, props, DEFAULT_RENDERBUFFER_PROPS);
|
|
51
|
+
this._initialize(this.props);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
resize(size: {width: number, height: number}): this {
|
|
55
|
+
// Don't resize if width/height haven't changed
|
|
56
|
+
if (size.width !== this.width || size.height !== this.height) {
|
|
57
|
+
Object.assign(this.props, {...size, format: this.format, samples: this.samples});
|
|
58
|
+
this._initialize(this.props);
|
|
59
|
+
}
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// PRIVATE METHODS
|
|
64
|
+
|
|
65
|
+
/** Creates and initializes a renderbuffer object's data store */
|
|
66
|
+
protected _initialize(props: Required<RenderbufferProps>) {
|
|
67
|
+
const {format, width, height, samples} = props;
|
|
68
|
+
assert(format, 'Needs format');
|
|
69
|
+
|
|
70
|
+
this.trackDeallocatedMemory();
|
|
71
|
+
|
|
72
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
|
|
73
|
+
|
|
74
|
+
if (samples !== 0 && this.device.isWebGL2) {
|
|
75
|
+
// @ts-expect-error
|
|
76
|
+
this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);
|
|
77
|
+
} else {
|
|
78
|
+
this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
|
|
82
|
+
|
|
83
|
+
this.trackAllocatedMemory(
|
|
84
|
+
width * height * (samples || 1) * getRenderbufferFormatBytesPerPixel(format)
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// RESOURCE IMPLEMENTATION
|
|
91
|
+
|
|
92
|
+
_createHandle() {
|
|
93
|
+
return this.gl.createRenderbuffer();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
_deleteHandle(): void {
|
|
97
|
+
this.gl.deleteRenderbuffer(this.handle);
|
|
98
|
+
this.trackDeallocatedMemory();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
_bindHandle(handle: WEBGLRenderbuffer): void {
|
|
102
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
2
|
import {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/api';
|
|
3
|
-
import type {Device} from '@luma.gl/api';
|
|
4
|
-
|
|
5
|
-
import {isWebGL2, assertWebGLContext} from '
|
|
6
|
-
import
|
|
7
|
-
|
|
3
|
+
import type {Device, ResourceProps} from '@luma.gl/api';
|
|
4
|
+
import GL from '@luma.gl/constants';
|
|
5
|
+
import {isWebGL2, assertWebGLContext} from '../../context/context/webgl-checks';
|
|
6
|
+
import WebGLDevice from '../webgl-device';
|
|
7
|
+
|
|
8
|
+
// Requires full GL enum to be bundled... Make these bindings dependent on dynamic import (debug)?
|
|
9
|
+
import {getKey, getKeyValue} from './constants-to-keys';
|
|
8
10
|
|
|
9
11
|
const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* Base class for WebGL object wrappers
|
|
13
15
|
*/
|
|
14
|
-
export default class WebGLResource<Props> extends Resource<Props> {
|
|
16
|
+
export default abstract class WebGLResource<Props> extends Resource<Props> {
|
|
15
17
|
id: string;
|
|
16
18
|
userData: any;
|
|
17
19
|
readonly device: WebGLDevice;
|
|
@@ -72,6 +74,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
72
74
|
return this._handle;
|
|
73
75
|
}
|
|
74
76
|
|
|
77
|
+
destroy(): void {
|
|
78
|
+
this.delete();
|
|
79
|
+
}
|
|
80
|
+
|
|
75
81
|
delete({deleteChildren = false} = {}) {
|
|
76
82
|
// Delete this object, and get refs to any children
|
|
77
83
|
// @ts-expect-error
|
|
@@ -166,7 +172,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
166
172
|
|
|
167
173
|
const isWebgl2 = isWebGL2(this.gl);
|
|
168
174
|
|
|
169
|
-
const values = {};
|
|
175
|
+
const values: Record<string, any> = {};
|
|
170
176
|
|
|
171
177
|
// Query all parameters if no list provided
|
|
172
178
|
const parameterKeys = parameters || Object.keys(PARAMETERS);
|
|
@@ -198,11 +204,11 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
198
204
|
*
|
|
199
205
|
* @todo - cache parameter to avoid issuing WebGL calls?
|
|
200
206
|
*
|
|
201
|
-
* @param
|
|
202
|
-
* @param {GLint|GLfloat|GLenum}
|
|
203
|
-
* @return
|
|
207
|
+
* @param pname - parameter (GL constant, value or key)
|
|
208
|
+
* @param value {GLint|GLfloat|GLenum}
|
|
209
|
+
* @return returns self to enable chaining
|
|
204
210
|
*/
|
|
205
|
-
setParameter(pname, value) {
|
|
211
|
+
setParameter(pname: GL | string, value: any): this {
|
|
206
212
|
pname = getKeyValue(this.gl, pname);
|
|
207
213
|
assert(pname);
|
|
208
214
|
|
|
@@ -239,7 +245,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
239
245
|
* Batch update resource parameters
|
|
240
246
|
* Assumes the subclass supports a setParameter call
|
|
241
247
|
*/
|
|
242
|
-
setParameters(parameters) {
|
|
248
|
+
setParameters(parameters: Record<GL, any>) {
|
|
243
249
|
for (const pname in parameters) {
|
|
244
250
|
this.setParameter(pname, parameters[pname]);
|
|
245
251
|
}
|
|
@@ -247,12 +253,12 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
247
253
|
}
|
|
248
254
|
|
|
249
255
|
// Install stubs for removed methods
|
|
250
|
-
stubRemovedMethods(className, version, methodNames) {
|
|
256
|
+
stubRemovedMethods(className: string, version: string, methodNames: string[]) {
|
|
251
257
|
return stubRemovedMethods(this, className, version, methodNames);
|
|
252
258
|
}
|
|
253
259
|
|
|
254
260
|
// PUBLIC VIRTUAL METHODS
|
|
255
|
-
initialize(props) {}
|
|
261
|
+
initialize(props: ResourceProps) {}
|
|
256
262
|
|
|
257
263
|
// PROTECTED METHODS - These must be overridden by subclass
|
|
258
264
|
_createHandle() {
|
|
@@ -263,7 +269,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
263
269
|
throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
|
|
264
270
|
}
|
|
265
271
|
|
|
266
|
-
_bindHandle(handle) {
|
|
272
|
+
_bindHandle(handle: any) {
|
|
267
273
|
throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
|
|
268
274
|
}
|
|
269
275
|
|
|
@@ -271,11 +277,11 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
|
|
|
271
277
|
throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
|
|
272
278
|
}
|
|
273
279
|
|
|
274
|
-
_getParameter(pname, props): number {
|
|
280
|
+
_getParameter(pname: GL, props: Record<string, any>): number {
|
|
275
281
|
throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
|
|
276
282
|
}
|
|
277
283
|
|
|
278
|
-
_setParameter(pname, value) {
|
|
284
|
+
_setParameter(pname: GL | string, value: any) {
|
|
279
285
|
throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
|
|
280
286
|
}
|
|
281
287
|
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import {assert, ResourceProps} from '@luma.gl/api';
|
|
2
|
+
import GL from '@luma.gl/constants';
|
|
3
|
+
import {getBrowser} from '@probe.gl/env';
|
|
4
|
+
|
|
5
|
+
import WebGLDevice from '../webgl-device';
|
|
6
|
+
import WebGLResource from './webgl-resource';
|
|
7
|
+
|
|
8
|
+
import Buffer from '../resources/webgl-buffer';
|
|
9
|
+
|
|
10
|
+
const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* VertexArrayObject properties
|
|
14
|
+
*/
|
|
15
|
+
export type VertexArrayObjectProps = ResourceProps & {
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/** VertexArrayObject wrapper */
|
|
19
|
+
export default class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
|
|
20
|
+
get [Symbol.toStringTag](): string {
|
|
21
|
+
return 'BaseVertexArrayObject';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
constructor(device: WebGLDevice, props?: VertexArrayObjectProps) {
|
|
25
|
+
// @ts-expect-error
|
|
26
|
+
super(device, props, {});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
_createHandle() {
|
|
30
|
+
return this.gl2.createVertexArray();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
_deleteHandle(): void {
|
|
34
|
+
this.gl2.deleteVertexArray(this.handle);
|
|
35
|
+
// @ts-expect-error
|
|
36
|
+
return [this.elements];
|
|
37
|
+
// return [this.elements, ...this.buffers];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
_bindHandle(handle: WEBGLVertexArrayObject): void {
|
|
41
|
+
this.gl2.bindVertexArray(handle);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Set (bind) an elements buffer, for indexed rendering.
|
|
45
|
+
// Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported
|
|
46
|
+
setElementBuffer(elementBuffer: Buffer | null = null, opts = {}) {
|
|
47
|
+
assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
|
|
48
|
+
|
|
49
|
+
// The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...
|
|
50
|
+
this.bind(() => {
|
|
51
|
+
this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
|
|
58
|
+
setBuffer(location: number, buffer: Buffer, accessor: any): this {
|
|
59
|
+
// Check target
|
|
60
|
+
if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
|
|
61
|
+
return this.setElementBuffer(buffer, accessor);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const {size, type, stride, offset, normalized, integer, divisor} = accessor;
|
|
65
|
+
|
|
66
|
+
const {gl, gl2} = this;
|
|
67
|
+
location = Number(location);
|
|
68
|
+
|
|
69
|
+
this.bind(() => {
|
|
70
|
+
// A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target
|
|
71
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);
|
|
72
|
+
|
|
73
|
+
// WebGL2 supports *integer* data formats, i.e. GPU will see integer values
|
|
74
|
+
if (integer) {
|
|
75
|
+
this.device.assertWebGL2();
|
|
76
|
+
gl2.vertexAttribIPointer(location, size, type, stride, offset);
|
|
77
|
+
} else {
|
|
78
|
+
// Attaches ARRAY_BUFFER with specified buffer format to location
|
|
79
|
+
gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
|
|
80
|
+
}
|
|
81
|
+
gl.enableVertexAttribArray(location);
|
|
82
|
+
gl2.vertexAttribDivisor(location, divisor || 0);
|
|
83
|
+
|
|
84
|
+
// NOTE We don't unbind buffer here, typically another buffer will be bound just after
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Enabling an attribute location makes it reference the currently bound buffer
|
|
92
|
+
* Disabling an attribute location makes it reference the global constant value
|
|
93
|
+
* TODO - handle single values for size 1 attributes?
|
|
94
|
+
* TODO - convert classic arrays based on known type?
|
|
95
|
+
*/
|
|
96
|
+
enable(location: number, enable = true): this {
|
|
97
|
+
// Attribute 0 cannot be disabled in most desktop OpenGL based browsers...
|
|
98
|
+
const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';
|
|
99
|
+
const canDisableAttribute = canDisableAttributeZero || location !== 0;
|
|
100
|
+
|
|
101
|
+
if (enable || canDisableAttribute) {
|
|
102
|
+
location = Number(location);
|
|
103
|
+
this.bind(() =>
|
|
104
|
+
enable
|
|
105
|
+
? this.gl.enableVertexAttribArray(location)
|
|
106
|
+
: this.gl.disableVertexAttribArray(location)
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import type {BufferProps} from '@luma.gl/api';
|
|
2
|
+
import {Buffer, assert} from '@luma.gl/api';
|
|
3
|
+
import GL from '@luma.gl/constants';
|
|
4
|
+
import WebGLDevice from '../webgl-device';
|
|
5
|
+
|
|
6
|
+
const DEBUG_DATA_LENGTH = 10;
|
|
7
|
+
|
|
8
|
+
/** WebGL Buffer interface */
|
|
9
|
+
export default class WEBGLBuffer extends Buffer {
|
|
10
|
+
readonly device: WebGLDevice;
|
|
11
|
+
readonly gl: WebGLRenderingContext;
|
|
12
|
+
readonly gl2: WebGL2RenderingContext | null;
|
|
13
|
+
readonly handle: WebGLBuffer;
|
|
14
|
+
readonly target: number;
|
|
15
|
+
|
|
16
|
+
byteLength: number;
|
|
17
|
+
bytesUsed: number;
|
|
18
|
+
debugData: ArrayBuffer | null = null;
|
|
19
|
+
|
|
20
|
+
webglUsage: number;
|
|
21
|
+
|
|
22
|
+
accessor: {};
|
|
23
|
+
|
|
24
|
+
constructor(device: WebGLDevice, props: BufferProps = {}) {
|
|
25
|
+
super(device, props);
|
|
26
|
+
|
|
27
|
+
this.device = device;
|
|
28
|
+
this.gl = this.device.gl;
|
|
29
|
+
this.gl2 = this.device.gl2;
|
|
30
|
+
|
|
31
|
+
const handle = typeof props === 'object' ? (props as BufferProps).handle : undefined;
|
|
32
|
+
this.handle = handle || this.gl.createBuffer();
|
|
33
|
+
// @ts-expect-error Add metadata for spector
|
|
34
|
+
this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};
|
|
35
|
+
|
|
36
|
+
// In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
|
|
37
|
+
// otherwise buffer type will lock to generic (non-element) buffer
|
|
38
|
+
// In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
|
|
39
|
+
// @ts-expect-error Hack - Checking for subclass prop
|
|
40
|
+
this.target = this.props.target || getWebGLTarget(this.props.usage);
|
|
41
|
+
// @ts-expect-error Hack - Checking for subclass prop
|
|
42
|
+
this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
|
|
43
|
+
this.debugData = null;
|
|
44
|
+
|
|
45
|
+
// Set data: (re)initializes the buffer
|
|
46
|
+
if (props.data) {
|
|
47
|
+
this._initWithData(props.data, props.byteOffset, props.byteLength);
|
|
48
|
+
} else {
|
|
49
|
+
this._initWithByteLength(props.byteLength || 0);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Deprecated: Merge main props and accessor
|
|
53
|
+
// this.accessor = {...props.accessor};
|
|
54
|
+
|
|
55
|
+
// Object.seal(this);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// PRIVATE METHODS
|
|
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));
|
|
63
|
+
|
|
64
|
+
const target = this._getWriteTarget();
|
|
65
|
+
|
|
66
|
+
this.gl.bindBuffer(target, this.handle);
|
|
67
|
+
this.gl.bufferData(target, byteLength, this.webglUsage);
|
|
68
|
+
this.gl.bufferSubData(target, byteOffset, data);
|
|
69
|
+
this.gl.bindBuffer(target, null);
|
|
70
|
+
|
|
71
|
+
this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
|
|
72
|
+
this.bytesUsed = byteLength;
|
|
73
|
+
this.byteLength = byteLength;
|
|
74
|
+
this.trackAllocatedMemory(byteLength);
|
|
75
|
+
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Allocate a GPU buffer of specified size.
|
|
80
|
+
_initWithByteLength(byteLength: number): this {
|
|
81
|
+
assert(byteLength >= 0);
|
|
82
|
+
|
|
83
|
+
// Workaround needed for Safari (#291):
|
|
84
|
+
// gl.bufferData with size equal to 0 crashes. Instead create zero sized array.
|
|
85
|
+
let data = byteLength;
|
|
86
|
+
if (byteLength === 0) {
|
|
87
|
+
// @ts-expect-error
|
|
88
|
+
data = new Float32Array(0);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const target = this._getWriteTarget();
|
|
92
|
+
|
|
93
|
+
this.gl.bindBuffer(target, this.handle);
|
|
94
|
+
this.gl.bufferData(target, data, this.webglUsage);
|
|
95
|
+
this.gl.bindBuffer(target, null);
|
|
96
|
+
|
|
97
|
+
this.debugData = null;
|
|
98
|
+
this.bytesUsed = byteLength;
|
|
99
|
+
this.byteLength = byteLength;
|
|
100
|
+
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
destroy(): void {
|
|
105
|
+
if (this.handle) {
|
|
106
|
+
this.removeStats();
|
|
107
|
+
this.trackDeallocatedMemory();
|
|
108
|
+
this.gl.deleteBuffer(this.handle);
|
|
109
|
+
// this.handle = null;
|
|
110
|
+
this.destroyed = true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
write(data: ArrayBufferView, byteOffset: number = 0): void {
|
|
115
|
+
const srcOffset = 0;
|
|
116
|
+
const byteLength = data.byteLength;
|
|
117
|
+
|
|
118
|
+
// Create the buffer - binding it here for the first time locks the type
|
|
119
|
+
// In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
|
|
120
|
+
const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
|
|
121
|
+
this.gl.bindBuffer(target, this.handle);
|
|
122
|
+
// WebGL2: subData supports additional srcOffset and length parameters
|
|
123
|
+
if (srcOffset !== 0 || byteLength !== undefined) {
|
|
124
|
+
this.device.assertWebGL2();
|
|
125
|
+
|
|
126
|
+
// @ts-expect-error
|
|
127
|
+
this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
|
|
128
|
+
} else {
|
|
129
|
+
this.gl.bufferSubData(target, byteOffset, data);
|
|
130
|
+
}
|
|
131
|
+
this.gl.bindBuffer(target, null);
|
|
132
|
+
|
|
133
|
+
// TODO - update local `data` if offsets are right
|
|
134
|
+
// this.debugData = data.slice(byteOffset, 40);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/** Read data from the buffer */
|
|
138
|
+
async readAsync(
|
|
139
|
+
byteOffset: number = 0,
|
|
140
|
+
byteLength?: number
|
|
141
|
+
): Promise<ArrayBuffer> {
|
|
142
|
+
this.device.assertWebGL2();
|
|
143
|
+
|
|
144
|
+
const data = new Uint8Array(byteLength);
|
|
145
|
+
const dstOffset = 0;
|
|
146
|
+
|
|
147
|
+
// Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type
|
|
148
|
+
this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
|
|
149
|
+
this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
|
|
150
|
+
this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
|
|
151
|
+
|
|
152
|
+
// TODO - update local `data` if offsets are 0
|
|
153
|
+
// this.debugData = null;
|
|
154
|
+
|
|
155
|
+
return data;
|
|
156
|
+
}
|
|
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
|
+
}
|
|
174
|
+
|
|
175
|
+
// static MAP_READ = 0x01;
|
|
176
|
+
// static MAP_WRITE = 0x02;
|
|
177
|
+
// static COPY_SRC = 0x0004;
|
|
178
|
+
// static COPY_DST = 0x0008;
|
|
179
|
+
// static INDEX = 0x0010;
|
|
180
|
+
// static VERTEX = 0x0020;
|
|
181
|
+
// static UNIFORM = 0x0040;
|
|
182
|
+
// static STORAGE = 0x0080;
|
|
183
|
+
// static INDIRECT = 0x0100;
|
|
184
|
+
// static QUERY_RESOLVE = 0x0200;
|
|
185
|
+
|
|
186
|
+
function getWebGLTarget(usage: number): GL {
|
|
187
|
+
if (usage & Buffer.INDEX) {
|
|
188
|
+
return GL.ELEMENT_ARRAY_BUFFER;
|
|
189
|
+
}
|
|
190
|
+
if (usage & Buffer.VERTEX) {
|
|
191
|
+
return GL.ARRAY_BUFFER;
|
|
192
|
+
}
|
|
193
|
+
if (usage & Buffer.UNIFORM) {
|
|
194
|
+
return GL.UNIFORM_BUFFER;
|
|
195
|
+
}
|
|
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
|
+
// Binding a buffer for the first time locks the type
|
|
204
|
+
// In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
|
|
205
|
+
return GL.ARRAY_BUFFER;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function getWebGLUsage(usage: number): GL {
|
|
209
|
+
if (usage & Buffer.INDEX) {
|
|
210
|
+
return GL.STATIC_DRAW;
|
|
211
|
+
}
|
|
212
|
+
if (usage & Buffer.VERTEX) {
|
|
213
|
+
return GL.STATIC_DRAW;
|
|
214
|
+
}
|
|
215
|
+
if (usage & Buffer.UNIFORM) {
|
|
216
|
+
return GL.DYNAMIC_DRAW;
|
|
217
|
+
}
|
|
218
|
+
return GL.DYNAMIC_DRAW;
|
|
219
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
CopyBufferToBufferOptions,
|
|
3
|
+
CopyBufferToTextureOptions,
|
|
4
|
+
CopyTextureToBufferOptions,
|
|
5
|
+
CopyTextureToTextureOptions
|
|
6
|
+
} from '@luma.gl/api';
|
|
7
|
+
import GL from '@luma.gl/constants';
|
|
8
|
+
import WebGLDevice from '../webgl-device';
|
|
9
|
+
import WEBGLBuffer from './webgl-buffer';
|
|
10
|
+
|
|
11
|
+
function cast<T>(value: unknown): T {
|
|
12
|
+
return value as T;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
type CopyBufferToBufferCommand = {
|
|
16
|
+
name: 'copy-buffer-to-buffer';
|
|
17
|
+
options: CopyBufferToBufferOptions;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
type CopyBufferToTextureCommand = {
|
|
21
|
+
name: 'copy-buffer-to-texture';
|
|
22
|
+
options: CopyBufferToTextureOptions;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
type CopyTextureToBufferCommand = {
|
|
26
|
+
name: 'copy-texture-to-buffer';
|
|
27
|
+
options: CopyTextureToBufferOptions;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
type CopyTextureToTextureCommand = {
|
|
31
|
+
name: 'copy-texture-to-texture';
|
|
32
|
+
options: CopyTextureToTextureOptions;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
type Command =
|
|
36
|
+
| CopyBufferToBufferCommand
|
|
37
|
+
| CopyBufferToTextureCommand
|
|
38
|
+
| CopyTextureToBufferCommand
|
|
39
|
+
| CopyTextureToTextureCommand;
|
|
40
|
+
|
|
41
|
+
export default class CommandBuffer {
|
|
42
|
+
commands: Command[] = [];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function submitCommands(device: WebGLDevice, commands: Command[] = []) {
|
|
46
|
+
for (const command of commands) {
|
|
47
|
+
switch (command.name) {
|
|
48
|
+
case 'copy-buffer-to-buffer':
|
|
49
|
+
_copyBufferToBuffer(device, command.options);
|
|
50
|
+
break;
|
|
51
|
+
case 'copy-buffer-to-texture':
|
|
52
|
+
_copyBufferToTexture(device, command.options);
|
|
53
|
+
break;
|
|
54
|
+
case 'copy-texture-to-buffer':
|
|
55
|
+
_copyTextureToBuffer(device, command.options);
|
|
56
|
+
break;
|
|
57
|
+
case 'copy-texture-to-texture':
|
|
58
|
+
_copyTextureToTexture(device, command.options);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function _copyBufferToBuffer(device: WebGLDevice, options: CopyBufferToBufferOptions): void {
|
|
65
|
+
const source = cast<WEBGLBuffer>(options.source);
|
|
66
|
+
const destination = cast<WEBGLBuffer>(options.destination);
|
|
67
|
+
|
|
68
|
+
const {gl2} = device;
|
|
69
|
+
if (gl2) {
|
|
70
|
+
// In WebGL2 we can perform the copy on the GPU
|
|
71
|
+
// Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type
|
|
72
|
+
gl2.bindBuffer(GL.COPY_READ_BUFFER, source.handle);
|
|
73
|
+
gl2.bindBuffer(GL.COPY_WRITE_BUFFER, destination.handle);
|
|
74
|
+
gl2.copyBufferSubData(
|
|
75
|
+
GL.COPY_READ_BUFFER,
|
|
76
|
+
GL.COPY_WRITE_BUFFER,
|
|
77
|
+
options.sourceOffset ?? 0,
|
|
78
|
+
options.destinationOffset ?? 0,
|
|
79
|
+
options.size
|
|
80
|
+
);
|
|
81
|
+
gl2.bindBuffer(GL.COPY_READ_BUFFER, null);
|
|
82
|
+
gl2.bindBuffer(GL.COPY_WRITE_BUFFER, null);
|
|
83
|
+
} else {
|
|
84
|
+
// TODO - in WebGL1 we would have to read back to CPU
|
|
85
|
+
// read / write buffer from / to CPU
|
|
86
|
+
throw new Error('copyBufferToBuffer not implemented in WebGL1');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function _copyBufferToTexture(device: WebGLDevice, options: CopyBufferToTextureOptions): void {}
|
|
91
|
+
|
|
92
|
+
function _copyTextureToBuffer(device: WebGLDevice, options: CopyTextureToBufferOptions): void {}
|
|
93
|
+
|
|
94
|
+
function _copyTextureToTexture(device: WebGLDevice, options: CopyTextureToTextureOptions): void {}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {CommandEncoder, CommandEncoderProps} from '@luma.gl/api';
|
|
2
|
+
import type {
|
|
3
|
+
CopyBufferToBufferOptions,
|
|
4
|
+
CopyBufferToTextureOptions,
|
|
5
|
+
CopyTextureToBufferOptions,
|
|
6
|
+
CopyTextureToTextureOptions
|
|
7
|
+
} from '@luma.gl/api';
|
|
8
|
+
|
|
9
|
+
import CommandBuffer from './webgl-command-buffer';
|
|
10
|
+
import WebGLDevice from '../webgl-device';
|
|
11
|
+
|
|
12
|
+
export default class WEBGLCommandEncoder extends CommandEncoder {
|
|
13
|
+
readonly device: WebGLDevice;
|
|
14
|
+
|
|
15
|
+
readonly commandBuffer = new CommandBuffer();
|
|
16
|
+
|
|
17
|
+
constructor(device: WebGLDevice, props: CommandEncoderProps) {
|
|
18
|
+
super(props);
|
|
19
|
+
this.device = device;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
destroy() {}
|
|
23
|
+
|
|
24
|
+
// beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;
|
|
25
|
+
// beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;
|
|
26
|
+
// finish(options?: {id?: string}): GPUCommandBuffer;
|
|
27
|
+
|
|
28
|
+
copyBufferToBuffer(options: CopyBufferToBufferOptions): void {
|
|
29
|
+
this.commandBuffer.commands.push({name: 'copy-buffer-to-buffer', options});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
copyBufferToTexture(options: CopyBufferToTextureOptions) {
|
|
33
|
+
this.commandBuffer.commands.push({name: 'copy-buffer-to-texture', options});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
copyTextureToBuffer(options: CopyTextureToBufferOptions): void {
|
|
37
|
+
this.commandBuffer.commands.push({name: 'copy-texture-to-buffer', options});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
copyTextureToTexture(options: CopyTextureToTextureOptions): void {
|
|
41
|
+
this.commandBuffer.commands.push({name: 'copy-texture-to-texture', options});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
pushDebugGroup(groupLabel: string): void {}
|
|
45
|
+
popDebugGroup() {}
|
|
46
|
+
|
|
47
|
+
insertDebugMarker(markerLabel: string): void {}
|
|
48
|
+
|
|
49
|
+
// writeTimestamp(querySet: Query, queryIndex: number): void {}
|
|
50
|
+
|
|
51
|
+
// resolveQuerySet(options: {
|
|
52
|
+
// querySet: GPUQuerySet,
|
|
53
|
+
// firstQuery: number,
|
|
54
|
+
// queryCount: number,
|
|
55
|
+
// destination: Buffer,
|
|
56
|
+
// destinationOffset?: number;
|
|
57
|
+
// }): void;
|
|
58
|
+
};
|