@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +3 -1
- package/dist/adapter/converters/device-parameters.d.ts +12 -3
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +300 -146
- package/dist/adapter/converters/sampler-parameters.d.ts +3 -13
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +74 -219
- package/dist/adapter/converters/shader-formats.d.ts +9 -0
- package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
- package/dist/adapter/converters/shader-formats.js +59 -0
- package/dist/adapter/converters/texture-formats.d.ts +41 -57
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +490 -925
- package/dist/adapter/converters/vertex-formats.d.ts +9 -3
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +56 -33
- package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
- package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
- package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
- package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
- package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
- package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
- package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
- package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
- package/dist/adapter/helpers/decode-webgl-types.js +101 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +2 -49
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +263 -307
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +48 -33
- package/dist/adapter/helpers/set-uniform.d.ts +3 -2
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +66 -111
- package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/webgl-topology-utils.js +88 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +2 -4
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +18 -38
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +92 -91
- package/dist/adapter/objects/webgl-resource.d.ts +6 -31
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +103 -205
- package/dist/adapter/resources/webgl-buffer.d.ts +20 -16
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +163 -155
- package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +283 -58
- package/dist/adapter/resources/webgl-command-encoder.d.ts +12 -6
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +36 -52
- package/dist/adapter/resources/webgl-external-texture.js +93 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -29
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +184 -261
- package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
- package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-query-set.js +136 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts +21 -4
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +140 -20
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -21
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +371 -413
- package/dist/adapter/resources/webgl-sampler.d.ts +5 -6
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +46 -46
- package/dist/adapter/resources/webgl-shader.d.ts +16 -6
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +113 -72
- package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
- package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-texture-view.js +18 -0
- package/dist/adapter/resources/webgl-texture.d.ts +53 -35
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +623 -822
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-transform-feedback.js +162 -0
- package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.js +239 -0
- package/dist/adapter/webgl-canvas-context.d.ts +6 -7
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +61 -50
- package/dist/adapter/webgl-device.d.ts +112 -55
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +453 -331
- package/dist/classic/accessor.d.ts +3 -3
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +135 -130
- package/dist/classic/clear.d.ts +22 -0
- package/dist/classic/clear.d.ts.map +1 -0
- package/dist/classic/clear.js +89 -0
- package/dist/classic/copy-and-blit.d.ts +62 -0
- package/dist/classic/copy-and-blit.d.ts.map +1 -0
- package/dist/classic/copy-and-blit.js +191 -0
- package/dist/classic/format-utils.d.ts +3 -0
- package/dist/classic/format-utils.d.ts.map +1 -0
- package/dist/classic/format-utils.js +44 -0
- package/dist/classic/typed-array-utils.d.ts +17 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +96 -102
- package/dist/context/debug/spector.d.ts +1 -2
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +56 -63
- package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +106 -102
- package/dist/context/helpers/create-browser-context.d.ts +35 -0
- package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
- package/dist/context/helpers/create-browser-context.js +67 -0
- package/dist/context/helpers/webgl-context-data.d.ts +13 -0
- package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
- package/dist/context/helpers/webgl-context-data.js +21 -0
- package/dist/context/helpers/webgl-extensions.d.ts +4 -0
- package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
- package/dist/context/helpers/webgl-extensions.js +10 -0
- package/dist/context/parameters/unified-parameter-api.d.ts +4 -5
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +91 -54
- package/dist/context/parameters/webgl-parameter-tables.d.ts +115 -106
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +463 -423
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +19 -18
- package/dist/context/state-tracker/track-context-state.d.ts +4 -4
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +192 -163
- package/dist/context/state-tracker/with-parameters.d.ts +2 -2
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +44 -32
- package/dist/dist.dev.js +6574 -0
- package/dist/dist.min.js +10 -0
- package/dist/index.cjs +5586 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +25 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -28
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -1
- package/dist.min.js +19 -0
- package/package.json +22 -15
- package/src/adapter/converters/device-parameters.ts +217 -54
- package/src/adapter/converters/sampler-parameters.ts +46 -126
- package/src/adapter/converters/shader-formats.ts +69 -0
- package/src/adapter/converters/texture-formats.ts +369 -340
- package/src/adapter/converters/vertex-formats.ts +71 -10
- package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
- package/src/adapter/device-helpers/webgl-device-info.ts +111 -0
- package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
- package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +38 -25
- package/src/adapter/helpers/get-shader-layout.ts +104 -158
- package/src/adapter/helpers/parse-shader-compiler-log.ts +31 -11
- package/src/adapter/helpers/set-uniform.ts +39 -36
- package/src/adapter/helpers/webgl-topology-utils.ts +110 -0
- package/src/adapter/objects/constants-to-keys.ts +8 -26
- package/src/adapter/objects/webgl-renderbuffer.ts +68 -40
- package/src/adapter/objects/webgl-resource.ts +16 -156
- package/src/adapter/resources/webgl-buffer.ts +103 -112
- package/src/adapter/resources/webgl-command-buffer.ts +333 -41
- package/src/adapter/resources/webgl-command-encoder.ts +33 -22
- package/src/adapter/resources/webgl-external-texture.ts +11 -8
- package/src/adapter/resources/webgl-framebuffer.ts +125 -165
- package/src/adapter/resources/webgl-query-set.ts +171 -0
- package/src/adapter/resources/webgl-render-pass.ts +176 -6
- package/src/adapter/resources/webgl-render-pipeline.ts +308 -229
- package/src/adapter/resources/webgl-sampler.ts +19 -18
- package/src/adapter/resources/webgl-shader.ts +91 -32
- package/src/adapter/resources/webgl-texture-view.ts +28 -0
- package/src/adapter/resources/webgl-texture.ts +147 -184
- package/src/adapter/resources/webgl-transform-feedback.ts +196 -0
- package/src/adapter/resources/webgl-vertex-array.ts +282 -0
- package/src/adapter/webgl-canvas-context.ts +23 -22
- package/src/adapter/webgl-device.ts +411 -196
- package/src/classic/accessor.ts +12 -8
- package/src/classic/clear.ts +118 -0
- package/src/classic/copy-and-blit.ts +318 -0
- package/src/classic/format-utils.ts +47 -0
- package/src/classic/typed-array-utils.ts +19 -31
- package/src/context/debug/spector.ts +16 -10
- package/src/context/debug/webgl-developer-tools.ts +52 -32
- package/src/context/helpers/create-browser-context.ts +116 -0
- package/src/context/helpers/webgl-context-data.ts +31 -0
- package/src/context/helpers/webgl-extensions.ts +17 -0
- package/src/context/parameters/unified-parameter-api.ts +11 -16
- package/src/context/parameters/webgl-parameter-tables.ts +171 -121
- package/src/context/state-tracker/deep-array-equal.ts +3 -0
- package/src/context/state-tracker/track-context-state.ts +35 -26
- package/src/context/state-tracker/with-parameters.ts +12 -3
- package/src/index.ts +41 -55
- package/src/types.ts +6 -0
- package/dist/adapter/converters/device-parameters.js.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/adapter/converters/texture-formats.js.map +0 -1
- package/dist/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/adapter/device-helpers/device-features.d.ts +0 -9
- package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
- package/dist/adapter/device-helpers/device-features.js +0 -112
- package/dist/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
- package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
- package/dist/adapter/device-helpers/device-limits.js +0 -91
- package/dist/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
- package/dist/adapter/device-helpers/get-device-info.js +0 -44
- package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
- package/dist/adapter/device-helpers/is-old-ie.js +0 -8
- package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
- package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
- package/dist/adapter/helpers/attribute-utils.js +0 -81
- package/dist/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/adapter/helpers/uniforms.d.ts +0 -26
- package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
- package/dist/adapter/helpers/uniforms.js +0 -99
- package/dist/adapter/helpers/uniforms.js.map +0 -1
- package/dist/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/adapter/webgl-device.js.map +0 -1
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/bundle.js.map +0 -1
- package/dist/classic/accessor.js.map +0 -1
- package/dist/classic/buffer.d.ts +0 -95
- package/dist/classic/buffer.d.ts.map +0 -1
- package/dist/classic/buffer.js +0 -392
- package/dist/classic/buffer.js.map +0 -1
- package/dist/classic/typed-array-utils.js.map +0 -1
- package/dist/context/context/context-state.d.ts +0 -18
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -26
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/context/context/create-browser-context.d.ts +0 -41
- package/dist/context/context/create-browser-context.d.ts.map +0 -1
- package/dist/context/context/create-browser-context.js +0 -61
- package/dist/context/context/create-browser-context.js.map +0 -1
- package/dist/context/context/create-headless-context.d.ts +0 -9
- package/dist/context/context/create-headless-context.d.ts.map +0 -1
- package/dist/context/context/create-headless-context.js +0 -43
- package/dist/context/context/create-headless-context.js.map +0 -1
- package/dist/context/context/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -103
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/context/context/webgl-checks.d.ts +0 -13
- package/dist/context/context/webgl-checks.d.ts.map +0 -1
- package/dist/context/context/webgl-checks.js +0 -34
- package/dist/context/context/webgl-checks.js.map +0 -1
- package/dist/context/debug/spector.js.map +0 -1
- package/dist/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +0 -91
- package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/context/polyfill/polyfill-context.d.ts +0 -5
- package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
- package/dist/context/polyfill/polyfill-context.js +0 -91
- package/dist/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/context/polyfill/polyfill-table.d.ts +0 -48
- package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
- package/dist/context/polyfill/polyfill-table.js +0 -160
- package/dist/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -335
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/device-parameters.js +0 -185
- package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
- package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/texture-formats.js +0 -1031
- package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
- package/dist/es5/adapter/converters/vertex-formats.js +0 -45
- package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-features.js +0 -155
- package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
- package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
- package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/adapter/helpers/set-uniform.js +0 -125
- package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/es5/adapter/helpers/uniforms.js +0 -112
- package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
- package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
- package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-resource.js +0 -292
- package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
- package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
- package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-shader.js +0 -150
- package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-texture.js +0 -986
- package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/es5/adapter/webgl-canvas-context.js +0 -97
- package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/es5/adapter/webgl-device.js +0 -463
- package/dist/es5/adapter/webgl-device.js.map +0 -1
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/classic/accessor.js +0 -181
- package/dist/es5/classic/accessor.js.map +0 -1
- package/dist/es5/classic/buffer.js +0 -478
- package/dist/es5/classic/buffer.js.map +0 -1
- package/dist/es5/classic/typed-array-utils.js +0 -126
- package/dist/es5/classic/typed-array-utils.js.map +0 -1
- package/dist/es5/context/context/context-state.js +0 -31
- package/dist/es5/context/context/context-state.js.map +0 -1
- package/dist/es5/context/context/create-browser-context.js +0 -83
- package/dist/es5/context/context/create-browser-context.js.map +0 -1
- package/dist/es5/context/context/create-headless-context.js +0 -60
- package/dist/es5/context/context/create-headless-context.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -121
- package/dist/es5/context/context/device-pixels.js.map +0 -1
- package/dist/es5/context/context/webgl-checks.js +0 -54
- package/dist/es5/context/context/webgl-checks.js.map +0 -1
- package/dist/es5/context/debug/spector.js +0 -133
- package/dist/es5/context/debug/spector.js.map +0 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
- package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
- package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-context.js +0 -134
- package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-table.js +0 -166
- package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/es5/context/state-tracker/track-context-state.js +0 -211
- package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/es5/context/state-tracker/with-parameters.js +0 -44
- package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/es5/index.js +0 -290
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/init.js +0 -10
- package/dist/es5/init.js.map +0 -1
- package/dist/es5/types/webgl.js +0 -6
- package/dist/es5/types/webgl.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/types.js.map +0 -1
- package/dist/esm/adapter/converters/device-parameters.js +0 -168
- package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
- package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/texture-formats.js +0 -954
- package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
- package/dist/esm/adapter/converters/vertex-formats.js +0 -35
- package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-features.js +0 -112
- package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
- package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
- package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/adapter/helpers/set-uniform.js +0 -115
- package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/esm/adapter/helpers/uniforms.js +0 -99
- package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
- package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
- package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-resource.js +0 -216
- package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
- package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
- package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-shader.js +0 -76
- package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-texture.js +0 -834
- package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/esm/adapter/webgl-canvas-context.js +0 -54
- package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/esm/adapter/webgl-device.js +0 -337
- package/dist/esm/adapter/webgl-device.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/classic/accessor.js +0 -144
- package/dist/esm/classic/accessor.js.map +0 -1
- package/dist/esm/classic/buffer.js +0 -392
- package/dist/esm/classic/buffer.js.map +0 -1
- package/dist/esm/classic/typed-array-utils.js +0 -112
- package/dist/esm/classic/typed-array-utils.js.map +0 -1
- package/dist/esm/context/context/context-state.js +0 -26
- package/dist/esm/context/context/context-state.js.map +0 -1
- package/dist/esm/context/context/create-browser-context.js +0 -61
- package/dist/esm/context/context/create-browser-context.js.map +0 -1
- package/dist/esm/context/context/create-headless-context.js +0 -43
- package/dist/esm/context/context/create-headless-context.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -103
- package/dist/esm/context/context/device-pixels.js.map +0 -1
- package/dist/esm/context/context/webgl-checks.js +0 -34
- package/dist/esm/context/context/webgl-checks.js.map +0 -1
- package/dist/esm/context/debug/spector.js +0 -76
- package/dist/esm/context/debug/spector.js.map +0 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
- package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
- package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-context.js +0 -91
- package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-table.js +0 -160
- package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/esm/context/state-tracker/track-context-state.js +0 -183
- package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/esm/context/state-tracker/with-parameters.js +0 -36
- package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/esm/index.js +0 -28
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/init.js +0 -4
- package/dist/esm/init.js.map +0 -1
- package/dist/esm/types/webgl.js +0 -2
- package/dist/esm/types/webgl.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.d.ts +0 -2
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -4
- package/dist/init.js.map +0 -1
- package/dist/types/webgl.d.ts +0 -145
- package/dist/types/webgl.d.ts.map +0 -1
- package/dist/types/webgl.js +0 -2
- package/dist/types/webgl.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/src/adapter/converters/renderbuffer-formats.ts +0 -92
- package/src/adapter/device-helpers/device-features.ts +0 -158
- package/src/adapter/device-helpers/device-limits.ts +0 -153
- package/src/adapter/device-helpers/get-device-info.ts +0 -49
- package/src/adapter/device-helpers/is-old-ie.ts +0 -11
- package/src/adapter/helpers/attribute-utils.ts +0 -61
- package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
- package/src/bundle.ts +0 -4
- package/src/classic/buffer.ts +0 -474
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/create-browser-context.ts +0 -118
- package/src/context/context/create-headless-context.ts +0 -48
- package/src/context/context/device-pixels.ts +0 -158
- package/src/context/context/webgl-checks.ts +0 -49
- package/src/context/polyfill/get-parameter-polyfill.ts +0 -118
- package/src/context/polyfill/polyfill-context.ts +0 -97
- package/src/context/polyfill/polyfill-table.ts +0 -162
- package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -360
- package/src/init.ts +0 -4
- package/src/types/webgl.ts +0 -284
|
@@ -1,22 +1,83 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
import {GL} from '@luma.gl/constants';
|
|
6
|
+
import {VertexFormat, VertexType} from '@luma.gl/core';
|
|
7
|
+
|
|
8
|
+
type GLDataType =
|
|
9
|
+
| GL.UNSIGNED_BYTE
|
|
10
|
+
| GL.BYTE
|
|
11
|
+
| GL.UNSIGNED_SHORT
|
|
12
|
+
| GL.SHORT
|
|
13
|
+
| GL.UNSIGNED_INT
|
|
14
|
+
| GL.INT
|
|
15
|
+
| GL.HALF_FLOAT
|
|
16
|
+
| GL.FLOAT;
|
|
17
|
+
|
|
18
|
+
/** Get vertex format from GL constants */
|
|
19
|
+
export function getVertexFormatFromGL(type: GLDataType, components: 1 | 2 | 3 | 4): VertexFormat {
|
|
20
|
+
const base = getVertexTypeFromGL(type);
|
|
21
|
+
// prettier-ignore
|
|
6
22
|
switch (components) {
|
|
23
|
+
// @ts-expect-error TODO deal with lack of formats
|
|
7
24
|
case 1: return base;
|
|
8
25
|
case 2: return `${base}x2`;
|
|
26
|
+
// @ts-expect-error TODO deal with lack of formats
|
|
9
27
|
case 3: return `${base}x3`;
|
|
10
28
|
case 4: return `${base}x4`;
|
|
11
29
|
}
|
|
30
|
+
// @ts-ignore unreachable
|
|
31
|
+
throw new Error(String(components));
|
|
12
32
|
}
|
|
13
33
|
|
|
14
|
-
|
|
34
|
+
/** Get data type from GL constants */
|
|
35
|
+
export function getVertexTypeFromGL(type: GLDataType, normalized = false): VertexType {
|
|
36
|
+
// prettier-ignore
|
|
15
37
|
switch (type) {
|
|
16
|
-
//
|
|
17
|
-
case GL.INT: return 'sint32';
|
|
18
|
-
case GL.UNSIGNED_INT: return 'uint32';
|
|
38
|
+
// WebGPU does not support normalized 32 bit integer attributes
|
|
39
|
+
case GL.INT: return normalized ? 'sint32' : 'sint32';
|
|
40
|
+
case GL.UNSIGNED_INT: return normalized ? 'uint32' : 'uint32';
|
|
41
|
+
case GL.SHORT: return normalized ? 'sint16' : 'unorm16';
|
|
42
|
+
case GL.UNSIGNED_SHORT: return normalized ? 'uint16' : 'unorm16';
|
|
43
|
+
case GL.BYTE: return normalized ? 'sint8' : 'snorm16';
|
|
44
|
+
case GL.UNSIGNED_BYTE: return normalized ? 'uint8' : 'unorm8';
|
|
19
45
|
case GL.FLOAT: return 'float32';
|
|
20
|
-
|
|
46
|
+
case GL.HALF_FLOAT: return 'float16';
|
|
47
|
+
}
|
|
48
|
+
// @ts-ignore unreachable
|
|
49
|
+
throw new Error(String(type));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function getGLFromVertexType(
|
|
53
|
+
dataType: VertexType
|
|
54
|
+
):
|
|
55
|
+
| GL.UNSIGNED_BYTE
|
|
56
|
+
| GL.BYTE
|
|
57
|
+
| GL.UNSIGNED_SHORT
|
|
58
|
+
| GL.SHORT
|
|
59
|
+
| GL.UNSIGNED_INT
|
|
60
|
+
| GL.INT
|
|
61
|
+
| GL.HALF_FLOAT
|
|
62
|
+
| GL.FLOAT {
|
|
63
|
+
// prettier-ignore
|
|
64
|
+
switch (dataType) {
|
|
65
|
+
case 'uint8': return GL.UNSIGNED_BYTE;
|
|
66
|
+
case 'sint8': return GL.BYTE;
|
|
67
|
+
case 'unorm8': return GL.UNSIGNED_BYTE;
|
|
68
|
+
case 'snorm8': return GL.BYTE;
|
|
69
|
+
case 'uint16': return GL.UNSIGNED_SHORT;
|
|
70
|
+
case 'sint16': return GL.SHORT;
|
|
71
|
+
case 'unorm16': return GL.UNSIGNED_SHORT;
|
|
72
|
+
case 'snorm16': return GL.SHORT;
|
|
73
|
+
case 'uint32': return GL.UNSIGNED_INT;
|
|
74
|
+
case 'sint32': return GL.INT;
|
|
75
|
+
// WebGPU does not support normalized 32 bit integer attributes
|
|
76
|
+
// case 'unorm32': return GL.UNSIGNED_INT;
|
|
77
|
+
// case 'snorm32': return GL.INT;
|
|
78
|
+
case 'float16': return GL.HALF_FLOAT;
|
|
79
|
+
case 'float32': return GL.FLOAT;
|
|
21
80
|
}
|
|
22
|
-
|
|
81
|
+
// @ts-ignore unreachable
|
|
82
|
+
throw new Error(String(dataType));
|
|
83
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
// Feature detection for WebGL
|
|
6
|
+
// Provides a function that enables simple checking of which WebGL features are
|
|
7
|
+
|
|
8
|
+
import {DeviceFeature, DeviceFeatures} from '@luma.gl/core';
|
|
9
|
+
import {GLExtensions} from '@luma.gl/constants';
|
|
10
|
+
import {getWebGLExtension} from '../../context/helpers/webgl-extensions';
|
|
11
|
+
import {isTextureFeature, checkTextureFeature} from '../converters/texture-formats';
|
|
12
|
+
import {TEXTURE_FEATURES} from '../converters/texture-formats';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Defines luma.gl "feature" names and semantics
|
|
16
|
+
* when value is 'string' it is the name of the extension that enables this feature
|
|
17
|
+
*/
|
|
18
|
+
const WEBGL_FEATURES: Partial<Record<DeviceFeature, boolean | string>> = {
|
|
19
|
+
// optional WebGPU features
|
|
20
|
+
'depth-clip-control': 'EXT_depth_clamp', // TODO these seem subtly different
|
|
21
|
+
// 'timestamp-query' // GPUQueryType "timestamp-query"
|
|
22
|
+
// "indirect-first-instance"
|
|
23
|
+
// Textures are handled by getTextureFeatures()
|
|
24
|
+
// 'depth24unorm-stencil8' // GPUTextureFormat 'depth24unorm-stencil8'
|
|
25
|
+
// 'depth32float-stencil8' // GPUTextureFormat 'depth32float-stencil8'
|
|
26
|
+
|
|
27
|
+
// optional WebGL features
|
|
28
|
+
'timer-query-webgl': 'EXT_disjoint_timer_query_webgl2',
|
|
29
|
+
'compilation-status-async-webgl': 'KHR_parallel_shader_compile',
|
|
30
|
+
'polygon-mode-webgl': 'WEBGL_polygon_mode',
|
|
31
|
+
'provoking-vertex-webgl': 'WEBGL_provoking_vertex',
|
|
32
|
+
'shader-clip-cull-distance-webgl': 'WEBGL_clip_cull_distance',
|
|
33
|
+
'shader-noperspective-interpolation-webgl': 'NV_shader_noperspective_interpolation',
|
|
34
|
+
'shader-conservative-depth-webgl': 'EXT_conservative_depth'
|
|
35
|
+
|
|
36
|
+
// Textures are handled by getTextureFeatures()
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* WebGL extensions exposed as luma.gl features
|
|
41
|
+
* To minimize GL log noise and improve performance, this class ensures that
|
|
42
|
+
* - WebGL extensions are not queried until the corresponding feature is checked.
|
|
43
|
+
* - WebGL extensions are only queried once.
|
|
44
|
+
*/
|
|
45
|
+
export class WebGLDeviceFeatures extends DeviceFeatures {
|
|
46
|
+
protected gl: WebGL2RenderingContext;
|
|
47
|
+
protected extensions: GLExtensions;
|
|
48
|
+
protected testedFeatures = new Set<DeviceFeature>();
|
|
49
|
+
|
|
50
|
+
constructor(
|
|
51
|
+
gl: WebGL2RenderingContext,
|
|
52
|
+
extensions: GLExtensions,
|
|
53
|
+
disabledFeatures: Partial<Record<DeviceFeature, boolean>>
|
|
54
|
+
) {
|
|
55
|
+
super([], disabledFeatures);
|
|
56
|
+
this.gl = gl;
|
|
57
|
+
this.extensions = extensions;
|
|
58
|
+
// TODO - is this really needed?
|
|
59
|
+
// Enable EXT_float_blend first: https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend
|
|
60
|
+
getWebGLExtension(gl, 'EXT_color_buffer_float', extensions);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
*[Symbol.iterator](): IterableIterator<DeviceFeature> {
|
|
64
|
+
for (const feature of Object.keys(WEBGL_FEATURES) as DeviceFeature[]) {
|
|
65
|
+
if (this.has(feature)) {
|
|
66
|
+
yield feature;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
for (const feature of Object.keys(TEXTURE_FEATURES) as DeviceFeature[]) {
|
|
70
|
+
if (this.has(feature)) {
|
|
71
|
+
yield feature;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
override has(feature: DeviceFeature): boolean {
|
|
78
|
+
if (this.disabledFeatures[feature]) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// We have already tested this feature
|
|
83
|
+
if (!this.testedFeatures.has(feature)) {
|
|
84
|
+
this.testedFeatures.add(feature);
|
|
85
|
+
|
|
86
|
+
// Check the feature once
|
|
87
|
+
if (isTextureFeature(feature) && checkTextureFeature(this.gl, feature, this.extensions)) {
|
|
88
|
+
this.features.add(feature);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (this.getWebGLFeature(feature)) {
|
|
92
|
+
this.features.add(feature);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return this.features.has(feature);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// FOR DEVICE
|
|
99
|
+
|
|
100
|
+
initializeFeatures() {
|
|
101
|
+
// @ts-expect-error
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
103
|
+
for (const feature of this) {
|
|
104
|
+
// WebGL extensions are initialized by requesting them
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// IMPLEMENTATION
|
|
109
|
+
|
|
110
|
+
/** Extract all WebGL features */
|
|
111
|
+
protected getWebGLFeature(feature: DeviceFeature): boolean {
|
|
112
|
+
const featureInfo = WEBGL_FEATURES[feature];
|
|
113
|
+
// string value requires checking the corresponding WebGL extension
|
|
114
|
+
const isSupported =
|
|
115
|
+
typeof featureInfo === 'string'
|
|
116
|
+
? Boolean(getWebGLExtension(this.gl, featureInfo, this.extensions))
|
|
117
|
+
: Boolean(featureInfo);
|
|
118
|
+
|
|
119
|
+
return isSupported;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {DeviceInfo} from '@luma.gl/core';
|
|
6
|
+
import {GL, GLExtensions} from '@luma.gl/constants';
|
|
7
|
+
import {getWebGLExtension} from '../../context/helpers/webgl-extensions';
|
|
8
|
+
|
|
9
|
+
/** @returns strings identifying the GPU vendor and driver. */
|
|
10
|
+
export function getDeviceInfo(gl: WebGL2RenderingContext, extensions: GLExtensions): DeviceInfo {
|
|
11
|
+
// "Masked" info is always available, but don't contain much useful information
|
|
12
|
+
const vendorMasked = gl.getParameter(GL.VENDOR);
|
|
13
|
+
const rendererMasked = gl.getParameter(GL.RENDERER);
|
|
14
|
+
|
|
15
|
+
// If we are lucky, unmasked info is available
|
|
16
|
+
// https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/
|
|
17
|
+
getWebGLExtension(gl, 'WEBGL_debug_renderer_info', extensions);
|
|
18
|
+
const ext = extensions.WEBGL_debug_renderer_info;
|
|
19
|
+
const vendorUnmasked = gl.getParameter(ext ? ext.UNMASKED_VENDOR_WEBGL : GL.VENDOR);
|
|
20
|
+
const rendererUnmasked = gl.getParameter(ext ? ext.UNMASKED_RENDERER_WEBGL : GL.RENDERER);
|
|
21
|
+
const vendor = vendorUnmasked || vendorMasked;
|
|
22
|
+
const renderer = rendererUnmasked || rendererMasked;
|
|
23
|
+
|
|
24
|
+
// Driver version
|
|
25
|
+
const version = gl.getParameter(GL.VERSION) as string;
|
|
26
|
+
|
|
27
|
+
// "Sniff" the GPU type and backend from the info. This works best if unmasked info is available.
|
|
28
|
+
const gpu = identifyGPUVendor(vendor, renderer);
|
|
29
|
+
const gpuBackend = identifyGPUBackend(vendor, renderer);
|
|
30
|
+
const gpuType = identifyGPUType(vendor, renderer);
|
|
31
|
+
|
|
32
|
+
// Determine GLSL version
|
|
33
|
+
// For now, skip parsing of the long version string, just use context type below to deduce version
|
|
34
|
+
// const version = gl.getParameter(GL.SHADING_LANGUAGE_VERSION) as string;
|
|
35
|
+
// const shadingLanguageVersion = parseGLSLVersion(version);
|
|
36
|
+
const shadingLanguage = 'glsl';
|
|
37
|
+
const shadingLanguageVersion = 300;
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
type: 'webgl',
|
|
41
|
+
gpu,
|
|
42
|
+
gpuType,
|
|
43
|
+
gpuBackend,
|
|
44
|
+
vendor,
|
|
45
|
+
renderer,
|
|
46
|
+
version,
|
|
47
|
+
shadingLanguage,
|
|
48
|
+
shadingLanguageVersion
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** "Sniff" the GPU type from the info. This works best if unmasked info is available. */
|
|
53
|
+
function identifyGPUVendor(
|
|
54
|
+
vendor: string,
|
|
55
|
+
renderer: string
|
|
56
|
+
): 'nvidia' | 'intel' | 'apple' | 'amd' | 'software' | 'unknown' {
|
|
57
|
+
if (/NVIDIA/i.exec(vendor) || /NVIDIA/i.exec(renderer)) {
|
|
58
|
+
return 'nvidia';
|
|
59
|
+
}
|
|
60
|
+
if (/INTEL/i.exec(vendor) || /INTEL/i.exec(renderer)) {
|
|
61
|
+
return 'intel';
|
|
62
|
+
}
|
|
63
|
+
if (/Apple/i.exec(vendor) || /Apple/i.exec(renderer)) {
|
|
64
|
+
return 'apple';
|
|
65
|
+
}
|
|
66
|
+
if (
|
|
67
|
+
/AMD/i.exec(vendor) ||
|
|
68
|
+
/AMD/i.exec(renderer) ||
|
|
69
|
+
/ATI/i.exec(vendor) ||
|
|
70
|
+
/ATI/i.exec(renderer)
|
|
71
|
+
) {
|
|
72
|
+
return 'amd';
|
|
73
|
+
}
|
|
74
|
+
if (/SwiftShader/i.exec(vendor) || /SwiftShader/i.exec(renderer)) {
|
|
75
|
+
return 'software';
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return 'unknown';
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** "Sniff" the GPU backend from the info. This works best if unmasked info is available. */
|
|
82
|
+
function identifyGPUBackend(vendor: string, renderer: string): 'opengl' | 'metal' | 'unknown' {
|
|
83
|
+
if (/Metal/i.exec(vendor) || /Metal/i.exec(renderer)) {
|
|
84
|
+
return 'metal';
|
|
85
|
+
}
|
|
86
|
+
if (/ANGLE/i.exec(vendor) || /ANGLE/i.exec(renderer)) {
|
|
87
|
+
return 'opengl';
|
|
88
|
+
}
|
|
89
|
+
return 'unknown';
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function identifyGPUType(
|
|
93
|
+
vendor: string,
|
|
94
|
+
renderer: string
|
|
95
|
+
): 'discrete' | 'integrated' | 'cpu' | 'unknown' {
|
|
96
|
+
if (/SwiftShader/i.exec(vendor) || /SwiftShader/i.exec(renderer)) {
|
|
97
|
+
return 'cpu';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const gpuVendor = identifyGPUVendor(vendor, renderer);
|
|
101
|
+
switch (gpuVendor) {
|
|
102
|
+
case 'intel':
|
|
103
|
+
return 'integrated';
|
|
104
|
+
case 'software':
|
|
105
|
+
return 'cpu';
|
|
106
|
+
case 'unknown':
|
|
107
|
+
return 'unknown';
|
|
108
|
+
default:
|
|
109
|
+
return 'discrete';
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {DeviceLimits} from '@luma.gl/core';
|
|
6
|
+
import {GL} from '@luma.gl/constants';
|
|
7
|
+
|
|
8
|
+
// prettier-ignore
|
|
9
|
+
export class WebGLDeviceLimits extends DeviceLimits {
|
|
10
|
+
get maxTextureDimension1D() { return 0; } // WebGL does not support 1D textures
|
|
11
|
+
get maxTextureDimension2D() { return this.getParameter(GL.MAX_TEXTURE_SIZE); }
|
|
12
|
+
get maxTextureDimension3D() { return this.getParameter(GL.MAX_3D_TEXTURE_SIZE); }
|
|
13
|
+
get maxTextureArrayLayers() { return this.getParameter(GL.MAX_ARRAY_TEXTURE_LAYERS); }
|
|
14
|
+
get maxBindGroups() { return 0; }
|
|
15
|
+
get maxDynamicUniformBuffersPerPipelineLayout() { return 0; } // TBD
|
|
16
|
+
get maxDynamicStorageBuffersPerPipelineLayout() { return 0; } // TBD
|
|
17
|
+
get maxSampledTexturesPerShaderStage() { return this.getParameter(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS); } // ) TBD
|
|
18
|
+
get maxSamplersPerShaderStage() { return this.getParameter(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS); }
|
|
19
|
+
get maxStorageBuffersPerShaderStage() { return 0; } // TBD
|
|
20
|
+
get maxStorageTexturesPerShaderStage() { return 0; } // TBD
|
|
21
|
+
get maxUniformBuffersPerShaderStage() { return this.getParameter(GL.MAX_UNIFORM_BUFFER_BINDINGS); }
|
|
22
|
+
get maxUniformBufferBindingSize() { return this.getParameter(GL.MAX_UNIFORM_BLOCK_SIZE); }
|
|
23
|
+
get maxStorageBufferBindingSize() { return 0; }
|
|
24
|
+
get minUniformBufferOffsetAlignment() { return this.getParameter(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT); }
|
|
25
|
+
get minStorageBufferOffsetAlignment() { return 0; }
|
|
26
|
+
get maxVertexBuffers() { return 16; } // WebGL 2 supports 16 buffers, see https://github.com/gpuweb/gpuweb/issues/4284
|
|
27
|
+
get maxVertexAttributes() { return this.getParameter(GL.MAX_VERTEX_ATTRIBS); }
|
|
28
|
+
get maxVertexBufferArrayStride() { return 2048; } // TBD, this is just the default value from WebGPU
|
|
29
|
+
get maxInterStageShaderComponents() { return this.getParameter(GL.MAX_VARYING_COMPONENTS); }
|
|
30
|
+
get maxComputeWorkgroupStorageSize() { return 0; } // WebGL does not support compute shaders
|
|
31
|
+
get maxComputeInvocationsPerWorkgroup() { return 0; } // WebGL does not support compute shaders
|
|
32
|
+
get maxComputeWorkgroupSizeX() { return 0; } // WebGL does not support compute shaders
|
|
33
|
+
get maxComputeWorkgroupSizeY() { return 0; } // WebGL does not support compute shaders
|
|
34
|
+
get maxComputeWorkgroupSizeZ() { return 0; } // WebGL does not support compute shaders
|
|
35
|
+
get maxComputeWorkgroupsPerDimension() { return 0;} // WebGL does not support compute shaders
|
|
36
|
+
|
|
37
|
+
// PRIVATE
|
|
38
|
+
|
|
39
|
+
protected gl: WebGL2RenderingContext;
|
|
40
|
+
protected limits: Partial<Record<GL, number>> = {};
|
|
41
|
+
|
|
42
|
+
constructor(gl: WebGL2RenderingContext) {
|
|
43
|
+
super();
|
|
44
|
+
this.gl = gl;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
protected getParameter(parameter: GL): number {
|
|
48
|
+
if (this.limits[parameter] === undefined) {
|
|
49
|
+
this.limits[parameter] = this.gl.getParameter(parameter);
|
|
50
|
+
}
|
|
51
|
+
return this.limits[parameter];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {ShaderUniformType, ShaderAttributeType, VertexFormat} from '@luma.gl/core';
|
|
6
|
+
import {GL, GLUniformType, GLSamplerType, GLCompositeType, GLDataType} from '@luma.gl/constants';
|
|
4
7
|
|
|
5
8
|
/** Check is uniform is of sampler type */
|
|
6
9
|
export function isSamplerUniform(type: GLUniformType): boolean {
|
|
@@ -28,7 +31,7 @@ const SAMPLER_TYPES: GLSamplerType[] = [
|
|
|
28
31
|
// Composite types table
|
|
29
32
|
const COMPOSITE_GL_TYPES: Record<
|
|
30
33
|
GLCompositeType,
|
|
31
|
-
[
|
|
34
|
+
[GLDataType, number, string, ShaderUniformType, VertexFormat?]
|
|
32
35
|
> = {
|
|
33
36
|
[GL.FLOAT]: [GL.FLOAT, 1, 'float', 'f32', 'float32'],
|
|
34
37
|
[GL.FLOAT_VEC2]: [GL.FLOAT, 2, 'vec2', 'vec2<f32>', 'float32x2'],
|
|
@@ -45,11 +48,12 @@ const COMPOSITE_GL_TYPES: Record<
|
|
|
45
48
|
[GL.UNSIGNED_INT_VEC3]: [GL.UNSIGNED_INT, 3, 'uvec3', 'vec3<u32>', 'uint32x3'],
|
|
46
49
|
[GL.UNSIGNED_INT_VEC4]: [GL.UNSIGNED_INT, 4, 'uvec4', 'vec4<u32>', 'uint32x4'],
|
|
47
50
|
|
|
48
|
-
[GL.BOOL]: [GL.FLOAT, 1, 'bool', 'f32', '
|
|
49
|
-
[GL.BOOL_VEC2]: [GL.FLOAT, 2, 'bvec2', 'vec2<f32>'],
|
|
50
|
-
[GL.BOOL_VEC3]: [GL.FLOAT, 3, 'bvec3', 'vec3<f32>'],
|
|
51
|
-
[GL.BOOL_VEC4]: [GL.FLOAT, 4, 'bvec4', 'vec4<f32>'],
|
|
51
|
+
[GL.BOOL]: [GL.FLOAT, 1, 'bool', 'f32', 'float32'],
|
|
52
|
+
[GL.BOOL_VEC2]: [GL.FLOAT, 2, 'bvec2', 'vec2<f32>', 'float32x2'],
|
|
53
|
+
[GL.BOOL_VEC3]: [GL.FLOAT, 3, 'bvec3', 'vec3<f32>', 'float32x3'],
|
|
54
|
+
[GL.BOOL_VEC4]: [GL.FLOAT, 4, 'bvec4', 'vec4<f32>', 'float32x4'],
|
|
52
55
|
|
|
56
|
+
// TODO - are sizes/components below correct?
|
|
53
57
|
[GL.FLOAT_MAT2]: [GL.FLOAT, 8, 'mat2', 'mat2x2<f32>'], // 4
|
|
54
58
|
[GL.FLOAT_MAT2x3]: [GL.FLOAT, 8, 'mat2x3', 'mat2x3<f32>'], // 6
|
|
55
59
|
[GL.FLOAT_MAT2x4]: [GL.FLOAT, 8, 'mat2x4', 'mat2x4<f32>'], // 8
|
|
@@ -63,11 +67,13 @@ const COMPOSITE_GL_TYPES: Record<
|
|
|
63
67
|
[GL.FLOAT_MAT4]: [GL.FLOAT, 16, 'mat4', 'mat4x4<f32>'] // 16
|
|
64
68
|
};
|
|
65
69
|
|
|
66
|
-
/** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
|
|
67
|
-
export function
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
/** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
|
|
71
|
+
export function decodeGLUniformType(glUniformType: GL): {
|
|
72
|
+
format: ShaderUniformType;
|
|
73
|
+
components: number;
|
|
74
|
+
glType: GLDataType;
|
|
75
|
+
} {
|
|
76
|
+
const typeAndSize = COMPOSITE_GL_TYPES[glUniformType];
|
|
71
77
|
if (!typeAndSize) {
|
|
72
78
|
throw new Error('uniform');
|
|
73
79
|
}
|
|
@@ -75,24 +81,28 @@ export function decodeUniformType(
|
|
|
75
81
|
return {format, components, glType};
|
|
76
82
|
}
|
|
77
83
|
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
/** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
|
|
85
|
+
export function decodeGLAttributeType(glAttributeType: GL): {
|
|
86
|
+
attributeType: ShaderAttributeType;
|
|
87
|
+
vertexFormat: VertexFormat;
|
|
80
88
|
components: number;
|
|
81
|
-
glType:
|
|
89
|
+
// glType: GLDataType;
|
|
82
90
|
} {
|
|
83
|
-
const typeAndSize = COMPOSITE_GL_TYPES[
|
|
91
|
+
const typeAndSize = COMPOSITE_GL_TYPES[glAttributeType];
|
|
84
92
|
if (!typeAndSize) {
|
|
85
|
-
throw new Error('attribute')
|
|
93
|
+
throw new Error('attribute');
|
|
86
94
|
}
|
|
87
|
-
const [
|
|
88
|
-
|
|
95
|
+
const [, components, , shaderType, vertexFormat] = typeAndSize;
|
|
96
|
+
// TODO sanity - if (shaderType.startsWith('mat' ...))
|
|
97
|
+
const attributeType = shaderType as unknown as ShaderAttributeType;
|
|
98
|
+
return {attributeType, vertexFormat, components}; // , glType};
|
|
89
99
|
}
|
|
90
100
|
|
|
91
101
|
/** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
|
|
92
|
-
export function
|
|
93
|
-
|
|
94
|
-
): {type:
|
|
95
|
-
const typeAndSize = COMPOSITE_GL_TYPES[
|
|
102
|
+
export function decomposeCompositeGLDataType(
|
|
103
|
+
compositeGLDataType: GLCompositeType
|
|
104
|
+
): {type: GLDataType; components: number} | null {
|
|
105
|
+
const typeAndSize = COMPOSITE_GL_TYPES[compositeGLDataType];
|
|
96
106
|
if (!typeAndSize) {
|
|
97
107
|
return null;
|
|
98
108
|
}
|
|
@@ -100,7 +110,10 @@ export function decomposeCompositeGLType(
|
|
|
100
110
|
return {type, components};
|
|
101
111
|
}
|
|
102
112
|
|
|
103
|
-
export function
|
|
113
|
+
export function getCompositeGLDataType(
|
|
114
|
+
type: GL,
|
|
115
|
+
components
|
|
116
|
+
): {glType: GLDataType; name: string} | null {
|
|
104
117
|
switch (type) {
|
|
105
118
|
case GL.BYTE:
|
|
106
119
|
case GL.UNSIGNED_BYTE:
|