@luma.gl/webgl 8.6.0-alpha.3 → 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/{esm/adapter/converters/set-device-parameters.js → adapter/converters/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/{esm/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/{esm/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/adapter/{webgl-shader.js → 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/{esm/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 -77
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +185 -113
- 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 +255 -135
- 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 +66 -238
- 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/{adapter/converters/set-device-parameters.js → esm/adapter/converters/device-parameters.js} +36 -5
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
- package/dist/{classes → esm/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/{classes → esm/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/esm/adapter/{webgl-shader.js → resources/webgl-shader.js} +13 -20
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/{classes/texture.js → esm/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 +185 -113
- 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 -29
- 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 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -29
- 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 +229 -285
- 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 -91
- package/src/init.ts +2 -46
- package/src/types/webgl.ts +283 -0
- 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/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/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/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,122 +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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
// TODO use weakmap instead of modifying context
|
|
70
|
-
const glToContextMap = new WeakMap<WebGLRenderingContext | WebGL2RenderingContext, WebGLDevice>();
|
|
71
|
-
|
|
72
|
-
export function getWebGLDevice(gl: WebGLRenderingContext | WebGL2RenderingContext): WebGLDevice | undefined {
|
|
73
|
-
return glToContextMap.get(gl);
|
|
74
|
-
}
|
|
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';
|
|
47
|
+
|
|
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';
|
|
56
|
+
|
|
57
|
+
const LOG_LEVEL = 1;
|
|
75
58
|
|
|
76
59
|
let counter = 0;
|
|
77
60
|
|
|
78
61
|
/** WebGPU style Device API for a WebGL context */
|
|
79
62
|
export default class WebGLDevice extends Device implements ContextState {
|
|
80
|
-
//
|
|
63
|
+
// Public API
|
|
64
|
+
|
|
65
|
+
static type: string = 'webgl';
|
|
66
|
+
|
|
67
|
+
static isSupported(): boolean {
|
|
68
|
+
return typeof WebGLRenderingContext !== 'undefined';
|
|
69
|
+
}
|
|
81
70
|
|
|
82
|
-
/** A set like interface to test features */
|
|
83
|
-
readonly features: Set<Feature>;
|
|
84
|
-
readonly limits: DeviceLimits;
|
|
85
71
|
readonly info: DeviceInfo;
|
|
72
|
+
readonly canvasContext: WebGLCanvasContext;
|
|
73
|
+
readonly lost: Promise<{reason: 'destroyed'; message: string}>;
|
|
74
|
+
readonly handle: WebGLRenderingContext;
|
|
86
75
|
|
|
87
|
-
|
|
88
|
-
|
|
76
|
+
get features(): Set<DeviceFeature> {
|
|
77
|
+
this._features = this._features || getDeviceFeatures(this.gl);
|
|
78
|
+
return this._features;
|
|
79
|
+
}
|
|
89
80
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
81
|
+
get limits(): DeviceLimits {
|
|
82
|
+
this._limits = this._limits || getDeviceLimits(this.gl);
|
|
83
|
+
return this._limits;
|
|
84
|
+
}
|
|
93
85
|
|
|
94
86
|
// WebGL specific API
|
|
95
|
-
|
|
87
|
+
|
|
88
|
+
/** WebGL1 typed context. Can always be used. */
|
|
96
89
|
readonly gl: WebGLRenderingContext;
|
|
90
|
+
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
97
91
|
readonly gl2: WebGL2RenderingContext;
|
|
98
|
-
|
|
99
|
-
|
|
92
|
+
readonly debug: boolean = false;
|
|
93
|
+
|
|
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;
|
|
100
98
|
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
get webglLimits(): WebGLLimits {
|
|
100
|
+
this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
|
|
101
|
+
return this._webglLimits;
|
|
102
|
+
}
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
private _features: Set<DeviceFeature>;
|
|
105
|
+
private _limits: DeviceLimits;
|
|
106
|
+
private _webglLimits: WebGLLimits;
|
|
106
107
|
|
|
107
|
-
|
|
108
|
-
_state: 'uninitialized' | 'initializing' | 'initialized' = 'uninitialized';
|
|
108
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
109
109
|
readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
|
|
110
|
+
/** State used by luma.gl classes */
|
|
110
111
|
readonly _extensions: Record<string, any> = {};
|
|
111
112
|
_polyfilled: boolean = false;
|
|
112
113
|
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
*/
|
|
116
|
-
static fromContext(gl: WebGLRenderingContext): WebGLDevice {
|
|
117
|
-
// @ts-expect-error
|
|
118
|
-
return gl.device as WebGLDevice;
|
|
119
|
-
}
|
|
114
|
+
/** Instance of Spector.js (if initialized) */
|
|
115
|
+
spector;
|
|
120
116
|
|
|
121
117
|
/**
|
|
122
118
|
* Get a device instance from a GL context
|
|
@@ -124,105 +120,98 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
124
120
|
* @param gl
|
|
125
121
|
* @returns
|
|
126
122
|
*/
|
|
127
|
-
static attach(
|
|
128
|
-
gl: Device | WebGLRenderingContext | WebGL2RenderingContext,
|
|
129
|
-
props?: WebGLDeviceProps
|
|
130
|
-
): WebGLDevice {
|
|
123
|
+
static attach(gl: Device | WebGLRenderingContext | WebGL2RenderingContext): WebGLDevice {
|
|
131
124
|
if (gl instanceof WebGLDevice) {
|
|
132
125
|
return gl;
|
|
133
126
|
}
|
|
127
|
+
// @ts-expect-error
|
|
128
|
+
if (gl?.device instanceof Device) {
|
|
129
|
+
// @ts-expect-error
|
|
130
|
+
return gl.device as WebGLDevice;
|
|
131
|
+
}
|
|
134
132
|
if (!isWebGL(gl)) {
|
|
135
133
|
throw new Error('Invalid WebGLRenderingContext');
|
|
136
134
|
}
|
|
137
|
-
return new WebGLDevice({
|
|
135
|
+
return new WebGLDevice({gl: gl as WebGLRenderingContext});
|
|
138
136
|
}
|
|
139
137
|
|
|
138
|
+
static async create(props?: DeviceProps): Promise<WebGLDevice> {
|
|
139
|
+
log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
|
|
140
140
|
|
|
141
|
-
|
|
142
|
-
|
|
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
|
+
}
|
|
143
146
|
|
|
144
|
-
|
|
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
|
+
}
|
|
159
|
+
|
|
160
|
+
constructor(props: DeviceProps) {
|
|
161
|
+
super(props);
|
|
145
162
|
|
|
146
163
|
// If attaching to an already attached context, return the attached device
|
|
147
164
|
// @ts-expect-error device is attached to context
|
|
148
|
-
const device: WebGLDevice | undefined =
|
|
165
|
+
const device: WebGLDevice | undefined = props.gl?.device;
|
|
149
166
|
if (device) {
|
|
150
|
-
|
|
151
|
-
log.error('recursive context');
|
|
152
|
-
throw new Error('recursive context');
|
|
153
|
-
}
|
|
167
|
+
log.warn(`WebGL context already attached to device ${device.id}`);
|
|
154
168
|
return device;
|
|
155
169
|
}
|
|
156
170
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
props.canvas instanceof OffscreenCanvas;
|
|
171
|
+
// Create and instrument context
|
|
172
|
+
this.canvasContext = new WebGLCanvasContext(this, props);
|
|
160
173
|
|
|
161
|
-
|
|
162
|
-
this.gl =
|
|
174
|
+
this.handle = props.gl || createBrowserContext(this.canvasContext.canvas, props);
|
|
175
|
+
this.gl = this.handle;
|
|
163
176
|
this.gl2 = this.gl as WebGL2RenderingContext;
|
|
164
177
|
this.isWebGL2 = isWebGL2(this.gl);
|
|
165
|
-
this.
|
|
166
|
-
// Avoid multiple instrumentations
|
|
167
|
-
// @ts-expect-error
|
|
168
|
-
if (this.gl.device) {
|
|
169
|
-
log.error('device already created');
|
|
170
|
-
throw new Error('device already created'); // ASSERT this device;
|
|
171
|
-
}
|
|
172
|
-
// @ts-expect-error
|
|
173
|
-
this.gl.device = this;
|
|
174
|
-
// @ts-ignore
|
|
175
|
-
this.gl._version = typeof WebGL2RenderingContext !== 'undefined' && this.gl instanceof WebGL2RenderingContext ? 2 : 1;
|
|
176
|
-
// TODO - move to weak map indexing
|
|
177
|
-
glToContextMap.set(this.gl, this);
|
|
178
|
+
this.isWebGL1 = !this.isWebGL2;
|
|
178
179
|
|
|
179
|
-
//
|
|
180
|
+
// luma Device fields
|
|
180
181
|
this.info = getDeviceInfo(this.gl);
|
|
181
|
-
// Log some debug info about the newly created context
|
|
182
|
-
// @ts-expect-error device is attached to context
|
|
183
|
-
const debug = this.gl.debug ? ' debug' : '';
|
|
184
|
-
const webGL = isWebGL2(this.gl) ? 'WebGL2' : 'WebGL1';
|
|
185
|
-
log.group(0, `${webGL}${debug} context: ${this.info.vendor}, ${this.info.renderer}`)();
|
|
186
182
|
|
|
187
|
-
|
|
188
|
-
|
|
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;
|
|
189
187
|
|
|
188
|
+
// Add subset of WebGL2 methods to WebGL1 context
|
|
189
|
+
polyfillContext(this.gl);
|
|
190
190
|
// Install context state tracking
|
|
191
|
-
trackContextState(this.gl, {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
log.probe(0, 'queried webgl limits')();
|
|
208
|
-
|
|
209
|
-
// Add debug instrumentation to the context
|
|
210
|
-
// if (isBrowser() && props.debug) {
|
|
211
|
-
// // @ts-ignore
|
|
212
|
-
// const {makeDebugContext} = global;
|
|
213
|
-
// if (!makeDebugContext) {
|
|
214
|
-
// log.warn('WebGL debug mode not activated. import "@luma.gl/debug" to enable.')();
|
|
215
|
-
// } else {
|
|
216
|
-
// // @ts-ignore
|
|
217
|
-
// this.gl = global.makeDebugContext(this.gl, props);
|
|
218
|
-
// this.gl2 = this.gl as WebGL2RenderingContext;
|
|
219
|
-
// // Debug forces log level to at least 1
|
|
220
|
-
// log.level = Math.max(log.level, 1);
|
|
221
|
-
// }
|
|
222
|
-
// }
|
|
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
|
+
}
|
|
223
207
|
|
|
224
|
-
|
|
225
|
-
|
|
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)();
|
|
213
|
+
|
|
214
|
+
log.groupEnd(LOG_LEVEL)();
|
|
226
215
|
}
|
|
227
216
|
|
|
228
217
|
/**
|
|
@@ -241,166 +230,121 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
241
230
|
// }
|
|
242
231
|
}
|
|
243
232
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Resize the canvas' drawing buffer.
|
|
248
|
-
*
|
|
249
|
-
* Can match the canvas CSS size, and optionally also consider devicePixelRatio
|
|
250
|
-
* Can be called every frame
|
|
251
|
-
*
|
|
252
|
-
* Regardless of size, the drawing buffer will always be scaled to the viewport, but
|
|
253
|
-
* for best visual results, usually set to either:
|
|
254
|
-
* canvas CSS width x canvas CSS height
|
|
255
|
-
* canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio
|
|
256
|
-
* See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
|
|
257
|
-
*/
|
|
258
|
-
resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
|
|
259
|
-
// Resize browser context .
|
|
260
|
-
if (this.gl.canvas) {
|
|
261
|
-
const devicePixelRatio = getDevicePixelRatio(options?.useDevicePixels);
|
|
262
|
-
setDevicePixelRatio(this.gl, devicePixelRatio, options);
|
|
263
|
-
return;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// Resize headless gl context
|
|
267
|
-
const ext = this.gl.getExtension('STACKGL_resize_drawingbuffer');
|
|
268
|
-
if (ext && options && `width` in options && `height` in options) {
|
|
269
|
-
ext.resize(options.width, options.height);
|
|
270
|
-
}
|
|
233
|
+
get isLost(): boolean {
|
|
234
|
+
return this.gl.isContextLost();
|
|
271
235
|
}
|
|
272
236
|
|
|
273
|
-
|
|
274
|
-
return
|
|
237
|
+
getSize(): [number, number] {
|
|
238
|
+
return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
|
|
275
239
|
}
|
|
276
240
|
|
|
277
|
-
|
|
278
|
-
return
|
|
241
|
+
isTextureFormatSupported(format: TextureFormat): boolean {
|
|
242
|
+
return isTextureFormatSupported(this.gl, format);
|
|
279
243
|
}
|
|
280
244
|
|
|
281
|
-
|
|
282
|
-
return
|
|
245
|
+
isTextureFormatFilterable(format: TextureFormat): boolean {
|
|
246
|
+
return isTextureFormatFilterable(this.gl, format);
|
|
283
247
|
}
|
|
284
248
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
* https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
|
|
288
|
-
* Chrome's offscreen canvas does not require gl.commit
|
|
289
|
-
*/
|
|
290
|
-
commit(): void {
|
|
291
|
-
// @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
|
|
292
|
-
if (this.offScreen && this.gl.commit) {
|
|
293
|
-
// @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
|
|
294
|
-
this.gl.commit();
|
|
295
|
-
}
|
|
249
|
+
isTextureFormatRenderable(format: TextureFormat): boolean {
|
|
250
|
+
return isTextureFormatRenderable(this.gl, format);
|
|
296
251
|
}
|
|
297
252
|
|
|
298
|
-
//
|
|
253
|
+
// WEBGL SPECIFIC METHODS
|
|
299
254
|
|
|
300
|
-
/**
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
const {width, height, canvas} = this.props;
|
|
305
|
-
// Get or create a canvas
|
|
306
|
-
const targetCanvas = getCanvas({canvas, width, height});
|
|
307
|
-
// Create a WebGL context in the canvas
|
|
308
|
-
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;
|
|
309
259
|
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
/*
|
|
313
|
-
import {
|
|
314
|
-
isWebGL, isWebGL2,
|
|
315
|
-
createGLContext,
|
|
316
|
-
instrumentGLContext,
|
|
317
|
-
getContextDebugInfo,
|
|
318
|
-
resizeGLContext
|
|
319
|
-
} from '@luma.gl/gltools';
|
|
320
|
-
|
|
321
|
-
// prettier-ignore
|
|
322
|
-
import {
|
|
323
|
-
Device, DeviceInfo, DeviceLimits,
|
|
324
|
-
Buffer, BufferProps
|
|
325
|
-
} from '@luma.gl/api';
|
|
326
260
|
|
|
327
|
-
|
|
328
|
-
import {getWebGLLimits} from '../converters/webgl-limits';
|
|
329
|
-
import {getWebGLFeatures} from '../converters/webgl-features';
|
|
261
|
+
// IMPLEMENTATION OF ABSTRACT DEVICE
|
|
330
262
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
readonly gl: WebGLRenderingContext;
|
|
334
|
-
readonly gl2: WebGL2RenderingContext | null;
|
|
335
|
-
readonly canvas: HTMLCanvasElement;
|
|
336
|
-
|
|
337
|
-
static isSupported(options: {canvas?: HTMLCanvasElement}): boolean {
|
|
338
|
-
const {canvas} = options;
|
|
339
|
-
let gl;
|
|
340
|
-
try {
|
|
341
|
-
gl = canvas && canvas.getContext("webgl");
|
|
342
|
-
gl = gl && canvas && canvas.getContext("experimental-webgl");
|
|
343
|
-
} catch (x) {
|
|
344
|
-
gl = null;
|
|
345
|
-
}
|
|
346
|
-
return Boolean(gl);
|
|
263
|
+
createCanvasContext(props?: CanvasContextProps): CanvasContext {
|
|
264
|
+
throw new Error('WebGL only supports a single canvas');
|
|
347
265
|
}
|
|
348
266
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const gl = createGLContext(props);
|
|
353
|
-
this.handle =
|
|
354
|
-
this.gl = gl;
|
|
355
|
-
this.gl2 = gl instanceof WebGL2RenderingContext ? gl : null;
|
|
356
|
-
this.canvas = canvas;
|
|
267
|
+
_createBuffer(props: BufferProps): WEBGLBuffer {
|
|
268
|
+
return new ClassicBuffer(this, props);
|
|
357
269
|
}
|
|
358
270
|
|
|
359
|
-
|
|
360
|
-
|
|
271
|
+
_createTexture(props: TextureProps): WEBGLTexture {
|
|
272
|
+
return new WEBGLTexture(this, props);
|
|
361
273
|
}
|
|
362
274
|
|
|
363
|
-
|
|
364
|
-
return
|
|
275
|
+
createExternalTexture(props: ExternalTextureProps): ExternalTexture {
|
|
276
|
+
throw new Error('createExternalTexture() not implemented'); // return new Program(props);
|
|
365
277
|
}
|
|
366
278
|
|
|
367
|
-
|
|
368
|
-
return
|
|
279
|
+
createSampler(props: SamplerProps): WEBGLSampler {
|
|
280
|
+
return new WEBGLSampler(this, props);
|
|
369
281
|
}
|
|
370
282
|
|
|
371
|
-
|
|
372
|
-
return
|
|
283
|
+
createShader(props: ShaderProps): WEBGLShader {
|
|
284
|
+
return new WEBGLShader(this, props);
|
|
373
285
|
}
|
|
374
286
|
|
|
375
|
-
|
|
376
|
-
return new
|
|
287
|
+
createFramebuffer(props: FramebufferProps): WEBGLFramebuffer {
|
|
288
|
+
return new WEBGLFramebuffer(this, props);
|
|
377
289
|
}
|
|
378
290
|
|
|
379
|
-
|
|
380
|
-
return new
|
|
291
|
+
createRenderPipeline(props: RenderPipelineProps): WEBGLRenderPipeline {
|
|
292
|
+
return new WEBGLRenderPipeline(this, props);
|
|
381
293
|
}
|
|
382
294
|
|
|
383
|
-
|
|
384
|
-
return new
|
|
295
|
+
beginRenderPass(props: RenderPassProps): WEBGLRenderPass {
|
|
296
|
+
return new WEBGLRenderPass(this, props);
|
|
385
297
|
}
|
|
386
298
|
|
|
387
|
-
|
|
388
|
-
|
|
299
|
+
createComputePipeline(props?: ComputePipelineProps): ComputePipeline {
|
|
300
|
+
throw new Error('ComputePipeline not supported in WebGL');
|
|
389
301
|
}
|
|
390
302
|
|
|
391
|
-
|
|
392
|
-
|
|
303
|
+
beginComputePass(props: ComputePassProps): ComputePass {
|
|
304
|
+
throw new Error('compute shaders not supported in WebGL');
|
|
393
305
|
}
|
|
394
306
|
|
|
395
|
-
|
|
396
|
-
|
|
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;
|
|
397
316
|
}
|
|
398
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
|
+
}
|
|
399
329
|
|
|
400
|
-
|
|
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
|
+
}
|
|
401
341
|
|
|
402
|
-
_startFrame() {}
|
|
403
342
|
|
|
404
|
-
|
|
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);
|
|
405
350
|
}
|
|
406
|
-
*/
|