@luma.gl/webgl 8.6.0-alpha.5 → 9.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -67
- package/dist/adapter/converters/device-parameters.d.ts +17 -0
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
- package/dist/adapter/converters/device-parameters.js.map +1 -0
- package/dist/{classes → adapter/converters}/renderbuffer-formats.d.ts +0 -0
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -0
- package/dist/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/adapter/converters/sampler-parameters.d.ts +19 -0
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/sampler-parameters.js +208 -0
- package/dist/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/adapter/converters/texture-formats.d.ts +93 -0
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -0
- package/dist/adapter/converters/texture-formats.js +954 -0
- package/dist/adapter/converters/texture-formats.js.map +1 -0
- package/dist/adapter/converters/vertex-formats.d.ts +4 -0
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -0
- package/dist/adapter/converters/vertex-formats.js +35 -0
- package/dist/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/adapter/device-helpers/device-features.d.ts +3 -6
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +27 -48
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +1 -0
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +1 -0
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +11 -0
- package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/attribute-utils.js +81 -0
- package/dist/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +55 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.js +306 -0
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.d.ts +0 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/adapter/helpers/set-uniform.d.ts +4 -0
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -0
- package/dist/adapter/helpers/set-uniform.js +115 -0
- package/dist/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/adapter/helpers/uniforms.d.ts +26 -0
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -0
- package/dist/adapter/helpers/uniforms.js +99 -0
- package/dist/adapter/helpers/uniforms.js.map +1 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +5 -0
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
- package/dist/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +40 -0
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -0
- package/dist/{esm/classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +38 -72
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/{classes → adapter/objects}/webgl-resource.d.ts +15 -14
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -0
- package/dist/{classes → adapter/objects}/webgl-resource.js +7 -3
- package/dist/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +27 -0
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -0
- package/dist/adapter/objects/webgl-vertex-array-object.js +84 -0
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/adapter/resources/webgl-buffer.d.ts +27 -0
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-buffer.js +164 -0
- package/dist/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts +25 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.js +65 -0
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts +18 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.js +53 -0
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.d.ts +1 -0
- package/dist/adapter/resources/webgl-external-texture.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{es5/helpers/program-bindings.js.map → adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +40 -0
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-framebuffer.js +265 -0
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts +11 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.js +19 -0
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.js +400 -0
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/webgl-sampler.d.ts +20 -0
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-sampler.js +50 -0
- package/dist/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/adapter/{webgl-shader.d.ts → resources/webgl-shader.d.ts} +3 -6
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -0
- package/dist/{esm/adapter → adapter/resources}/webgl-shader.js +13 -20
- package/dist/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/adapter/resources/webgl-texture.d.ts +193 -0
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -0
- package/dist/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
- package/dist/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +36 -0
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -0
- package/dist/adapter/webgl-canvas-context.js +54 -0
- package/dist/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +58 -76
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +184 -111
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +32 -0
- package/dist/classic/accessor.d.ts.map +1 -0
- package/dist/{classes → classic}/accessor.js +33 -1
- package/dist/classic/accessor.js.map +1 -0
- package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
- package/dist/classic/buffer.d.ts.map +1 -0
- package/dist/{esm/classes/webgl-buffer.js → classic/buffer.js} +53 -51
- package/dist/classic/buffer.js.map +1 -0
- package/dist/{webgl-utils → classic}/typed-array-utils.d.ts +3 -2
- package/dist/classic/typed-array-utils.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → classic}/typed-array-utils.js +0 -0
- package/dist/classic/typed-array-utils.js.map +1 -0
- package/dist/context/context/context-state.d.ts.map +1 -1
- package/dist/context/context/context-state.js +1 -1
- package/dist/context/context/context-state.js.map +1 -1
- package/dist/context/context/create-context.d.ts +1 -0
- package/dist/context/context/create-context.d.ts.map +1 -1
- package/dist/context/context/create-context.js +12 -0
- package/dist/context/context/create-context.js.map +1 -1
- package/dist/context/context/device-pixels.d.ts +1 -1
- package/dist/context/context/device-pixels.d.ts.map +1 -1
- package/dist/context/context/device-pixels.js.map +1 -1
- package/dist/context/debug/spector.d.ts +18 -0
- package/dist/context/debug/spector.d.ts.map +1 -0
- package/dist/context/debug/spector.js +76 -0
- package/dist/context/debug/spector.js.map +1 -0
- package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
- package/dist/context/debug/webgl-developer-tools.js +121 -0
- package/dist/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/context/parameters/unified-parameter-api.d.ts +3 -2
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +4 -4
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +4 -3
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +25 -11
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +37 -5
- package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
- package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/es5/adapter/converters/sampler-parameters.js +226 -0
- package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/es5/adapter/converters/texture-formats.js +1031 -0
- package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
- package/dist/es5/adapter/converters/vertex-formats.js +45 -0
- package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-features.js +46 -54
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
- package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +184 -87
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/es5/adapter/helpers/set-uniform.js +125 -0
- package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/es5/adapter/helpers/uniforms.js +112 -0
- package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
- package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
- package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
- package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +345 -0
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +25 -45
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +505 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
- package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +12 -18
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +336 -260
- package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/es5/adapter/webgl-canvas-context.js +97 -0
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/es5/adapter/webgl-device.js +253 -133
- package/dist/es5/adapter/webgl-device.js.map +1 -1
- package/dist/es5/{classes → classic}/accessor.js +25 -1
- package/dist/es5/classic/accessor.js.map +1 -0
- package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +74 -66
- package/dist/es5/classic/buffer.js.map +1 -0
- package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
- package/dist/es5/classic/typed-array-utils.js.map +1 -0
- package/dist/es5/context/context/context-state.js +1 -1
- package/dist/es5/context/context/context-state.js.map +1 -1
- package/dist/es5/context/context/create-context.js +12 -0
- package/dist/es5/context/context/create-context.js.map +1 -1
- package/dist/es5/context/context/device-pixels.js.map +1 -1
- package/dist/es5/context/debug/spector.js +133 -0
- package/dist/es5/context/debug/spector.js.map +1 -0
- package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
- package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/es5/context/parameters/unified-parameter-api.js +7 -5
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-context.js +4 -3
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/es5/context/state-tracker/track-context-state.js +26 -11
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/index.js +65 -307
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +1 -41
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
- package/dist/es5/types/webgl.js.map +1 -0
- package/dist/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
- package/dist/esm/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/esm/adapter/converters/sampler-parameters.js +208 -0
- package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/esm/adapter/converters/texture-formats.js +954 -0
- package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
- package/dist/esm/adapter/converters/vertex-formats.js +35 -0
- package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-features.js +27 -48
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
- package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js +306 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/esm/adapter/helpers/set-uniform.js +115 -0
- package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/esm/adapter/helpers/uniforms.js +99 -0
- package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
- package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/esm/{classes → adapter/objects}/webgl-resource.js +7 -3
- package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
- package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +265 -0
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js +19 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +400 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
- package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/{adapter → esm/adapter/resources}/webgl-shader.js +13 -20
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
- package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/esm/adapter/webgl-canvas-context.js +54 -0
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/esm/adapter/webgl-device.js +184 -111
- package/dist/esm/adapter/webgl-device.js.map +1 -1
- package/dist/esm/{classes → classic}/accessor.js +33 -1
- package/dist/esm/classic/accessor.js.map +1 -0
- package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +53 -51
- package/dist/esm/classic/buffer.js.map +1 -0
- package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
- package/dist/esm/classic/typed-array-utils.js.map +1 -0
- package/dist/esm/context/context/context-state.js +1 -1
- package/dist/esm/context/context/context-state.js.map +1 -1
- package/dist/esm/context/context/create-context.js +12 -0
- package/dist/esm/context/context/create-context.js.map +1 -1
- package/dist/esm/context/context/device-pixels.js.map +1 -1
- package/dist/esm/context/debug/spector.js +76 -0
- package/dist/esm/context/debug/spector.js.map +1 -0
- package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
- package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/esm/context/parameters/unified-parameter-api.js +4 -4
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-context.js +4 -3
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/esm/context/state-tracker/track-context-state.js +25 -11
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/index.js +19 -31
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +2 -31
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/webgl.js +2 -0
- package/dist/esm/types/webgl.js.map +1 -0
- package/dist/index.d.ts +22 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -31
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -4
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +2 -31
- package/dist/init.js.map +1 -1
- package/dist/types/webgl.d.ts +144 -0
- package/dist/types/webgl.d.ts.map +1 -0
- package/dist/types/webgl.js +2 -0
- package/dist/types/webgl.js.map +1 -0
- package/package.json +5 -5
- package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +52 -9
- package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
- package/src/adapter/converters/sampler-parameters.ts +175 -0
- package/src/adapter/converters/texture-formats.ts +633 -0
- package/src/adapter/converters/vertex-formats.ts +22 -0
- package/src/adapter/device-helpers/device-features.ts +46 -123
- package/src/adapter/device-helpers/device-limits.ts +5 -2
- package/src/adapter/device-helpers/get-device-info.ts +8 -8
- package/src/adapter/helpers/attribute-utils.ts +61 -0
- package/src/adapter/helpers/get-shader-layout.ts +388 -0
- package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
- package/src/adapter/helpers/set-uniform.ts +87 -0
- package/src/adapter/helpers/uniforms.ts +110 -0
- package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
- package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
- package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
- package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
- package/src/adapter/resources/webgl-buffer.ts +219 -0
- package/src/adapter/resources/webgl-command-buffer.ts +94 -0
- package/src/adapter/resources/webgl-command-encoder.ts +58 -0
- package/src/adapter/resources/webgl-external-texture.ts +92 -0
- package/src/adapter/resources/webgl-framebuffer.ts +279 -0
- package/src/adapter/resources/webgl-render-pass.ts +23 -0
- package/src/adapter/resources/webgl-render-pipeline.ts +413 -0
- package/src/adapter/resources/webgl-sampler.ts +54 -0
- package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +14 -20
- package/src/adapter/resources/webgl-texture.ts +1023 -0
- package/src/adapter/webgl-canvas-context.ts +74 -0
- package/src/adapter/webgl-device.ts +226 -275
- package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +50 -36
- package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +69 -77
- package/src/{webgl-utils → classic}/typed-array-utils.ts +3 -1
- package/src/context/context/context-state.ts +4 -2
- package/src/context/context/create-context.ts +28 -1
- package/src/context/context/device-pixels.ts +9 -4
- package/src/context/debug/spector.ts +92 -0
- package/src/context/debug/webgl-developer-tools.ts +162 -0
- package/src/context/parameters/unified-parameter-api.ts +6 -4
- package/src/context/parameters/webgl-parameter-tables.ts +38 -36
- package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
- package/src/context/polyfill/polyfill-context.ts +4 -3
- package/src/context/state-tracker/deep-array-equal.ts +1 -1
- package/src/context/state-tracker/track-context-state.ts +27 -20
- package/src/index.ts +33 -102
- package/src/init.ts +2 -46
- package/src/types/webgl.ts +283 -0
- package/dist/_deprecated/context-api.d.ts +0 -85
- package/dist/_deprecated/context-api.d.ts.map +0 -1
- package/dist/_deprecated/context-api.js +0 -76
- package/dist/_deprecated/context-api.js.map +0 -1
- package/dist/_deprecated/features.d.ts +0 -27
- package/dist/_deprecated/features.d.ts.map +0 -1
- package/dist/_deprecated/features.js +0 -111
- package/dist/_deprecated/features.js.map +0 -1
- package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
- package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
- package/dist/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
- package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
- package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
- package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/adapter/webgl-shader.d.ts.map +0 -1
- package/dist/adapter/webgl-shader.js.map +0 -1
- package/dist/classes/accessor.d.ts +0 -28
- package/dist/classes/accessor.d.ts.map +0 -1
- package/dist/classes/accessor.js.map +0 -1
- package/dist/classes/accessor.ts.disabled +0 -159
- package/dist/classes/clear.d.ts +0 -17
- package/dist/classes/clear.d.ts.map +0 -1
- package/dist/classes/clear.js +0 -105
- package/dist/classes/clear.js.map +0 -1
- package/dist/classes/copy-and-blit.d.ts +0 -86
- package/dist/classes/copy-and-blit.d.ts.map +0 -1
- package/dist/classes/copy-and-blit.js +0 -338
- package/dist/classes/copy-and-blit.js.map +0 -1
- package/dist/classes/framebuffer.d.ts +0 -139
- package/dist/classes/framebuffer.d.ts.map +0 -1
- package/dist/classes/framebuffer.js +0 -656
- package/dist/classes/framebuffer.js.map +0 -1
- package/dist/classes/program-configuration.d.ts +0 -24
- package/dist/classes/program-configuration.d.ts.map +0 -1
- package/dist/classes/program-configuration.js +0 -73
- package/dist/classes/program-configuration.js.map +0 -1
- package/dist/classes/program.d.ts +0 -66
- package/dist/classes/program.d.ts.map +0 -1
- package/dist/classes/program.js +0 -379
- package/dist/classes/program.js.map +0 -1
- package/dist/classes/query.d.ts +0 -27
- package/dist/classes/query.d.ts.map +0 -1
- package/dist/classes/query.js +0 -145
- package/dist/classes/query.js.map +0 -1
- package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
- package/dist/classes/renderbuffer-formats.js.map +0 -1
- package/dist/classes/renderbuffer.d.ts +0 -60
- package/dist/classes/renderbuffer.d.ts.map +0 -1
- package/dist/classes/renderbuffer.js.map +0 -1
- package/dist/classes/shader.d.ts +0 -42
- package/dist/classes/shader.d.ts.map +0 -1
- package/dist/classes/shader.js +0 -118
- package/dist/classes/shader.js.map +0 -1
- package/dist/classes/texture-2d.d.ts +0 -9
- package/dist/classes/texture-2d.d.ts.map +0 -1
- package/dist/classes/texture-2d.js +0 -36
- package/dist/classes/texture-2d.js.map +0 -1
- package/dist/classes/texture-3d.d.ts +0 -29
- package/dist/classes/texture-3d.d.ts.map +0 -1
- package/dist/classes/texture-3d.js +0 -76
- package/dist/classes/texture-3d.js.map +0 -1
- package/dist/classes/texture-cube.d.ts +0 -28
- package/dist/classes/texture-cube.d.ts.map +0 -1
- package/dist/classes/texture-cube.js +0 -130
- package/dist/classes/texture-cube.js.map +0 -1
- package/dist/classes/texture-formats.d.ts +0 -37
- package/dist/classes/texture-formats.d.ts.map +0 -1
- package/dist/classes/texture-formats.js +0 -98
- package/dist/classes/texture-formats.js.map +0 -1
- package/dist/classes/texture.d.ts +0 -123
- package/dist/classes/texture.d.ts.map +0 -1
- package/dist/classes/texture.js.map +0 -1
- package/dist/classes/transform-feedback.d.ts +0 -33
- package/dist/classes/transform-feedback.d.ts.map +0 -1
- package/dist/classes/transform-feedback.js +0 -198
- package/dist/classes/transform-feedback.js.map +0 -1
- package/dist/classes/uniform-buffer-layout.d.ts +0 -17
- package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
- package/dist/classes/uniform-buffer-layout.js +0 -104
- package/dist/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/classes/uniforms.d.ts +0 -37
- package/dist/classes/uniforms.d.ts.map +0 -1
- package/dist/classes/uniforms.js +0 -250
- package/dist/classes/uniforms.js.map +0 -1
- package/dist/classes/vertex-array-object.d.ts +0 -76
- package/dist/classes/vertex-array-object.d.ts.map +0 -1
- package/dist/classes/vertex-array-object.js +0 -261
- package/dist/classes/vertex-array-object.js.map +0 -1
- package/dist/classes/vertex-array.d.ts +0 -75
- package/dist/classes/vertex-array.d.ts.map +0 -1
- package/dist/classes/vertex-array.js +0 -408
- package/dist/classes/vertex-array.js.map +0 -1
- package/dist/classes/webgl-buffer.d.ts.map +0 -1
- package/dist/classes/webgl-buffer.js.map +0 -1
- package/dist/classes/webgl-resource.d.ts.map +0 -1
- package/dist/classes/webgl-resource.js.map +0 -1
- package/dist/context/context/get-canvas.d.ts +0 -13
- package/dist/context/context/get-canvas.d.ts.map +0 -1
- package/dist/context/context/get-canvas.js +0 -31
- package/dist/context/context/get-canvas.js.map +0 -1
- package/dist/context/context/resize-context.d.ts +0 -20
- package/dist/context/context/resize-context.d.ts.map +0 -1
- package/dist/context/context/resize-context.js +0 -15
- package/dist/context/context/resize-context.js.map +0 -1
- package/dist/context/parameters/webgl-parameters.d.ts +0 -144
- package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
- package/dist/context/parameters/webgl-parameters.js +0 -2
- package/dist/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/debug/debug-program-configuration.d.ts +0 -2
- package/dist/debug/debug-program-configuration.d.ts.map +0 -1
- package/dist/debug/debug-program-configuration.js +0 -40
- package/dist/debug/debug-program-configuration.js.map +0 -1
- package/dist/debug/debug-uniforms.d.ts +0 -12
- package/dist/debug/debug-uniforms.d.ts.map +0 -1
- package/dist/debug/debug-uniforms.js +0 -108
- package/dist/debug/debug-uniforms.js.map +0 -1
- package/dist/debug/debug-vertex-array.d.ts +0 -5
- package/dist/debug/debug-vertex-array.d.ts.map +0 -1
- package/dist/debug/debug-vertex-array.js +0 -118
- package/dist/debug/debug-vertex-array.js.map +0 -1
- package/dist/es5/_deprecated/context-api.js +0 -116
- package/dist/es5/_deprecated/context-api.js.map +0 -1
- package/dist/es5/_deprecated/features.js +0 -118
- package/dist/es5/_deprecated/features.js.map +0 -1
- package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
- package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/es5/adapter/webgl-shader.js.map +0 -1
- package/dist/es5/classes/accessor.d.ts +0 -28
- package/dist/es5/classes/accessor.js.map +0 -1
- package/dist/es5/classes/accessor.ts.disabled +0 -159
- package/dist/es5/classes/clear.js +0 -135
- package/dist/es5/classes/clear.js.map +0 -1
- package/dist/es5/classes/copy-and-blit.js +0 -382
- package/dist/es5/classes/copy-and-blit.js.map +0 -1
- package/dist/es5/classes/framebuffer.js +0 -807
- package/dist/es5/classes/framebuffer.js.map +0 -1
- package/dist/es5/classes/program-configuration.js +0 -119
- package/dist/es5/classes/program-configuration.js.map +0 -1
- package/dist/es5/classes/program.js +0 -471
- package/dist/es5/classes/program.js.map +0 -1
- package/dist/es5/classes/query.js +0 -222
- package/dist/es5/classes/query.js.map +0 -1
- package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
- package/dist/es5/classes/renderbuffer.js.map +0 -1
- package/dist/es5/classes/shader.js +0 -195
- package/dist/es5/classes/shader.js.map +0 -1
- package/dist/es5/classes/texture-2d.js.map +0 -1
- package/dist/es5/classes/texture-3d.js +0 -142
- package/dist/es5/classes/texture-3d.js.map +0 -1
- package/dist/es5/classes/texture-cube.js +0 -202
- package/dist/es5/classes/texture-cube.js.map +0 -1
- package/dist/es5/classes/texture-formats.js +0 -87
- package/dist/es5/classes/texture-formats.js.map +0 -1
- package/dist/es5/classes/texture.js.map +0 -1
- package/dist/es5/classes/transform-feedback.js +0 -267
- package/dist/es5/classes/transform-feedback.js.map +0 -1
- package/dist/es5/classes/uniform-buffer-layout.js +0 -130
- package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/es5/classes/uniforms.js +0 -232
- package/dist/es5/classes/uniforms.js.map +0 -1
- package/dist/es5/classes/vertex-array-object.js +0 -337
- package/dist/es5/classes/vertex-array-object.js.map +0 -1
- package/dist/es5/classes/vertex-array.js +0 -465
- package/dist/es5/classes/vertex-array.js.map +0 -1
- package/dist/es5/classes/webgl-buffer.js.map +0 -1
- package/dist/es5/classes/webgl-resource.js.map +0 -1
- package/dist/es5/context/context/get-canvas.js +0 -40
- package/dist/es5/context/context/get-canvas.js.map +0 -1
- package/dist/es5/context/context/resize-context.js +0 -23
- package/dist/es5/context/context/resize-context.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/es5/debug/debug-program-configuration.js +0 -76
- package/dist/es5/debug/debug-program-configuration.js.map +0 -1
- package/dist/es5/debug/debug-uniforms.js +0 -156
- package/dist/es5/debug/debug-uniforms.js.map +0 -1
- package/dist/es5/debug/debug-vertex-array.js +0 -126
- package/dist/es5/debug/debug-vertex-array.js.map +0 -1
- package/dist/es5/helpers/get-program-bindings.js.map +0 -1
- package/dist/es5/helpers/program-bindings.js +0 -2
- package/dist/es5/types/accessor.d.ts +0 -29
- package/dist/es5/webgl-utils/attribute-utils.js +0 -186
- package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/es5/webgl-utils/format-utils.js +0 -58
- package/dist/es5/webgl-utils/format-utils.js.map +0 -1
- package/dist/es5/webgl-utils/get-error.js +0 -49
- package/dist/es5/webgl-utils/get-error.js.map +0 -1
- package/dist/es5/webgl-utils/index.js +0 -74
- package/dist/es5/webgl-utils/index.js.map +0 -1
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
- package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/es5/webgl-utils/texture-utils.js +0 -61
- package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
- package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
- package/dist/esm/_deprecated/context-api.js +0 -76
- package/dist/esm/_deprecated/context-api.js.map +0 -1
- package/dist/esm/_deprecated/features.js +0 -111
- package/dist/esm/_deprecated/features.js.map +0 -1
- package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
- package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/esm/adapter/webgl-shader.js.map +0 -1
- package/dist/esm/classes/accessor.d.ts +0 -28
- package/dist/esm/classes/accessor.js.map +0 -1
- package/dist/esm/classes/clear.js +0 -105
- package/dist/esm/classes/clear.js.map +0 -1
- package/dist/esm/classes/copy-and-blit.js +0 -338
- package/dist/esm/classes/copy-and-blit.js.map +0 -1
- package/dist/esm/classes/framebuffer.js +0 -656
- package/dist/esm/classes/framebuffer.js.map +0 -1
- package/dist/esm/classes/program-configuration.js +0 -73
- package/dist/esm/classes/program-configuration.js.map +0 -1
- package/dist/esm/classes/program.js +0 -379
- package/dist/esm/classes/program.js.map +0 -1
- package/dist/esm/classes/query.js +0 -145
- package/dist/esm/classes/query.js.map +0 -1
- package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
- package/dist/esm/classes/renderbuffer.js.map +0 -1
- package/dist/esm/classes/shader.js +0 -118
- package/dist/esm/classes/shader.js.map +0 -1
- package/dist/esm/classes/texture-2d.js +0 -36
- package/dist/esm/classes/texture-2d.js.map +0 -1
- package/dist/esm/classes/texture-3d.js +0 -76
- package/dist/esm/classes/texture-3d.js.map +0 -1
- package/dist/esm/classes/texture-cube.js +0 -130
- package/dist/esm/classes/texture-cube.js.map +0 -1
- package/dist/esm/classes/texture-formats.js +0 -98
- package/dist/esm/classes/texture-formats.js.map +0 -1
- package/dist/esm/classes/texture.js.map +0 -1
- package/dist/esm/classes/transform-feedback.js +0 -198
- package/dist/esm/classes/transform-feedback.js.map +0 -1
- package/dist/esm/classes/uniform-buffer-layout.js +0 -104
- package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/esm/classes/uniforms.js +0 -250
- package/dist/esm/classes/uniforms.js.map +0 -1
- package/dist/esm/classes/vertex-array-object.js +0 -261
- package/dist/esm/classes/vertex-array-object.js.map +0 -1
- package/dist/esm/classes/vertex-array.js +0 -408
- package/dist/esm/classes/vertex-array.js.map +0 -1
- package/dist/esm/classes/webgl-buffer.js.map +0 -1
- package/dist/esm/classes/webgl-resource.js.map +0 -1
- package/dist/esm/context/context/get-canvas.js +0 -31
- package/dist/esm/context/context/get-canvas.js.map +0 -1
- package/dist/esm/context/context/resize-context.js +0 -15
- package/dist/esm/context/context/resize-context.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameters.js +0 -2
- package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/esm/debug/debug-program-configuration.js +0 -40
- package/dist/esm/debug/debug-program-configuration.js.map +0 -1
- package/dist/esm/debug/debug-uniforms.js +0 -108
- package/dist/esm/debug/debug-uniforms.js.map +0 -1
- package/dist/esm/debug/debug-vertex-array.js +0 -118
- package/dist/esm/debug/debug-vertex-array.js.map +0 -1
- package/dist/esm/helpers/get-program-bindings.js +0 -228
- package/dist/esm/helpers/get-program-bindings.js.map +0 -1
- package/dist/esm/helpers/program-bindings.js +0 -2
- package/dist/esm/types/accessor.d.ts +0 -29
- package/dist/esm/webgl-utils/attribute-utils.js +0 -182
- package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/esm/webgl-utils/format-utils.js +0 -45
- package/dist/esm/webgl-utils/format-utils.js.map +0 -1
- package/dist/esm/webgl-utils/get-error.js +0 -41
- package/dist/esm/webgl-utils/get-error.js.map +0 -1
- package/dist/esm/webgl-utils/index.js +0 -5
- package/dist/esm/webgl-utils/index.js.map +0 -1
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
- package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/esm/webgl-utils/texture-utils.js +0 -48
- package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
- package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
- package/dist/helpers/get-program-bindings.d.ts +0 -8
- package/dist/helpers/get-program-bindings.d.ts.map +0 -1
- package/dist/helpers/get-program-bindings.js +0 -228
- package/dist/helpers/get-program-bindings.js.map +0 -1
- package/dist/helpers/program-bindings.d.ts +0 -41
- package/dist/helpers/program-bindings.d.ts.map +0 -1
- package/dist/helpers/program-bindings.js +0 -2
- package/dist/types/accessor.d.ts +0 -29
- package/dist/webgl-utils/attribute-utils.d.ts +0 -18
- package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
- package/dist/webgl-utils/attribute-utils.js +0 -182
- package/dist/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
- package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
- package/dist/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/webgl-utils/format-utils.d.ts +0 -3
- package/dist/webgl-utils/format-utils.d.ts.map +0 -1
- package/dist/webgl-utils/format-utils.js +0 -45
- package/dist/webgl-utils/format-utils.js.map +0 -1
- package/dist/webgl-utils/get-error.d.ts +0 -3
- package/dist/webgl-utils/get-error.d.ts.map +0 -1
- package/dist/webgl-utils/get-error.js +0 -41
- package/dist/webgl-utils/get-error.js.map +0 -1
- package/dist/webgl-utils/index.d.ts +0 -5
- package/dist/webgl-utils/index.d.ts.map +0 -1
- package/dist/webgl-utils/index.js +0 -5
- package/dist/webgl-utils/index.js.map +0 -1
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
- package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
- package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
- package/dist/webgl-utils/request-animation-frame.js +0 -7
- package/dist/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/webgl-utils/texture-utils.d.ts +0 -15
- package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
- package/dist/webgl-utils/texture-utils.js +0 -48
- package/dist/webgl-utils/texture-utils.js.map +0 -1
- package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
- package/dist/webgl-utils/typed-array-utils.js.map +0 -1
- package/src/.DS_Store +0 -0
- package/src/_deprecated/context-api.ts +0 -146
- package/src/_deprecated/features.ts +0 -159
- package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
- package/src/classes/accessor.d.ts +0 -28
- package/src/classes/accessor.js +0 -129
- package/src/classes/accessor.ts.disabled +0 -159
- package/src/classes/clear.ts +0 -108
- package/src/classes/copy-and-blit.ts +0 -460
- package/src/classes/framebuffer.ts +0 -763
- package/src/classes/program-configuration.ts +0 -77
- package/src/classes/program.ts +0 -431
- package/src/classes/query.ts +0 -171
- package/src/classes/renderbuffer.ts +0 -154
- package/src/classes/shader.ts +0 -129
- package/src/classes/texture-2d.ts +0 -35
- package/src/classes/texture-3d.ts +0 -123
- package/src/classes/texture-cube.ts +0 -162
- package/src/classes/texture-formats.ts +0 -171
- package/src/classes/texture.ts +0 -965
- package/src/classes/transform-feedback.ts +0 -191
- package/src/classes/uniform-buffer-layout.ts +0 -113
- package/src/classes/uniforms.ts +0 -394
- package/src/classes/vertex-array-object.ts +0 -339
- package/src/classes/vertex-array.ts +0 -484
- package/src/context/context/get-canvas.ts +0 -37
- package/src/context/context/resize-context.ts +0 -37
- package/src/context/parameters/webgl-parameters.ts +0 -197
- package/src/debug/debug-program-configuration.ts +0 -32
- package/src/debug/debug-uniforms.ts +0 -100
- package/src/debug/debug-vertex-array.ts +0 -123
- package/src/helpers/get-program-bindings.ts +0 -244
- package/src/helpers/program-bindings.ts +0 -46
- package/src/types/accessor.d.ts +0 -29
- package/src/webgl-utils/attribute-utils.ts +0 -171
- package/src/webgl-utils/format-utils.ts +0 -43
- package/src/webgl-utils/get-error.ts +0 -56
- package/src/webgl-utils/index.ts +0 -12
- package/src/webgl-utils/request-animation-frame.ts +0 -14
- package/src/webgl-utils/texture-utils.ts +0 -60
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapter/converters/texture-formats.ts"],"names":["texture_compression_bc","texture_compression_astc","texture_compression_etc2","texture_compression_etc1_webgl","texture_compression_pvrtc_webgl","texture_compression_atc_webgl","X_S3TC","X_S3TC_SRGB","X_RGTC","X_BPTC","X_ETC2","X_ASTC","X_ETC1","X_PVRTC","X_ATC","EXT_SRGB","EXT_TEXTURE_NORM16","EXT_FLOAT_WEBGL1","EXT_FLOAT_RENDER_WEBGL2","EXT_HALF_FLOAT_WEBGL1","checkExtension","gl","extension","getExtension","checkExtensions","extensions","every","TEXTURE_FEATURE_CHECKS","checkTextureFeature","feature","checkTextureFeatures","features","getTextureFeatures","textureFeatures","Object","keys","filter","TEXTURE_FORMATS","GL","RGB","gl1","b","c","bpp","dataFormat","types","UNSIGNED_BYTE","UNSIGNED_SHORT_5_6_5","RGBA","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","R8","R8_SNORM","R8UI","R8I","RG8","RG8_SNORM","RG8UI","RG8I","R16UI","R16I","R16F","render","R16_EXT","f","R16_SNORM_EXT","RGBA4","wgpu","RGB565","RGB5_A1","RGB8","RGB8_SNORM","RGBA8","SRGB8_ALPHA8","SRGB_ALPHA_EXT","gl1ext","RGBA8_SNORM","RGBA8UI","RGBA8I","RG16UI","RG16I","RG16F","RG16_EXT","RG16_SNORM_EXT","R32UI","R32I","R32F","RGB9_E5","p","R11F_G11F_B10F","RGB10_A2","RGB10_A2UI","RGB16_EXT","RGB16_SNORM_EXT","RG32UI","RG32I","RG32F","RGBA16UI","RGBA16I","RGBA16F","RGBA16_EXT","RGBA16_SNORM_EXT","RGB32F","gl2ext","FLOAT","RGBA32UI","RGBA32I","RGBA32F","STENCIL_INDEX8","attachment","STENCIL_ATTACHMENT","DEPTH_COMPONENT16","DEPTH_ATTACHMENT","DEPTH_COMPONENT24","DEPTH_COMPONENT32F","UNSIGNED_INT_24_8","DEPTH_STENCIL","DEPTH_STENCIL_ATTACHMENT","DEPTH24_STENCIL8","DEPTH32F_STENCIL8","COMPRESSED_RGB_S3TC_DXT1_EXT","x","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_R11_EAC","COMPRESSED_SIGNED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_SIGNED_RG11_EAC","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","getTextureFormat","format","entry","entries","find","Error","isTextureFormatSupported","formatOrGL","info","undefined","Boolean","getTextureFormatSupport","supported","decoded","filterable","signed","renderable","blendable","storable","isTextureFormatFilterable","endsWith","isTextureFormatRenderable","getWebGLTextureFormat","formatInfo","webglFormat","getWebGLTextureParameters","getWebGLPixelDataFormat","integer","normalized","type","getWebGLDataType","dataType","compressed","getWebGLDepthStencilAttachment","_checkFloat32ColorAttachment","internalFormat","srcFormat","srcType","texture","framebuffer","createTexture","bindTexture","TEXTURE_2D","level","width","height","border","pixel","Uint8Array","texImage2D","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","status","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","deleteTexture","deleteFramebuffer","DATA_FORMAT_CHANNELS","RED","RED_INTEGER","RG","RG_INTEGER","RGB_INTEGER","RGBA_INTEGER","DEPTH_COMPONENT","ALPHA","LUMINANCE","LUMINANCE_ALPHA","TYPE_SIZES","UNSIGNED_INT","INT","UNSIGNED_SHORT","SHORT","HALF_FLOAT","BYTE","getTextureFormatBytesPerPixel","params","channels","channelSize"],"mappings":"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","sourcesContent":["import type {TextureFormat, DeviceFeature, Device} from '@luma.gl/api';\nimport {decodeTextureFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\n\n// TEXTURE FEATURES\n\n// Define local device feature strings to optimize minification\nconst texture_compression_bc: DeviceFeature = 'texture-compression-bc';\nconst texture_compression_astc: DeviceFeature = 'texture-compression-astc';\nconst texture_compression_etc2: DeviceFeature = 'texture-compression-etc2';\nconst texture_compression_etc1_webgl: DeviceFeature = 'texture-compression-etc1-webgl';\nconst texture_compression_pvrtc_webgl: DeviceFeature = 'texture-compression-pvrtc-webgl';\nconst texture_compression_atc_webgl: DeviceFeature = 'texture-compression-atc-webgl';\n\n// Define local webgl extension strings to optimize minification\nconst X_S3TC = 'WEBGL_compressed_texture_s3tc'; // BC1, BC2, BC3\nconst X_S3TC_SRGB = 'WEBGL_compressed_texture_s3tc_srgb'; // BC1, BC2, BC3\nconst X_RGTC = 'EXT_texture_compression_rgtc'; // BC4, BC5\nconst X_BPTC = 'EXT_texture_compression_bptc'; // BC6, BC7\nconst X_ETC2 = 'WEBGL_compressed_texture_etc'; // Renamed from 'WEBGL_compressed_texture_es3'\nconst X_ASTC = 'WEBGL_compressed_texture_astc';\nconst X_ETC1 = 'WEBGL_compressed_texture_etc1';\nconst X_PVRTC = 'WEBGL_compressed_texture_pvrtc';\nconst X_ATC = 'WEBGL_compressed_texture_atc';\n\n// Define local webgl extension strings to optimize minification\nconst EXT_SRGB = 'EXT_sRGB'; // https://developer.mozilla.org/en-US/docs/Web/API/EXT_sRGB\nconst EXT_TEXTURE_NORM16 = 'EXT_texture_norm16';\nconst EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';\nconst EXT_FLOAT_RENDER_WEBGL2 = 'EXT_color_buffer_float';\nconst EXT_HALF_FLOAT_WEBGL1 = 'WEBGL_color_buffer_half_float';\n// const DEPTH = 'WEBGL_depth_texture';\n\nconst checkExtension = (gl: WebGLRenderingContext, extension: string): boolean =>\n gl.getExtension(extension);\nconst checkExtensions = (gl: WebGLRenderingContext, extensions: string[]): boolean =>\n extensions.every((extension) => gl.getExtension(extension));\n\n// prettier-ignore\nconst TEXTURE_FEATURE_CHECKS: Partial<Record<DeviceFeature, (gl: WebGLRenderingContext) => boolean> > = {\n 'texture-blend-float-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'EXT_float_blend'),\n 'texture-formats-srgb-webgl1': (gl) => (isWebGL2(gl) ? true : checkExtension(gl, EXT_SRGB)),\n 'texture-formats-depth-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'WEBGL_depth_texture'),\n 'texture-formats-float32-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_float'),\n 'texture-formats-float16-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_half_float'),\n 'texture-formats-norm16-webgl': (gl) => isWebGL2(gl) ? checkExtension(gl, EXT_TEXTURE_NORM16) : false,\n 'texture-filter-linear-float32-webgl': (gl) => checkExtension(gl, 'OES_texture_float_linear'),\n 'texture-filter-linear-float16-webgl': (gl) => checkExtension(gl, 'OES_texture_half_float_linear'),\n 'texture-filter-anisotropic-webgl': (gl) => checkExtension(gl, 'EXT_texture_filter_anisotropic'),\n 'texture-renderable-float32-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_float'), // [false, 'EXT_color_buffer_float'],\n 'texture-renderable-float16-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_half_float'),\n\n 'texture-compression-bc': (gl) => checkExtensions(gl, [X_S3TC, X_S3TC_SRGB, X_RGTC, X_BPTC]),\n 'texture-compression-bc5-webgl': (gl) => checkExtensions(gl, [X_RGTC]),\n // 'texture-compression-bc7-webgl': gl => checkExtensions(gl, [X_BPTC]),\n // 'texture-compression-bc3-srgb-webgl': gl => checkExtensions(gl, [X_S3TC_SRGB]),\n // 'texture-compression-bc3-webgl': gl => checkExtensions(gl, [X_S3TC]),\n 'texture-compression-etc2': (gl) => checkExtensions(gl, [X_ETC2]),\n 'texture-compression-astc': (gl) => checkExtensions(gl, [X_ASTC]),\n 'texture-compression-etc1-webgl': (gl) => checkExtensions(gl, [X_ETC1]),\n 'texture-compression-pvrtc-webgl': (gl) => checkExtensions(gl, [X_PVRTC]),\n 'texture-compression-atc-webgl': (gl) => checkExtensions(gl, [X_ATC])\n};\n\nexport function checkTextureFeature(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {\n return TEXTURE_FEATURE_CHECKS[feature]?.(gl);\n}\n\nconst checkTextureFeatures = (gl: WebGLRenderingContext, features: DeviceFeature[]): boolean =>\n features.every((feature) => checkTextureFeature(gl, feature));\n\n/** Return a list of texture feature strings (for Device.features). Mainly compressed texture support */\nexport function getTextureFeatures(gl: WebGLRenderingContext): DeviceFeature[] {\n const textureFeatures = Object.keys(TEXTURE_FEATURE_CHECKS) as DeviceFeature[];\n return textureFeatures.filter((feature) => checkTextureFeature(gl, feature));\n}\n\n// TEXTURE FORMATS\n\n/** Map a format to webgl and constants */\ntype Format = {\n gl?: GL;\n /** If a different unsized format is needed in WebGL1 */\n gl1?: GL;\n gl1ext?: string;\n gl2ext?: string; // format requires WebGL2, when using a WebGL 1 context, color renderbuffer formats are limited\n\n b?: number; // (bytes per pixel), for memory usage calculations.\n /** channels */\n c?: number;\n bpp?: number;\n /** packed */\n p?: number;\n x?: string; // compressed\n f?: DeviceFeature; // for compressed texture formats\n render?: DeviceFeature; // renderable if extension is present\n filter?: DeviceFeature;\n\n wgpu?: false; // If not supported on WebGPU\n\n types?: number[];\n\n dataFormat?: GL;\n attachment?: GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;\n};\n\n// TABLES\n\n/** Legal combinations for internalFormat, format and type *\n// [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1ext: DEPTH},\n// [GL.DEPTH_STENCIL]: {gl1ext: DEPTH},\n// Sized texture format\n// R\n[GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RG\n[GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGB\n[GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGBA\n\n[GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n[GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n[GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n[GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n*/\n\n/** Texture format data */\n// prettier-ignore\nexport const TEXTURE_FORMATS: Record<TextureFormat, Format> = {\n // Unsized formats that leave the precision up to the driver.\n // TODO - Fix bpp constants\n // 'r8unorm-unsized': {gl: GL.LUMINANCE, b: 4, c: 2, bpp: 4},\n 'rgb8unorm-unsized': {gl: GL.RGB, gl1: GL.RGB, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n 'rgba8unorm-unsized': {gl: GL.RGBA, gl1: GL.RGBA, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]},\n // 'rgb8unorm-srgb-unsized': {gl: GL.SRGB_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n // 'rgba8unorm-srgb-unsized': {gl: GL.SRGB_ALPHA_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n\n // 8-bit formats\n 'r8unorm': {gl: GL.R8, b: 1, c: 1},\n 'r8snorm': {gl: GL.R8_SNORM, b: 1, c: 1},\n 'r8uint': {gl: GL.R8UI, b: 1, c: 1},\n 'r8sint': {gl: GL.R8I, b: 1, c: 1},\n\n // 16-bit formats\n 'rg8unorm': {gl: GL.RG8, b: 2, c: 2},\n 'rg8snorm': {gl: GL.RG8_SNORM, b: 2, c: 2},\n 'rg8uint': {gl: GL.RG8UI, b: 2, c: 2},\n 'rg8sint': {gl: GL.RG8I, b: 2, c: 2},\n\n 'r16uint': {gl: GL.R16UI, b: 2, c: 1},\n 'r16sint': {gl: GL.R16I, b: 2, c: 1},\n 'r16float': {gl: GL.R16F, b: 2, c: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'r16unorm-webgl': {gl: GL.R16_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl'},\n 'r16snorm-webgl': {gl: GL.R16_SNORM_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl'},\n\n // Packed 16-bit formats\n 'rgba4unorm-webgl': {gl: GL.RGBA4, b: 2, c: 4, wgpu: false},\n 'rgb565unorm-webgl': {gl: GL.RGB565, b: 2, c: 4, wgpu: false},\n 'rgb5a1unorm-webgl': {gl: GL.RGB5_A1, b: 2, c: 4, wgpu: false},\n\n // 24-bit formats\n 'rbg8unorm-webgl': {gl: GL.RGB8, b: 3, c: 3, wgpu: false},\n 'rbg8snorm-webgl': {gl: GL.RGB8_SNORM, b: 3, c: 3, wgpu: false},\n\n // 32-bit formats \n 'rgba8unorm': {gl: GL.RGBA8, gl1: GL.RGBA, b: 4, c: 2, bpp: 4},\n 'rgba8unorm-srgb': {gl: GL.SRGB8_ALPHA8, gl1: GL.SRGB_ALPHA_EXT, b: 4, c: 4, gl1ext: EXT_SRGB, bpp: 4},\n 'rgba8snorm': {gl: GL.RGBA8_SNORM, b: 4, c: 4},\n 'rgba8uint': {gl: GL.RGBA8UI, b: 4, c: 4, bpp: 4},\n 'rgba8sint': {gl: GL.RGBA8I, b: 4, c: 4, bpp: 4},\n // reverse colors, webgpu only\n 'bgra8unorm': {b: 4, c: 4},\n 'bgra8unorm-srgb': {b: 4, c: 4},\n\n 'rg16uint': {gl: GL.RG16UI, b: 4, c: 1, bpp: 4},\n 'rg16sint': {gl: GL.RG16I, b: 4, c: 2, bpp: 4},\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n 'rg16float': {gl: GL.RG16F, bpp: 4, b: 4, c: 2, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rg16unorm-webgl': {gl: GL.RG16_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl'},\n 'rg16snorm-webgl': {gl: GL.RG16_SNORM_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl'},\n\n 'r32uint': {gl: GL.R32UI, b: 4, c: 1, bpp: 4},\n 'r32sint': {gl: GL.R32I, b: 4, c: 1, bpp: 4},\n 'r32float': {gl: GL.R32F, bpp: 4, b: 4, c: 1, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n\n // Packed 32-bit formats\n 'rgb9e5ufloat': {gl: GL.RGB9_E5, b: 4, c: 3, p: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rg11b10ufloat': {gl: GL.R11F_G11F_B10F, b: 4, c: 3, p: 1,render: 'texture-renderable-float32-webgl'},\n 'rgb10a2unorm': {gl: GL.RGB10_A2, b: 4, c: 4, p: 1},\n // webgl2 only\n 'rgb10a2unorm-webgl': {b: 4, c: 4, gl: GL.RGB10_A2UI, p: 1, wgpu: false, bpp: 4},\n\n // 48-bit formats\n 'rgb16unorm-webgl': {gl: GL.RGB16_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl'},\n 'rgb16snorm-webgl': {gl: GL.RGB16_SNORM_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl'},\n\n // 64-bit formats\n 'rg32uint': {gl: GL.RG32UI, b: 8, c: 2},\n 'rg32sint': {gl: GL.RG32I, b: 8, c: 2},\n 'rg32float': {gl: GL.RG32F, b: 8, c: 2, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n 'rgba16uint': {gl: GL.RGBA16UI, b: 8, c: 4},\n 'rgba16sint': {gl: GL.RGBA16I, b: 8, c: 4},\n 'rgba16float': {gl: GL.RGBA16F, gl1: GL.RGBA, b: 8, c: 4, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rgba16unorm-webgl': {gl: GL.RGBA16_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl'},\n 'rgba16snorm-webgl': {gl: GL.RGBA16_SNORM_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl'},\n\n // 96-bit formats (deprecated!)\n 'rgb32float-webgl': {gl: GL.RGB32F, gl1: GL.RGB, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl',\n gl2ext: EXT_FLOAT_RENDER_WEBGL2, gl1ext: EXT_FLOAT_WEBGL1, // WebGL1 render buffers are supported with GL.RGB32F\n dataFormat: GL.RGB, types: [GL.FLOAT]},\n \n // 128-bit formats\n 'rgba32uint': {gl: GL.RGBA32UI, b: 16, c: 4},\n 'rgba32sint': {gl: GL.RGBA32I, b: 16, c: 4},\n 'rgba32float': {gl: GL.RGBA32F, gl1: GL.RGBA, b: 16, c: 4, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n\n // Depth and stencil formats\n 'stencil8': {gl: GL.STENCIL_INDEX8, b: 1, c: 1, attachment: GL.STENCIL_ATTACHMENT}, // 8 stencil bits\n\n 'depth16unorm': {gl: GL.DEPTH_COMPONENT16, gl1: GL.DEPTH_COMPONENT16, b: 2, c: 1, attachment: GL.DEPTH_ATTACHMENT}, // 16 depth bits\n 'depth24plus': {gl: GL.DEPTH_COMPONENT24, b: 3, c: 1, attachment: GL.DEPTH_ATTACHMENT},\n 'depth32float': {gl: GL.DEPTH_COMPONENT32F, b: 4, c: 1, attachment: GL.DEPTH_ATTACHMENT},\n\n 'depth24plus-stencil8': {b: 4, gl: GL.UNSIGNED_INT_24_8, gl1: GL.DEPTH_STENCIL, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n // \"depth24unorm-stencil8\" feature\n 'depth24unorm-stencil8': {gl: GL.DEPTH24_STENCIL8, b: 4, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n // \"depth32float-stencil8\" feature\n \"depth32float-stencil8\": {gl: GL.DEPTH32F_STENCIL8, b: 5, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n\n // BC compressed formats: check device.features.has(\"texture-compression-bc\");\n\n 'bc1-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgb-unorm-srgb-webgl': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n\n 'bc1-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc2-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc2-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc3-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc3-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc4-r-unorm': {gl: GL.COMPRESSED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc4-r-snorm': {gl: GL.COMPRESSED_SIGNED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-unorm': {gl: GL.COMPRESSED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-snorm': {gl: GL.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc6h-rgb-ufloat': {gl: GL.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc6h-rgb-float': {gl: GL.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm': {gl: GL.COMPRESSED_RGBA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n\n // WEBGL_compressed_texture_etc: device.features.has(\"texture-compression-etc2\")\n // Note: Supposedly guaranteed availability compressed formats in WebGL2, but through CPU decompression\n\n 'etc2-rgb8unorm': {gl: GL.COMPRESSED_RGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm': {gl: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm-srgb': {gl: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgba8unorm': {gl: GL.COMPRESSED_RGBA8_ETC2_EAC, f: texture_compression_etc2},\n 'etc2-rgba8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, f: texture_compression_etc2},\n\n 'eac-r11unorm': {gl: GL.COMPRESSED_R11_EAC, f: texture_compression_etc2},\n 'eac-r11snorm': {gl: GL.COMPRESSED_SIGNED_R11_EAC, f: texture_compression_etc2},\n 'eac-rg11unorm': {gl: GL.COMPRESSED_RG11_EAC, f: texture_compression_etc2},\n 'eac-rg11snorm': {gl: GL.COMPRESSED_SIGNED_RG11_EAC, f: texture_compression_etc2},\n\n // X_ASTC compressed formats: device.features.has(\"texture-compression-astc\")\n\n 'astc-4x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-4x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x12_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, f: texture_compression_astc},\n\n // WEBGL_compressed_texture_pvrtc\n\n 'pvrtc-rgb4unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba4unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rbg2unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba2unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n\n // WEBGL_compressed_texture_etc1\n\n 'etc1-rbg-unorm-webgl': {gl: GL.COMPRESSED_RGB_ETC1_WEBGL, f: texture_compression_etc1_webgl},\n\n // WEBGL_compressed_texture_atc\n\n 'atc-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_ATC_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgba-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgbai-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, f: texture_compression_atc_webgl}\n};\n\n// FUNCTIONS\n\nfunction getTextureFormat(format: TextureFormat | GL): TextureFormat {\n if (typeof format === 'string') {\n return format;\n }\n const entry = Object.entries(TEXTURE_FORMATS).find(([, entry]) => (entry.gl === format || entry.gl1 === format));\n if (!entry) {\n throw new Error(`Unknown texture format ${format}`);\n }\n return entry[0] as TextureFormat;\n}\n\n/** Checks if a texture format is supported */\nexport function isTextureFormatSupported(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n // Check that we have a GL constant\n if (isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined) {\n return false;\n }\n // Check extensions\n const extension = info.x || (isWebGL2(gl) ? info.gl2ext || info.gl1ext : info.gl1ext);\n if (extension) {\n return Boolean(gl.getExtension(extension));\n }\n // if (info.gl1 === undefined && info.gl2 === undefined) {\n // // No info - always supported\n // }\n return true;\n}\n\n/** Checks if a texture format is supported */\nexport function getTextureFormatSupport(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): {\n supported: boolean;\n filterable?: boolean;\n renderable?: boolean;\n blendable?: boolean;\n storable?: boolean;\n} {\n const format = getTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return {supported: false};\n }\n let decoded;\n try {\n decoded = decodeTextureFormat(format);\n } catch {}\n\n // Support Check that we have a GL constant\n let supported = isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined;\n supported = supported && checkTextureFeatures(gl, [info.f]);\n\n // Filtering\n const filterable = info.filter\n ? checkTextureFeatures(gl, [info.filter])\n : decoded && !decoded.signed;\n const renderable = info.filter\n ? checkTextureFeatures(gl, [info.render])\n : decoded && !decoded.signed;\n\n return {\n supported,\n renderable: supported && checkTextureFeatures(gl, [info.render]),\n filterable: supported && checkTextureFeatures(gl, [info.filter]),\n blendable: false, // tod,\n storable: false\n };\n}\n\n/** Checks whether linear filtering (interpolated sampling) is available for floating point textures */\nexport function isTextureFormatFilterable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n try {\n const decoded = decodeTextureFormat(format);\n if (decoded.signed) {\n return false;\n }\n } catch {\n return false;\n }\n if (format.endsWith('32float')) {\n return Boolean(gl.getExtension('OES_texture_float_linear'));\n }\n if (format.endsWith('16float')) {\n return Boolean(gl.getExtension('OES_texture_half_float_linear'));\n }\n // if (typeof format === 'string') {\n // if (format === 'rgba32float') {\n // return gl.device.features.has('texture-renderable-rgba32float-webgl');\n // }\n // if (format.endsWith('32float')) {\n // return gl.device.features.has('texture-renderable-float32-webgl');\n // }\n // if (format.endsWith('16float')) {\n // return gl.device.features.has('texture-renderable-float16-webgl');\n // }\n // }\n return true;\n}\n\nexport function isTextureFormatRenderable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n if (typeof format === 'number') {\n return false; // isTextureFormatFilterableWebGL(gl, format);\n }\n // TODO depends on device...\n return true;\n}\n\n/**\n * Converts WebGPU string style texture formats to GL constants\n * Pass through GL constants\n */\nexport function getWebGLTextureFormat(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): GL | undefined {\n const format = getTextureFormat(formatOrGL);\n const formatInfo = TEXTURE_FORMATS[format];\n const webglFormat = isWebGL2(gl) ? formatInfo?.gl : formatInfo?.gl1;\n // Remap or pass through\n if (typeof format === 'number') {\n return webglFormat || format;\n }\n if (webglFormat === undefined) {\n throw new Error(`Unsupported texture format ${format}`);\n }\n return webglFormat;\n}\n\nexport function getWebGLTextureParameters(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL) {\n const format = getTextureFormat(formatOrGL);\n const webglFormat = getWebGLTextureFormat(gl, format);\n const decoded = decodeTextureFormat(format);\n return {\n format: webglFormat,\n dataFormat: getWebGLPixelDataFormat(\n decoded.format,\n decoded.integer,\n decoded.normalized,\n webglFormat\n ),\n type: getWebGLDataType(decoded.dataType),\n // @ts-expect-error\n compressed: decoded.compressed\n };\n}\n\nexport function getWebGLDepthStencilAttachment(\n formatOrGL: TextureFormat | GL\n): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT {\n const format = getTextureFormat(formatOrGL);\n if (typeof format === 'number') {\n // TODO\n throw new Error('unsupported depth stencil format')\n }\n const info = TEXTURE_FORMATS[format];\n const attachment = info.attachment;\n if (!attachment) {\n throw new Error('not a depth stencil format');\n }\n return attachment;\n}\n\n/**\n * function to test if Float 32 bit format texture can be bound as color attachment\n * @todo Generalize to check arbitrary formats?\n */\nexport function _checkFloat32ColorAttachment(\n gl: WebGLRenderingContext,\n internalFormat = gl.RGBA,\n srcFormat = GL.RGBA,\n srcType = GL.UNSIGNED_BYTE\n) {\n let texture: WebGLTexture;\n let framebuffer: WebGLFramebuffer;\n try {\n texture = gl.createTexture();\n gl.bindTexture(GL.TEXTURE_2D, texture);\n\n const level = 0;\n const width = 1;\n const height = 1;\n const border = 0;\n const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue\n gl.texImage2D(\n gl.TEXTURE_2D,\n level,\n internalFormat,\n width,\n height,\n border,\n srcFormat,\n srcType,\n pixel\n );\n\n framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, texture, 0);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER) === GL.FRAMEBUFFER_COMPLETE;\n\n gl.bindTexture(GL.TEXTURE_2D, null);\n return status;\n } finally {\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n }\n}\n\n/** @deprecated should be removed */\nconst DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\n/** @deprecated should be removed */\nconst TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\n/** TODO - VERY roundabout legacy way of calculating bytes per pixel */\nexport function getTextureFormatBytesPerPixel(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): number {\n const format = getTextureFormat(formatOrGL);\n const params = getWebGLTextureParameters(gl, format);\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[params.dataFormat] || 4;\n const channelSize = TYPE_SIZES[params.type] || 1;\n return channels * channelSize;\n}\n\n// DATA TYPE HELPERS\n\nfunction getWebGLPixelDataFormat(\n dataFormat: string,\n integer: boolean,\n normalized: boolean,\n format: GL\n): GL {\n // WebGL1 formats use same internalFormat\n if (format === GL.RGBA || format === GL.RGB) {\n return format;\n }\n // prettier-ignore\n switch (dataFormat) {\n case 'r': return integer && !normalized ? GL.RED_INTEGER : GL.RED;\n case 'rg': return integer && !normalized ? GL.RG_INTEGER : GL.RG;\n case 'rgb': return integer && !normalized ? GL.RGB_INTEGER : GL.RGB;\n case 'rgba': return integer && !normalized ? GL.RGBA_INTEGER : GL.RGBA;\n default: return GL.RGBA;\n }\n}\n\nexport function getWebGLDataType(dataType: string): GL {\n // prettier-ignore\n switch (dataType) {\n case 'uint8': return GL.UNSIGNED_BYTE;\n case 'sint8': return GL.BYTE;\n case 'uint16': return GL.UNSIGNED_SHORT;\n case 'sint16': return GL.SHORT;\n case 'uint32': return GL.UNSIGNED_INT;\n case 'sint32': return GL.INT;\n case 'float16': return GL.HALF_FLOAT;\n case 'float32': return GL.FLOAT;\n default: return GL.UNSIGNED_BYTE;\n }\n}\n"],"file":"texture-formats.js"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getVertexFormat = getVertexFormat;
|
|
9
|
+
|
|
10
|
+
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
11
|
+
|
|
12
|
+
function getVertexFormat(type, components) {
|
|
13
|
+
var base = getDataFormat(type);
|
|
14
|
+
|
|
15
|
+
switch (components) {
|
|
16
|
+
case 1:
|
|
17
|
+
return base;
|
|
18
|
+
|
|
19
|
+
case 2:
|
|
20
|
+
return "".concat(base, "x2");
|
|
21
|
+
|
|
22
|
+
case 3:
|
|
23
|
+
return "".concat(base, "x3");
|
|
24
|
+
|
|
25
|
+
case 4:
|
|
26
|
+
return "".concat(base, "x4");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function getDataFormat(type) {
|
|
31
|
+
switch (type) {
|
|
32
|
+
case _constants.default.INT:
|
|
33
|
+
return 'sint32';
|
|
34
|
+
|
|
35
|
+
case _constants.default.UNSIGNED_INT:
|
|
36
|
+
return 'uint32';
|
|
37
|
+
|
|
38
|
+
case _constants.default.FLOAT:
|
|
39
|
+
return 'float32';
|
|
40
|
+
|
|
41
|
+
default:
|
|
42
|
+
throw new Error(String(type));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=vertex-formats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapter/converters/vertex-formats.ts"],"names":["getVertexFormat","type","components","base","getDataFormat","GL","INT","UNSIGNED_INT","FLOAT","Error","String"],"mappings":";;;;;;;;;AAAA;;AAGO,SAASA,eAAT,CAAyBC,IAAzB,EAAmCC,UAAnC,EAAqE;AAC1E,MAAMC,IAAI,GAAGC,aAAa,CAACH,IAAD,CAA1B;;AACA,UAAQC,UAAR;AACE,SAAK,CAAL;AAAQ,aAAOC,IAAP;;AACR,SAAK,CAAL;AAAQ,uBAAUA,IAAV;;AACR,SAAK,CAAL;AAAQ,uBAAUA,IAAV;;AACR,SAAK,CAAL;AAAQ,uBAAUA,IAAV;AAJV;AAMD;;AAED,SAASC,aAAT,CAAuBH,IAAvB,EAAkE;AAChE,UAAQA,IAAR;AAEE,SAAKI,mBAAGC,GAAR;AAAa,aAAO,QAAP;;AACb,SAAKD,mBAAGE,YAAR;AAAsB,aAAO,QAAP;;AACtB,SAAKF,mBAAGG,KAAR;AAAe,aAAO,SAAP;;AACf;AAAS,YAAM,IAAIC,KAAJ,CAAUC,MAAM,CAACT,IAAD,CAAhB,CAAN;AALX;AAOD","sourcesContent":["import GL from '@luma.gl/constants';\nimport {VertexFormat} from '@luma.gl/api';\n\nexport function getVertexFormat(type: GL, components: number): VertexFormat {\n const base = getDataFormat(type);\n switch (components) {\n case 1: return base;\n case 2: return `${base}x2`;\n case 3: return `${base}x3`;\n case 4: return `${base}x4`;\n }\n}\n\nfunction getDataFormat(type: GL): 'sint32' | 'uint32' | 'float32' {\n switch (type) {\n // TODO\n case GL.INT: return 'sint32';\n case GL.UNSIGNED_INT: return 'uint32';\n case GL.FLOAT: return 'float32';\n default: throw new Error(String(type));\n }\n}"],"file":"vertex-formats.js"}
|
|
@@ -11,14 +11,35 @@ exports.canCompileGLSLExtension = canCompileGLSLExtension;
|
|
|
11
11
|
|
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
13
|
|
|
14
|
-
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
15
|
-
|
|
16
14
|
var _webglChecks = require("../../context/context/webgl-checks");
|
|
17
15
|
|
|
18
16
|
var _isOldIe = require("./is-old-ie");
|
|
19
17
|
|
|
18
|
+
var _textureFormats = require("../converters/texture-formats");
|
|
19
|
+
|
|
20
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
21
|
+
|
|
22
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
|
+
|
|
24
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
+
|
|
20
26
|
function getDeviceFeatures(gl) {
|
|
21
27
|
var features = getWebGLFeatures(gl);
|
|
28
|
+
|
|
29
|
+
var _iterator = _createForOfIteratorHelper((0, _textureFormats.getTextureFeatures)(gl)),
|
|
30
|
+
_step;
|
|
31
|
+
|
|
32
|
+
try {
|
|
33
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
34
|
+
var textureFeature = _step.value;
|
|
35
|
+
features.add(textureFeature);
|
|
36
|
+
}
|
|
37
|
+
} catch (err) {
|
|
38
|
+
_iterator.e(err);
|
|
39
|
+
} finally {
|
|
40
|
+
_iterator.f();
|
|
41
|
+
}
|
|
42
|
+
|
|
22
43
|
return features;
|
|
23
44
|
}
|
|
24
45
|
|
|
@@ -28,7 +49,9 @@ function getWebGLFeatures(gl) {
|
|
|
28
49
|
gl.getExtension('EXT_float_blend');
|
|
29
50
|
var features = new Set();
|
|
30
51
|
|
|
31
|
-
for (var
|
|
52
|
+
for (var _i = 0, _Object$keys = Object.keys(WEBGL_FEATURES); _i < _Object$keys.length; _i++) {
|
|
53
|
+
var feature = _Object$keys[_i];
|
|
54
|
+
|
|
32
55
|
if (isFeatureSupported(gl, feature)) {
|
|
33
56
|
features.add(feature);
|
|
34
57
|
}
|
|
@@ -50,8 +73,8 @@ function isFeatureSupported(gl, feature) {
|
|
|
50
73
|
}
|
|
51
74
|
|
|
52
75
|
switch (feature) {
|
|
53
|
-
case '
|
|
54
|
-
return (0, _webglChecks.isWebGL2)(gl) ? Boolean(gl.getExtension(featureDefinition)) :
|
|
76
|
+
case 'texture-renderable-rgba32float-webgl':
|
|
77
|
+
return (0, _webglChecks.isWebGL2)(gl) ? Boolean(gl.getExtension(featureDefinition)) : (0, _textureFormats._checkFloat32ColorAttachment)(gl);
|
|
55
78
|
|
|
56
79
|
case 'glsl-derivatives':
|
|
57
80
|
return canCompileGLSLExtension(gl, featureDefinition);
|
|
@@ -69,38 +92,6 @@ function isFeatureSupported(gl, feature) {
|
|
|
69
92
|
}
|
|
70
93
|
}
|
|
71
94
|
|
|
72
|
-
function checkFloat32ColorAttachment(gl) {
|
|
73
|
-
var texture;
|
|
74
|
-
var framebuffer;
|
|
75
|
-
|
|
76
|
-
try {
|
|
77
|
-
var _texture = gl.createTexture();
|
|
78
|
-
|
|
79
|
-
gl.bindTexture(_constants.default.TEXTURE_2D, _texture);
|
|
80
|
-
var level = 0;
|
|
81
|
-
var internalFormat = gl.RGBA;
|
|
82
|
-
var width = 1;
|
|
83
|
-
var height = 1;
|
|
84
|
-
var border = 0;
|
|
85
|
-
var srcFormat = gl.RGBA;
|
|
86
|
-
var srcType = gl.UNSIGNED_BYTE;
|
|
87
|
-
var pixel = new Uint8Array([0, 0, 255, 255]);
|
|
88
|
-
gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, srcFormat, srcType, pixel);
|
|
89
|
-
|
|
90
|
-
var _framebuffer = gl.createFramebuffer();
|
|
91
|
-
|
|
92
|
-
gl.bindFramebuffer(_constants.default.FRAMEBUFFER, _framebuffer);
|
|
93
|
-
gl.framebufferTexture2D(_constants.default.FRAMEBUFFER, _constants.default.COLOR_ATTACHMENT0, _constants.default.TEXTURE_2D, _texture, 0);
|
|
94
|
-
|
|
95
|
-
var status = gl.checkFramebufferStatus(_constants.default.FRAMEBUFFER) === _constants.default.FRAMEBUFFER_COMPLETE;
|
|
96
|
-
|
|
97
|
-
return status;
|
|
98
|
-
} finally {
|
|
99
|
-
gl.deleteTexture(texture);
|
|
100
|
-
gl.deleteFramebuffer(framebuffer);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
95
|
var compiledGLSLExtensions = {};
|
|
105
96
|
|
|
106
97
|
function canCompileGLSLExtension(gl, extensionName) {
|
|
@@ -126,24 +117,25 @@ function canCompileGLSLExtension(gl, extensionName) {
|
|
|
126
117
|
}
|
|
127
118
|
|
|
128
119
|
var WEBGL_FEATURES = {
|
|
120
|
+
'webgl': [true, true],
|
|
129
121
|
'webgl2': [false, true],
|
|
130
|
-
'
|
|
131
|
-
'
|
|
132
|
-
'
|
|
133
|
-
'
|
|
134
|
-
'
|
|
135
|
-
'
|
|
136
|
-
'
|
|
137
|
-
'
|
|
138
|
-
'
|
|
139
|
-
'
|
|
140
|
-
'
|
|
141
|
-
'
|
|
142
|
-
'
|
|
143
|
-
'
|
|
144
|
-
'
|
|
145
|
-
'
|
|
146
|
-
'
|
|
122
|
+
'timer-query-webgl': ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],
|
|
123
|
+
'vertex-array-object-webgl1': ['OES_vertex_array_object', true],
|
|
124
|
+
'instanced-rendering-webgl1': ['ANGLE_instanced_arrays', true],
|
|
125
|
+
'multiple-render-targets-webgl1': ['WEBGL_draw_buffers', true],
|
|
126
|
+
'index-uint32-webgl1': ['OES_element_index_uint', true],
|
|
127
|
+
'blend-minmax-webgl1': ['EXT_blend_minmax', true],
|
|
128
|
+
'texture-blend-float-webgl1': ['EXT_float_blend', 'EXT_float_blend'],
|
|
129
|
+
'texture-formats-srgb-webgl1': ['EXT_sRGB', true],
|
|
130
|
+
'texture-formats-depth-webgl1': ['WEBGL_depth_texture', true],
|
|
131
|
+
'texture-formats-float32-webgl1': ['OES_texture_float', true],
|
|
132
|
+
'texture-formats-float16-webgl1': ['OES_texture_half_float', true],
|
|
133
|
+
'texture-filter-linear-float32-webgl': ['OES_texture_float_linear', 'OES_texture_float_linear'],
|
|
134
|
+
'texture-filter-linear-float16-webgl': ['OES_texture_half_float_linear', 'OES_texture_half_float_linear'],
|
|
135
|
+
'texture-filter-anisotropic-webgl': ['EXT_texture_filter_anisotropic', 'EXT_texture_filter_anisotropic'],
|
|
136
|
+
'texture-renderable-rgba32float-webgl': ['WEBGL_color_buffer_float', 'EXT_color_buffer_float'],
|
|
137
|
+
'texture-renderable-float32-webgl': [false, 'EXT_color_buffer_float'],
|
|
138
|
+
'texture-renderable-float16-webgl': ['EXT_color_buffer_half_float', 'EXT_color_buffer_half_float'],
|
|
147
139
|
'glsl-frag-data': ['WEBGL_draw_buffers', true],
|
|
148
140
|
'glsl-frag-depth': ['EXT_frag_depth', true],
|
|
149
141
|
'glsl-derivatives': ['OES_standard_derivatives', true],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapter/device-helpers/device-features.ts"],"names":["getDeviceFeatures","gl","features","getWebGLFeatures","getExtension","Set","feature","WEBGL_FEATURES","isFeatureSupported","add","webgl1Feature","webgl2Feature","featureDefinition","Boolean","checkFloat32ColorAttachment","canCompileGLSLExtension","behavior","texture","framebuffer","createTexture","bindTexture","GL","TEXTURE_2D","level","internalFormat","RGBA","width","height","border","srcFormat","srcType","UNSIGNED_BYTE","pixel","Uint8Array","texImage2D","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","status","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","deleteTexture","deleteFramebuffer","compiledGLSLExtensions","extensionName","opts","source","shader","createShader","VERTEX_SHADER","shaderSource","compileShader","canCompile","getShaderParameter","COMPILE_STATUS","deleteShader"],"mappings":"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","sourcesContent":["// Feature detection for WebGL\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\nimport {isOldIE} from './is-old-ie';\n\nexport type DeviceFeature =\n 'depth-clamping' |\n 'depth24unorm-stencil8' |\n 'depth32float-stencil8' |\n 'pipeline-statistics-query' |\n 'timestamp-query' |\n 'texture-compression-bc';\n\n// TODO - this should be the default export, test cases need updating\nexport type WebGLFeature =\n 'webgl2' |\n\n // api support (unify with WebGPU timestamp-query?)\n 'webgl-timer-query' |\n\n // api support\n 'webgl-vertex-array-object' |\n 'webgl-instanced-rendering' |\n 'webgl-multiple-render-targets' |\n\n // features\n 'webgl-element-index-uint32' |\n\n // blending\n 'webgl-blend-equation-minmax' |\n 'webgl-float-blend' |\n\n // textures | renderbuffers\n 'webgl-color-encoding-srgb' |\n\n // textures\n 'webgl-texture-depth' |\n 'webgl-texture-float' |\n 'webgl-texture-half-float' |\n\n 'webgl-texture-filter-linear-float' |\n 'webgl-texture-filter-linear-half-float' |\n 'webgl-texture-filter-anisotropic' |\n\n // framebuffers | textures and renderbuffers\n 'webgl-color-attachment-rgba32f' |\n 'webgl-color-attachment-float' |\n 'webgl-color-attachment-half-float' |\n\n // glsl extensions\n 'glsl-frag-data' |\n 'glsl-frag-depth' |\n 'glsl-derivatives' |\n 'glsl-texture-lod';\n\n/** Valid feature strings */\nexport type Feature = DeviceFeature | WebGLFeature;\n\n/** Get WebGPU style feature strings */\nexport function getDeviceFeatures(gl: WebGLRenderingContext): Set<DeviceFeature | WebGLFeature> {\n const features = getWebGLFeatures(gl);\n // features.add('depth-clamping'); // GPUPrimitiveState.clampDepth\n // features.add('depth24unorm-stencil8'); // GPUTextureFormat 'depth24unorm-stencil8'.\n // features.add('depth32float-stencil8'); // GPUTextureFormat 'depth32float-stencil8'.\n // features.add('pipeline-statistics-query'); // GPUQueryType \"pipeline-statistics\"\n // features.add('timestamp-query'); // GPUQueryType \"timestamp-query\"\n // TODO\n // features.add('texture-compression-bc'); // GPUQueryType \"timestamp\"\n // TODO\n return features;\n}\n\n/** Extract all WebGL features */\nexport function getWebGLFeatures(gl: WebGLRenderingContext): Set<WebGLFeature> {\n // Enable EXT_float_blend first: https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend\n gl.getExtension('EXT_color_buffer_float');\n gl.getExtension('WEBGL_color_buffer_float');\n gl.getExtension('EXT_float_blend');\n\n const features = new Set<WebGLFeature>();\n for (const feature in WEBGL_FEATURES) {\n if (isFeatureSupported(gl, feature as WebGLFeature)) {\n features.add(feature as WebGLFeature );\n }\n }\n return features;\n}\n\nfunction isFeatureSupported(gl: WebGLRenderingContext, feature: WebGLFeature): boolean {\n const [webgl1Feature, webgl2Feature] = WEBGL_FEATURES[feature];;\n\n // Get extension name from table\n const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;\n\n // Check if the value is dependent on checking one or more extensions\n if (typeof featureDefinition === 'boolean') {\n return featureDefinition;\n }\n\n switch (feature) {\n case 'webgl-color-attachment-rgba32f':\n return isWebGL2(gl) ? Boolean(gl.getExtension(featureDefinition)) :\n checkFloat32ColorAttachment(gl);\n case 'glsl-derivatives':\n return canCompileGLSLExtension(gl, featureDefinition); // TODO options\n case 'glsl-frag-data':\n return canCompileGLSLExtension(gl, featureDefinition, {behavior: 'require'}); // TODO options\n case 'glsl-frag-depth':\n return canCompileGLSLExtension(gl, featureDefinition); // TODO options\n default:\n return Boolean(gl.getExtension(featureDefinition));\n }\n}\n\n\n// function to test if Float 32 bit format texture can be bound as color attachment\nfunction checkFloat32ColorAttachment(gl: WebGLRenderingContext): boolean {\n let texture: WebGLTexture;\n let framebuffer: WebGLFramebuffer;\n try {\n const texture = gl.createTexture();\n gl.bindTexture(GL.TEXTURE_2D, texture);\n\n const level = 0;\n const internalFormat = gl.RGBA;\n const width = 1;\n const height = 1;\n const border = 0;\n const srcFormat = gl.RGBA;\n const srcType = gl.UNSIGNED_BYTE;\n const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat,\n width, height, border, srcFormat, srcType,\n pixel);\n\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, texture, 0);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER) === GL.FRAMEBUFFER_COMPLETE;\n return status;\n } finally {\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n }\n}\n\nconst compiledGLSLExtensions = {};\n\n/*\n * Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n * but fail to compile when the extension is enabled in the shader. Specifically,\n * the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n * in the list of supported extensions.\n * opts allows user agent to be overridden for testing\n * Inputs :\n * gl : WebGL context\n * cap : Key of WEBGL_FEATURES object identifying the extension\n * opts :\n * behavior : behavior of extension to be tested, by defualt `enable` is used\n * Returns : true, if shader is compiled successfully, false otherwise\n */\nexport function canCompileGLSLExtension(gl: WebGLRenderingContext, extensionName, opts: {behavior?} = {}) {\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (extensionName in compiledGLSLExtensions) {\n return compiledGLSLExtensions[extensionName];\n }\n\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGLSLExtensions[extensionName] = canCompile;\n return canCompile;\n}\n\n/** Defines luma.gl \"feature\" names and semantics\n * Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension\n */\nconst WEBGL_FEATURES: Record<WebGLFeature, [boolean | string, boolean | string]> = {\n 'webgl2': [false, true],\n\n // API SUPPORT\n 'webgl-vertex-array-object': ['OES_vertex_array_object', true],\n 'webgl-timer-query': ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n 'webgl-instanced-rendering': ['ANGLE_instanced_arrays', true],\n 'webgl-multiple-render-targets': ['WEBGL_draw_buffers', true],\n\n // FEATURES\n 'webgl-element-index-uint32': ['OES_element_index_uint', true],\n\n // BLENDING\n 'webgl-blend-equation-minmax': ['EXT_blend_minmax', true],\n 'webgl-float-blend': ['EXT_float_blend', 'EXT_float_blend'],\n\n // TEXTURES, RENDERBUFFERS\n 'webgl-color-encoding-srgb': ['EXT_sRGB', true],\n\n // TEXTURES\n 'webgl-texture-depth': ['WEBGL_depth_texture', true],\n 'webgl-texture-float': ['OES_texture_float', true],\n 'webgl-texture-half-float': ['OES_texture_half_float', true],\n\n 'webgl-texture-filter-linear-float': ['OES_texture_float_linear', 'OES_texture_float_linear'],\n 'webgl-texture-filter-linear-half-float': ['OES_texture_half_float_linear', 'OES_texture_half_float_linear'],\n 'webgl-texture-filter-anisotropic': ['EXT_texture_filter_anisotropic', 'EXT_texture_filter_anisotropic'],\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n 'webgl-color-attachment-rgba32f': [false, 'EXT_color_buffer_float'], // Note override check\n 'webgl-color-attachment-float': [false, 'EXT_color_buffer_float'],\n 'webgl-color-attachment-half-float': ['EXT_color_buffer_half_float', 'EXT_color_buffer_half_float'],\n\n // GLSL extensions\n 'glsl-frag-data': ['WEBGL_draw_buffers', true],\n 'glsl-frag-depth': ['EXT_frag_depth', true],\n 'glsl-derivatives': ['OES_standard_derivatives', true],\n 'glsl-texture-lod': ['EXT_shader_texture_lod', true]\n};\n"],"file":"device-features.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapter/device-helpers/device-features.ts"],"names":["getDeviceFeatures","gl","features","getWebGLFeatures","textureFeature","add","getExtension","Set","Object","keys","WEBGL_FEATURES","feature","isFeatureSupported","webgl1Feature","webgl2Feature","featureDefinition","Boolean","canCompileGLSLExtension","behavior","compiledGLSLExtensions","extensionName","opts","source","shader","createShader","VERTEX_SHADER","shaderSource","compileShader","canCompile","getShaderParameter","COMPILE_STATUS","deleteShader"],"mappings":"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","sourcesContent":["// Feature detection for WebGL\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\nimport {DeviceFeature} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\nimport {isOldIE} from './is-old-ie';\nimport {getTextureFeatures, _checkFloat32ColorAttachment} from '../converters/texture-formats';\n\n/** Get WebGPU style feature strings */\nexport function getDeviceFeatures(gl: WebGLRenderingContext): Set<DeviceFeature> {\n const features = getWebGLFeatures(gl);\n\n // texture features\n // features.add('texture-compression-bc'); \n for (const textureFeature of getTextureFeatures(gl)) {\n features.add(textureFeature);\n }\n\n // TODO\n // features.add('depth-clip-control'); // GPUPrimitiveState.clampDepth\n // features.add('depth24unorm-stencil8'); // GPUTextureFormat 'depth24unorm-stencil8'.\n // features.add('depth32float-stencil8'); // GPUTextureFormat 'depth32float-stencil8'.\n // features.add('timestamp-query'); // GPUQueryType \"timestamp-query\"\n // \"indirect-first-instance\"\n\n return features;\n}\n\n/** Extract all WebGL features */\nexport function getWebGLFeatures(gl: WebGLRenderingContext): Set<DeviceFeature> {\n // Enables EXT_float_blend first: https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend\n gl.getExtension('EXT_color_buffer_float');\n gl.getExtension('WEBGL_color_buffer_float');\n gl.getExtension('EXT_float_blend');\n\n const features = new Set<DeviceFeature>();\n for (const feature of Object.keys(WEBGL_FEATURES)) {\n // @ts-expect-error\n if (isFeatureSupported(gl, feature)) {\n // @ts-expect-error\n features.add(feature);\n }\n }\n return features;\n}\n\nfunction isFeatureSupported(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {\n const [webgl1Feature, webgl2Feature] = WEBGL_FEATURES[feature];;\n\n // Get extension name from table\n const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;\n\n // Check if the value is dependent on checking one or more extensions\n if (typeof featureDefinition === 'boolean') {\n return featureDefinition;\n }\n\n switch (feature) {\n case 'texture-renderable-rgba32float-webgl':\n return isWebGL2(gl) ? Boolean(gl.getExtension(featureDefinition)) :\n _checkFloat32ColorAttachment(gl);\n case 'glsl-derivatives':\n return canCompileGLSLExtension(gl, featureDefinition); // TODO options\n case 'glsl-frag-data':\n return canCompileGLSLExtension(gl, featureDefinition, {behavior: 'require'}); // TODO options\n case 'glsl-frag-depth':\n return canCompileGLSLExtension(gl, featureDefinition); // TODO options\n default:\n return Boolean(gl.getExtension(featureDefinition));\n }\n}\n\nconst compiledGLSLExtensions: Record<string, boolean> = {};\n\n/*\n * Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n * but fail to compile when the extension is enabled in the shader. Specifically,\n * the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n * in the list of supported extensions.\n * opts allows user agent to be overridden for testing\n * Inputs :\n * gl : WebGL context\n * cap : Key of WEBGL_FEATURES object identifying the extension\n * opts :\n * behavior : behavior of extension to be tested, by defualt `enable` is used\n * Returns : true, if shader is compiled successfully, false otherwise\n */\nexport function canCompileGLSLExtension(gl: WebGLRenderingContext, extensionName, opts: {behavior?} = {}) {\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (extensionName in compiledGLSLExtensions) {\n return compiledGLSLExtensions[extensionName];\n }\n\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGLSLExtensions[extensionName] = canCompile;\n return canCompile;\n}\n\n/** Defines luma.gl \"feature\" names and semantics\n * Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension\n */\nconst WEBGL_FEATURES: Partial<Record<DeviceFeature, [boolean | string, boolean | string]>> = {\n 'webgl': [true, true],\n 'webgl2': [false, true],\n\n 'timer-query-webgl': ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n\n // WEBGL1 SUPPORT\n 'vertex-array-object-webgl1': ['OES_vertex_array_object', true],\n 'instanced-rendering-webgl1': ['ANGLE_instanced_arrays', true],\n 'multiple-render-targets-webgl1': ['WEBGL_draw_buffers', true],\n 'index-uint32-webgl1': ['OES_element_index_uint', true],\n 'blend-minmax-webgl1': ['EXT_blend_minmax', true],\n 'texture-blend-float-webgl1': ['EXT_float_blend', 'EXT_float_blend'],\n\n // TEXTURES, RENDERBUFFERS\n 'texture-formats-srgb-webgl1': ['EXT_sRGB', true],\n\n // TEXTURES\n 'texture-formats-depth-webgl1': ['WEBGL_depth_texture', true],\n 'texture-formats-float32-webgl1': ['OES_texture_float', true],\n 'texture-formats-float16-webgl1': ['OES_texture_half_float', true],\n\n 'texture-filter-linear-float32-webgl': ['OES_texture_float_linear', 'OES_texture_float_linear'],\n 'texture-filter-linear-float16-webgl': ['OES_texture_half_float_linear', 'OES_texture_half_float_linear'],\n 'texture-filter-anisotropic-webgl': ['EXT_texture_filter_anisotropic', 'EXT_texture_filter_anisotropic'],\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n 'texture-renderable-rgba32float-webgl': ['WEBGL_color_buffer_float', 'EXT_color_buffer_float'], // Note override check\n 'texture-renderable-float32-webgl': [false, 'EXT_color_buffer_float'],\n 'texture-renderable-float16-webgl': ['EXT_color_buffer_half_float', 'EXT_color_buffer_half_float'],\n\n // GLSL extensions\n 'glsl-frag-data': ['WEBGL_draw_buffers', true],\n 'glsl-frag-depth': ['EXT_frag_depth', true],\n 'glsl-derivatives': ['OES_standard_derivatives', true],\n 'glsl-texture-lod': ['EXT_shader_texture_lod', true]\n};\n"],"file":"device-features.js"}
|
|
@@ -59,6 +59,6 @@ function getWebGLLimits(gl) {
|
|
|
59
59
|
return gl2 ? gl2.getParameter(pname) : defaultValue || 0;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
return _ref = {}, (0, _defineProperty2.default)(_ref, _constants.default.ALIASED_LINE_WIDTH_RANGE, get(_constants.default.ALIASED_LINE_WIDTH_RANGE)), (0, _defineProperty2.default)(_ref, _constants.default.ALIASED_POINT_SIZE_RANGE, get(_constants.default.ALIASED_POINT_SIZE_RANGE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TEXTURE_SIZE, get(_constants.default.MAX_TEXTURE_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_CUBE_MAP_TEXTURE_SIZE, get(_constants.default.MAX_CUBE_MAP_TEXTURE_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TEXTURE_IMAGE_UNITS, get(_constants.default.MAX_TEXTURE_IMAGE_UNITS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COMBINED_TEXTURE_IMAGE_UNITS, get(_constants.default.MAX_COMBINED_TEXTURE_IMAGE_UNITS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_TEXTURE_IMAGE_UNITS, get(_constants.default.MAX_VERTEX_TEXTURE_IMAGE_UNITS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_RENDERBUFFER_SIZE, get(_constants.default.MAX_RENDERBUFFER_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VARYING_VECTORS, get(_constants.default.MAX_VARYING_VECTORS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_ATTRIBS, get(_constants.default.MAX_VERTEX_ATTRIBS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_UNIFORM_VECTORS, get(_constants.default.MAX_VERTEX_UNIFORM_VECTORS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_FRAGMENT_UNIFORM_VECTORS, get(_constants.default.MAX_FRAGMENT_UNIFORM_VECTORS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VIEWPORT_DIMS, get(_constants.default.MAX_VIEWPORT_DIMS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_3D_TEXTURE_SIZE, get2(_constants.default.MAX_3D_TEXTURE_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_ARRAY_TEXTURE_LAYERS, get2(_constants.default.MAX_ARRAY_TEXTURE_LAYERS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_CLIENT_WAIT_TIMEOUT_WEBGL, get2(_constants.default.MAX_CLIENT_WAIT_TIMEOUT_WEBGL)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COLOR_ATTACHMENTS, get2(_constants.default.MAX_COLOR_ATTACHMENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, get2(_constants.default.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COMBINED_UNIFORM_BLOCKS, get2(_constants.default.MAX_COMBINED_UNIFORM_BLOCKS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, get2(_constants.default.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_DRAW_BUFFERS, get2(_constants.default.MAX_DRAW_BUFFERS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_ELEMENT_INDEX, get2(_constants.default.MAX_ELEMENT_INDEX)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_ELEMENTS_INDICES, get2(_constants.default.MAX_ELEMENTS_INDICES)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_ELEMENTS_VERTICES, get2(_constants.default.MAX_ELEMENTS_VERTICES)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_FRAGMENT_INPUT_COMPONENTS, get2(_constants.default.MAX_FRAGMENT_INPUT_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_FRAGMENT_UNIFORM_BLOCKS, get2(_constants.default.MAX_FRAGMENT_UNIFORM_BLOCKS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_FRAGMENT_UNIFORM_COMPONENTS, get2(_constants.default.MAX_FRAGMENT_UNIFORM_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_SAMPLES, get2(_constants.default.MAX_SAMPLES)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_SERVER_WAIT_TIMEOUT, get2(_constants.default.MAX_SERVER_WAIT_TIMEOUT)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TEXTURE_LOD_BIAS, get2(_constants.default.MAX_TEXTURE_LOD_BIAS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, get2(_constants.default.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, get2(_constants.default.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, get2(_constants.default.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_UNIFORM_BLOCK_SIZE, get2(_constants.default.MAX_UNIFORM_BLOCK_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_UNIFORM_BUFFER_BINDINGS, get2(_constants.default.MAX_UNIFORM_BUFFER_BINDINGS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VARYING_COMPONENTS, get2(_constants.default.MAX_VARYING_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_OUTPUT_COMPONENTS, get2(_constants.default.MAX_VERTEX_OUTPUT_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_UNIFORM_BLOCKS, get2(_constants.default.MAX_VERTEX_UNIFORM_BLOCKS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_UNIFORM_COMPONENTS, get2(_constants.default.MAX_VERTEX_UNIFORM_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MIN_PROGRAM_TEXEL_OFFSET, get2(_constants.default.MIN_PROGRAM_TEXEL_OFFSET)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_PROGRAM_TEXEL_OFFSET, get2(_constants.default.MAX_PROGRAM_TEXEL_OFFSET)), (0, _defineProperty2.default)(_ref, _constants.default.UNIFORM_BUFFER_OFFSET_ALIGNMENT, get2(_constants.default.UNIFORM_BUFFER_OFFSET_ALIGNMENT)), _ref;
|
|
62
|
+
return _ref = {}, (0, _defineProperty2.default)(_ref, _constants.default.ALIASED_LINE_WIDTH_RANGE, get(_constants.default.ALIASED_LINE_WIDTH_RANGE)), (0, _defineProperty2.default)(_ref, _constants.default.ALIASED_POINT_SIZE_RANGE, get(_constants.default.ALIASED_POINT_SIZE_RANGE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TEXTURE_SIZE, get(_constants.default.MAX_TEXTURE_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_CUBE_MAP_TEXTURE_SIZE, get(_constants.default.MAX_CUBE_MAP_TEXTURE_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TEXTURE_IMAGE_UNITS, get(_constants.default.MAX_TEXTURE_IMAGE_UNITS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COMBINED_TEXTURE_IMAGE_UNITS, get(_constants.default.MAX_COMBINED_TEXTURE_IMAGE_UNITS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_TEXTURE_IMAGE_UNITS, get(_constants.default.MAX_VERTEX_TEXTURE_IMAGE_UNITS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_RENDERBUFFER_SIZE, get(_constants.default.MAX_RENDERBUFFER_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VARYING_VECTORS, get(_constants.default.MAX_VARYING_VECTORS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_ATTRIBS, get(_constants.default.MAX_VERTEX_ATTRIBS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_UNIFORM_VECTORS, get(_constants.default.MAX_VERTEX_UNIFORM_VECTORS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_FRAGMENT_UNIFORM_VECTORS, get(_constants.default.MAX_FRAGMENT_UNIFORM_VECTORS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VIEWPORT_DIMS, get(_constants.default.MAX_VIEWPORT_DIMS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TEXTURE_MAX_ANISOTROPY_EXT, get(_constants.default.MAX_TEXTURE_MAX_ANISOTROPY_EXT)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_3D_TEXTURE_SIZE, get2(_constants.default.MAX_3D_TEXTURE_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_ARRAY_TEXTURE_LAYERS, get2(_constants.default.MAX_ARRAY_TEXTURE_LAYERS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_CLIENT_WAIT_TIMEOUT_WEBGL, get2(_constants.default.MAX_CLIENT_WAIT_TIMEOUT_WEBGL)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COLOR_ATTACHMENTS, get2(_constants.default.MAX_COLOR_ATTACHMENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, get2(_constants.default.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COMBINED_UNIFORM_BLOCKS, get2(_constants.default.MAX_COMBINED_UNIFORM_BLOCKS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, get2(_constants.default.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_DRAW_BUFFERS, get2(_constants.default.MAX_DRAW_BUFFERS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_ELEMENT_INDEX, get2(_constants.default.MAX_ELEMENT_INDEX)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_ELEMENTS_INDICES, get2(_constants.default.MAX_ELEMENTS_INDICES)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_ELEMENTS_VERTICES, get2(_constants.default.MAX_ELEMENTS_VERTICES)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_FRAGMENT_INPUT_COMPONENTS, get2(_constants.default.MAX_FRAGMENT_INPUT_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_FRAGMENT_UNIFORM_BLOCKS, get2(_constants.default.MAX_FRAGMENT_UNIFORM_BLOCKS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_FRAGMENT_UNIFORM_COMPONENTS, get2(_constants.default.MAX_FRAGMENT_UNIFORM_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_SAMPLES, get2(_constants.default.MAX_SAMPLES)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_SERVER_WAIT_TIMEOUT, get2(_constants.default.MAX_SERVER_WAIT_TIMEOUT)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TEXTURE_LOD_BIAS, get2(_constants.default.MAX_TEXTURE_LOD_BIAS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, get2(_constants.default.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, get2(_constants.default.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, get2(_constants.default.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_UNIFORM_BLOCK_SIZE, get2(_constants.default.MAX_UNIFORM_BLOCK_SIZE)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_UNIFORM_BUFFER_BINDINGS, get2(_constants.default.MAX_UNIFORM_BUFFER_BINDINGS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VARYING_COMPONENTS, get2(_constants.default.MAX_VARYING_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_OUTPUT_COMPONENTS, get2(_constants.default.MAX_VERTEX_OUTPUT_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_UNIFORM_BLOCKS, get2(_constants.default.MAX_VERTEX_UNIFORM_BLOCKS)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_VERTEX_UNIFORM_COMPONENTS, get2(_constants.default.MAX_VERTEX_UNIFORM_COMPONENTS)), (0, _defineProperty2.default)(_ref, _constants.default.MIN_PROGRAM_TEXEL_OFFSET, get2(_constants.default.MIN_PROGRAM_TEXEL_OFFSET)), (0, _defineProperty2.default)(_ref, _constants.default.MAX_PROGRAM_TEXEL_OFFSET, get2(_constants.default.MAX_PROGRAM_TEXEL_OFFSET)), (0, _defineProperty2.default)(_ref, _constants.default.UNIFORM_BUFFER_OFFSET_ALIGNMENT, get2(_constants.default.UNIFORM_BUFFER_OFFSET_ALIGNMENT)), _ref;
|
|
63
63
|
}
|
|
64
64
|
//# sourceMappingURL=device-limits.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapter/device-helpers/device-limits.ts"],"names":["getDeviceLimits","gl","gl2","maxTextureDimension1D","maxTextureDimension2D","getParameter","GL","MAX_TEXTURE_SIZE","maxTextureDimension3D","MAX_3D_TEXTURE_SIZE","maxTextureArrayLayers","MAX_ARRAY_TEXTURE_LAYERS","maxBindGroups","maxDynamicUniformBuffersPerPipelineLayout","maxDynamicStorageBuffersPerPipelineLayout","maxSampledTexturesPerShaderStage","MAX_VERTEX_TEXTURE_IMAGE_UNITS","maxSamplersPerShaderStage","MAX_COMBINED_TEXTURE_IMAGE_UNITS","maxStorageBuffersPerShaderStage","maxStorageTexturesPerShaderStage","maxUniformBuffersPerShaderStage","MAX_UNIFORM_BUFFER_BINDINGS","maxUniformBufferBindingSize","MAX_UNIFORM_BLOCK_SIZE","maxStorageBufferBindingSize","minUniformBufferOffsetAlignment","UNIFORM_BUFFER_OFFSET_ALIGNMENT","minStorageBufferOffsetAlignment","maxVertexBuffers","maxVertexAttributes","MAX_VERTEX_ATTRIBS","maxVertexBufferArrayStride","maxInterStageShaderComponents","MAX_VARYING_COMPONENTS","maxComputeWorkgroupStorageSize","maxComputeInvocationsPerWorkgroup","maxComputeWorkgroupSizeX","maxComputeWorkgroupSizeY","maxComputeWorkgroupSizeZ","maxComputeWorkgroupsPerDimension","getWebGLLimits","get","pname","get2","defaultValue","ALIASED_LINE_WIDTH_RANGE","ALIASED_POINT_SIZE_RANGE","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_TEXTURE_IMAGE_UNITS","MAX_RENDERBUFFER_SIZE","MAX_VARYING_VECTORS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_VIEWPORT_DIMS","MAX_CLIENT_WAIT_TIMEOUT_WEBGL","MAX_COLOR_ATTACHMENTS","MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS","MAX_COMBINED_UNIFORM_BLOCKS","MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS","MAX_DRAW_BUFFERS","MAX_ELEMENT_INDEX","MAX_ELEMENTS_INDICES","MAX_ELEMENTS_VERTICES","MAX_FRAGMENT_INPUT_COMPONENTS","MAX_FRAGMENT_UNIFORM_BLOCKS","MAX_FRAGMENT_UNIFORM_COMPONENTS","MAX_SAMPLES","MAX_SERVER_WAIT_TIMEOUT","MAX_TEXTURE_LOD_BIAS","MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS","MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS","MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS","MAX_VERTEX_OUTPUT_COMPONENTS","MAX_VERTEX_UNIFORM_BLOCKS","MAX_VERTEX_UNIFORM_COMPONENTS","MIN_PROGRAM_TEXEL_OFFSET","MAX_PROGRAM_TEXEL_OFFSET"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport type {DeviceLimits} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getWebGL2Context} from '../../context/context/webgl-checks';\n\n/** Populate a WebGPU style device limits */\nexport function getDeviceLimits(gl: WebGLRenderingContext): DeviceLimits {\n const gl2: WebGL2RenderingContext = getWebGL2Context(gl);\n return {\n maxTextureDimension1D: 0, // WebGL does not support 1D textures\n maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),\n maxTextureDimension3D: gl2 ? gl2.getParameter(GL.MAX_3D_TEXTURE_SIZE) : 0,\n maxTextureArrayLayers: gl2 ? gl2.getParameter(GL.MAX_ARRAY_TEXTURE_LAYERS) : 0,\n maxBindGroups: 1, // TBD\n maxDynamicUniformBuffersPerPipelineLayout: 0, // TBD\n maxDynamicStorageBuffersPerPipelineLayout: 0, // TBD\n maxSampledTexturesPerShaderStage: gl.getParameter(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // TBD\n maxSamplersPerShaderStage: gl.getParameter(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n maxStorageBuffersPerShaderStage: 0, // TBD\n maxStorageTexturesPerShaderStage: 0, // TBD\n maxUniformBuffersPerShaderStage: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BUFFER_BINDINGS) : 0,\n maxUniformBufferBindingSize: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BLOCK_SIZE) : 0,\n maxStorageBufferBindingSize: 0,\n minUniformBufferOffsetAlignment: gl2 ? gl2.getParameter(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) : 0,\n minStorageBufferOffsetAlignment: 0, // TBD\n maxVertexBuffers: 0,\n maxVertexAttributes: gl.getParameter(GL.MAX_VERTEX_ATTRIBS),\n maxVertexBufferArrayStride: 2048, // TBD, this is just the default value from WebGPU\n maxInterStageShaderComponents: gl2 ? gl2.getParameter(GL.MAX_VARYING_COMPONENTS) : 0,\n maxComputeWorkgroupStorageSize: 0, // WebGL does not support compute shaders\n maxComputeInvocationsPerWorkgroup: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeX: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeY: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeZ: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupsPerDimension: 0, // WebGL does not support compute shaders\n }\n}\n\n/** WebGL context limits */\nexport type WebGLLimits = {\n [GL.ALIASED_LINE_WIDTH_RANGE]: [number, number];\n [GL.ALIASED_POINT_SIZE_RANGE]: [number, number];\n [GL.MAX_TEXTURE_SIZE]: number;\n [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: number;\n [GL.MAX_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_RENDERBUFFER_SIZE]: number;\n [GL.MAX_VARYING_VECTORS]: number;\n [GL.MAX_VERTEX_ATTRIBS]: number;\n [GL.MAX_VERTEX_UNIFORM_VECTORS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: number;\n [GL.MAX_VIEWPORT_DIMS]: [number, number];\n\n // Extensions\n // [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: number;\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: number;\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: number;\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: number;\n [GL.MAX_COLOR_ATTACHMENTS]: number;\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: number;\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: number;\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: number;\n [GL.MAX_DRAW_BUFFERS]: number;\n [GL.MAX_ELEMENT_INDEX]: number;\n [GL.MAX_ELEMENTS_INDICES]: number;\n [GL.MAX_ELEMENTS_VERTICES]: number;\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: number;\n [GL.MAX_SAMPLES]: number;\n [GL.MAX_SERVER_WAIT_TIMEOUT]: number;\n [GL.MAX_TEXTURE_LOD_BIAS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: number;\n [GL.MAX_UNIFORM_BLOCK_SIZE]: number;\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: number;\n [GL.MAX_VARYING_COMPONENTS]: number;\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: number;\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: number;\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: number;\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: number;\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: number;\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: number;\n};\n\n\nexport function getWebGLLimits(gl: WebGLRenderingContext): WebGLLimits {\n const gl2 = getWebGL2Context(gl);\n function get<T = number>(pname: number): T {\n return gl.getParameter(pname) as T;\n }\n function get2(pname: number, defaultValue?: number): number;\n function get2<T>(pname: number, defaultValue: T): T;\n function get2<T>(pname: number, defaultValue: T): T {\n return gl2 ? gl2.getParameter(pname) as T : (defaultValue || 0) as T;\n }\n return {\n [GL.ALIASED_LINE_WIDTH_RANGE]: get(GL.ALIASED_LINE_WIDTH_RANGE),\n [GL.ALIASED_POINT_SIZE_RANGE]: get(GL.ALIASED_POINT_SIZE_RANGE),\n [GL.MAX_TEXTURE_SIZE]: get(GL.MAX_TEXTURE_SIZE),\n [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: get(GL.MAX_CUBE_MAP_TEXTURE_SIZE), // GLint\n [GL.MAX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: get(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_RENDERBUFFER_SIZE]: get(GL.MAX_RENDERBUFFER_SIZE), // GLint\n [GL.MAX_VARYING_VECTORS]: get(GL.MAX_VARYING_VECTORS), // GLint\n [GL.MAX_VERTEX_ATTRIBS]: get(GL.MAX_VERTEX_ATTRIBS), // GLint\n [GL.MAX_VERTEX_UNIFORM_VECTORS]: get(GL.MAX_VERTEX_UNIFORM_VECTORS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: get(GL.MAX_FRAGMENT_UNIFORM_VECTORS), // GLint\n [GL.MAX_VIEWPORT_DIMS]: get(GL.MAX_VIEWPORT_DIMS),\n\n // Extensions\n // [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: {gl1: 1.0, extension: 'EXT_texture_filter_anisotropic'},\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: get2(GL.MAX_3D_TEXTURE_SIZE), // GLint\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: get2(GL.MAX_ARRAY_TEXTURE_LAYERS), // GLint\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: get2(GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL), // GLint64\n [GL.MAX_COLOR_ATTACHMENTS]: get2(GL.MAX_COLOR_ATTACHMENTS), // GLint\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS), // GLint64\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: get2(GL.MAX_COMBINED_UNIFORM_BLOCKS), // GLint\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS), // GLint64\n [GL.MAX_DRAW_BUFFERS]: get2(GL.MAX_DRAW_BUFFERS), // GLint\n [GL.MAX_ELEMENT_INDEX]: get2(GL.MAX_ELEMENT_INDEX), // GLint64\n [GL.MAX_ELEMENTS_INDICES]: get2(GL.MAX_ELEMENTS_INDICES), // GLint\n [GL.MAX_ELEMENTS_VERTICES]: get2(GL.MAX_ELEMENTS_VERTICES), // GLint\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: get2(GL.MAX_FRAGMENT_INPUT_COMPONENTS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: get2(GL.MAX_FRAGMENT_UNIFORM_BLOCKS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_FRAGMENT_UNIFORM_COMPONENTS), // GLint\n [GL.MAX_SAMPLES]: get2(GL.MAX_SAMPLES), // GLint\n [GL.MAX_SERVER_WAIT_TIMEOUT]: get2(GL.MAX_SERVER_WAIT_TIMEOUT), // GLint64\n [GL.MAX_TEXTURE_LOD_BIAS]: get2(GL.MAX_TEXTURE_LOD_BIAS), // GLfloat\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS), // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS), // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS), // GLint\n [GL.MAX_UNIFORM_BLOCK_SIZE]: get2(GL.MAX_UNIFORM_BLOCK_SIZE), // GLint64\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: get2(GL.MAX_UNIFORM_BUFFER_BINDINGS), // GLint\n [GL.MAX_VARYING_COMPONENTS]: get2(GL.MAX_VARYING_COMPONENTS), // GLint\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: get2(GL.MAX_VERTEX_OUTPUT_COMPONENTS), // GLint\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: get2(GL.MAX_VERTEX_UNIFORM_BLOCKS), // GLint\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_VERTEX_UNIFORM_COMPONENTS), // GLint\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: get2(GL.MIN_PROGRAM_TEXEL_OFFSET), // GLint\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: get2(GL.MAX_PROGRAM_TEXEL_OFFSET), // GLint\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: get2(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) // GLint\n };\n}\n"],"file":"device-limits.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapter/device-helpers/device-limits.ts"],"names":["getDeviceLimits","gl","gl2","maxTextureDimension1D","maxTextureDimension2D","getParameter","GL","MAX_TEXTURE_SIZE","maxTextureDimension3D","MAX_3D_TEXTURE_SIZE","maxTextureArrayLayers","MAX_ARRAY_TEXTURE_LAYERS","maxBindGroups","maxDynamicUniformBuffersPerPipelineLayout","maxDynamicStorageBuffersPerPipelineLayout","maxSampledTexturesPerShaderStage","MAX_VERTEX_TEXTURE_IMAGE_UNITS","maxSamplersPerShaderStage","MAX_COMBINED_TEXTURE_IMAGE_UNITS","maxStorageBuffersPerShaderStage","maxStorageTexturesPerShaderStage","maxUniformBuffersPerShaderStage","MAX_UNIFORM_BUFFER_BINDINGS","maxUniformBufferBindingSize","MAX_UNIFORM_BLOCK_SIZE","maxStorageBufferBindingSize","minUniformBufferOffsetAlignment","UNIFORM_BUFFER_OFFSET_ALIGNMENT","minStorageBufferOffsetAlignment","maxVertexBuffers","maxVertexAttributes","MAX_VERTEX_ATTRIBS","maxVertexBufferArrayStride","maxInterStageShaderComponents","MAX_VARYING_COMPONENTS","maxComputeWorkgroupStorageSize","maxComputeInvocationsPerWorkgroup","maxComputeWorkgroupSizeX","maxComputeWorkgroupSizeY","maxComputeWorkgroupSizeZ","maxComputeWorkgroupsPerDimension","getWebGLLimits","get","pname","get2","defaultValue","ALIASED_LINE_WIDTH_RANGE","ALIASED_POINT_SIZE_RANGE","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_TEXTURE_IMAGE_UNITS","MAX_RENDERBUFFER_SIZE","MAX_VARYING_VECTORS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_VIEWPORT_DIMS","MAX_TEXTURE_MAX_ANISOTROPY_EXT","MAX_CLIENT_WAIT_TIMEOUT_WEBGL","MAX_COLOR_ATTACHMENTS","MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS","MAX_COMBINED_UNIFORM_BLOCKS","MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS","MAX_DRAW_BUFFERS","MAX_ELEMENT_INDEX","MAX_ELEMENTS_INDICES","MAX_ELEMENTS_VERTICES","MAX_FRAGMENT_INPUT_COMPONENTS","MAX_FRAGMENT_UNIFORM_BLOCKS","MAX_FRAGMENT_UNIFORM_COMPONENTS","MAX_SAMPLES","MAX_SERVER_WAIT_TIMEOUT","MAX_TEXTURE_LOD_BIAS","MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS","MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS","MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS","MAX_VERTEX_OUTPUT_COMPONENTS","MAX_VERTEX_UNIFORM_BLOCKS","MAX_VERTEX_UNIFORM_COMPONENTS","MIN_PROGRAM_TEXEL_OFFSET","MAX_PROGRAM_TEXEL_OFFSET"],"mappings":";;;;;;;;;;;;AAEA;;AACA;;AAGO,SAASA,eAAT,CAAyBC,EAAzB,EAAkE;AACvE,MAAMC,GAA2B,GAAG,mCAAiBD,EAAjB,CAApC;AACA,SAAO;AACLE,IAAAA,qBAAqB,EAAE,CADlB;AAELC,IAAAA,qBAAqB,EAAEH,EAAE,CAACI,YAAH,CAAgBC,mBAAGC,gBAAnB,CAFlB;AAGLC,IAAAA,qBAAqB,EAAEN,GAAG,GAAGA,GAAG,CAACG,YAAJ,CAAiBC,mBAAGG,mBAApB,CAAH,GAA8C,CAHnE;AAILC,IAAAA,qBAAqB,EAAER,GAAG,GAAGA,GAAG,CAACG,YAAJ,CAAiBC,mBAAGK,wBAApB,CAAH,GAAmD,CAJxE;AAKLC,IAAAA,aAAa,EAAE,CALV;AAMLC,IAAAA,yCAAyC,EAAE,CANtC;AAOLC,IAAAA,yCAAyC,EAAE,CAPtC;AAQLC,IAAAA,gCAAgC,EAAEd,EAAE,CAACI,YAAH,CAAgBC,mBAAGU,8BAAnB,CAR7B;AASLC,IAAAA,yBAAyB,EAAEhB,EAAE,CAACI,YAAH,CAAgBC,mBAAGY,gCAAnB,CATtB;AAULC,IAAAA,+BAA+B,EAAE,CAV5B;AAWLC,IAAAA,gCAAgC,EAAE,CAX7B;AAYLC,IAAAA,+BAA+B,EAAEnB,GAAG,GAAGA,GAAG,CAACG,YAAJ,CAAiBC,mBAAGgB,2BAApB,CAAH,GAAsD,CAZrF;AAaLC,IAAAA,2BAA2B,EAAErB,GAAG,GAAGA,GAAG,CAACG,YAAJ,CAAiBC,mBAAGkB,sBAApB,CAAH,GAAiD,CAb5E;AAcLC,IAAAA,2BAA2B,EAAE,CAdxB;AAeLC,IAAAA,+BAA+B,EAAExB,GAAG,GAAGA,GAAG,CAACG,YAAJ,CAAiBC,mBAAGqB,+BAApB,CAAH,GAA0D,CAfzF;AAgBLC,IAAAA,+BAA+B,EAAE,CAhB5B;AAiBLC,IAAAA,gBAAgB,EAAE,CAjBb;AAkBLC,IAAAA,mBAAmB,EAAE7B,EAAE,CAACI,YAAH,CAAgBC,mBAAGyB,kBAAnB,CAlBhB;AAmBLC,IAAAA,0BAA0B,EAAE,IAnBvB;AAoBLC,IAAAA,6BAA6B,EAAE/B,GAAG,GAAGA,GAAG,CAACG,YAAJ,CAAiBC,mBAAG4B,sBAApB,CAAH,GAAiD,CApB9E;AAqBLC,IAAAA,8BAA8B,EAAE,CArB3B;AAsBLC,IAAAA,iCAAiC,EAAE,CAtB9B;AAuBLC,IAAAA,wBAAwB,EAAE,CAvBrB;AAwBLC,IAAAA,wBAAwB,EAAE,CAxBrB;AAyBLC,IAAAA,wBAAwB,EAAE,CAzBrB;AA0BLC,IAAAA,gCAAgC,EAAE;AA1B7B,GAAP;AA4BD;;AAsDM,SAASC,cAAT,CAAwBxC,EAAxB,EAAgE;AAAA;;AACrE,MAAMC,GAAG,GAAG,mCAAiBD,EAAjB,CAAZ;;AACA,WAASyC,GAAT,CAAyBC,KAAzB,EAA2C;AACzC,WAAO1C,EAAE,CAACI,YAAH,CAAgBsC,KAAhB,CAAP;AACD;;AAGD,WAASC,IAAT,CAAiBD,KAAjB,EAAgCE,YAAhC,EAAoD;AAClD,WAAO3C,GAAG,GAAGA,GAAG,CAACG,YAAJ,CAAiBsC,KAAjB,CAAH,GAAmCE,YAAY,IAAI,CAA7D;AACD;;AAID,wDACGvC,mBAAGwC,wBADN,EACiCJ,GAAG,CAACpC,mBAAGwC,wBAAJ,CADpC,uCAEGxC,mBAAGyC,wBAFN,EAEiCL,GAAG,CAACpC,mBAAGyC,wBAAJ,CAFpC,uCAGGzC,mBAAGC,gBAHN,EAGyBmC,GAAG,CAACpC,mBAAGC,gBAAJ,CAH5B,uCAIGD,mBAAG0C,yBAJN,EAIkCN,GAAG,CAACpC,mBAAG0C,yBAAJ,CAJrC,uCAKG1C,mBAAG2C,uBALN,EAKgCP,GAAG,CAACpC,mBAAG2C,uBAAJ,CALnC,uCAMG3C,mBAAGY,gCANN,EAMyCwB,GAAG,CAACpC,mBAAGY,gCAAJ,CAN5C,uCAOGZ,mBAAGU,8BAPN,EAOuC0B,GAAG,CAACpC,mBAAGU,8BAAJ,CAP1C,uCAQGV,mBAAG4C,qBARN,EAQ8BR,GAAG,CAACpC,mBAAG4C,qBAAJ,CARjC,uCASG5C,mBAAG6C,mBATN,EAS4BT,GAAG,CAACpC,mBAAG6C,mBAAJ,CAT/B,uCAUG7C,mBAAGyB,kBAVN,EAU2BW,GAAG,CAACpC,mBAAGyB,kBAAJ,CAV9B,uCAWGzB,mBAAG8C,0BAXN,EAWmCV,GAAG,CAACpC,mBAAG8C,0BAAJ,CAXtC,uCAYG9C,mBAAG+C,4BAZN,EAYqCX,GAAG,CAACpC,mBAAG+C,4BAAJ,CAZxC,uCAaG/C,mBAAGgD,iBAbN,EAa0BZ,GAAG,CAACpC,mBAAGgD,iBAAJ,CAb7B,uCAgBGhD,mBAAGiD,8BAhBN,EAgBuCb,GAAG,CAACpC,mBAAGiD,8BAAJ,CAhB1C,uCAmBGjD,mBAAGG,mBAnBN,EAmB4BmC,IAAI,CAACtC,mBAAGG,mBAAJ,CAnBhC,uCAoBGH,mBAAGK,wBApBN,EAoBiCiC,IAAI,CAACtC,mBAAGK,wBAAJ,CApBrC,uCAqBGL,mBAAGkD,6BArBN,EAqBsCZ,IAAI,CAACtC,mBAAGkD,6BAAJ,CArB1C,uCAsBGlD,mBAAGmD,qBAtBN,EAsB8Bb,IAAI,CAACtC,mBAAGmD,qBAAJ,CAtBlC,uCAuBGnD,mBAAGoD,wCAvBN,EAuBiDd,IAAI,CAACtC,mBAAGoD,wCAAJ,CAvBrD,uCAwBGpD,mBAAGqD,2BAxBN,EAwBoCf,IAAI,CAACtC,mBAAGqD,2BAAJ,CAxBxC,uCAyBGrD,mBAAGsD,sCAzBN,EAyB+ChB,IAAI,CAACtC,mBAAGsD,sCAAJ,CAzBnD,uCA0BGtD,mBAAGuD,gBA1BN,EA0ByBjB,IAAI,CAACtC,mBAAGuD,gBAAJ,CA1B7B,uCA2BGvD,mBAAGwD,iBA3BN,EA2B0BlB,IAAI,CAACtC,mBAAGwD,iBAAJ,CA3B9B,uCA4BGxD,mBAAGyD,oBA5BN,EA4B6BnB,IAAI,CAACtC,mBAAGyD,oBAAJ,CA5BjC,uCA6BGzD,mBAAG0D,qBA7BN,EA6B8BpB,IAAI,CAACtC,mBAAG0D,qBAAJ,CA7BlC,uCA8BG1D,mBAAG2D,6BA9BN,EA8BsCrB,IAAI,CAACtC,mBAAG2D,6BAAJ,CA9B1C,uCA+BG3D,mBAAG4D,2BA/BN,EA+BoCtB,IAAI,CAACtC,mBAAG4D,2BAAJ,CA/BxC,uCAgCG5D,mBAAG6D,+BAhCN,EAgCwCvB,IAAI,CAACtC,mBAAG6D,+BAAJ,CAhC5C,uCAiCG7D,mBAAG8D,WAjCN,EAiCoBxB,IAAI,CAACtC,mBAAG8D,WAAJ,CAjCxB,uCAkCG9D,mBAAG+D,uBAlCN,EAkCgCzB,IAAI,CAACtC,mBAAG+D,uBAAJ,CAlCpC,uCAmCG/D,mBAAGgE,oBAnCN,EAmC6B1B,IAAI,CAACtC,mBAAGgE,oBAAJ,CAnCjC,uCAoCGhE,mBAAGiE,6CApCN,EAoCsD3B,IAAI,CAACtC,mBAAGiE,6CAAJ,CApC1D,uCAqCGjE,mBAAGkE,uCArCN,EAqCgD5B,IAAI,CAACtC,mBAAGkE,uCAAJ,CArCpD,uCAsCGlE,mBAAGmE,0CAtCN,EAsCmD7B,IAAI,CAACtC,mBAAGmE,0CAAJ,CAtCvD,uCAuCGnE,mBAAGkB,sBAvCN,EAuC+BoB,IAAI,CAACtC,mBAAGkB,sBAAJ,CAvCnC,uCAwCGlB,mBAAGgB,2BAxCN,EAwCoCsB,IAAI,CAACtC,mBAAGgB,2BAAJ,CAxCxC,uCAyCGhB,mBAAG4B,sBAzCN,EAyC+BU,IAAI,CAACtC,mBAAG4B,sBAAJ,CAzCnC,uCA0CG5B,mBAAGoE,4BA1CN,EA0CqC9B,IAAI,CAACtC,mBAAGoE,4BAAJ,CA1CzC,uCA2CGpE,mBAAGqE,yBA3CN,EA2CkC/B,IAAI,CAACtC,mBAAGqE,yBAAJ,CA3CtC,uCA4CGrE,mBAAGsE,6BA5CN,EA4CsChC,IAAI,CAACtC,mBAAGsE,6BAAJ,CA5C1C,uCA6CGtE,mBAAGuE,wBA7CN,EA6CiCjC,IAAI,CAACtC,mBAAGuE,wBAAJ,CA7CrC,uCA8CGvE,mBAAGwE,wBA9CN,EA8CiClC,IAAI,CAACtC,mBAAGwE,wBAAJ,CA9CrC,uCA+CGxE,mBAAGqB,+BA/CN,EA+CwCiB,IAAI,CAACtC,mBAAGqB,+BAAJ,CA/C5C;AAiDD","sourcesContent":["// luma.gl, MIT license\nimport type {DeviceLimits} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getWebGL2Context} from '../../context/context/webgl-checks';\n\n/** Populate a WebGPU style device limits */\nexport function getDeviceLimits(gl: WebGLRenderingContext): DeviceLimits {\n const gl2: WebGL2RenderingContext = getWebGL2Context(gl);\n return {\n maxTextureDimension1D: 0, // WebGL does not support 1D textures\n maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),\n maxTextureDimension3D: gl2 ? gl2.getParameter(GL.MAX_3D_TEXTURE_SIZE) : 0,\n maxTextureArrayLayers: gl2 ? gl2.getParameter(GL.MAX_ARRAY_TEXTURE_LAYERS) : 0,\n maxBindGroups: 1, // TBD\n maxDynamicUniformBuffersPerPipelineLayout: 0, // TBD\n maxDynamicStorageBuffersPerPipelineLayout: 0, // TBD\n maxSampledTexturesPerShaderStage: gl.getParameter(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // TBD\n maxSamplersPerShaderStage: gl.getParameter(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n maxStorageBuffersPerShaderStage: 0, // TBD\n maxStorageTexturesPerShaderStage: 0, // TBD\n maxUniformBuffersPerShaderStage: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BUFFER_BINDINGS) : 0,\n maxUniformBufferBindingSize: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BLOCK_SIZE) : 0,\n maxStorageBufferBindingSize: 0,\n minUniformBufferOffsetAlignment: gl2 ? gl2.getParameter(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) : 0,\n minStorageBufferOffsetAlignment: 0, // TBD\n maxVertexBuffers: 0,\n maxVertexAttributes: gl.getParameter(GL.MAX_VERTEX_ATTRIBS),\n maxVertexBufferArrayStride: 2048, // TBD, this is just the default value from WebGPU\n maxInterStageShaderComponents: gl2 ? gl2.getParameter(GL.MAX_VARYING_COMPONENTS) : 0,\n maxComputeWorkgroupStorageSize: 0, // WebGL does not support compute shaders\n maxComputeInvocationsPerWorkgroup: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeX: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeY: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeZ: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupsPerDimension: 0, // WebGL does not support compute shaders\n }\n}\n\n/** WebGL context limits */\nexport type WebGLLimits = {\n [GL.ALIASED_LINE_WIDTH_RANGE]: [number, number];\n [GL.ALIASED_POINT_SIZE_RANGE]: [number, number];\n [GL.MAX_TEXTURE_SIZE]: number;\n [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: number;\n [GL.MAX_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_RENDERBUFFER_SIZE]: number;\n [GL.MAX_VARYING_VECTORS]: number;\n [GL.MAX_VERTEX_ATTRIBS]: number;\n [GL.MAX_VERTEX_UNIFORM_VECTORS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: number;\n [GL.MAX_VIEWPORT_DIMS]: [number, number];\n\n // Extensions\n [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: number;\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: number;\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: number;\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: number;\n [GL.MAX_COLOR_ATTACHMENTS]: number;\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: number;\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: number;\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: number;\n [GL.MAX_DRAW_BUFFERS]: number;\n [GL.MAX_ELEMENT_INDEX]: number;\n [GL.MAX_ELEMENTS_INDICES]: number;\n [GL.MAX_ELEMENTS_VERTICES]: number;\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: number;\n [GL.MAX_SAMPLES]: number;\n [GL.MAX_SERVER_WAIT_TIMEOUT]: number;\n [GL.MAX_TEXTURE_LOD_BIAS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: number;\n [GL.MAX_UNIFORM_BLOCK_SIZE]: number;\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: number;\n [GL.MAX_VARYING_COMPONENTS]: number;\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: number;\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: number;\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: number;\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: number;\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: number;\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: number;\n};\n\n\nexport function getWebGLLimits(gl: WebGLRenderingContext): WebGLLimits {\n const gl2 = getWebGL2Context(gl);\n function get<T = number>(pname: number): T {\n return gl.getParameter(pname) as T;\n }\n function get2(pname: number, defaultValue?: number): number;\n function get2<T>(pname: number, defaultValue: T): T;\n function get2<T>(pname: number, defaultValue: T): T {\n return gl2 ? gl2.getParameter(pname) as T : (defaultValue || 0) as T;\n }\n // function getMaxAnistropy() {\n // const extension = gl.getExtension('EXT_texture_filter_anisotropic');\n // }\n return {\n [GL.ALIASED_LINE_WIDTH_RANGE]: get(GL.ALIASED_LINE_WIDTH_RANGE),\n [GL.ALIASED_POINT_SIZE_RANGE]: get(GL.ALIASED_POINT_SIZE_RANGE),\n [GL.MAX_TEXTURE_SIZE]: get(GL.MAX_TEXTURE_SIZE),\n [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: get(GL.MAX_CUBE_MAP_TEXTURE_SIZE), // GLint\n [GL.MAX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: get(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_RENDERBUFFER_SIZE]: get(GL.MAX_RENDERBUFFER_SIZE), // GLint\n [GL.MAX_VARYING_VECTORS]: get(GL.MAX_VARYING_VECTORS), // GLint\n [GL.MAX_VERTEX_ATTRIBS]: get(GL.MAX_VERTEX_ATTRIBS), // GLint\n [GL.MAX_VERTEX_UNIFORM_VECTORS]: get(GL.MAX_VERTEX_UNIFORM_VECTORS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: get(GL.MAX_FRAGMENT_UNIFORM_VECTORS), // GLint\n [GL.MAX_VIEWPORT_DIMS]: get(GL.MAX_VIEWPORT_DIMS),\n\n // Extensions\n [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: get(GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT), // getMaxAnistropy(),\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: get2(GL.MAX_3D_TEXTURE_SIZE), // GLint\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: get2(GL.MAX_ARRAY_TEXTURE_LAYERS), // GLint\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: get2(GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL), // GLint64\n [GL.MAX_COLOR_ATTACHMENTS]: get2(GL.MAX_COLOR_ATTACHMENTS), // GLint\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS), // GLint64\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: get2(GL.MAX_COMBINED_UNIFORM_BLOCKS), // GLint\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS), // GLint64\n [GL.MAX_DRAW_BUFFERS]: get2(GL.MAX_DRAW_BUFFERS), // GLint\n [GL.MAX_ELEMENT_INDEX]: get2(GL.MAX_ELEMENT_INDEX), // GLint64\n [GL.MAX_ELEMENTS_INDICES]: get2(GL.MAX_ELEMENTS_INDICES), // GLint\n [GL.MAX_ELEMENTS_VERTICES]: get2(GL.MAX_ELEMENTS_VERTICES), // GLint\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: get2(GL.MAX_FRAGMENT_INPUT_COMPONENTS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: get2(GL.MAX_FRAGMENT_UNIFORM_BLOCKS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_FRAGMENT_UNIFORM_COMPONENTS), // GLint\n [GL.MAX_SAMPLES]: get2(GL.MAX_SAMPLES), // GLint\n [GL.MAX_SERVER_WAIT_TIMEOUT]: get2(GL.MAX_SERVER_WAIT_TIMEOUT), // GLint64\n [GL.MAX_TEXTURE_LOD_BIAS]: get2(GL.MAX_TEXTURE_LOD_BIAS), // GLfloat\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS), // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS), // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS), // GLint\n [GL.MAX_UNIFORM_BLOCK_SIZE]: get2(GL.MAX_UNIFORM_BLOCK_SIZE), // GLint64\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: get2(GL.MAX_UNIFORM_BUFFER_BINDINGS), // GLint\n [GL.MAX_VARYING_COMPONENTS]: get2(GL.MAX_VARYING_COMPONENTS), // GLint\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: get2(GL.MAX_VERTEX_OUTPUT_COMPONENTS), // GLint\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: get2(GL.MAX_VERTEX_UNIFORM_BLOCKS), // GLint\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_VERTEX_UNIFORM_COMPONENTS), // GLint\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: get2(GL.MIN_PROGRAM_TEXEL_OFFSET), // GLint\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: get2(GL.MAX_PROGRAM_TEXEL_OFFSET), // GLint\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: get2(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) // GLint\n };\n}\n"],"file":"device-limits.js"}
|
|
@@ -19,10 +19,10 @@ function getDeviceInfo(gl) {
|
|
|
19
19
|
var rendererUnmasked = gl.getParameter(ext ? ext.UNMASKED_RENDERER_WEBGL : _constants.default.RENDERER);
|
|
20
20
|
var vendor = vendorUnmasked || vendorMasked;
|
|
21
21
|
var renderer = rendererUnmasked || rendererMasked;
|
|
22
|
-
var
|
|
22
|
+
var gpu = identifyGPUVendor(vendor, renderer);
|
|
23
23
|
return {
|
|
24
24
|
type: (0, _webglChecks.isWebGL2)(gl) ? 'webgl2' : 'webgl',
|
|
25
|
-
|
|
25
|
+
gpu: gpu,
|
|
26
26
|
vendor: vendorUnmasked || vendorMasked,
|
|
27
27
|
renderer: rendererUnmasked || rendererMasked,
|
|
28
28
|
version: gl.getParameter(_constants.default.VERSION),
|
|
@@ -35,21 +35,21 @@ function getDeviceInfo(gl) {
|
|
|
35
35
|
|
|
36
36
|
function identifyGPUVendor(vendor, renderer) {
|
|
37
37
|
if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {
|
|
38
|
-
return '
|
|
38
|
+
return 'nvidia';
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {
|
|
42
|
-
return '
|
|
42
|
+
return 'intel';
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
|
|
46
|
-
return '
|
|
46
|
+
return 'apple';
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
if (vendor.match(/AMD/i) || renderer.match(/AMD/i) || vendor.match(/ATI/i) || renderer.match(/ATI/i)) {
|
|
50
|
-
return '
|
|
50
|
+
return 'amd';
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
return '
|
|
53
|
+
return 'unknown';
|
|
54
54
|
}
|
|
55
55
|
//# sourceMappingURL=get-device-info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapter/device-helpers/get-device-info.ts"],"names":["getDeviceInfo","gl","vendorMasked","getParameter","GL","VENDOR","rendererMasked","RENDERER","ext","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","vendor","renderer","
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapter/device-helpers/get-device-info.ts"],"names":["getDeviceInfo","gl","vendorMasked","getParameter","GL","VENDOR","rendererMasked","RENDERER","ext","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","vendor","renderer","gpu","identifyGPUVendor","type","version","VERSION","shadingLanguages","shadingLanguageVersions","SHADING_LANGUAGE_VERSION","match"],"mappings":";;;;;;;;;AACA;;AACA;;AAGO,SAASA,aAAT,CAAuBC,EAAvB,EAA8D;AACnE,MAAMC,YAAY,GAAGD,EAAE,CAACE,YAAH,CAAgBC,mBAAGC,MAAnB,CAArB;AACA,MAAMC,cAAc,GAAGL,EAAE,CAACE,YAAH,CAAgBC,mBAAGG,QAAnB,CAAvB;AAGA,MAAMC,GAAG,GAAGP,EAAE,CAACQ,YAAH,CAAgB,2BAAhB,CAAZ;AACA,MAAMC,cAAc,GAAGT,EAAE,CAACE,YAAH,CAAgBK,GAAG,GAAGA,GAAG,CAACG,qBAAP,GAA+BP,mBAAGC,MAArD,CAAvB;AACA,MAAMO,gBAAgB,GAAGX,EAAE,CAACE,YAAH,CAAgBK,GAAG,GAAGA,GAAG,CAACK,uBAAP,GAAiCT,mBAAGG,QAAvD,CAAzB;AACA,MAAMO,MAAM,GAAGJ,cAAc,IAAIR,YAAjC;AACA,MAAMa,QAAQ,GAAGH,gBAAgB,IAAIN,cAArC;AACA,MAAMU,GAAG,GAAGC,iBAAiB,CAACH,MAAD,EAASC,QAAT,CAA7B;AACA,SAAO;AACLG,IAAAA,IAAI,EAAE,2BAASjB,EAAT,IAAe,QAAf,GAA0B,OAD3B;AAELe,IAAAA,GAAG,EAAHA,GAFK;AAGLF,IAAAA,MAAM,EAAEJ,cAAc,IAAIR,YAHrB;AAILa,IAAAA,QAAQ,EAAEH,gBAAgB,IAAIN,cAJzB;AAKLa,IAAAA,OAAO,EAAElB,EAAE,CAACE,YAAH,CAAgBC,mBAAGgB,OAAnB,CALJ;AAMLC,IAAAA,gBAAgB,EAAE,CAAC,MAAD,CANb;AAOLC,IAAAA,uBAAuB,EAAE;AACvB,cAAQrB,EAAE,CAACE,YAAH,CAAgBC,mBAAGmB,wBAAnB;AADe;AAPpB,GAAP;AAWD;;AAED,SAASN,iBAAT,CAA2BH,MAA3B,EAA2CC,QAA3C,EAA+G;AAC7G,MAAID,MAAM,CAACU,KAAP,CAAa,SAAb,KAA2BT,QAAQ,CAACS,KAAT,CAAe,SAAf,CAA/B,EAA0D;AACxD,WAAO,QAAP;AACD;;AACD,MAAIV,MAAM,CAACU,KAAP,CAAa,QAAb,KAA0BT,QAAQ,CAACS,KAAT,CAAe,QAAf,CAA9B,EAAwD;AACtD,WAAO,OAAP;AACD;;AACD,MAAIV,MAAM,CAACU,KAAP,CAAa,QAAb,KAA0BT,QAAQ,CAACS,KAAT,CAAe,QAAf,CAA9B,EAAwD;AACtD,WAAO,OAAP;AACD;;AACD,MACEV,MAAM,CAACU,KAAP,CAAa,MAAb,KACAT,QAAQ,CAACS,KAAT,CAAe,MAAf,CADA,IAEAV,MAAM,CAACU,KAAP,CAAa,MAAb,CAFA,IAGAT,QAAQ,CAACS,KAAT,CAAe,MAAf,CAJF,EAKE;AACA,WAAO,KAAP;AACD;;AACD,SAAO,SAAP;AACD","sourcesContent":["import {DeviceInfo} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\n\n/** @returns strings identifying the GPU vendor and driver. */\nexport function getDeviceInfo(gl: WebGLRenderingContext): DeviceInfo {\n const vendorMasked = gl.getParameter(GL.VENDOR);\n const rendererMasked = gl.getParameter(GL.RENDERER);\n // Get unmasked strings if available\n // https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/\n const ext = gl.getExtension('WEBGL_debug_renderer_info');\n const vendorUnmasked = gl.getParameter(ext ? ext.UNMASKED_VENDOR_WEBGL : GL.VENDOR);\n const rendererUnmasked = gl.getParameter(ext ? ext.UNMASKED_RENDERER_WEBGL : GL.RENDERER);\n const vendor = vendorUnmasked || vendorMasked;\n const renderer = rendererUnmasked || rendererMasked;\n const gpu = identifyGPUVendor(vendor, renderer);\n return {\n type: isWebGL2(gl) ? 'webgl2' : 'webgl',\n gpu,\n vendor: vendorUnmasked || vendorMasked,\n renderer: rendererUnmasked || rendererMasked,\n version: gl.getParameter(GL.VERSION),\n shadingLanguages: ['glsl'],\n shadingLanguageVersions: {\n 'glsl': gl.getParameter(GL.SHADING_LANGUAGE_VERSION) as string\n }\n };\n}\n\nfunction identifyGPUVendor(vendor: string, renderer: string): 'nvidia' | 'intel' | 'apple' | 'amd' | 'unknown' {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'nvidia';\n }\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'intel';\n }\n if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {\n return 'apple';\n }\n if (\n vendor.match(/AMD/i) ||\n renderer.match(/AMD/i) ||\n vendor.match(/ATI/i) ||\n renderer.match(/ATI/i)\n ) {\n return 'amd';\n }\n return 'unknown';\n}\n"],"file":"get-device-info.js"}
|