@luma.gl/webgl 8.6.0-alpha.5 → 9.0.0-alpha.11
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 +52 -0
- package/dist/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +77 -83
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +253 -115
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +32 -0
- package/dist/classic/accessor.d.ts.map +1 -0
- package/dist/{classes → classic}/accessor.js +33 -1
- package/dist/classic/accessor.js.map +1 -0
- package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
- package/dist/classic/buffer.d.ts.map +1 -0
- package/dist/{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 +0 -5
- package/dist/context/context/context-state.d.ts.map +1 -1
- package/dist/context/context/context-state.js +1 -6
- 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/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 +94 -0
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/es5/adapter/webgl-device.js +325 -131
- 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 -6
- 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/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 +63 -305
- 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 +52 -0
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/esm/adapter/webgl-device.js +253 -115
- package/dist/esm/adapter/webgl-device.js.map +1 -1
- package/dist/esm/{classes → classic}/accessor.js +33 -1
- package/dist/esm/classic/accessor.js.map +1 -0
- package/dist/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 -6
- 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/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 -32
- 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 -47
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -32
- 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 +72 -0
- package/src/adapter/webgl-device.ts +312 -285
- 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 -12
- 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/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 -105
- 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/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -98
- package/dist/context/context/device-pixels.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/device-pixels.js +0 -115
- package/dist/es5/context/context/device-pixels.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/device-pixels.js +0 -98
- package/dist/esm/context/context/device-pixels.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/device-pixels.ts +0 -147
- 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,103 @@
|
|
|
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
|
-
import {trackContextState} from '../context/state-tracker/track-context-state';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
import {popContextState, pushContextState, trackContextState} from '../context/state-tracker/track-context-state';
|
|
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
|
+
//
|
|
83
70
|
|
|
84
|
-
|
|
85
|
-
readonly features: Set<Feature>;
|
|
86
|
-
readonly limits: DeviceLimits;
|
|
87
|
-
readonly info: DeviceInfo;
|
|
71
|
+
static type: string = 'webgl';
|
|
88
72
|
|
|
89
|
-
|
|
90
|
-
|
|
73
|
+
static isSupported(): boolean {
|
|
74
|
+
return typeof WebGLRenderingContext !== 'undefined' || isHeadlessGLRegistered();
|
|
75
|
+
}
|
|
91
76
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
userData: {[key: string]: any};
|
|
77
|
+
readonly info: DeviceInfo;
|
|
78
|
+
readonly canvasContext: WebGLCanvasContext;
|
|
95
79
|
|
|
96
|
-
|
|
97
|
-
readonly isWebGL2: boolean;
|
|
98
|
-
readonly gl: WebGLRenderingContext;
|
|
99
|
-
readonly gl2: WebGL2RenderingContext;
|
|
100
|
-
/** Is this device attached to an offscreen context */
|
|
101
|
-
readonly offScreen: boolean = false;
|
|
80
|
+
readonly handle: WebGLRenderingContext;
|
|
102
81
|
|
|
103
|
-
|
|
82
|
+
get features(): Set<DeviceFeature> {
|
|
83
|
+
this._features = this._features || getDeviceFeatures(this.gl);
|
|
84
|
+
return this._features;
|
|
85
|
+
}
|
|
104
86
|
|
|
105
|
-
|
|
106
|
-
|
|
87
|
+
get limits(): DeviceLimits {
|
|
88
|
+
this._limits = this._limits || getDeviceLimits(this.gl);
|
|
89
|
+
return this._limits;
|
|
90
|
+
}
|
|
107
91
|
|
|
108
|
-
|
|
109
|
-
_state: 'uninitialized' | 'initializing' | 'initialized' = 'uninitialized';
|
|
110
|
-
readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
|
|
111
|
-
readonly _extensions: Record<string, any> = {};
|
|
112
|
-
_polyfilled: boolean = false;
|
|
92
|
+
readonly lost: Promise<{reason: 'destroyed'; message: string}>;
|
|
113
93
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
94
|
+
private _resolveContextLost?: (value: {reason: 'destroyed'; message: string}) => void;
|
|
95
|
+
private _features?: Set<DeviceFeature>;
|
|
96
|
+
private _limits?: DeviceLimits;
|
|
97
|
+
|
|
98
|
+
//
|
|
99
|
+
// Static methods, expected to be present by `luma.createDevice()`
|
|
100
|
+
//
|
|
121
101
|
|
|
122
102
|
/**
|
|
123
103
|
* Get a device instance from a GL context
|
|
@@ -125,105 +105,134 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
125
105
|
* @param gl
|
|
126
106
|
* @returns
|
|
127
107
|
*/
|
|
128
|
-
static attach(
|
|
129
|
-
gl: Device | WebGLRenderingContext | WebGL2RenderingContext,
|
|
130
|
-
props?: WebGLDeviceProps
|
|
131
|
-
): WebGLDevice {
|
|
108
|
+
static attach(gl: Device | WebGLRenderingContext | WebGL2RenderingContext): WebGLDevice {
|
|
132
109
|
if (gl instanceof WebGLDevice) {
|
|
133
110
|
return gl;
|
|
134
111
|
}
|
|
112
|
+
// @ts-expect-error
|
|
113
|
+
if (gl?.device instanceof Device) {
|
|
114
|
+
// @ts-expect-error
|
|
115
|
+
return gl.device as WebGLDevice;
|
|
116
|
+
}
|
|
135
117
|
if (!isWebGL(gl)) {
|
|
136
118
|
throw new Error('Invalid WebGLRenderingContext');
|
|
137
119
|
}
|
|
138
|
-
return new WebGLDevice({
|
|
120
|
+
return new WebGLDevice({gl: gl as WebGLRenderingContext});
|
|
139
121
|
}
|
|
140
122
|
|
|
123
|
+
static async create(props: DeviceProps = {}): Promise<WebGLDevice> {
|
|
124
|
+
log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
|
|
125
|
+
|
|
126
|
+
// Wait for page to load. Only wait when props. canvas is string
|
|
127
|
+
// to avoid setting page onload callback unless necessary
|
|
128
|
+
if (typeof props.canvas === 'string') {
|
|
129
|
+
await CanvasContext.pageLoaded;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Load webgl and spector debug scripts from CDN if requested
|
|
133
|
+
if (props.debug) {
|
|
134
|
+
await loadWebGLDeveloperTools();
|
|
135
|
+
}
|
|
136
|
+
// @ts-expect-error spector not on props
|
|
137
|
+
if (props.spector) {
|
|
138
|
+
await loadSpectorJS();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
log.probe(LOG_LEVEL + 1, 'DOM is loaded')();
|
|
142
|
+
|
|
143
|
+
// @ts-expect-error
|
|
144
|
+
if (props.gl && props.gl.device) {
|
|
145
|
+
return WebGLDevice.attach(props.gl);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return new WebGLDevice(props);
|
|
149
|
+
}
|
|
141
150
|
|
|
142
|
-
|
|
143
|
-
|
|
151
|
+
//
|
|
152
|
+
// Public API
|
|
153
|
+
//
|
|
144
154
|
|
|
145
|
-
|
|
155
|
+
constructor(props: DeviceProps) {
|
|
156
|
+
super(props);
|
|
146
157
|
|
|
147
158
|
// If attaching to an already attached context, return the attached device
|
|
148
159
|
// @ts-expect-error device is attached to context
|
|
149
|
-
const device: WebGLDevice | undefined =
|
|
160
|
+
const device: WebGLDevice | undefined = props.gl?.device;
|
|
150
161
|
if (device) {
|
|
151
|
-
|
|
152
|
-
log.error('recursive context');
|
|
153
|
-
throw new Error('recursive context');
|
|
154
|
-
}
|
|
155
|
-
return device;
|
|
162
|
+
throw new Error(`WebGL context already attached to device ${device.id}`);
|
|
156
163
|
}
|
|
157
164
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
165
|
+
// Create and instrument context
|
|
166
|
+
this.canvasContext = new WebGLCanvasContext(this, props);
|
|
167
|
+
|
|
168
|
+
this.lost = new Promise<{reason: 'destroyed'; message: string}>((resolve) => {
|
|
169
|
+
this._resolveContextLost = resolve;
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
const onContextLost = (event: Event) =>
|
|
173
|
+
this._resolveContextLost?.({
|
|
174
|
+
reason: 'destroyed',
|
|
175
|
+
message: 'Computer entered sleep mode, or too many apps or browser tabs are using the GPU.'
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
let gl: WebGLRenderingContext | WebGL2RenderingContext | null = props.gl;
|
|
179
|
+
gl =
|
|
180
|
+
gl ||
|
|
181
|
+
(isBrowser() ? createBrowserContext(this.canvasContext.canvas, {...props, onContextLost}) : null);
|
|
182
|
+
gl = gl || (!isBrowser() ? createHeadlessContext({...props, onContextLost}) : null);
|
|
183
|
+
|
|
184
|
+
if (!gl) {
|
|
185
|
+
throw new Error('WebGL context creation failed');
|
|
186
|
+
}
|
|
161
187
|
|
|
162
|
-
|
|
163
|
-
this.gl =
|
|
188
|
+
this.handle = gl;
|
|
189
|
+
this.gl = this.handle;
|
|
164
190
|
this.gl2 = this.gl as WebGL2RenderingContext;
|
|
165
191
|
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);
|
|
192
|
+
this.isWebGL1 = !this.isWebGL2;
|
|
179
193
|
|
|
180
|
-
//
|
|
194
|
+
// luma Device fields
|
|
181
195
|
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
196
|
|
|
197
|
+
// @ts-expect-error Link webgl context back to device
|
|
198
|
+
this.gl.device = this;
|
|
199
|
+
// @ts-expect-error Annotate webgl context to handle
|
|
200
|
+
this.gl._version = this.isWebGL2 ? 2 : 1;
|
|
201
|
+
|
|
202
|
+
// Add subset of WebGL2 methods to WebGL1 context
|
|
188
203
|
polyfillContext(this.gl);
|
|
189
|
-
log.probe(LOG_LEVEL, 'polyfilled context')();
|
|
190
204
|
|
|
191
205
|
// Install context state tracking
|
|
206
|
+
// @ts-expect-error - hidden parameters
|
|
207
|
+
const {enable = true, copyState = false} = props;
|
|
192
208
|
trackContextState(this.gl, {
|
|
193
|
-
|
|
194
|
-
|
|
209
|
+
enable,
|
|
210
|
+
copyState,
|
|
211
|
+
log: (...args: any[]) => log.log(1, ...args)()
|
|
195
212
|
});
|
|
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
|
-
// }
|
|
213
|
+
|
|
214
|
+
// DEBUG contexts: Add debug instrumentation to the context, force log level to at least 1
|
|
215
|
+
if (isBrowser() && props.debug) {
|
|
216
|
+
this.gl = makeDebugContext(this.gl, {...props, webgl2: this.isWebGL2, throwOnError: true});
|
|
217
|
+
this.gl2 = this.gl as WebGL2RenderingContext;
|
|
218
|
+
this.debug = true;
|
|
219
|
+
log.level = Math.max(log.level, 1);
|
|
220
|
+
log.warn('WebGL debug mode activated. Performance reduced.')();
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// @ts-expect-error spector not on props
|
|
224
|
+
if (isBrowser() && props.spector) {
|
|
225
|
+
const canvas = this.handle.canvas || (props.canvas as HTMLCanvasElement);
|
|
226
|
+
this.spector = initializeSpectorJS({...this.props, canvas});
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Log some debug info about the newly created context
|
|
230
|
+
const message = `\
|
|
231
|
+
Created ${this.info.type}${this.debug ? ' debug' : ''} context: \
|
|
232
|
+
${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`;
|
|
233
|
+
log.probe(LOG_LEVEL, message)();
|
|
224
234
|
|
|
225
235
|
log.groupEnd(LOG_LEVEL)();
|
|
226
|
-
this._state = 'initialized';
|
|
227
236
|
}
|
|
228
237
|
|
|
229
238
|
/**
|
|
@@ -231,169 +240,187 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
231
240
|
* @note Has no effect for browser contexts, there is no browser API for destroying contexts
|
|
232
241
|
*/
|
|
233
242
|
destroy() {
|
|
234
|
-
|
|
243
|
+
const ext = this.gl.getExtension('STACKGL_destroy_context');
|
|
235
244
|
if (ext) {
|
|
236
245
|
ext.destroy();
|
|
237
246
|
}
|
|
238
|
-
// ext = this.gl.getExtension('WEBGL_lose_context');
|
|
239
|
-
// if (ext) {
|
|
240
|
-
// // TODO - disconnect context lost callbacks?
|
|
241
|
-
// ext.loseContext();
|
|
242
|
-
// }
|
|
243
247
|
}
|
|
244
248
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
* Resize the canvas' drawing buffer.
|
|
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
|
|
258
|
-
*/
|
|
259
|
-
resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
|
|
260
|
-
// Resize browser context .
|
|
261
|
-
if (this.gl.canvas) {
|
|
262
|
-
const devicePixelRatio = getDevicePixelRatio(options?.useDevicePixels);
|
|
263
|
-
setDevicePixelRatio(this.gl, devicePixelRatio, options);
|
|
264
|
-
return;
|
|
265
|
-
}
|
|
249
|
+
get isLost(): boolean {
|
|
250
|
+
return this.gl.isContextLost();
|
|
251
|
+
}
|
|
266
252
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
if (ext && options && `width` in options && `height` in options) {
|
|
270
|
-
ext.resize(options.width, options.height);
|
|
271
|
-
}
|
|
253
|
+
getSize(): [number, number] {
|
|
254
|
+
return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
|
|
272
255
|
}
|
|
273
256
|
|
|
274
|
-
|
|
275
|
-
return
|
|
257
|
+
isTextureFormatSupported(format: TextureFormat): boolean {
|
|
258
|
+
return isTextureFormatSupported(this.gl, format);
|
|
276
259
|
}
|
|
277
260
|
|
|
278
|
-
|
|
279
|
-
return
|
|
261
|
+
isTextureFormatFilterable(format: TextureFormat): boolean {
|
|
262
|
+
return isTextureFormatFilterable(this.gl, format);
|
|
280
263
|
}
|
|
281
264
|
|
|
282
|
-
|
|
283
|
-
return
|
|
265
|
+
isTextureFormatRenderable(format: TextureFormat): boolean {
|
|
266
|
+
return isTextureFormatRenderable(this.gl, format);
|
|
284
267
|
}
|
|
285
268
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
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();
|
|
269
|
+
// WEBGL SPECIFIC METHODS
|
|
270
|
+
|
|
271
|
+
/** Returns a WebGL2RenderingContext or throws an error */
|
|
272
|
+
assertWebGL2(): WebGL2RenderingContext {
|
|
273
|
+
if (!this.gl2) {
|
|
274
|
+
throw new Error('Requires WebGL2');
|
|
296
275
|
}
|
|
276
|
+
return this.gl2;
|
|
297
277
|
}
|
|
298
278
|
|
|
299
|
-
//
|
|
279
|
+
// IMPLEMENTATION OF ABSTRACT DEVICE
|
|
300
280
|
|
|
301
|
-
|
|
302
|
-
|
|
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);
|
|
281
|
+
createCanvasContext(props?: CanvasContextProps): CanvasContext {
|
|
282
|
+
throw new Error('WebGL only supports a single canvas');
|
|
310
283
|
}
|
|
311
|
-
}
|
|
312
284
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
Device, DeviceInfo, DeviceLimits,
|
|
317
|
-
Buffer, BufferProps
|
|
318
|
-
} from '@luma.gl/api';
|
|
319
|
-
|
|
320
|
-
import {getWebGLDeviceInfo} from '../converters/webgl-device-info';
|
|
321
|
-
import {getWebGLLimits} from '../converters/webgl-limits';
|
|
322
|
-
import {getWebGLFeatures} from '../converters/webgl-features';
|
|
285
|
+
_createBuffer(props: BufferProps): WEBGLBuffer {
|
|
286
|
+
return new ClassicBuffer(this, props);
|
|
287
|
+
}
|
|
323
288
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
readonly gl: WebGLRenderingContext;
|
|
327
|
-
readonly gl2: WebGL2RenderingContext | null;
|
|
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;
|
|
338
|
-
}
|
|
339
|
-
return Boolean(gl);
|
|
289
|
+
_createTexture(props: TextureProps): WEBGLTexture {
|
|
290
|
+
return new WEBGLTexture(this, props);
|
|
340
291
|
}
|
|
341
292
|
|
|
342
|
-
|
|
343
|
-
|
|
293
|
+
createExternalTexture(props: ExternalTextureProps): ExternalTexture {
|
|
294
|
+
throw new Error('createExternalTexture() not implemented'); // return new Program(props);
|
|
295
|
+
}
|
|
344
296
|
|
|
345
|
-
|
|
346
|
-
this
|
|
347
|
-
this.gl = gl;
|
|
348
|
-
this.gl2 = gl instanceof WebGL2RenderingContext ? gl : null;
|
|
349
|
-
this.canvas = canvas;
|
|
297
|
+
createSampler(props: SamplerProps): WEBGLSampler {
|
|
298
|
+
return new WEBGLSampler(this, props);
|
|
350
299
|
}
|
|
351
300
|
|
|
352
|
-
|
|
353
|
-
|
|
301
|
+
createShader(props: ShaderProps): WEBGLShader {
|
|
302
|
+
return new WEBGLShader(this, props);
|
|
354
303
|
}
|
|
355
304
|
|
|
356
|
-
|
|
357
|
-
return
|
|
305
|
+
createFramebuffer(props: FramebufferProps): WEBGLFramebuffer {
|
|
306
|
+
return new WEBGLFramebuffer(this, props);
|
|
358
307
|
}
|
|
359
308
|
|
|
360
|
-
|
|
361
|
-
return
|
|
309
|
+
createRenderPipeline(props: RenderPipelineProps): WEBGLRenderPipeline {
|
|
310
|
+
return new WEBGLRenderPipeline(this, props);
|
|
362
311
|
}
|
|
363
312
|
|
|
364
|
-
|
|
365
|
-
return
|
|
313
|
+
beginRenderPass(props: RenderPassProps): WEBGLRenderPass {
|
|
314
|
+
return new WEBGLRenderPass(this, props);
|
|
366
315
|
}
|
|
367
316
|
|
|
368
|
-
|
|
369
|
-
|
|
317
|
+
createComputePipeline(props?: ComputePipelineProps): ComputePipeline {
|
|
318
|
+
throw new Error('ComputePipeline not supported in WebGL');
|
|
370
319
|
}
|
|
371
320
|
|
|
372
|
-
|
|
373
|
-
|
|
321
|
+
beginComputePass(props: ComputePassProps): ComputePass {
|
|
322
|
+
throw new Error('compute shaders not supported in WebGL');
|
|
374
323
|
}
|
|
375
324
|
|
|
376
|
-
|
|
377
|
-
|
|
325
|
+
private renderPass: WEBGLRenderPass | null = null;
|
|
326
|
+
|
|
327
|
+
getDefaultRenderPass(): WEBGLRenderPass {
|
|
328
|
+
this.renderPass =
|
|
329
|
+
this.renderPass ||
|
|
330
|
+
this.beginRenderPass({
|
|
331
|
+
framebuffer: this.canvasContext.getCurrentFramebuffer()
|
|
332
|
+
});
|
|
333
|
+
return this.renderPass;
|
|
378
334
|
}
|
|
379
335
|
|
|
380
|
-
|
|
381
|
-
|
|
336
|
+
/**
|
|
337
|
+
* Offscreen Canvas Support: Commit the frame
|
|
338
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
|
|
339
|
+
* Chrome's offscreen canvas does not require gl.commit
|
|
340
|
+
*/
|
|
341
|
+
submit(): void {
|
|
342
|
+
this.renderPass?.endPass();
|
|
343
|
+
this.renderPass = null;
|
|
344
|
+
// this.canvasContext.commit();
|
|
382
345
|
}
|
|
383
346
|
|
|
384
|
-
|
|
385
|
-
|
|
347
|
+
//
|
|
348
|
+
// WebGL-only API (not part of `Device` API)
|
|
349
|
+
//
|
|
350
|
+
|
|
351
|
+
/** WebGL1 typed context. Can always be used. */
|
|
352
|
+
readonly gl: WebGLRenderingContext;
|
|
353
|
+
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
354
|
+
readonly gl2: WebGL2RenderingContext | null = null;
|
|
355
|
+
readonly debug: boolean = false;
|
|
356
|
+
|
|
357
|
+
/** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
|
|
358
|
+
readonly isWebGL1: boolean;
|
|
359
|
+
/** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
|
|
360
|
+
readonly isWebGL2: boolean;
|
|
361
|
+
|
|
362
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
363
|
+
readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
|
|
364
|
+
/** State used by luma.gl classes */
|
|
365
|
+
readonly _extensions: Record<string, any> = {};
|
|
366
|
+
_polyfilled: boolean = false;
|
|
367
|
+
|
|
368
|
+
/** Instance of Spector.js (if initialized) */
|
|
369
|
+
spector;
|
|
370
|
+
|
|
371
|
+
private _webglLimits?: WebGLLimits;
|
|
372
|
+
|
|
373
|
+
/** Return WebGL specific limits */
|
|
374
|
+
get webglLimits() : WebGLLimits {
|
|
375
|
+
this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
|
|
376
|
+
return this._webglLimits;
|
|
386
377
|
}
|
|
387
378
|
|
|
388
|
-
|
|
389
|
-
|
|
379
|
+
/**
|
|
380
|
+
* Loses the context
|
|
381
|
+
* @note Triggers context loss, mainly for testing
|
|
382
|
+
* @todo Promote to `Device` API?
|
|
383
|
+
*/
|
|
384
|
+
loseDevice(): void {
|
|
385
|
+
const ext = this.gl.getExtension('WEBGL_lose_context');
|
|
386
|
+
if (ext) {
|
|
387
|
+
ext.loseContext();
|
|
388
|
+
}
|
|
389
|
+
// loseContext should trigger context loss callback but
|
|
390
|
+
this._resolveContextLost?.({
|
|
391
|
+
reason: 'destroyed',
|
|
392
|
+
message: 'Application triggered context loss'
|
|
393
|
+
});
|
|
390
394
|
}
|
|
391
395
|
|
|
396
|
+
/** Save current WebGL context state onto an internal stack */
|
|
397
|
+
pushState(): void {
|
|
398
|
+
pushContextState(this.gl);
|
|
399
|
+
}
|
|
392
400
|
|
|
393
|
-
|
|
401
|
+
/** Restores previously saved context state */
|
|
402
|
+
popState(): void {
|
|
403
|
+
popContextState(this.gl);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
394
406
|
|
|
395
|
-
|
|
407
|
+
/** Check if supplied parameter is a WebGLRenderingContext */
|
|
408
|
+
function isWebGL(gl: any): boolean {
|
|
409
|
+
if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
|
|
410
|
+
return true;
|
|
411
|
+
}
|
|
412
|
+
if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
|
|
413
|
+
return true;
|
|
414
|
+
}
|
|
415
|
+
// Look for debug contexts, headless gl etc
|
|
416
|
+
return Boolean(gl && Number.isFinite(gl._version));
|
|
417
|
+
}
|
|
396
418
|
|
|
397
|
-
|
|
419
|
+
/** Check if supplied parameter is a WebGL2RenderingContext */
|
|
420
|
+
function isWebGL2(gl: any): boolean {
|
|
421
|
+
if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
|
|
422
|
+
return true;
|
|
423
|
+
}
|
|
424
|
+
// Look for debug contexts, headless gl etc
|
|
425
|
+
return Boolean(gl && gl._version === 2);
|
|
398
426
|
}
|
|
399
|
-
*/
|