@luma.gl/webgl 8.6.0-alpha.5 → 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 -75
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +242 -112
- 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/{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 +314 -130
- 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 +242 -112
- 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/esm/{classes/webgl-buffer.js → 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 +293 -278
- 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 -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/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 -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/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 -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/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 -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
|
@@ -1,123 +1,134 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
import {
|
|
2
|
+
import type {
|
|
3
|
+
DeviceProps,
|
|
4
|
+
DeviceInfo,
|
|
5
|
+
DeviceLimits,
|
|
6
|
+
DeviceFeature,
|
|
7
|
+
CanvasContextProps,
|
|
8
|
+
TextureFormat
|
|
9
|
+
} from '@luma.gl/api';
|
|
10
|
+
import {Device, CanvasContext, log, assert} from '@luma.gl/api';
|
|
11
|
+
import {isBrowser} from '@probe.gl/env';
|
|
3
12
|
import {polyfillContext} from '../context/polyfill/polyfill-context';
|
|
4
13
|
import {trackContextState} from '../context/state-tracker/track-context-state';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
14
|
+
import {ContextState} from '../context/context/context-state';
|
|
15
|
+
import {createBrowserContext} from '../context/context/create-browser-context';
|
|
16
|
+
import {
|
|
17
|
+
createHeadlessContext,
|
|
18
|
+
isHeadlessGLRegistered
|
|
19
|
+
} from '../context/context/create-headless-context';
|
|
10
20
|
import {getDeviceInfo} from './device-helpers/get-device-info';
|
|
11
|
-
import {getDeviceFeatures
|
|
21
|
+
import {getDeviceFeatures} from './device-helpers/device-features';
|
|
12
22
|
import {getDeviceLimits, getWebGLLimits, WebGLLimits} from './device-helpers/device-limits';
|
|
23
|
+
import WebGLCanvasContext from './webgl-canvas-context';
|
|
24
|
+
import {loadSpectorJS, initializeSpectorJS} from '../context/debug/spector';
|
|
25
|
+
import {loadWebGLDeveloperTools, makeDebugContext} from '../context/debug/webgl-developer-tools';
|
|
26
|
+
import {
|
|
27
|
+
isTextureFormatSupported,
|
|
28
|
+
isTextureFormatRenderable,
|
|
29
|
+
isTextureFormatFilterable
|
|
30
|
+
} from './converters/texture-formats';
|
|
13
31
|
|
|
14
32
|
// WebGL classes
|
|
15
|
-
import type {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
debug?: boolean; // Instrument context (at the expense of performance)
|
|
34
|
-
break?: Array<any>; // TODO: types
|
|
35
|
-
onContextLost?: (event: Event) => void;
|
|
36
|
-
onContextRestored?: (event: Event) => void;
|
|
37
|
-
// BROWSER CONTEXT PARAMETERS
|
|
38
|
-
alpha?: boolean; // Default render target has an alpha buffer.
|
|
39
|
-
depth?: boolean; // Default render target has a depth buffer of at least 16 bits.
|
|
40
|
-
stencil?: boolean; // Default render target has a stencil buffer of at least 8 bits.
|
|
41
|
-
antialias?: boolean; // Boolean that indicates whether or not to perform anti-aliasing.
|
|
42
|
-
premultipliedAlpha?: boolean; // Boolean that indicates that the page compositor will assume the drawing buffer contains colors with pre-multiplied alpha.
|
|
43
|
-
preserveDrawingBuffer?: boolean; // Default render target buffers will not be automatically cleared and will preserve their values until cleared or overwritten
|
|
44
|
-
failIfMajorPerformanceCaveat?: boolean; // Do not create if the system performance is low.
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const DEFAULT_DEVICE_PROPS: Required<WebGLDeviceProps> = {
|
|
48
|
-
canvas: undefined, // A canvas element or a canvas string id
|
|
49
|
-
gl: undefined,
|
|
50
|
-
webgl2: true, // Attempt to create a WebGL2 context
|
|
51
|
-
webgl1: true, // Attempt to create a WebGL1 context (false to fail if webgl2 not available)
|
|
52
|
-
manageState: true,
|
|
53
|
-
width: 800, // width are height are only used by headless gl
|
|
54
|
-
height: 600,
|
|
55
|
-
debug: false, // Instrument context (at the expense of performance)
|
|
56
|
-
break: undefined,
|
|
57
|
-
onContextLost: () => console.error('WebGL context lost'),
|
|
58
|
-
onContextRestored: () => console.info('WebGL context restored'),
|
|
59
|
-
|
|
60
|
-
alpha: undefined,
|
|
61
|
-
depth: undefined,
|
|
62
|
-
stencil: undefined,
|
|
63
|
-
antialias: undefined,
|
|
64
|
-
premultipliedAlpha: undefined,
|
|
65
|
-
preserveDrawingBuffer: undefined,
|
|
66
|
-
failIfMajorPerformanceCaveat: undefined
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
const LOG_LEVEL = 1;
|
|
33
|
+
import type {
|
|
34
|
+
BufferProps,
|
|
35
|
+
ShaderProps,
|
|
36
|
+
Sampler,
|
|
37
|
+
SamplerProps,
|
|
38
|
+
TextureProps,
|
|
39
|
+
ExternalTexture,
|
|
40
|
+
ExternalTextureProps,
|
|
41
|
+
FramebufferProps,
|
|
42
|
+
RenderPipeline,
|
|
43
|
+
RenderPipelineProps,
|
|
44
|
+
ComputePipeline,
|
|
45
|
+
ComputePipelineProps,
|
|
46
|
+
RenderPass,
|
|
47
|
+
RenderPassProps,
|
|
48
|
+
ComputePass,
|
|
49
|
+
ComputePassProps
|
|
50
|
+
} from '@luma.gl/api';
|
|
70
51
|
|
|
71
|
-
|
|
72
|
-
|
|
52
|
+
import ClassicBuffer from '../classic/buffer';
|
|
53
|
+
import WEBGLBuffer from './resources/webgl-buffer';
|
|
54
|
+
import WEBGLShader from './resources/webgl-shader';
|
|
55
|
+
import WEBGLSampler from './resources/webgl-sampler';
|
|
56
|
+
import WEBGLTexture from './resources/webgl-texture';
|
|
57
|
+
import WEBGLFramebuffer from './resources/webgl-framebuffer';
|
|
58
|
+
import WEBGLRenderPass from './resources/webgl-render-pass';
|
|
59
|
+
import WEBGLRenderPipeline from './resources/webgl-render-pipeline';
|
|
73
60
|
|
|
74
|
-
|
|
75
|
-
return glToContextMap.get(gl);
|
|
76
|
-
}
|
|
61
|
+
const LOG_LEVEL = 1;
|
|
77
62
|
|
|
78
63
|
let counter = 0;
|
|
79
64
|
|
|
80
65
|
/** WebGPU style Device API for a WebGL context */
|
|
81
66
|
export default class WebGLDevice extends Device implements ContextState {
|
|
82
|
-
//
|
|
67
|
+
//
|
|
68
|
+
// Public `Device` API
|
|
69
|
+
//
|
|
70
|
+
|
|
71
|
+
static type: string = 'webgl';
|
|
72
|
+
|
|
73
|
+
static isSupported(): boolean {
|
|
74
|
+
return typeof WebGLRenderingContext !== 'undefined' || isHeadlessGLRegistered();
|
|
75
|
+
}
|
|
83
76
|
|
|
84
|
-
/** A set like interface to test features */
|
|
85
|
-
readonly features: Set<Feature>;
|
|
86
|
-
readonly limits: DeviceLimits;
|
|
87
77
|
readonly info: DeviceInfo;
|
|
78
|
+
readonly canvasContext: WebGLCanvasContext;
|
|
88
79
|
|
|
89
|
-
|
|
90
|
-
readonly lost: Promise<string>;
|
|
80
|
+
readonly handle: WebGLRenderingContext;
|
|
91
81
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
82
|
+
get features(): Set<DeviceFeature> {
|
|
83
|
+
this._features = this._features || getDeviceFeatures(this.gl);
|
|
84
|
+
return this._features;
|
|
85
|
+
}
|
|
95
86
|
|
|
96
|
-
|
|
97
|
-
|
|
87
|
+
get limits(): DeviceLimits {
|
|
88
|
+
this._limits = this._limits || getDeviceLimits(this.gl);
|
|
89
|
+
return this._limits;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
readonly lost: Promise<{reason: 'destroyed'; message: string}>;
|
|
93
|
+
|
|
94
|
+
private _resolveContextLost?: (value: {reason: 'destroyed'; message: string}) => void;
|
|
95
|
+
private _features?: Set<DeviceFeature>;
|
|
96
|
+
private _limits?: DeviceLimits;
|
|
97
|
+
|
|
98
|
+
//
|
|
99
|
+
// WebGL-only API (not part of `Device` API)
|
|
100
|
+
//
|
|
101
|
+
|
|
102
|
+
/** WebGL1 typed context. Can always be used. */
|
|
98
103
|
readonly gl: WebGLRenderingContext;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
readonly
|
|
104
|
+
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
105
|
+
readonly gl2: WebGL2RenderingContext | null = null;
|
|
106
|
+
readonly debug: boolean = false;
|
|
102
107
|
|
|
103
|
-
|
|
108
|
+
/** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
|
|
109
|
+
readonly isWebGL1: boolean;
|
|
110
|
+
/** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
|
|
111
|
+
readonly isWebGL2: boolean;
|
|
104
112
|
|
|
105
|
-
|
|
106
|
-
|
|
113
|
+
get webglLimits(): WebGLLimits {
|
|
114
|
+
this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
|
|
115
|
+
return this._webglLimits;
|
|
116
|
+
}
|
|
107
117
|
|
|
108
|
-
|
|
109
|
-
|
|
118
|
+
private _webglLimits?: WebGLLimits;
|
|
119
|
+
|
|
120
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
110
121
|
readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
|
|
122
|
+
/** State used by luma.gl classes */
|
|
111
123
|
readonly _extensions: Record<string, any> = {};
|
|
112
124
|
_polyfilled: boolean = false;
|
|
113
125
|
|
|
114
|
-
/**
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
126
|
+
/** Instance of Spector.js (if initialized) */
|
|
127
|
+
spector;
|
|
128
|
+
|
|
129
|
+
//
|
|
130
|
+
// Static methods, expected to be present by `luma.createDevice()`
|
|
131
|
+
//
|
|
121
132
|
|
|
122
133
|
/**
|
|
123
134
|
* Get a device instance from a GL context
|
|
@@ -125,105 +136,134 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
125
136
|
* @param gl
|
|
126
137
|
* @returns
|
|
127
138
|
*/
|
|
128
|
-
static attach(
|
|
129
|
-
gl: Device | WebGLRenderingContext | WebGL2RenderingContext,
|
|
130
|
-
props?: WebGLDeviceProps
|
|
131
|
-
): WebGLDevice {
|
|
139
|
+
static attach(gl: Device | WebGLRenderingContext | WebGL2RenderingContext): WebGLDevice {
|
|
132
140
|
if (gl instanceof WebGLDevice) {
|
|
133
141
|
return gl;
|
|
134
142
|
}
|
|
143
|
+
// @ts-expect-error
|
|
144
|
+
if (gl?.device instanceof Device) {
|
|
145
|
+
// @ts-expect-error
|
|
146
|
+
return gl.device as WebGLDevice;
|
|
147
|
+
}
|
|
135
148
|
if (!isWebGL(gl)) {
|
|
136
149
|
throw new Error('Invalid WebGLRenderingContext');
|
|
137
150
|
}
|
|
138
|
-
return new WebGLDevice({
|
|
151
|
+
return new WebGLDevice({gl: gl as WebGLRenderingContext});
|
|
139
152
|
}
|
|
140
153
|
|
|
154
|
+
static async create(props: DeviceProps = {}): Promise<WebGLDevice> {
|
|
155
|
+
log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
|
|
156
|
+
|
|
157
|
+
// Wait for page to load. Only wait when props. canvas is string
|
|
158
|
+
// to avoid setting page onload callback unless necessary
|
|
159
|
+
if (typeof props.canvas === 'string') {
|
|
160
|
+
await CanvasContext.pageLoaded;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Load webgl and spector debug scripts from CDN if requested
|
|
164
|
+
if (props.debug) {
|
|
165
|
+
await loadWebGLDeveloperTools();
|
|
166
|
+
}
|
|
167
|
+
// @ts-expect-error spector not on props
|
|
168
|
+
if (props.spector) {
|
|
169
|
+
await loadSpectorJS();
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
log.probe(LOG_LEVEL + 1, 'DOM is loaded')();
|
|
141
173
|
|
|
142
|
-
|
|
143
|
-
|
|
174
|
+
// @ts-expect-error
|
|
175
|
+
if (props.gl && props.gl.device) {
|
|
176
|
+
return WebGLDevice.attach(props.gl);
|
|
177
|
+
}
|
|
144
178
|
|
|
145
|
-
|
|
179
|
+
return new WebGLDevice(props);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
//
|
|
183
|
+
// Public API
|
|
184
|
+
//
|
|
185
|
+
|
|
186
|
+
constructor(props: DeviceProps) {
|
|
187
|
+
super(props);
|
|
146
188
|
|
|
147
189
|
// If attaching to an already attached context, return the attached device
|
|
148
190
|
// @ts-expect-error device is attached to context
|
|
149
|
-
const device: WebGLDevice | undefined =
|
|
191
|
+
const device: WebGLDevice | undefined = props.gl?.device;
|
|
150
192
|
if (device) {
|
|
151
|
-
|
|
152
|
-
log.error('recursive context');
|
|
153
|
-
throw new Error('recursive context');
|
|
154
|
-
}
|
|
155
|
-
return device;
|
|
193
|
+
throw new Error(`WebGL context already attached to device ${device.id}`);
|
|
156
194
|
}
|
|
157
195
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
props.canvas instanceof OffscreenCanvas;
|
|
196
|
+
// Create and instrument context
|
|
197
|
+
this.canvasContext = new WebGLCanvasContext(this, props);
|
|
161
198
|
|
|
162
|
-
|
|
163
|
-
|
|
199
|
+
this.lost = new Promise<{reason: 'destroyed'; message: string}>((resolve) => {
|
|
200
|
+
this._resolveContextLost = resolve;
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
const onContextLost = (event: Event) =>
|
|
204
|
+
this._resolveContextLost?.({
|
|
205
|
+
reason: 'destroyed',
|
|
206
|
+
message: 'Computer entered sleep mode, or too many apps or browser tabs are using the GPU.'
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
let gl: WebGLRenderingContext | WebGL2RenderingContext | null = props.gl;
|
|
210
|
+
gl =
|
|
211
|
+
gl ||
|
|
212
|
+
(isBrowser() ? createBrowserContext(this.canvasContext.canvas, {...props, onContextLost}) : null);
|
|
213
|
+
gl = gl || (!isBrowser() ? createHeadlessContext({...props, onContextLost}) : null);
|
|
214
|
+
|
|
215
|
+
if (!gl) {
|
|
216
|
+
throw new Error('WebGL context creation failed');
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
this.handle = gl;
|
|
220
|
+
this.gl = this.handle;
|
|
164
221
|
this.gl2 = this.gl as WebGL2RenderingContext;
|
|
165
222
|
this.isWebGL2 = isWebGL2(this.gl);
|
|
166
|
-
this.
|
|
167
|
-
// Avoid multiple instrumentations
|
|
168
|
-
// @ts-expect-error
|
|
169
|
-
if (this.gl.device) {
|
|
170
|
-
log.error('device already created');
|
|
171
|
-
throw new Error('device already created'); // ASSERT this device;
|
|
172
|
-
}
|
|
173
|
-
// @ts-expect-error
|
|
174
|
-
this.gl.device = this;
|
|
175
|
-
// @ts-ignore
|
|
176
|
-
this.gl._version = typeof WebGL2RenderingContext !== 'undefined' && this.gl instanceof WebGL2RenderingContext ? 2 : 1;
|
|
177
|
-
// TODO - move to weak map indexing
|
|
178
|
-
glToContextMap.set(this.gl, this);
|
|
223
|
+
this.isWebGL1 = !this.isWebGL2;
|
|
179
224
|
|
|
180
|
-
//
|
|
225
|
+
// luma Device fields
|
|
181
226
|
this.info = getDeviceInfo(this.gl);
|
|
182
|
-
// Log some debug info about the newly created context
|
|
183
|
-
// @ts-expect-error device is attached to context
|
|
184
|
-
const debug = this.gl.debug ? ' debug' : '';
|
|
185
|
-
const webGL = isWebGL2(this.gl) ? 'WebGL2' : 'WebGL1';
|
|
186
|
-
log.groupCollapsed(LOG_LEVEL, `${webGL}${debug} context: ${this.info.vendor}, ${this.info.renderer}`)();
|
|
187
227
|
|
|
228
|
+
// @ts-expect-error Link webgl context back to device
|
|
229
|
+
this.gl.device = this;
|
|
230
|
+
// @ts-expect-error Annotate webgl context to handle
|
|
231
|
+
this.gl._version = this.isWebGL2 ? 2 : 1;
|
|
232
|
+
|
|
233
|
+
// Add subset of WebGL2 methods to WebGL1 context
|
|
188
234
|
polyfillContext(this.gl);
|
|
189
|
-
log.probe(LOG_LEVEL, 'polyfilled context')();
|
|
190
235
|
|
|
191
236
|
// Install context state tracking
|
|
237
|
+
// @ts-expect-error - hidden parameters
|
|
238
|
+
const {enable = true, copyState = false} = props;
|
|
192
239
|
trackContextState(this.gl, {
|
|
193
|
-
|
|
194
|
-
|
|
240
|
+
enable,
|
|
241
|
+
copyState,
|
|
242
|
+
log: (...args: any[]) => log.log(1, ...args)()
|
|
195
243
|
});
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
//
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
//
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
// // @ts-ignore
|
|
218
|
-
// this.gl = global.makeDebugContext(this.gl, props);
|
|
219
|
-
// this.gl2 = this.gl as WebGL2RenderingContext;
|
|
220
|
-
// // Debug forces log level to at least 1
|
|
221
|
-
// log.level = Math.max(log.level, 1);
|
|
222
|
-
// }
|
|
223
|
-
// }
|
|
244
|
+
|
|
245
|
+
// DEBUG contexts: Add debug instrumentation to the context, force log level to at least 1
|
|
246
|
+
if (isBrowser() && props.debug) {
|
|
247
|
+
this.gl = makeDebugContext(this.gl, {...props, webgl2: this.isWebGL2, throwOnError: true});
|
|
248
|
+
this.gl2 = this.gl as WebGL2RenderingContext;
|
|
249
|
+
this.debug = true;
|
|
250
|
+
log.level = Math.max(log.level, 1);
|
|
251
|
+
log.warn('WebGL debug mode activated. Performance reduced.')();
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// @ts-expect-error spector not on props
|
|
255
|
+
if (isBrowser() && props.spector) {
|
|
256
|
+
const canvas = this.handle.canvas || (props.canvas as HTMLCanvasElement);
|
|
257
|
+
this.spector = initializeSpectorJS({...this.props, canvas});
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Log some debug info about the newly created context
|
|
261
|
+
const message = `\
|
|
262
|
+
Created ${this.info.type}${this.debug ? ' debug' : ''} context: \
|
|
263
|
+
${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`;
|
|
264
|
+
log.probe(LOG_LEVEL, message)();
|
|
224
265
|
|
|
225
266
|
log.groupEnd(LOG_LEVEL)();
|
|
226
|
-
this._state = 'initialized';
|
|
227
267
|
}
|
|
228
268
|
|
|
229
269
|
/**
|
|
@@ -231,169 +271,144 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
231
271
|
* @note Has no effect for browser contexts, there is no browser API for destroying contexts
|
|
232
272
|
*/
|
|
233
273
|
destroy() {
|
|
234
|
-
|
|
274
|
+
const ext = this.gl.getExtension('STACKGL_destroy_context');
|
|
235
275
|
if (ext) {
|
|
236
276
|
ext.destroy();
|
|
237
277
|
}
|
|
238
|
-
// ext = this.gl.getExtension('WEBGL_lose_context');
|
|
239
|
-
// if (ext) {
|
|
240
|
-
// // TODO - disconnect context lost callbacks?
|
|
241
|
-
// ext.loseContext();
|
|
242
|
-
// }
|
|
243
278
|
}
|
|
244
279
|
|
|
245
|
-
// WEBGL SPECIFIC METHODS
|
|
246
|
-
|
|
247
280
|
/**
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
* Can match the canvas CSS size, and optionally also consider devicePixelRatio
|
|
251
|
-
* Can be called every frame
|
|
252
|
-
*
|
|
253
|
-
* Regardless of size, the drawing buffer will always be scaled to the viewport, but
|
|
254
|
-
* for best visual results, usually set to either:
|
|
255
|
-
* canvas CSS width x canvas CSS height
|
|
256
|
-
* canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio
|
|
257
|
-
* See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
|
|
281
|
+
* Loses the context
|
|
282
|
+
* @note Triggers context loss, mainly for testing
|
|
258
283
|
*/
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
if (
|
|
262
|
-
|
|
263
|
-
setDevicePixelRatio(this.gl, devicePixelRatio, options);
|
|
264
|
-
return;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
// Resize headless gl context
|
|
268
|
-
const ext = this.gl.getExtension('STACKGL_resize_drawingbuffer');
|
|
269
|
-
if (ext && options && `width` in options && `height` in options) {
|
|
270
|
-
ext.resize(options.width, options.height);
|
|
284
|
+
loseDevice() {
|
|
285
|
+
const ext = this.gl.getExtension('WEBGL_lose_context');
|
|
286
|
+
if (ext) {
|
|
287
|
+
ext.loseContext();
|
|
271
288
|
}
|
|
289
|
+
// loseContext should trigger context loss callback but
|
|
290
|
+
this._resolveContextLost?.({
|
|
291
|
+
reason: 'destroyed',
|
|
292
|
+
message: 'Application triggered context loss'
|
|
293
|
+
});
|
|
272
294
|
}
|
|
273
295
|
|
|
274
|
-
|
|
275
|
-
return
|
|
296
|
+
get isLost(): boolean {
|
|
297
|
+
return this.gl.isContextLost();
|
|
276
298
|
}
|
|
277
299
|
|
|
278
|
-
|
|
279
|
-
return
|
|
300
|
+
getSize(): [number, number] {
|
|
301
|
+
return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
|
|
280
302
|
}
|
|
281
303
|
|
|
282
|
-
|
|
283
|
-
return
|
|
304
|
+
isTextureFormatSupported(format: TextureFormat): boolean {
|
|
305
|
+
return isTextureFormatSupported(this.gl, format);
|
|
284
306
|
}
|
|
285
307
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
* https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
|
|
289
|
-
* Chrome's offscreen canvas does not require gl.commit
|
|
290
|
-
*/
|
|
291
|
-
commit(): void {
|
|
292
|
-
// @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
|
|
293
|
-
if (this.offScreen && this.gl.commit) {
|
|
294
|
-
// @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
|
|
295
|
-
this.gl.commit();
|
|
296
|
-
}
|
|
308
|
+
isTextureFormatFilterable(format: TextureFormat): boolean {
|
|
309
|
+
return isTextureFormatFilterable(this.gl, format);
|
|
297
310
|
}
|
|
298
311
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* Creates a context giving access to the WebGL API
|
|
303
|
-
*/
|
|
304
|
-
_createContext(options?: WebGLDeviceProps): WebGLRenderingContext {
|
|
305
|
-
const {width, height, canvas} = this.props;
|
|
306
|
-
// Get or create a canvas
|
|
307
|
-
const targetCanvas = getCanvas({canvas, width, height});
|
|
308
|
-
// Create a WebGL context in the canvas
|
|
309
|
-
return createBrowserContext(targetCanvas, options);
|
|
312
|
+
isTextureFormatRenderable(format: TextureFormat): boolean {
|
|
313
|
+
return isTextureFormatRenderable(this.gl, format);
|
|
310
314
|
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/*
|
|
314
|
-
// prettier-ignore
|
|
315
|
-
import {
|
|
316
|
-
Device, DeviceInfo, DeviceLimits,
|
|
317
|
-
Buffer, BufferProps
|
|
318
|
-
} from '@luma.gl/api';
|
|
319
315
|
|
|
320
|
-
|
|
321
|
-
import {getWebGLLimits} from '../converters/webgl-limits';
|
|
322
|
-
import {getWebGLFeatures} from '../converters/webgl-features';
|
|
316
|
+
// WEBGL SPECIFIC METHODS
|
|
323
317
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
readonly canvas: HTMLCanvasElement;
|
|
329
|
-
|
|
330
|
-
static isSupported(options: {canvas?: HTMLCanvasElement}): boolean {
|
|
331
|
-
const {canvas} = options;
|
|
332
|
-
let gl;
|
|
333
|
-
try {
|
|
334
|
-
gl = canvas && canvas.getContext("webgl");
|
|
335
|
-
gl = gl && canvas && canvas.getContext("experimental-webgl");
|
|
336
|
-
} catch (x) {
|
|
337
|
-
gl = null;
|
|
318
|
+
/** Returns a WebGL2RenderingContext or throws an error */
|
|
319
|
+
assertWebGL2(): WebGL2RenderingContext {
|
|
320
|
+
if (!this.gl2) {
|
|
321
|
+
throw new Error('Requires WebGL2');
|
|
338
322
|
}
|
|
339
|
-
return
|
|
323
|
+
return this.gl2;
|
|
340
324
|
}
|
|
341
325
|
|
|
342
|
-
|
|
343
|
-
const {canvas, swapChainFormat = "bgra8unorm"} = props;
|
|
326
|
+
// IMPLEMENTATION OF ABSTRACT DEVICE
|
|
344
327
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
this.gl = gl;
|
|
348
|
-
this.gl2 = gl instanceof WebGL2RenderingContext ? gl : null;
|
|
349
|
-
this.canvas = canvas;
|
|
328
|
+
createCanvasContext(props?: CanvasContextProps): CanvasContext {
|
|
329
|
+
throw new Error('WebGL only supports a single canvas');
|
|
350
330
|
}
|
|
351
331
|
|
|
352
|
-
|
|
353
|
-
|
|
332
|
+
_createBuffer(props: BufferProps): WEBGLBuffer {
|
|
333
|
+
return new ClassicBuffer(this, props);
|
|
354
334
|
}
|
|
355
335
|
|
|
356
|
-
|
|
357
|
-
return
|
|
336
|
+
_createTexture(props: TextureProps): WEBGLTexture {
|
|
337
|
+
return new WEBGLTexture(this, props);
|
|
358
338
|
}
|
|
359
339
|
|
|
360
|
-
|
|
361
|
-
|
|
340
|
+
createExternalTexture(props: ExternalTextureProps): ExternalTexture {
|
|
341
|
+
throw new Error('createExternalTexture() not implemented'); // return new Program(props);
|
|
362
342
|
}
|
|
363
343
|
|
|
364
|
-
|
|
365
|
-
return
|
|
344
|
+
createSampler(props: SamplerProps): WEBGLSampler {
|
|
345
|
+
return new WEBGLSampler(this, props);
|
|
366
346
|
}
|
|
367
347
|
|
|
368
|
-
|
|
369
|
-
return new
|
|
348
|
+
createShader(props: ShaderProps): WEBGLShader {
|
|
349
|
+
return new WEBGLShader(this, props);
|
|
370
350
|
}
|
|
371
351
|
|
|
372
|
-
|
|
373
|
-
return new
|
|
352
|
+
createFramebuffer(props: FramebufferProps): WEBGLFramebuffer {
|
|
353
|
+
return new WEBGLFramebuffer(this, props);
|
|
374
354
|
}
|
|
375
355
|
|
|
376
|
-
|
|
377
|
-
return new
|
|
356
|
+
createRenderPipeline(props: RenderPipelineProps): WEBGLRenderPipeline {
|
|
357
|
+
return new WEBGLRenderPipeline(this, props);
|
|
378
358
|
}
|
|
379
359
|
|
|
380
|
-
|
|
381
|
-
return new
|
|
360
|
+
beginRenderPass(props: RenderPassProps): WEBGLRenderPass {
|
|
361
|
+
return new WEBGLRenderPass(this, props);
|
|
382
362
|
}
|
|
383
363
|
|
|
384
|
-
|
|
385
|
-
|
|
364
|
+
createComputePipeline(props?: ComputePipelineProps): ComputePipeline {
|
|
365
|
+
throw new Error('ComputePipeline not supported in WebGL');
|
|
386
366
|
}
|
|
387
367
|
|
|
388
|
-
|
|
389
|
-
|
|
368
|
+
beginComputePass(props: ComputePassProps): ComputePass {
|
|
369
|
+
throw new Error('compute shaders not supported in WebGL');
|
|
390
370
|
}
|
|
391
371
|
|
|
372
|
+
private renderPass: WEBGLRenderPass | null = null;
|
|
392
373
|
|
|
393
|
-
|
|
374
|
+
getDefaultRenderPass(): WEBGLRenderPass {
|
|
375
|
+
this.renderPass =
|
|
376
|
+
this.renderPass ||
|
|
377
|
+
this.beginRenderPass({
|
|
378
|
+
framebuffer: this.canvasContext.getCurrentFramebuffer()
|
|
379
|
+
});
|
|
380
|
+
return this.renderPass;
|
|
381
|
+
}
|
|
394
382
|
|
|
395
|
-
|
|
383
|
+
/**
|
|
384
|
+
* Offscreen Canvas Support: Commit the frame
|
|
385
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
|
|
386
|
+
* Chrome's offscreen canvas does not require gl.commit
|
|
387
|
+
*/
|
|
388
|
+
submit(): void {
|
|
389
|
+
this.renderPass?.endPass();
|
|
390
|
+
this.renderPass = null;
|
|
391
|
+
// this.canvasContext.commit();
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/** Check if supplied parameter is a WebGLRenderingContext */
|
|
396
|
+
function isWebGL(gl: any): boolean {
|
|
397
|
+
if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
|
|
398
|
+
return true;
|
|
399
|
+
}
|
|
400
|
+
if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
|
|
401
|
+
return true;
|
|
402
|
+
}
|
|
403
|
+
// Look for debug contexts, headless gl etc
|
|
404
|
+
return Boolean(gl && Number.isFinite(gl._version));
|
|
405
|
+
}
|
|
396
406
|
|
|
397
|
-
|
|
407
|
+
/** Check if supplied parameter is a WebGL2RenderingContext */
|
|
408
|
+
function isWebGL2(gl: any): boolean {
|
|
409
|
+
if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
|
|
410
|
+
return true;
|
|
411
|
+
}
|
|
412
|
+
// Look for debug contexts, headless gl etc
|
|
413
|
+
return Boolean(gl && gl._version === 2);
|
|
398
414
|
}
|
|
399
|
-
*/
|