@luma.gl/webgl 8.6.0-alpha.5 → 9.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -67
- package/dist/adapter/converters/device-parameters.d.ts +17 -0
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
- package/dist/adapter/converters/device-parameters.js.map +1 -0
- package/dist/{classes → adapter/converters}/renderbuffer-formats.d.ts +0 -0
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -0
- package/dist/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/adapter/converters/sampler-parameters.d.ts +19 -0
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/sampler-parameters.js +208 -0
- package/dist/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/adapter/converters/texture-formats.d.ts +93 -0
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -0
- package/dist/adapter/converters/texture-formats.js +954 -0
- package/dist/adapter/converters/texture-formats.js.map +1 -0
- package/dist/adapter/converters/vertex-formats.d.ts +4 -0
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -0
- package/dist/adapter/converters/vertex-formats.js +35 -0
- package/dist/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/adapter/device-helpers/device-features.d.ts +3 -6
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +27 -48
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +1 -0
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +1 -0
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +11 -0
- package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/attribute-utils.js +81 -0
- package/dist/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +55 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.js +306 -0
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.d.ts +0 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/adapter/helpers/set-uniform.d.ts +4 -0
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -0
- package/dist/adapter/helpers/set-uniform.js +115 -0
- package/dist/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/adapter/helpers/uniforms.d.ts +26 -0
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -0
- package/dist/adapter/helpers/uniforms.js +99 -0
- package/dist/adapter/helpers/uniforms.js.map +1 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +5 -0
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
- package/dist/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +40 -0
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -0
- package/dist/{esm/classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +38 -72
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/{classes → adapter/objects}/webgl-resource.d.ts +15 -14
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -0
- package/dist/{classes → adapter/objects}/webgl-resource.js +7 -3
- package/dist/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +27 -0
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -0
- package/dist/adapter/objects/webgl-vertex-array-object.js +84 -0
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/adapter/resources/webgl-buffer.d.ts +27 -0
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-buffer.js +164 -0
- package/dist/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts +25 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.js +65 -0
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts +18 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.js +53 -0
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.d.ts +1 -0
- package/dist/adapter/resources/webgl-external-texture.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{es5/helpers/program-bindings.js.map → adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +40 -0
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-framebuffer.js +265 -0
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts +11 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.js +19 -0
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.js +400 -0
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/webgl-sampler.d.ts +20 -0
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-sampler.js +50 -0
- package/dist/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/adapter/{webgl-shader.d.ts → resources/webgl-shader.d.ts} +3 -6
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -0
- package/dist/{esm/adapter → adapter/resources}/webgl-shader.js +13 -20
- package/dist/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/adapter/resources/webgl-texture.d.ts +193 -0
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -0
- package/dist/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
- package/dist/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +36 -0
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -0
- package/dist/adapter/webgl-canvas-context.js +54 -0
- package/dist/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +58 -76
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +184 -111
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +32 -0
- package/dist/classic/accessor.d.ts.map +1 -0
- package/dist/{classes → classic}/accessor.js +33 -1
- package/dist/classic/accessor.js.map +1 -0
- package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
- package/dist/classic/buffer.d.ts.map +1 -0
- package/dist/{esm/classes/webgl-buffer.js → classic/buffer.js} +53 -51
- package/dist/classic/buffer.js.map +1 -0
- package/dist/{webgl-utils → classic}/typed-array-utils.d.ts +3 -2
- package/dist/classic/typed-array-utils.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → classic}/typed-array-utils.js +0 -0
- package/dist/classic/typed-array-utils.js.map +1 -0
- package/dist/context/context/context-state.d.ts.map +1 -1
- package/dist/context/context/context-state.js +1 -1
- package/dist/context/context/context-state.js.map +1 -1
- package/dist/context/context/create-context.d.ts +1 -0
- package/dist/context/context/create-context.d.ts.map +1 -1
- package/dist/context/context/create-context.js +12 -0
- package/dist/context/context/create-context.js.map +1 -1
- package/dist/context/context/device-pixels.d.ts +1 -1
- package/dist/context/context/device-pixels.d.ts.map +1 -1
- package/dist/context/context/device-pixels.js.map +1 -1
- package/dist/context/debug/spector.d.ts +18 -0
- package/dist/context/debug/spector.d.ts.map +1 -0
- package/dist/context/debug/spector.js +76 -0
- package/dist/context/debug/spector.js.map +1 -0
- package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
- package/dist/context/debug/webgl-developer-tools.js +121 -0
- package/dist/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/context/parameters/unified-parameter-api.d.ts +3 -2
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +4 -4
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +4 -3
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +25 -11
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +37 -5
- package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
- package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/es5/adapter/converters/sampler-parameters.js +226 -0
- package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/es5/adapter/converters/texture-formats.js +1031 -0
- package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
- package/dist/es5/adapter/converters/vertex-formats.js +45 -0
- package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-features.js +46 -54
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
- package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +184 -87
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/es5/adapter/helpers/set-uniform.js +125 -0
- package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/es5/adapter/helpers/uniforms.js +112 -0
- package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
- package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
- package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
- package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +345 -0
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +25 -45
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +505 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
- package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +12 -18
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +336 -260
- package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/es5/adapter/webgl-canvas-context.js +97 -0
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/es5/adapter/webgl-device.js +253 -133
- package/dist/es5/adapter/webgl-device.js.map +1 -1
- package/dist/es5/{classes → classic}/accessor.js +25 -1
- package/dist/es5/classic/accessor.js.map +1 -0
- package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +74 -66
- package/dist/es5/classic/buffer.js.map +1 -0
- package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
- package/dist/es5/classic/typed-array-utils.js.map +1 -0
- package/dist/es5/context/context/context-state.js +1 -1
- package/dist/es5/context/context/context-state.js.map +1 -1
- package/dist/es5/context/context/create-context.js +12 -0
- package/dist/es5/context/context/create-context.js.map +1 -1
- package/dist/es5/context/context/device-pixels.js.map +1 -1
- package/dist/es5/context/debug/spector.js +133 -0
- package/dist/es5/context/debug/spector.js.map +1 -0
- package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
- package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/es5/context/parameters/unified-parameter-api.js +7 -5
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-context.js +4 -3
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/es5/context/state-tracker/track-context-state.js +26 -11
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/index.js +65 -307
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +1 -41
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
- package/dist/es5/types/webgl.js.map +1 -0
- package/dist/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
- package/dist/esm/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/esm/adapter/converters/sampler-parameters.js +208 -0
- package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/esm/adapter/converters/texture-formats.js +954 -0
- package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
- package/dist/esm/adapter/converters/vertex-formats.js +35 -0
- package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-features.js +27 -48
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
- package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js +306 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/esm/adapter/helpers/set-uniform.js +115 -0
- package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/esm/adapter/helpers/uniforms.js +99 -0
- package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
- package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/esm/{classes → adapter/objects}/webgl-resource.js +7 -3
- package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
- package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +265 -0
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js +19 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +400 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
- package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/{adapter → esm/adapter/resources}/webgl-shader.js +13 -20
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
- package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/esm/adapter/webgl-canvas-context.js +54 -0
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/esm/adapter/webgl-device.js +184 -111
- package/dist/esm/adapter/webgl-device.js.map +1 -1
- package/dist/esm/{classes → classic}/accessor.js +33 -1
- package/dist/esm/classic/accessor.js.map +1 -0
- package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +53 -51
- package/dist/esm/classic/buffer.js.map +1 -0
- package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
- package/dist/esm/classic/typed-array-utils.js.map +1 -0
- package/dist/esm/context/context/context-state.js +1 -1
- package/dist/esm/context/context/context-state.js.map +1 -1
- package/dist/esm/context/context/create-context.js +12 -0
- package/dist/esm/context/context/create-context.js.map +1 -1
- package/dist/esm/context/context/device-pixels.js.map +1 -1
- package/dist/esm/context/debug/spector.js +76 -0
- package/dist/esm/context/debug/spector.js.map +1 -0
- package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
- package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/esm/context/parameters/unified-parameter-api.js +4 -4
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-context.js +4 -3
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/esm/context/state-tracker/track-context-state.js +25 -11
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/index.js +19 -31
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +2 -31
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/webgl.js +2 -0
- package/dist/esm/types/webgl.js.map +1 -0
- package/dist/index.d.ts +22 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -31
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -4
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +2 -31
- package/dist/init.js.map +1 -1
- package/dist/types/webgl.d.ts +144 -0
- package/dist/types/webgl.d.ts.map +1 -0
- package/dist/types/webgl.js +2 -0
- package/dist/types/webgl.js.map +1 -0
- package/package.json +5 -5
- package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +52 -9
- package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
- package/src/adapter/converters/sampler-parameters.ts +175 -0
- package/src/adapter/converters/texture-formats.ts +633 -0
- package/src/adapter/converters/vertex-formats.ts +22 -0
- package/src/adapter/device-helpers/device-features.ts +46 -123
- package/src/adapter/device-helpers/device-limits.ts +5 -2
- package/src/adapter/device-helpers/get-device-info.ts +8 -8
- package/src/adapter/helpers/attribute-utils.ts +61 -0
- package/src/adapter/helpers/get-shader-layout.ts +388 -0
- package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
- package/src/adapter/helpers/set-uniform.ts +87 -0
- package/src/adapter/helpers/uniforms.ts +110 -0
- package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
- package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
- package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
- package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
- package/src/adapter/resources/webgl-buffer.ts +219 -0
- package/src/adapter/resources/webgl-command-buffer.ts +94 -0
- package/src/adapter/resources/webgl-command-encoder.ts +58 -0
- package/src/adapter/resources/webgl-external-texture.ts +92 -0
- package/src/adapter/resources/webgl-framebuffer.ts +279 -0
- package/src/adapter/resources/webgl-render-pass.ts +23 -0
- package/src/adapter/resources/webgl-render-pipeline.ts +413 -0
- package/src/adapter/resources/webgl-sampler.ts +54 -0
- package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +14 -20
- package/src/adapter/resources/webgl-texture.ts +1023 -0
- package/src/adapter/webgl-canvas-context.ts +74 -0
- package/src/adapter/webgl-device.ts +226 -275
- package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +50 -36
- package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +69 -77
- package/src/{webgl-utils → classic}/typed-array-utils.ts +3 -1
- package/src/context/context/context-state.ts +4 -2
- package/src/context/context/create-context.ts +28 -1
- package/src/context/context/device-pixels.ts +9 -4
- package/src/context/debug/spector.ts +92 -0
- package/src/context/debug/webgl-developer-tools.ts +162 -0
- package/src/context/parameters/unified-parameter-api.ts +6 -4
- package/src/context/parameters/webgl-parameter-tables.ts +38 -36
- package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
- package/src/context/polyfill/polyfill-context.ts +4 -3
- package/src/context/state-tracker/deep-array-equal.ts +1 -1
- package/src/context/state-tracker/track-context-state.ts +27 -20
- package/src/index.ts +33 -102
- package/src/init.ts +2 -46
- package/src/types/webgl.ts +283 -0
- package/dist/_deprecated/context-api.d.ts +0 -85
- package/dist/_deprecated/context-api.d.ts.map +0 -1
- package/dist/_deprecated/context-api.js +0 -76
- package/dist/_deprecated/context-api.js.map +0 -1
- package/dist/_deprecated/features.d.ts +0 -27
- package/dist/_deprecated/features.d.ts.map +0 -1
- package/dist/_deprecated/features.js +0 -111
- package/dist/_deprecated/features.js.map +0 -1
- package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
- package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
- package/dist/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
- package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
- package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
- package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/adapter/webgl-shader.d.ts.map +0 -1
- package/dist/adapter/webgl-shader.js.map +0 -1
- package/dist/classes/accessor.d.ts +0 -28
- package/dist/classes/accessor.d.ts.map +0 -1
- package/dist/classes/accessor.js.map +0 -1
- package/dist/classes/accessor.ts.disabled +0 -159
- package/dist/classes/clear.d.ts +0 -17
- package/dist/classes/clear.d.ts.map +0 -1
- package/dist/classes/clear.js +0 -105
- package/dist/classes/clear.js.map +0 -1
- package/dist/classes/copy-and-blit.d.ts +0 -86
- package/dist/classes/copy-and-blit.d.ts.map +0 -1
- package/dist/classes/copy-and-blit.js +0 -338
- package/dist/classes/copy-and-blit.js.map +0 -1
- package/dist/classes/framebuffer.d.ts +0 -139
- package/dist/classes/framebuffer.d.ts.map +0 -1
- package/dist/classes/framebuffer.js +0 -656
- package/dist/classes/framebuffer.js.map +0 -1
- package/dist/classes/program-configuration.d.ts +0 -24
- package/dist/classes/program-configuration.d.ts.map +0 -1
- package/dist/classes/program-configuration.js +0 -73
- package/dist/classes/program-configuration.js.map +0 -1
- package/dist/classes/program.d.ts +0 -66
- package/dist/classes/program.d.ts.map +0 -1
- package/dist/classes/program.js +0 -379
- package/dist/classes/program.js.map +0 -1
- package/dist/classes/query.d.ts +0 -27
- package/dist/classes/query.d.ts.map +0 -1
- package/dist/classes/query.js +0 -145
- package/dist/classes/query.js.map +0 -1
- package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
- package/dist/classes/renderbuffer-formats.js.map +0 -1
- package/dist/classes/renderbuffer.d.ts +0 -60
- package/dist/classes/renderbuffer.d.ts.map +0 -1
- package/dist/classes/renderbuffer.js.map +0 -1
- package/dist/classes/shader.d.ts +0 -42
- package/dist/classes/shader.d.ts.map +0 -1
- package/dist/classes/shader.js +0 -118
- package/dist/classes/shader.js.map +0 -1
- package/dist/classes/texture-2d.d.ts +0 -9
- package/dist/classes/texture-2d.d.ts.map +0 -1
- package/dist/classes/texture-2d.js +0 -36
- package/dist/classes/texture-2d.js.map +0 -1
- package/dist/classes/texture-3d.d.ts +0 -29
- package/dist/classes/texture-3d.d.ts.map +0 -1
- package/dist/classes/texture-3d.js +0 -76
- package/dist/classes/texture-3d.js.map +0 -1
- package/dist/classes/texture-cube.d.ts +0 -28
- package/dist/classes/texture-cube.d.ts.map +0 -1
- package/dist/classes/texture-cube.js +0 -130
- package/dist/classes/texture-cube.js.map +0 -1
- package/dist/classes/texture-formats.d.ts +0 -37
- package/dist/classes/texture-formats.d.ts.map +0 -1
- package/dist/classes/texture-formats.js +0 -98
- package/dist/classes/texture-formats.js.map +0 -1
- package/dist/classes/texture.d.ts +0 -123
- package/dist/classes/texture.d.ts.map +0 -1
- package/dist/classes/texture.js.map +0 -1
- package/dist/classes/transform-feedback.d.ts +0 -33
- package/dist/classes/transform-feedback.d.ts.map +0 -1
- package/dist/classes/transform-feedback.js +0 -198
- package/dist/classes/transform-feedback.js.map +0 -1
- package/dist/classes/uniform-buffer-layout.d.ts +0 -17
- package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
- package/dist/classes/uniform-buffer-layout.js +0 -104
- package/dist/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/classes/uniforms.d.ts +0 -37
- package/dist/classes/uniforms.d.ts.map +0 -1
- package/dist/classes/uniforms.js +0 -250
- package/dist/classes/uniforms.js.map +0 -1
- package/dist/classes/vertex-array-object.d.ts +0 -76
- package/dist/classes/vertex-array-object.d.ts.map +0 -1
- package/dist/classes/vertex-array-object.js +0 -261
- package/dist/classes/vertex-array-object.js.map +0 -1
- package/dist/classes/vertex-array.d.ts +0 -75
- package/dist/classes/vertex-array.d.ts.map +0 -1
- package/dist/classes/vertex-array.js +0 -408
- package/dist/classes/vertex-array.js.map +0 -1
- package/dist/classes/webgl-buffer.d.ts.map +0 -1
- package/dist/classes/webgl-buffer.js.map +0 -1
- package/dist/classes/webgl-resource.d.ts.map +0 -1
- package/dist/classes/webgl-resource.js.map +0 -1
- package/dist/context/context/get-canvas.d.ts +0 -13
- package/dist/context/context/get-canvas.d.ts.map +0 -1
- package/dist/context/context/get-canvas.js +0 -31
- package/dist/context/context/get-canvas.js.map +0 -1
- package/dist/context/context/resize-context.d.ts +0 -20
- package/dist/context/context/resize-context.d.ts.map +0 -1
- package/dist/context/context/resize-context.js +0 -15
- package/dist/context/context/resize-context.js.map +0 -1
- package/dist/context/parameters/webgl-parameters.d.ts +0 -144
- package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
- package/dist/context/parameters/webgl-parameters.js +0 -2
- package/dist/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/debug/debug-program-configuration.d.ts +0 -2
- package/dist/debug/debug-program-configuration.d.ts.map +0 -1
- package/dist/debug/debug-program-configuration.js +0 -40
- package/dist/debug/debug-program-configuration.js.map +0 -1
- package/dist/debug/debug-uniforms.d.ts +0 -12
- package/dist/debug/debug-uniforms.d.ts.map +0 -1
- package/dist/debug/debug-uniforms.js +0 -108
- package/dist/debug/debug-uniforms.js.map +0 -1
- package/dist/debug/debug-vertex-array.d.ts +0 -5
- package/dist/debug/debug-vertex-array.d.ts.map +0 -1
- package/dist/debug/debug-vertex-array.js +0 -118
- package/dist/debug/debug-vertex-array.js.map +0 -1
- package/dist/es5/_deprecated/context-api.js +0 -116
- package/dist/es5/_deprecated/context-api.js.map +0 -1
- package/dist/es5/_deprecated/features.js +0 -118
- package/dist/es5/_deprecated/features.js.map +0 -1
- package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
- package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/es5/adapter/webgl-shader.js.map +0 -1
- package/dist/es5/classes/accessor.d.ts +0 -28
- package/dist/es5/classes/accessor.js.map +0 -1
- package/dist/es5/classes/accessor.ts.disabled +0 -159
- package/dist/es5/classes/clear.js +0 -135
- package/dist/es5/classes/clear.js.map +0 -1
- package/dist/es5/classes/copy-and-blit.js +0 -382
- package/dist/es5/classes/copy-and-blit.js.map +0 -1
- package/dist/es5/classes/framebuffer.js +0 -807
- package/dist/es5/classes/framebuffer.js.map +0 -1
- package/dist/es5/classes/program-configuration.js +0 -119
- package/dist/es5/classes/program-configuration.js.map +0 -1
- package/dist/es5/classes/program.js +0 -471
- package/dist/es5/classes/program.js.map +0 -1
- package/dist/es5/classes/query.js +0 -222
- package/dist/es5/classes/query.js.map +0 -1
- package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
- package/dist/es5/classes/renderbuffer.js.map +0 -1
- package/dist/es5/classes/shader.js +0 -195
- package/dist/es5/classes/shader.js.map +0 -1
- package/dist/es5/classes/texture-2d.js.map +0 -1
- package/dist/es5/classes/texture-3d.js +0 -142
- package/dist/es5/classes/texture-3d.js.map +0 -1
- package/dist/es5/classes/texture-cube.js +0 -202
- package/dist/es5/classes/texture-cube.js.map +0 -1
- package/dist/es5/classes/texture-formats.js +0 -87
- package/dist/es5/classes/texture-formats.js.map +0 -1
- package/dist/es5/classes/texture.js.map +0 -1
- package/dist/es5/classes/transform-feedback.js +0 -267
- package/dist/es5/classes/transform-feedback.js.map +0 -1
- package/dist/es5/classes/uniform-buffer-layout.js +0 -130
- package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/es5/classes/uniforms.js +0 -232
- package/dist/es5/classes/uniforms.js.map +0 -1
- package/dist/es5/classes/vertex-array-object.js +0 -337
- package/dist/es5/classes/vertex-array-object.js.map +0 -1
- package/dist/es5/classes/vertex-array.js +0 -465
- package/dist/es5/classes/vertex-array.js.map +0 -1
- package/dist/es5/classes/webgl-buffer.js.map +0 -1
- package/dist/es5/classes/webgl-resource.js.map +0 -1
- package/dist/es5/context/context/get-canvas.js +0 -40
- package/dist/es5/context/context/get-canvas.js.map +0 -1
- package/dist/es5/context/context/resize-context.js +0 -23
- package/dist/es5/context/context/resize-context.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/es5/debug/debug-program-configuration.js +0 -76
- package/dist/es5/debug/debug-program-configuration.js.map +0 -1
- package/dist/es5/debug/debug-uniforms.js +0 -156
- package/dist/es5/debug/debug-uniforms.js.map +0 -1
- package/dist/es5/debug/debug-vertex-array.js +0 -126
- package/dist/es5/debug/debug-vertex-array.js.map +0 -1
- package/dist/es5/helpers/get-program-bindings.js.map +0 -1
- package/dist/es5/helpers/program-bindings.js +0 -2
- package/dist/es5/types/accessor.d.ts +0 -29
- package/dist/es5/webgl-utils/attribute-utils.js +0 -186
- package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/es5/webgl-utils/format-utils.js +0 -58
- package/dist/es5/webgl-utils/format-utils.js.map +0 -1
- package/dist/es5/webgl-utils/get-error.js +0 -49
- package/dist/es5/webgl-utils/get-error.js.map +0 -1
- package/dist/es5/webgl-utils/index.js +0 -74
- package/dist/es5/webgl-utils/index.js.map +0 -1
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
- package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/es5/webgl-utils/texture-utils.js +0 -61
- package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
- package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
- package/dist/esm/_deprecated/context-api.js +0 -76
- package/dist/esm/_deprecated/context-api.js.map +0 -1
- package/dist/esm/_deprecated/features.js +0 -111
- package/dist/esm/_deprecated/features.js.map +0 -1
- package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
- package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/esm/adapter/webgl-shader.js.map +0 -1
- package/dist/esm/classes/accessor.d.ts +0 -28
- package/dist/esm/classes/accessor.js.map +0 -1
- package/dist/esm/classes/clear.js +0 -105
- package/dist/esm/classes/clear.js.map +0 -1
- package/dist/esm/classes/copy-and-blit.js +0 -338
- package/dist/esm/classes/copy-and-blit.js.map +0 -1
- package/dist/esm/classes/framebuffer.js +0 -656
- package/dist/esm/classes/framebuffer.js.map +0 -1
- package/dist/esm/classes/program-configuration.js +0 -73
- package/dist/esm/classes/program-configuration.js.map +0 -1
- package/dist/esm/classes/program.js +0 -379
- package/dist/esm/classes/program.js.map +0 -1
- package/dist/esm/classes/query.js +0 -145
- package/dist/esm/classes/query.js.map +0 -1
- package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
- package/dist/esm/classes/renderbuffer.js.map +0 -1
- package/dist/esm/classes/shader.js +0 -118
- package/dist/esm/classes/shader.js.map +0 -1
- package/dist/esm/classes/texture-2d.js +0 -36
- package/dist/esm/classes/texture-2d.js.map +0 -1
- package/dist/esm/classes/texture-3d.js +0 -76
- package/dist/esm/classes/texture-3d.js.map +0 -1
- package/dist/esm/classes/texture-cube.js +0 -130
- package/dist/esm/classes/texture-cube.js.map +0 -1
- package/dist/esm/classes/texture-formats.js +0 -98
- package/dist/esm/classes/texture-formats.js.map +0 -1
- package/dist/esm/classes/texture.js.map +0 -1
- package/dist/esm/classes/transform-feedback.js +0 -198
- package/dist/esm/classes/transform-feedback.js.map +0 -1
- package/dist/esm/classes/uniform-buffer-layout.js +0 -104
- package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/esm/classes/uniforms.js +0 -250
- package/dist/esm/classes/uniforms.js.map +0 -1
- package/dist/esm/classes/vertex-array-object.js +0 -261
- package/dist/esm/classes/vertex-array-object.js.map +0 -1
- package/dist/esm/classes/vertex-array.js +0 -408
- package/dist/esm/classes/vertex-array.js.map +0 -1
- package/dist/esm/classes/webgl-buffer.js.map +0 -1
- package/dist/esm/classes/webgl-resource.js.map +0 -1
- package/dist/esm/context/context/get-canvas.js +0 -31
- package/dist/esm/context/context/get-canvas.js.map +0 -1
- package/dist/esm/context/context/resize-context.js +0 -15
- package/dist/esm/context/context/resize-context.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameters.js +0 -2
- package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/esm/debug/debug-program-configuration.js +0 -40
- package/dist/esm/debug/debug-program-configuration.js.map +0 -1
- package/dist/esm/debug/debug-uniforms.js +0 -108
- package/dist/esm/debug/debug-uniforms.js.map +0 -1
- package/dist/esm/debug/debug-vertex-array.js +0 -118
- package/dist/esm/debug/debug-vertex-array.js.map +0 -1
- package/dist/esm/helpers/get-program-bindings.js +0 -228
- package/dist/esm/helpers/get-program-bindings.js.map +0 -1
- package/dist/esm/helpers/program-bindings.js +0 -2
- package/dist/esm/types/accessor.d.ts +0 -29
- package/dist/esm/webgl-utils/attribute-utils.js +0 -182
- package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/esm/webgl-utils/format-utils.js +0 -45
- package/dist/esm/webgl-utils/format-utils.js.map +0 -1
- package/dist/esm/webgl-utils/get-error.js +0 -41
- package/dist/esm/webgl-utils/get-error.js.map +0 -1
- package/dist/esm/webgl-utils/index.js +0 -5
- package/dist/esm/webgl-utils/index.js.map +0 -1
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
- package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/esm/webgl-utils/texture-utils.js +0 -48
- package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
- package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
- package/dist/helpers/get-program-bindings.d.ts +0 -8
- package/dist/helpers/get-program-bindings.d.ts.map +0 -1
- package/dist/helpers/get-program-bindings.js +0 -228
- package/dist/helpers/get-program-bindings.js.map +0 -1
- package/dist/helpers/program-bindings.d.ts +0 -41
- package/dist/helpers/program-bindings.d.ts.map +0 -1
- package/dist/helpers/program-bindings.js +0 -2
- package/dist/types/accessor.d.ts +0 -29
- package/dist/webgl-utils/attribute-utils.d.ts +0 -18
- package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
- package/dist/webgl-utils/attribute-utils.js +0 -182
- package/dist/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
- package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
- package/dist/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/webgl-utils/format-utils.d.ts +0 -3
- package/dist/webgl-utils/format-utils.d.ts.map +0 -1
- package/dist/webgl-utils/format-utils.js +0 -45
- package/dist/webgl-utils/format-utils.js.map +0 -1
- package/dist/webgl-utils/get-error.d.ts +0 -3
- package/dist/webgl-utils/get-error.d.ts.map +0 -1
- package/dist/webgl-utils/get-error.js +0 -41
- package/dist/webgl-utils/get-error.js.map +0 -1
- package/dist/webgl-utils/index.d.ts +0 -5
- package/dist/webgl-utils/index.d.ts.map +0 -1
- package/dist/webgl-utils/index.js +0 -5
- package/dist/webgl-utils/index.js.map +0 -1
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
- package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
- package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
- package/dist/webgl-utils/request-animation-frame.js +0 -7
- package/dist/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/webgl-utils/texture-utils.d.ts +0 -15
- package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
- package/dist/webgl-utils/texture-utils.js +0 -48
- package/dist/webgl-utils/texture-utils.js.map +0 -1
- package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
- package/dist/webgl-utils/typed-array-utils.js.map +0 -1
- package/src/.DS_Store +0 -0
- package/src/_deprecated/context-api.ts +0 -146
- package/src/_deprecated/features.ts +0 -159
- package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
- package/src/classes/accessor.d.ts +0 -28
- package/src/classes/accessor.js +0 -129
- package/src/classes/accessor.ts.disabled +0 -159
- package/src/classes/clear.ts +0 -108
- package/src/classes/copy-and-blit.ts +0 -460
- package/src/classes/framebuffer.ts +0 -763
- package/src/classes/program-configuration.ts +0 -77
- package/src/classes/program.ts +0 -431
- package/src/classes/query.ts +0 -171
- package/src/classes/renderbuffer.ts +0 -154
- package/src/classes/shader.ts +0 -129
- package/src/classes/texture-2d.ts +0 -35
- package/src/classes/texture-3d.ts +0 -123
- package/src/classes/texture-cube.ts +0 -162
- package/src/classes/texture-formats.ts +0 -171
- package/src/classes/texture.ts +0 -965
- package/src/classes/transform-feedback.ts +0 -191
- package/src/classes/uniform-buffer-layout.ts +0 -113
- package/src/classes/uniforms.ts +0 -394
- package/src/classes/vertex-array-object.ts +0 -339
- package/src/classes/vertex-array.ts +0 -484
- package/src/context/context/get-canvas.ts +0 -37
- package/src/context/context/resize-context.ts +0 -37
- package/src/context/parameters/webgl-parameters.ts +0 -197
- package/src/debug/debug-program-configuration.ts +0 -32
- package/src/debug/debug-uniforms.ts +0 -100
- package/src/debug/debug-vertex-array.ts +0 -123
- package/src/helpers/get-program-bindings.ts +0 -244
- package/src/helpers/program-bindings.ts +0 -46
- package/src/types/accessor.d.ts +0 -29
- package/src/webgl-utils/attribute-utils.ts +0 -171
- package/src/webgl-utils/format-utils.ts +0 -43
- package/src/webgl-utils/get-error.ts +0 -56
- package/src/webgl-utils/index.ts +0 -12
- package/src/webgl-utils/request-animation-frame.ts +0 -14
- package/src/webgl-utils/texture-utils.ts +0 -60
|
@@ -1,123 +1,118 @@
|
|
|
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 {getDevicePixelRatio, setDevicePixelRatio} from '../context/context/device-pixels';
|
|
14
|
+
import {ContextState} from '../context/context/context-state';
|
|
7
15
|
import {createBrowserContext} from '../context/context/create-context';
|
|
8
|
-
import {getCanvas} from '../context/context/get-canvas';
|
|
9
|
-
import {isWebGL, isWebGL2} from '../context/context/webgl-checks';
|
|
10
16
|
import {getDeviceInfo} from './device-helpers/get-device-info';
|
|
11
|
-
import {getDeviceFeatures
|
|
17
|
+
import {getDeviceFeatures} from './device-helpers/device-features';
|
|
12
18
|
import {getDeviceLimits, getWebGLLimits, WebGLLimits} from './device-helpers/device-limits';
|
|
19
|
+
import WebGLCanvasContext from './webgl-canvas-context';
|
|
20
|
+
import {loadSpectorJS, initializeSpectorJS} from '../context/debug/spector';
|
|
21
|
+
import {loadWebGLDeveloperTools, makeDebugContext} from '../context/debug/webgl-developer-tools';
|
|
22
|
+
import {
|
|
23
|
+
isTextureFormatSupported,
|
|
24
|
+
isTextureFormatRenderable,
|
|
25
|
+
isTextureFormatFilterable
|
|
26
|
+
} from './converters/texture-formats';
|
|
13
27
|
|
|
14
28
|
// 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;
|
|
29
|
+
import type {
|
|
30
|
+
BufferProps,
|
|
31
|
+
ShaderProps,
|
|
32
|
+
Sampler,
|
|
33
|
+
SamplerProps,
|
|
34
|
+
TextureProps,
|
|
35
|
+
ExternalTexture,
|
|
36
|
+
ExternalTextureProps,
|
|
37
|
+
FramebufferProps,
|
|
38
|
+
RenderPipeline,
|
|
39
|
+
RenderPipelineProps,
|
|
40
|
+
ComputePipeline,
|
|
41
|
+
ComputePipelineProps,
|
|
42
|
+
RenderPass,
|
|
43
|
+
RenderPassProps,
|
|
44
|
+
ComputePass,
|
|
45
|
+
ComputePassProps
|
|
46
|
+
} from '@luma.gl/api';
|
|
70
47
|
|
|
71
|
-
|
|
72
|
-
|
|
48
|
+
import ClassicBuffer from '../classic/buffer';
|
|
49
|
+
import WEBGLBuffer from './resources/webgl-buffer';
|
|
50
|
+
import WEBGLShader from './resources/webgl-shader';
|
|
51
|
+
import WEBGLSampler from './resources/webgl-sampler';
|
|
52
|
+
import WEBGLTexture from './resources/webgl-texture';
|
|
53
|
+
import WEBGLFramebuffer from './resources/webgl-framebuffer';
|
|
54
|
+
import WEBGLRenderPass from './resources/webgl-render-pass';
|
|
55
|
+
import WEBGLRenderPipeline from './resources/webgl-render-pipeline';
|
|
73
56
|
|
|
74
|
-
|
|
75
|
-
return glToContextMap.get(gl);
|
|
76
|
-
}
|
|
57
|
+
const LOG_LEVEL = 1;
|
|
77
58
|
|
|
78
59
|
let counter = 0;
|
|
79
60
|
|
|
80
61
|
/** WebGPU style Device API for a WebGL context */
|
|
81
62
|
export default class WebGLDevice extends Device implements ContextState {
|
|
82
|
-
//
|
|
63
|
+
// Public API
|
|
64
|
+
|
|
65
|
+
static type: string = 'webgl';
|
|
66
|
+
|
|
67
|
+
static isSupported(): boolean {
|
|
68
|
+
return typeof WebGLRenderingContext !== 'undefined';
|
|
69
|
+
}
|
|
83
70
|
|
|
84
|
-
/** A set like interface to test features */
|
|
85
|
-
readonly features: Set<Feature>;
|
|
86
|
-
readonly limits: DeviceLimits;
|
|
87
71
|
readonly info: DeviceInfo;
|
|
72
|
+
readonly canvasContext: WebGLCanvasContext;
|
|
73
|
+
readonly lost: Promise<{reason: 'destroyed'; message: string}>;
|
|
74
|
+
readonly handle: WebGLRenderingContext;
|
|
88
75
|
|
|
89
|
-
|
|
90
|
-
|
|
76
|
+
get features(): Set<DeviceFeature> {
|
|
77
|
+
this._features = this._features || getDeviceFeatures(this.gl);
|
|
78
|
+
return this._features;
|
|
79
|
+
}
|
|
91
80
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
81
|
+
get limits(): DeviceLimits {
|
|
82
|
+
this._limits = this._limits || getDeviceLimits(this.gl);
|
|
83
|
+
return this._limits;
|
|
84
|
+
}
|
|
95
85
|
|
|
96
86
|
// WebGL specific API
|
|
97
|
-
|
|
87
|
+
|
|
88
|
+
/** WebGL1 typed context. Can always be used. */
|
|
98
89
|
readonly gl: WebGLRenderingContext;
|
|
90
|
+
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
99
91
|
readonly gl2: WebGL2RenderingContext;
|
|
100
|
-
|
|
101
|
-
readonly offScreen: boolean = false;
|
|
92
|
+
readonly debug: boolean = false;
|
|
102
93
|
|
|
103
|
-
|
|
94
|
+
/** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
|
|
95
|
+
readonly isWebGL1: boolean;
|
|
96
|
+
/** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
|
|
97
|
+
readonly isWebGL2: boolean;
|
|
98
|
+
|
|
99
|
+
get webglLimits(): WebGLLimits {
|
|
100
|
+
this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
|
|
101
|
+
return this._webglLimits;
|
|
102
|
+
}
|
|
104
103
|
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
private _features: Set<DeviceFeature>;
|
|
105
|
+
private _limits: DeviceLimits;
|
|
106
|
+
private _webglLimits: WebGLLimits;
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
_state: 'uninitialized' | 'initializing' | 'initialized' = 'uninitialized';
|
|
108
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
110
109
|
readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
|
|
110
|
+
/** State used by luma.gl classes */
|
|
111
111
|
readonly _extensions: Record<string, any> = {};
|
|
112
112
|
_polyfilled: boolean = false;
|
|
113
113
|
|
|
114
|
-
/**
|
|
115
|
-
|
|
116
|
-
*/
|
|
117
|
-
static fromContext(gl: WebGLRenderingContext): WebGLDevice {
|
|
118
|
-
// @ts-expect-error
|
|
119
|
-
return gl.device as WebGLDevice;
|
|
120
|
-
}
|
|
114
|
+
/** Instance of Spector.js (if initialized) */
|
|
115
|
+
spector;
|
|
121
116
|
|
|
122
117
|
/**
|
|
123
118
|
* Get a device instance from a GL context
|
|
@@ -125,105 +120,98 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
125
120
|
* @param gl
|
|
126
121
|
* @returns
|
|
127
122
|
*/
|
|
128
|
-
static attach(
|
|
129
|
-
gl: Device | WebGLRenderingContext | WebGL2RenderingContext,
|
|
130
|
-
props?: WebGLDeviceProps
|
|
131
|
-
): WebGLDevice {
|
|
123
|
+
static attach(gl: Device | WebGLRenderingContext | WebGL2RenderingContext): WebGLDevice {
|
|
132
124
|
if (gl instanceof WebGLDevice) {
|
|
133
125
|
return gl;
|
|
134
126
|
}
|
|
127
|
+
// @ts-expect-error
|
|
128
|
+
if (gl?.device instanceof Device) {
|
|
129
|
+
// @ts-expect-error
|
|
130
|
+
return gl.device as WebGLDevice;
|
|
131
|
+
}
|
|
135
132
|
if (!isWebGL(gl)) {
|
|
136
133
|
throw new Error('Invalid WebGLRenderingContext');
|
|
137
134
|
}
|
|
138
|
-
return new WebGLDevice({
|
|
135
|
+
return new WebGLDevice({gl: gl as WebGLRenderingContext});
|
|
139
136
|
}
|
|
140
137
|
|
|
138
|
+
static async create(props?: DeviceProps): Promise<WebGLDevice> {
|
|
139
|
+
log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
|
|
141
140
|
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
// Wait for page to load. Only wait when props. canvas is string
|
|
142
|
+
// to avoid setting page onload callback unless necessary
|
|
143
|
+
if (typeof props.canvas === 'string') {
|
|
144
|
+
await CanvasContext.pageLoaded;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Load webgl and spector debug scripts from CDN if requested
|
|
148
|
+
if (props.debug) {
|
|
149
|
+
await loadWebGLDeveloperTools();
|
|
150
|
+
}
|
|
151
|
+
// @ts-expect-error spector not on props
|
|
152
|
+
if (props.spector) {
|
|
153
|
+
await loadSpectorJS();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
log.probe(LOG_LEVEL, 'DOM is loaded')();
|
|
157
|
+
return new WebGLDevice(props);
|
|
158
|
+
}
|
|
144
159
|
|
|
145
|
-
|
|
160
|
+
constructor(props: DeviceProps) {
|
|
161
|
+
super(props);
|
|
146
162
|
|
|
147
163
|
// If attaching to an already attached context, return the attached device
|
|
148
164
|
// @ts-expect-error device is attached to context
|
|
149
|
-
const device: WebGLDevice | undefined =
|
|
165
|
+
const device: WebGLDevice | undefined = props.gl?.device;
|
|
150
166
|
if (device) {
|
|
151
|
-
|
|
152
|
-
log.error('recursive context');
|
|
153
|
-
throw new Error('recursive context');
|
|
154
|
-
}
|
|
167
|
+
log.warn(`WebGL context already attached to device ${device.id}`);
|
|
155
168
|
return device;
|
|
156
169
|
}
|
|
157
170
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
props.canvas instanceof OffscreenCanvas;
|
|
171
|
+
// Create and instrument context
|
|
172
|
+
this.canvasContext = new WebGLCanvasContext(this, props);
|
|
161
173
|
|
|
162
|
-
|
|
163
|
-
this.gl =
|
|
174
|
+
this.handle = props.gl || createBrowserContext(this.canvasContext.canvas, props);
|
|
175
|
+
this.gl = this.handle;
|
|
164
176
|
this.gl2 = this.gl as WebGL2RenderingContext;
|
|
165
177
|
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);
|
|
178
|
+
this.isWebGL1 = !this.isWebGL2;
|
|
179
179
|
|
|
180
|
-
//
|
|
180
|
+
// luma Device fields
|
|
181
181
|
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
182
|
|
|
188
|
-
|
|
189
|
-
|
|
183
|
+
// @ts-expect-error Link webgl context back to device
|
|
184
|
+
this.gl.device = this;
|
|
185
|
+
// @ts-expect-error Annotate webgl context to handle
|
|
186
|
+
this.gl._version = this.isWebGL2 ? 2 : 1;
|
|
190
187
|
|
|
188
|
+
// Add subset of WebGL2 methods to WebGL1 context
|
|
189
|
+
polyfillContext(this.gl);
|
|
191
190
|
// Install context state tracking
|
|
192
|
-
trackContextState(this.gl, {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
// if (!makeDebugContext) {
|
|
215
|
-
// log.warn('WebGL debug mode not activated. import "@luma.gl/debug" to enable.')();
|
|
216
|
-
// } else {
|
|
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
|
-
// }
|
|
191
|
+
trackContextState(this.gl, {copyState: false, log: (...args: any[]) => log.log(1, ...args)()});
|
|
192
|
+
|
|
193
|
+
// DEBUG contexts: Add debug instrumentation to the context, force log level to at least 1
|
|
194
|
+
if (isBrowser() && props.debug) {
|
|
195
|
+
this.gl = makeDebugContext(this.gl, {...props, webgl2: this.isWebGL2, throwOnError: true});
|
|
196
|
+
this.gl2 = this.gl as WebGL2RenderingContext;
|
|
197
|
+
this.debug = true;
|
|
198
|
+
log.level = Math.max(log.level, 1);
|
|
199
|
+
log.warn('WebGL debug mode activated. Performance reduced.')();
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// @ts-expect-error spector not on props
|
|
203
|
+
if (isBrowser() && props.spector) {
|
|
204
|
+
const canvas = this.handle.canvas || (props.canvas as HTMLCanvasElement);
|
|
205
|
+
this.spector = initializeSpectorJS({...this.props, canvas});
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Log some debug info about the newly created context
|
|
209
|
+
const message = `\
|
|
210
|
+
Created ${this.info.type}${this.debug ? ' debug' : ''} context: \
|
|
211
|
+
${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`;
|
|
212
|
+
log.probe(LOG_LEVEL, message)();
|
|
224
213
|
|
|
225
214
|
log.groupEnd(LOG_LEVEL)();
|
|
226
|
-
this._state = 'initialized';
|
|
227
215
|
}
|
|
228
216
|
|
|
229
217
|
/**
|
|
@@ -242,158 +230,121 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
242
230
|
// }
|
|
243
231
|
}
|
|
244
232
|
|
|
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
|
-
}
|
|
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);
|
|
271
|
-
}
|
|
233
|
+
get isLost(): boolean {
|
|
234
|
+
return this.gl.isContextLost();
|
|
272
235
|
}
|
|
273
236
|
|
|
274
|
-
|
|
275
|
-
return
|
|
237
|
+
getSize(): [number, number] {
|
|
238
|
+
return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
|
|
276
239
|
}
|
|
277
240
|
|
|
278
|
-
|
|
279
|
-
return
|
|
241
|
+
isTextureFormatSupported(format: TextureFormat): boolean {
|
|
242
|
+
return isTextureFormatSupported(this.gl, format);
|
|
280
243
|
}
|
|
281
244
|
|
|
282
|
-
|
|
283
|
-
return
|
|
245
|
+
isTextureFormatFilterable(format: TextureFormat): boolean {
|
|
246
|
+
return isTextureFormatFilterable(this.gl, format);
|
|
284
247
|
}
|
|
285
248
|
|
|
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
|
-
}
|
|
249
|
+
isTextureFormatRenderable(format: TextureFormat): boolean {
|
|
250
|
+
return isTextureFormatRenderable(this.gl, format);
|
|
297
251
|
}
|
|
298
252
|
|
|
299
|
-
//
|
|
253
|
+
// WEBGL SPECIFIC METHODS
|
|
300
254
|
|
|
301
|
-
/**
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
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);
|
|
255
|
+
/** Returns a WebGL2RenderingContext or throws an error */
|
|
256
|
+
assertWebGL2(): WebGL2RenderingContext {
|
|
257
|
+
assert(this.isWebGL2, 'Requires WebGL2');
|
|
258
|
+
return this.gl2;
|
|
310
259
|
}
|
|
311
|
-
}
|
|
312
260
|
|
|
313
|
-
|
|
314
|
-
// prettier-ignore
|
|
315
|
-
import {
|
|
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';
|
|
261
|
+
// IMPLEMENTATION OF ABSTRACT DEVICE
|
|
323
262
|
|
|
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);
|
|
263
|
+
createCanvasContext(props?: CanvasContextProps): CanvasContext {
|
|
264
|
+
throw new Error('WebGL only supports a single canvas');
|
|
340
265
|
}
|
|
341
266
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
const gl = createGLContext(props);
|
|
346
|
-
this.handle =
|
|
347
|
-
this.gl = gl;
|
|
348
|
-
this.gl2 = gl instanceof WebGL2RenderingContext ? gl : null;
|
|
349
|
-
this.canvas = canvas;
|
|
267
|
+
_createBuffer(props: BufferProps): WEBGLBuffer {
|
|
268
|
+
return new ClassicBuffer(this, props);
|
|
350
269
|
}
|
|
351
270
|
|
|
352
|
-
|
|
353
|
-
|
|
271
|
+
_createTexture(props: TextureProps): WEBGLTexture {
|
|
272
|
+
return new WEBGLTexture(this, props);
|
|
354
273
|
}
|
|
355
274
|
|
|
356
|
-
|
|
357
|
-
return
|
|
275
|
+
createExternalTexture(props: ExternalTextureProps): ExternalTexture {
|
|
276
|
+
throw new Error('createExternalTexture() not implemented'); // return new Program(props);
|
|
358
277
|
}
|
|
359
278
|
|
|
360
|
-
|
|
361
|
-
return
|
|
279
|
+
createSampler(props: SamplerProps): WEBGLSampler {
|
|
280
|
+
return new WEBGLSampler(this, props);
|
|
362
281
|
}
|
|
363
282
|
|
|
364
|
-
|
|
365
|
-
return
|
|
283
|
+
createShader(props: ShaderProps): WEBGLShader {
|
|
284
|
+
return new WEBGLShader(this, props);
|
|
366
285
|
}
|
|
367
286
|
|
|
368
|
-
|
|
369
|
-
return new
|
|
287
|
+
createFramebuffer(props: FramebufferProps): WEBGLFramebuffer {
|
|
288
|
+
return new WEBGLFramebuffer(this, props);
|
|
370
289
|
}
|
|
371
290
|
|
|
372
|
-
|
|
373
|
-
return new
|
|
291
|
+
createRenderPipeline(props: RenderPipelineProps): WEBGLRenderPipeline {
|
|
292
|
+
return new WEBGLRenderPipeline(this, props);
|
|
374
293
|
}
|
|
375
294
|
|
|
376
|
-
|
|
377
|
-
return new
|
|
295
|
+
beginRenderPass(props: RenderPassProps): WEBGLRenderPass {
|
|
296
|
+
return new WEBGLRenderPass(this, props);
|
|
378
297
|
}
|
|
379
298
|
|
|
380
|
-
|
|
381
|
-
|
|
299
|
+
createComputePipeline(props?: ComputePipelineProps): ComputePipeline {
|
|
300
|
+
throw new Error('ComputePipeline not supported in WebGL');
|
|
382
301
|
}
|
|
383
302
|
|
|
384
|
-
|
|
385
|
-
|
|
303
|
+
beginComputePass(props: ComputePassProps): ComputePass {
|
|
304
|
+
throw new Error('compute shaders not supported in WebGL');
|
|
386
305
|
}
|
|
387
306
|
|
|
388
|
-
|
|
389
|
-
|
|
307
|
+
private renderPass: WEBGLRenderPass;
|
|
308
|
+
|
|
309
|
+
getDefaultRenderPass(): WEBGLRenderPass {
|
|
310
|
+
this.renderPass =
|
|
311
|
+
this.renderPass ||
|
|
312
|
+
this.beginRenderPass({
|
|
313
|
+
framebuffer: this.canvasContext.getCurrentFramebuffer()
|
|
314
|
+
});
|
|
315
|
+
return this.renderPass;
|
|
390
316
|
}
|
|
391
317
|
|
|
318
|
+
/**
|
|
319
|
+
* Offscreen Canvas Support: Commit the frame
|
|
320
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
|
|
321
|
+
* Chrome's offscreen canvas does not require gl.commit
|
|
322
|
+
*/
|
|
323
|
+
submit(): void {
|
|
324
|
+
this.renderPass.endPass();
|
|
325
|
+
this.renderPass = null;
|
|
326
|
+
// this.canvasContext.commit();
|
|
327
|
+
}
|
|
328
|
+
}
|
|
392
329
|
|
|
393
|
-
|
|
330
|
+
/** Check if supplied parameter is a WebGLRenderingContext */
|
|
331
|
+
function isWebGL(gl: any): boolean {
|
|
332
|
+
if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
// Look for debug contexts, headless gl etc
|
|
339
|
+
return Boolean(gl && Number.isFinite(gl._version));
|
|
340
|
+
}
|
|
394
341
|
|
|
395
|
-
_startFrame() {}
|
|
396
342
|
|
|
397
|
-
|
|
343
|
+
/** Check if supplied parameter is a WebGL2RenderingContext */
|
|
344
|
+
function isWebGL2(gl: any): boolean {
|
|
345
|
+
if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
|
|
346
|
+
return true;
|
|
347
|
+
}
|
|
348
|
+
// Look for debug contexts, headless gl etc
|
|
349
|
+
return Boolean(gl && gl._version === 2);
|
|
398
350
|
}
|
|
399
|
-
*/
|