@luma.gl/webgl 8.6.0-alpha.5 → 9.0.0-alpha.2
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 +17 -0
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
- 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 +208 -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 +27 -48
- 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 +306 -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 +40 -0
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-framebuffer.js +265 -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 +19 -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 +400 -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 +13 -20
- 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} +274 -229
- 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 +58 -76
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +184 -111
- 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} +53 -51
- 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 +1 -0
- package/dist/context/context/create-context.d.ts.map +1 -1
- package/dist/context/context/create-context.js +12 -0
- package/dist/context/context/create-context.js.map +1 -1
- 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.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 +3 -2
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +4 -4
- 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 +4 -3
- package/dist/context/polyfill/polyfill-context.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 +25 -11
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +37 -5
- 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 +226 -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 +46 -54
- 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} +184 -87
- 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 +345 -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} +25 -45
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +505 -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} +12 -18
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +336 -260
- 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 +253 -133
- 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} +74 -66
- 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 +12 -0
- package/dist/es5/context/context/create-context.js.map +1 -1
- 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 +7 -5
- 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 +4 -3
- package/dist/es5/context/polyfill/polyfill-context.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 +26 -11
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/index.js +65 -307
- 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} +36 -5
- 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 +208 -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 +27 -48
- 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 +306 -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 +265 -0
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js +19 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +400 -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 +13 -20
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
- 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 +184 -111
- 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} +53 -51
- 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/esm/context/context/create-context.js +12 -0
- package/dist/esm/context/context/create-context.js.map +1 -1
- 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 +4 -4
- 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 +4 -3
- package/dist/esm/context/polyfill/polyfill-context.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 +25 -11
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/index.js +19 -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 +22 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -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 +144 -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} +52 -9
- package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
- package/src/adapter/converters/sampler-parameters.ts +175 -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 +46 -123
- package/src/adapter/device-helpers/device-limits.ts +5 -2
- 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 +388 -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 +110 -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 +279 -0
- package/src/adapter/resources/webgl-render-pass.ts +23 -0
- package/src/adapter/resources/webgl-render-pipeline.ts +413 -0
- package/src/adapter/resources/webgl-sampler.ts +54 -0
- package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +14 -20
- package/src/adapter/resources/webgl-texture.ts +1023 -0
- package/src/adapter/webgl-canvas-context.ts +74 -0
- package/src/adapter/webgl-device.ts +226 -275
- package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +50 -36
- package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +69 -77
- package/src/{webgl-utils → classic}/typed-array-utils.ts +3 -1
- package/src/context/context/context-state.ts +4 -2
- package/src/context/context/create-context.ts +28 -1
- package/src/context/context/device-pixels.ts +9 -4
- 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 +6 -4
- 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 -3
- package/src/context/state-tracker/deep-array-equal.ts +1 -1
- package/src/context/state-tracker/track-context-state.ts +27 -20
- package/src/index.ts +33 -102
- package/src/init.ts +2 -46
- package/src/types/webgl.ts +283 -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 -76
- 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/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 -116
- 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/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 -76
- 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/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 -146
- 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, 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;
|
|
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
|
+
// @ts-expect-error
|
|
110
|
+
this.handle = null;
|
|
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
|
+
};
|