@luma.gl/webgl 9.0.0-alpha.5 → 9.0.0-alpha.51
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 +23 -4
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +101 -73
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +6 -6
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +74 -111
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- 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 +52 -0
- package/dist/adapter/converters/shader-formats.js.map +1 -0
- package/dist/adapter/converters/texture-formats.d.ts +32 -44
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +309 -346
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- 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 +53 -22
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +17 -23
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +54 -58
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +31 -22
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.js +2 -1
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
- 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 +89 -0
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +87 -143
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- 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 +16 -11
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- 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 +51 -82
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- 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 +103 -0
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +2 -29
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- 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 +36 -44
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +6 -9
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +26 -83
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +19 -11
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +60 -88
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- 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 +175 -48
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +10 -20
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +63 -173
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +99 -11
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -21
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +108 -270
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +11 -21
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +5 -5
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +18 -43
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +62 -42
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +137 -256
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- 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 +164 -0
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -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 +167 -0
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -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 +10 -23
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +76 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +219 -129
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +3 -3
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +26 -52
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/clear.d.ts +22 -0
- package/dist/classic/clear.d.ts.map +1 -0
- package/dist/classic/clear.js +88 -0
- package/dist/classic/clear.js.map +1 -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/copy-and-blit.js.map +1 -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 +37 -0
- package/dist/classic/format-utils.js.map +1 -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 +18 -39
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.d.ts +40 -0
- package/dist/context/context/create-browser-context.d.ts.map +1 -0
- package/dist/context/context/create-browser-context.js +53 -0
- package/dist/context/context/create-browser-context.js.map +1 -0
- package/dist/context/context/create-headless-context.d.ts +9 -0
- package/dist/context/context/create-headless-context.d.ts.map +1 -0
- package/dist/context/context/create-headless-context.js +42 -0
- package/dist/context/context/create-headless-context.js.map +1 -0
- package/dist/context/context/webgl-checks.d.ts.map +1 -1
- package/dist/context/context/webgl-checks.js +1 -4
- package/dist/context/context/webgl-checks.js.map +1 -1
- 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 +8 -20
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +15 -39
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -19
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +267 -286
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/context-data.d.ts +13 -0
- package/dist/context/polyfill/context-data.d.ts.map +1 -0
- package/dist/context/polyfill/context-data.js +12 -0
- package/dist/context/polyfill/context-data.js.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +22 -30
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +8 -8
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +18 -41
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
- package/dist/context/polyfill/polyfill-vertex-array-object.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 +0 -4
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +26 -62
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts +2 -1
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +8 -10
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +8624 -0
- package/dist/index.cjs +6570 -0
- package/dist/index.d.ts +26 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -26
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist.min.js +52 -0
- package/package.json +21 -9
- package/src/adapter/converters/device-parameters.ts +144 -41
- package/src/adapter/converters/sampler-parameters.ts +103 -41
- package/src/adapter/converters/shader-formats.ts +44 -0
- package/src/adapter/converters/texture-formats.ts +268 -195
- package/src/adapter/converters/vertex-formats.ts +71 -10
- package/src/adapter/device-helpers/device-features.ts +14 -3
- package/src/adapter/device-helpers/device-limits.ts +5 -3
- package/src/adapter/device-helpers/get-device-info.ts +53 -18
- package/src/adapter/device-helpers/is-old-ie.ts +3 -0
- package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
- package/src/adapter/helpers/get-shader-layout.ts +121 -146
- package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
- package/src/adapter/helpers/set-uniform.ts +39 -35
- package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
- package/src/adapter/objects/constants-to-keys.ts +6 -25
- package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
- package/src/adapter/objects/webgl-resource.ts +16 -23
- package/src/adapter/resources/.webgl-render-pipeline.ts.swp +0 -0
- package/src/adapter/resources/webgl-buffer.ts +67 -62
- package/src/adapter/resources/webgl-command-buffer.ts +327 -25
- package/src/adapter/resources/webgl-command-encoder.ts +20 -12
- package/src/adapter/resources/webgl-external-texture.ts +5 -2
- package/src/adapter/resources/webgl-framebuffer.ts +90 -134
- package/src/adapter/resources/webgl-render-pass.ts +166 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +256 -192
- package/src/adapter/resources/webgl-sampler.ts +16 -10
- package/src/adapter/resources/webgl-shader.ts +33 -27
- package/src/adapter/resources/webgl-texture.ts +138 -99
- package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
- package/src/adapter/resources/webgl-vertex-array.ts +283 -0
- package/src/adapter/webgl-canvas-context.ts +16 -14
- package/src/adapter/webgl-device.ts +328 -79
- package/src/classic/accessor.ts +8 -18
- package/src/classic/clear.ts +113 -0
- package/src/classic/copy-and-blit.ts +311 -0
- package/src/classic/format-utils.ts +46 -0
- package/src/classic/typed-array-utils.ts +21 -27
- package/src/context/context/create-browser-context.ts +140 -0
- package/src/context/context/create-headless-context.ts +51 -0
- package/src/context/context/webgl-checks.ts +3 -1
- package/src/context/debug/spector.ts +9 -6
- package/src/context/debug/webgl-developer-tools.ts +23 -15
- package/src/context/parameters/unified-parameter-api.ts +23 -14
- package/src/context/parameters/webgl-parameter-tables.ts +120 -98
- package/src/context/polyfill/context-data.ts +30 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
- package/src/context/polyfill/polyfill-context.ts +10 -9
- package/src/context/polyfill/polyfill-table.ts +21 -16
- package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
- package/src/context/state-tracker/deep-array-equal.ts +2 -0
- package/src/context/state-tracker/track-context-state.ts +14 -11
- package/src/context/state-tracker/with-parameters.ts +13 -4
- package/src/index.ts +70 -35
- package/src/types.ts +5 -0
- 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/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/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/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/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/buffer.d.ts +0 -95
- package/dist/classic/buffer.d.ts.map +0 -1
- package/dist/classic/buffer.js +0 -384
- package/dist/classic/buffer.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-context.d.ts +0 -41
- package/dist/context/context/create-context.d.ts.map +0 -1
- package/dist/context/context/create-context.js +0 -49
- package/dist/context/context/create-context.js.map +0 -1
- package/dist/context/context/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -98
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/es5/adapter/converters/device-parameters.js +0 -170
- 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 -226
- 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 -144
- 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 -371
- 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 -345
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
- 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 -149
- 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 -399
- 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 -470
- 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-context.js +0 -69
- package/dist/es5/context/context/create-context.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -115
- package/dist/es5/context/context/device-pixels.js.map +0 -1
- package/dist/es5/context/context/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 -135
- 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 -276
- 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 -155
- 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 -208
- 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 -102
- 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 -306
- 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 -265
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
- 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 -75
- package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-texture.js +0 -833
- 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 -280
- 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 -384
- 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-context.js +0 -49
- package/dist/esm/context/context/create-context.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -98
- package/dist/esm/context/context/device-pixels.js.map +0 -1
- package/dist/esm/context/context/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 -65
- 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 -92
- 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 -27
- 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/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/src/adapter/converters/renderbuffer-formats.ts +0 -92
- 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-context.ts +0 -110
- package/src/context/context/device-pixels.ts +0 -152
- package/src/init.ts +0 -4
- package/src/types/webgl.ts +0 -284
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
let _Symbol$toStringTag;
|
|
2
|
+
import { VertexArray, getScratchArray, fillArray } from '@luma.gl/core';
|
|
3
|
+
import { getBrowser } from '@probe.gl/env';
|
|
4
|
+
import { getGLFromVertexType } from "../converters/vertex-formats.js";
|
|
5
|
+
_Symbol$toStringTag = Symbol.toStringTag;
|
|
6
|
+
export class WEBGLVertexArray extends VertexArray {
|
|
7
|
+
get [_Symbol$toStringTag]() {
|
|
8
|
+
return 'VertexArray';
|
|
9
|
+
}
|
|
10
|
+
static isConstantAttributeZeroSupported(device) {
|
|
11
|
+
return device.info.type === 'webgl2' || getBrowser() === 'Chrome';
|
|
12
|
+
}
|
|
13
|
+
constructor(device, props) {
|
|
14
|
+
super(device, props);
|
|
15
|
+
this.device = void 0;
|
|
16
|
+
this.handle = void 0;
|
|
17
|
+
this.buffer = null;
|
|
18
|
+
this.bufferValue = null;
|
|
19
|
+
this.init = false;
|
|
20
|
+
this.device = device;
|
|
21
|
+
this.handle = this.device.gl2.createVertexArray();
|
|
22
|
+
}
|
|
23
|
+
destroy() {
|
|
24
|
+
super.destroy();
|
|
25
|
+
if (this.buffer) {
|
|
26
|
+
var _this$buffer;
|
|
27
|
+
(_this$buffer = this.buffer) === null || _this$buffer === void 0 ? void 0 : _this$buffer.destroy();
|
|
28
|
+
}
|
|
29
|
+
if (this.handle) {
|
|
30
|
+
this.device.gl2.deleteVertexArray(this.handle);
|
|
31
|
+
this.handle = undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
setIndexBuffer(indexBuffer) {
|
|
35
|
+
const buffer = indexBuffer;
|
|
36
|
+
if (buffer && buffer.glTarget !== 34963) {
|
|
37
|
+
throw new Error('Use .setBuffer()');
|
|
38
|
+
}
|
|
39
|
+
this.device.gl2.bindVertexArray(this.handle);
|
|
40
|
+
this.device.gl2.bindBuffer(34963, buffer ? buffer.handle : null);
|
|
41
|
+
this.indexBuffer = buffer;
|
|
42
|
+
}
|
|
43
|
+
setBuffer(location, attributeBuffer) {
|
|
44
|
+
const buffer = attributeBuffer;
|
|
45
|
+
if (buffer.glTarget === 34963) {
|
|
46
|
+
throw new Error('Use .setIndexBuffer()');
|
|
47
|
+
}
|
|
48
|
+
const {
|
|
49
|
+
size,
|
|
50
|
+
type,
|
|
51
|
+
stride,
|
|
52
|
+
offset,
|
|
53
|
+
normalized,
|
|
54
|
+
integer,
|
|
55
|
+
divisor
|
|
56
|
+
} = this._getAccessor(location);
|
|
57
|
+
this.device.gl2.bindVertexArray(this.handle);
|
|
58
|
+
this.device.gl.bindBuffer(34962, buffer.handle);
|
|
59
|
+
if (integer) {
|
|
60
|
+
this.device.assertWebGL2();
|
|
61
|
+
this.device.gl2.vertexAttribIPointer(location, size, type, stride, offset);
|
|
62
|
+
} else {
|
|
63
|
+
this.device.gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
|
|
64
|
+
}
|
|
65
|
+
this.device.gl.enableVertexAttribArray(location);
|
|
66
|
+
this.device.gl2.vertexAttribDivisor(location, divisor || 0);
|
|
67
|
+
this.attributes[location] = buffer;
|
|
68
|
+
}
|
|
69
|
+
setConstant(location, value) {
|
|
70
|
+
this._enable(location, false);
|
|
71
|
+
this.attributes[location] = value;
|
|
72
|
+
}
|
|
73
|
+
bindBeforeRender() {
|
|
74
|
+
this.device.gl2.bindVertexArray(this.handle);
|
|
75
|
+
if (!this.init) {
|
|
76
|
+
const webglBuffer = this.indexBuffer;
|
|
77
|
+
this.device.gl2.bindBuffer(34963, (webglBuffer === null || webglBuffer === void 0 ? void 0 : webglBuffer.handle) || null);
|
|
78
|
+
this.init = true;
|
|
79
|
+
}
|
|
80
|
+
this._applyConstantAttributes();
|
|
81
|
+
}
|
|
82
|
+
unbindAfterRender() {
|
|
83
|
+
this.device.gl2.bindVertexArray(null);
|
|
84
|
+
}
|
|
85
|
+
_applyConstantAttributes() {
|
|
86
|
+
for (let location = 0; location < this.maxVertexAttributes; ++location) {
|
|
87
|
+
const constant = this.attributes[location];
|
|
88
|
+
if (ArrayBuffer.isView(constant)) {
|
|
89
|
+
this.device.setConstantAttribute(location, constant);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_getAccessor(location) {
|
|
94
|
+
const attributeInfo = this.attributeInfos[location];
|
|
95
|
+
if (!attributeInfo) {
|
|
96
|
+
throw new Error(`Unknown attribute location ${location}`);
|
|
97
|
+
}
|
|
98
|
+
const glType = getGLFromVertexType(attributeInfo.bufferDataType);
|
|
99
|
+
return {
|
|
100
|
+
size: attributeInfo.bufferComponents,
|
|
101
|
+
type: glType,
|
|
102
|
+
stride: attributeInfo.byteStride,
|
|
103
|
+
offset: attributeInfo.byteOffset,
|
|
104
|
+
normalized: attributeInfo.normalized,
|
|
105
|
+
integer: attributeInfo.integer,
|
|
106
|
+
divisor: attributeInfo.stepMode === 'instance' ? 1 : 0
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
_enable(location) {
|
|
110
|
+
let enable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
111
|
+
const canDisableAttributeZero = WEBGLVertexArray.isConstantAttributeZeroSupported(this.device);
|
|
112
|
+
const canDisableAttribute = canDisableAttributeZero || location !== 0;
|
|
113
|
+
if (enable || canDisableAttribute) {
|
|
114
|
+
location = Number(location);
|
|
115
|
+
this.device.gl2.bindVertexArray(this.handle);
|
|
116
|
+
if (enable) {
|
|
117
|
+
this.device.gl.enableVertexAttribArray(location);
|
|
118
|
+
} else {
|
|
119
|
+
this.device.gl.disableVertexAttribArray(location);
|
|
120
|
+
}
|
|
121
|
+
this.device.gl2.bindVertexArray(null);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
getConstantBuffer(elementCount, value) {
|
|
125
|
+
const constantValue = normalizeConstantArrayValue(value);
|
|
126
|
+
const byteLength = constantValue.byteLength * elementCount;
|
|
127
|
+
const length = constantValue.length * elementCount;
|
|
128
|
+
if (this.buffer && byteLength !== this.buffer.byteLength) {
|
|
129
|
+
throw new Error(`Buffer size is immutable, byte length ${byteLength} !== ${this.buffer.byteLength}.`);
|
|
130
|
+
}
|
|
131
|
+
let updateNeeded = !this.buffer;
|
|
132
|
+
this.buffer = this.buffer || this.device.createBuffer({
|
|
133
|
+
byteLength
|
|
134
|
+
});
|
|
135
|
+
updateNeeded = updateNeeded || !compareConstantArrayValues(constantValue, this.bufferValue);
|
|
136
|
+
if (updateNeeded) {
|
|
137
|
+
const typedArray = getScratchArray(value.constructor, length);
|
|
138
|
+
fillArray({
|
|
139
|
+
target: typedArray,
|
|
140
|
+
source: constantValue,
|
|
141
|
+
start: 0,
|
|
142
|
+
count: length
|
|
143
|
+
});
|
|
144
|
+
this.buffer.write(typedArray);
|
|
145
|
+
this.bufferValue = value;
|
|
146
|
+
}
|
|
147
|
+
return this.buffer;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function normalizeConstantArrayValue(arrayValue) {
|
|
151
|
+
if (Array.isArray(arrayValue)) {
|
|
152
|
+
return new Float32Array(arrayValue);
|
|
153
|
+
}
|
|
154
|
+
return arrayValue;
|
|
155
|
+
}
|
|
156
|
+
function compareConstantArrayValues(v1, v2) {
|
|
157
|
+
if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
for (let i = 0; i < v1.length; ++i) {
|
|
161
|
+
if (v1[i] !== v2[i]) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=webgl-vertex-array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl-vertex-array.js","names":["VertexArray","getScratchArray","fillArray","getBrowser","getGLFromVertexType","_Symbol$toStringTag","Symbol","toStringTag","WEBGLVertexArray","isConstantAttributeZeroSupported","device","info","type","constructor","props","handle","buffer","bufferValue","init","gl2","createVertexArray","destroy","_this$buffer","deleteVertexArray","undefined","setIndexBuffer","indexBuffer","glTarget","Error","bindVertexArray","bindBuffer","setBuffer","location","attributeBuffer","size","stride","offset","normalized","integer","divisor","_getAccessor","gl","assertWebGL2","vertexAttribIPointer","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","attributes","setConstant","value","_enable","bindBeforeRender","webglBuffer","_applyConstantAttributes","unbindAfterRender","maxVertexAttributes","constant","ArrayBuffer","isView","setConstantAttribute","attributeInfo","attributeInfos","glType","bufferDataType","bufferComponents","byteStride","byteOffset","stepMode","enable","arguments","length","canDisableAttributeZero","canDisableAttribute","Number","disableVertexAttribArray","getConstantBuffer","elementCount","constantValue","normalizeConstantArrayValue","byteLength","updateNeeded","createBuffer","compareConstantArrayValues","typedArray","target","source","start","count","write","arrayValue","Array","isArray","Float32Array","v1","v2","i"],"sources":["../../../src/adapter/resources/webgl-vertex-array.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Device, Buffer, VertexArrayProps, TypedArray, NumberArray} from '@luma.gl/core';\nimport {VertexArray, getScratchArray, fillArray} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {getBrowser} from '@probe.gl/env';\n\nimport {WebGLDevice} from '../webgl-device';\nimport {WEBGLBuffer} from '../resources/webgl-buffer';\n\nimport {getGLFromVertexType} from '../converters/vertex-formats';\n// import {AccessorObject} from '../..';\n// import {getGLFromVertexType} from '../converters/vertex-formats';\n\n/** VertexArrayObject wrapper */\nexport class WEBGLVertexArray extends VertexArray {\n override get [Symbol.toStringTag](): string {\n return 'VertexArray';\n }\n\n readonly device: WebGLDevice;\n readonly handle: WebGLVertexArrayObject;\n\n /** Attribute 0 buffer constant */\n private buffer: WEBGLBuffer | null = null;\n private bufferValue = null;\n\n /** * Attribute 0 can not be disable on most desktop OpenGL based browsers */\n static isConstantAttributeZeroSupported(device: Device): boolean {\n return device.info.type === 'webgl2' || getBrowser() === 'Chrome';\n }\n\n // Create a VertexArray\n constructor(device: WebGLDevice, props?: VertexArrayProps) {\n super(device, props);\n this.device = device;\n this.handle = this.device.gl2.createVertexArray();\n }\n\n override destroy(): void {\n super.destroy();\n if (this.buffer) {\n this.buffer?.destroy();\n }\n if (this.handle) {\n this.device.gl2.deleteVertexArray(this.handle);\n // @ts-expect-error read-only/undefined\n this.handle = undefined!;\n }\n\n // Auto-delete elements?\n // return [this.elements];\n }\n\n /**\n // Set (bind/unbind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER or null. Constants not supported\n * \n * @param elementBuffer \n */\n setIndexBuffer(indexBuffer: Buffer | null): void {\n const buffer = indexBuffer as WEBGLBuffer;\n // Explicitly allow `null` to support clearing the index buffer\n if (buffer && buffer.glTarget !== GL.ELEMENT_ARRAY_BUFFER) {\n throw new Error('Use .setBuffer()');\n }\n // In WebGL The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject\n this.device.gl2.bindVertexArray(this.handle);\n // TODO - this initial binding does not seem to take effect? see bindBeforeRender()\n this.device.gl2.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, buffer ? buffer.handle : null);\n // log.log(1, 'VertexArray.setIndexBuffer', indexBuffer)();\n // log.log(1, `Binding vertex array ${this.id}`, buffer?.id)();\n\n this.indexBuffer = buffer;\n }\n\n /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */\n setBuffer(location: number, attributeBuffer: Buffer): void {\n const buffer = attributeBuffer as WEBGLBuffer;\n // Sanity check target\n if (buffer.glTarget === GL.ELEMENT_ARRAY_BUFFER) {\n throw new Error('Use .setIndexBuffer()');\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = this._getAccessor(location);\n\n this.device.gl2.bindVertexArray(this.handle);\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n this.device.gl.bindBuffer(GL.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n this.device.assertWebGL2();\n this.device.gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n this.device.gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n\n // Mark as non-constant\n this.device.gl.enableVertexAttribArray(location);\n // Set the step mode 0=vertex, 1=instance\n this.device.gl2.vertexAttribDivisor(location, divisor || 0);\n\n this.attributes[location] = buffer;\n }\n\n /** Set a location in vertex attributes array to a constant value, disables the location */\n override setConstant(location: number, value: TypedArray): void {\n this._enable(location, false);\n this.attributes[location] = value;\n }\n\n init = false;\n\n override bindBeforeRender(): void {\n this.device.gl2.bindVertexArray(this.handle);\n // TODO - the initial bind does not seem to take effect.\n if (!this.init) {\n // log.log(1, `Binding vertex array ${this.id}`, this.indexBuffer?.id)();\n const webglBuffer = this.indexBuffer as WEBGLBuffer;\n this.device.gl2.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, webglBuffer?.handle || null);\n this.init = true;\n }\n this._applyConstantAttributes();\n }\n\n override unbindAfterRender(): void {\n // log.log(1, `Unbinding vertex array ${this.id}`)();\n // TODO technically this is not necessary, but we might be interfacing\n // with code that does not use vertex array objects\n this.device.gl2.bindVertexArray(null);\n // this.device.gl2.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, null);\n }\n\n // Internal methods\n\n /**\n * Constant attributes need to be reset before every draw call\n * Any attribute that is disabled in the current vertex array object\n * is read from the context's global constant value for that attribute location.\n * @note Constant attributes are only supported in WebGL, not in WebGPU\n */\n protected _applyConstantAttributes(): void {\n for (let location = 0; location < this.maxVertexAttributes; ++location) {\n const constant = this.attributes[location];\n // A typed array means this is a constant\n if (ArrayBuffer.isView(constant)) {\n this.device.setConstantAttribute(location, constant);\n }\n }\n }\n\n /**\n * Set a location in vertex attributes array to a buffer, enables the location, sets divisor\n * @note requires vertex array to be bound\n */\n // protected _setAttributeLayout(location: number): void {\n // const {size, type, stride, offset, normalized, integer, divisor} = this._getAccessor(location);\n\n // // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n // if (integer) {\n // this.device.assertWebGL2();\n // this.device.gl2.vertexAttribIPointer(location, size, type, stride, offset);\n // } else {\n // // Attaches ARRAY_BUFFER with specified buffer format to location\n // this.device.gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n // }\n // this.device.gl2.vertexAttribDivisor(location, divisor || 0);\n // }\n\n /** Get an accessor from the */\n protected _getAccessor(location: number) {\n const attributeInfo = this.attributeInfos[location];\n if (!attributeInfo) {\n throw new Error(`Unknown attribute location ${location}`);\n }\n const glType = getGLFromVertexType(attributeInfo.bufferDataType);\n return {\n size: attributeInfo.bufferComponents,\n type: glType,\n stride: attributeInfo.byteStride,\n offset: attributeInfo.byteOffset,\n normalized: attributeInfo.normalized,\n // it is the shader attribute declaration, not the vertex memory format,\n // that determines if the data in the buffer will be treated as integers.\n //\n // Also note that WebGL supports assigning non-normalized integer data to floating point attributes,\n // but as far as we can tell, WebGPU does not.\n integer: attributeInfo.integer,\n divisor: attributeInfo.stepMode === 'instance' ? 1 : 0\n };\n }\n\n /**\n * Enabling an attribute location makes it reference the currently bound buffer\n * Disabling an attribute location makes it reference the global constant value\n * TODO - handle single values for size 1 attributes?\n * TODO - convert classic arrays based on known type?\n */\n protected _enable(location: number, enable = true): void {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers...\n const canDisableAttributeZero = WEBGLVertexArray.isConstantAttributeZeroSupported(this.device);\n const canDisableAttribute = canDisableAttributeZero || location !== 0;\n\n if (enable || canDisableAttribute) {\n location = Number(location);\n this.device.gl2.bindVertexArray(this.handle);\n if (enable) {\n this.device.gl.enableVertexAttribArray(location);\n } else {\n this.device.gl.disableVertexAttribArray(location);\n }\n this.device.gl2.bindVertexArray(null);\n }\n }\n\n /**\n * Provide a means to create a buffer that is equivalent to a constant.\n * NOTE: Desktop OpenGL cannot disable attribute 0.\n * https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n * this-has-significant-performance-penalty\n */\n getConstantBuffer(elementCount: number, value: TypedArray): Buffer {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = normalizeConstantArrayValue(value);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n if (this.buffer && byteLength !== this.buffer.byteLength) {\n throw new Error(\n `Buffer size is immutable, byte length ${byteLength} !== ${this.buffer.byteLength}.`\n );\n }\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || this.device.createBuffer({byteLength});\n\n // Reallocate and update contents if needed\n updateNeeded = updateNeeded || !compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.write(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n}\n\n// HELPER FUNCTIONS\n\n/**\n * TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n * TODO - handle single values for size 1 attributes?\n */\nfunction normalizeConstantArrayValue(arrayValue: NumberArray) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n}\n\n/**\n *\n */\nfunction compareConstantArrayValues(v1: NumberArray, v2: NumberArray): boolean {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import type { CanvasContextProps } from '@luma.gl/
|
|
2
|
-
import { CanvasContext } from '@luma.gl/
|
|
3
|
-
import WebGLDevice from './webgl-device';
|
|
4
|
-
import WEBGLFramebuffer from './resources/webgl-framebuffer';
|
|
1
|
+
import type { CanvasContextProps } from '@luma.gl/core';
|
|
2
|
+
import { CanvasContext } from '@luma.gl/core';
|
|
3
|
+
import { WebGLDevice } from './webgl-device';
|
|
4
|
+
import { WEBGLFramebuffer } from './resources/webgl-framebuffer';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
* @todo This class is WIP, intended to replace the old gltools-based context size tracking
|
|
6
|
+
* A WebGL Canvas Context which manages the canvas and handles drawing buffer resizing etc
|
|
8
7
|
*/
|
|
9
|
-
export
|
|
8
|
+
export declare class WebGLCanvasContext extends CanvasContext {
|
|
10
9
|
readonly device: WebGLDevice;
|
|
11
10
|
presentationSize: [number, number];
|
|
12
11
|
private _framebuffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/webgl-canvas-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webgl-canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/webgl-canvas-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAE/D;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,YAAY,CAAiC;gBAEzC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB;IAS1D,qBAAqB,IAAI,gBAAgB;IAOzC,sDAAsD;IACtD,MAAM;IAQN;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAC,GAAG,IAAI;IAe7F,MAAM;CAOP"}
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import WEBGLFramebuffer from './resources/webgl-framebuffer';
|
|
5
|
-
export default class WebGLCanvasContext extends CanvasContext {
|
|
1
|
+
import { CanvasContext } from '@luma.gl/core';
|
|
2
|
+
import { WEBGLFramebuffer } from "./resources/webgl-framebuffer.js";
|
|
3
|
+
export class WebGLCanvasContext extends CanvasContext {
|
|
6
4
|
constructor(device, props) {
|
|
7
5
|
super(props);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
_defineProperty(this, "presentationSize", void 0);
|
|
12
|
-
|
|
13
|
-
_defineProperty(this, "_framebuffer", void 0);
|
|
14
|
-
|
|
6
|
+
this.device = void 0;
|
|
7
|
+
this.presentationSize = void 0;
|
|
8
|
+
this._framebuffer = null;
|
|
15
9
|
this.device = device;
|
|
16
10
|
this.presentationSize = [-1, -1];
|
|
11
|
+
this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
|
|
17
12
|
this.update();
|
|
18
13
|
}
|
|
19
|
-
|
|
20
14
|
getCurrentFramebuffer() {
|
|
21
15
|
this.update();
|
|
22
16
|
this._framebuffer = this._framebuffer || new WEBGLFramebuffer(this.device, {
|
|
@@ -24,31 +18,24 @@ export default class WebGLCanvasContext extends CanvasContext {
|
|
|
24
18
|
});
|
|
25
19
|
return this._framebuffer;
|
|
26
20
|
}
|
|
27
|
-
|
|
28
21
|
update() {
|
|
29
22
|
const size = this.getPixelSize();
|
|
30
23
|
const sizeChanged = size[0] !== this.presentationSize[0] || size[1] !== this.presentationSize[1];
|
|
31
|
-
|
|
32
24
|
if (sizeChanged) {
|
|
33
25
|
this.presentationSize = size;
|
|
34
26
|
}
|
|
35
27
|
}
|
|
36
|
-
|
|
37
28
|
resize(options) {
|
|
38
29
|
if (this.canvas) {
|
|
39
|
-
const devicePixelRatio = getDevicePixelRatio(options === null || options === void 0 ? void 0 : options.useDevicePixels);
|
|
40
|
-
setDevicePixelRatio(
|
|
30
|
+
const devicePixelRatio = this.getDevicePixelRatio(options === null || options === void 0 ? void 0 : options.useDevicePixels);
|
|
31
|
+
this.setDevicePixelRatio(devicePixelRatio, options);
|
|
41
32
|
return;
|
|
42
33
|
}
|
|
43
|
-
|
|
44
34
|
const ext = this.device.gl.getExtension('STACKGL_resize_drawingbuffer');
|
|
45
|
-
|
|
46
|
-
if (ext && options && "width" in options && "height" in options) {
|
|
35
|
+
if (ext && options && 'width' in options && 'height' in options) {
|
|
47
36
|
ext.resize(options.width, options.height);
|
|
48
37
|
}
|
|
49
38
|
}
|
|
50
|
-
|
|
51
39
|
commit() {}
|
|
52
|
-
|
|
53
40
|
}
|
|
54
41
|
//# sourceMappingURL=webgl-canvas-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"webgl-canvas-context.js","names":["CanvasContext","WEBGLFramebuffer","WebGLCanvasContext","constructor","device","props","presentationSize","_framebuffer","_setAutoCreatedCanvasId","id","update","getCurrentFramebuffer","handle","size","getPixelSize","sizeChanged","resize","options","canvas","devicePixelRatio","getDevicePixelRatio","useDevicePixels","setDevicePixelRatio","ext","gl","getExtension","width","height","commit"],"sources":["../../src/adapter/webgl-canvas-context.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {CanvasContextProps} from '@luma.gl/core';\nimport {CanvasContext} from '@luma.gl/core';\nimport {WebGLDevice} from './webgl-device';\nimport {WEBGLFramebuffer} from './resources/webgl-framebuffer';\n\n/** \n * A WebGL Canvas Context which manages the canvas and handles drawing buffer resizing etc \n */\nexport class WebGLCanvasContext extends CanvasContext {\n readonly device: WebGLDevice;\n presentationSize: [number, number];\n private _framebuffer: WEBGLFramebuffer | null = null;\n\n constructor(device: WebGLDevice, props: CanvasContextProps) {\n // Note: Base class creates / looks up the canvas (unless under Node.js)\n super(props);\n this.device = device;\n this.presentationSize = [-1, -1];\n this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);\n this.update();\n }\n\n getCurrentFramebuffer(): WEBGLFramebuffer {\n this.update();\n // Setting handle to null returns a reference to the default framebuffer\n this._framebuffer = this._framebuffer || new WEBGLFramebuffer(this.device, {handle: null});\n return this._framebuffer;\n }\n\n /** Resizes and updates render targets if necessary */\n update() {\n const size = this.getPixelSize();\n const sizeChanged = size[0] !== this.presentationSize[0] || size[1] !== this.presentationSize[1];\n if (sizeChanged) {\n this.presentationSize = size;\n }\n }\n\n /**\n * Resize the canvas' drawing buffer.\n *\n * Can match the canvas CSS size, and optionally also consider devicePixelRatio\n * Can be called every frame\n *\n * Regardless of size, the drawing buffer will always be scaled to the viewport, but\n * for best visual results, usually set to either:\n * canvas CSS width x canvas CSS height\n * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio\n * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n */\n resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {\n // Resize browser context .\n if (this.canvas) {\n const devicePixelRatio = this.getDevicePixelRatio(options?.useDevicePixels);\n this.setDevicePixelRatio(devicePixelRatio, options);\n return;\n }\n\n // Resize headless gl context\n const ext = this.device.gl.getExtension('STACKGL_resize_drawingbuffer');\n if (ext && options && 'width' in options && 'height' in options) {\n ext.resize(options.width, options.height);\n }\n }\n\n commit() {\n // gl.commit was ultimately removed from the WebGL standard??\n // if (this.offScreen && this.gl.commit) {\n // // @ts-expect-error gl.commit is not officially part of WebGLRenderingContext\n // this.gl.commit();\n // }\n }\n}\n"],"mappings":"AAIA,SAAQA,aAAa,QAAO,eAAe;AAAC,SAEpCC,gBAAgB;AAKxB,OAAO,MAAMC,kBAAkB,SAASF,aAAa,CAAC;EAKpDG,WAAWA,CAACC,MAAmB,EAAEC,KAAyB,EAAE;IAE1D,KAAK,CAACA,KAAK,CAAC;IAAC,KANND,MAAM;IAAA,KACfE,gBAAgB;IAAA,KACRC,YAAY,GAA4B,IAAI;IAKlD,IAAI,CAACH,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,IAAI,CAACE,uBAAuB,CAAE,GAAE,IAAI,CAACJ,MAAM,CAACK,EAAG,SAAQ,CAAC;IACxD,IAAI,CAACC,MAAM,CAAC,CAAC;EACf;EAEAC,qBAAqBA,CAAA,EAAqB;IACxC,IAAI,CAACD,MAAM,CAAC,CAAC;IAEb,IAAI,CAACH,YAAY,GAAG,IAAI,CAACA,YAAY,IAAI,IAAIN,gBAAgB,CAAC,IAAI,CAACG,MAAM,EAAE;MAACQ,MAAM,EAAE;IAAI,CAAC,CAAC;IAC1F,OAAO,IAAI,CAACL,YAAY;EAC1B;EAGAG,MAAMA,CAAA,EAAG;IACP,MAAMG,IAAI,GAAG,IAAI,CAACC,YAAY,CAAC,CAAC;IAChC,MAAMC,WAAW,GAAGF,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAACP,gBAAgB,CAAC,CAAC,CAAC,IAAIO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAACP,gBAAgB,CAAC,CAAC,CAAC;IAChG,IAAIS,WAAW,EAAE;MACf,IAAI,CAACT,gBAAgB,GAAGO,IAAI;IAC9B;EACF;EAcAG,MAAMA,CAACC,OAA+E,EAAQ;IAE5F,IAAI,IAAI,CAACC,MAAM,EAAE;MACf,MAAMC,gBAAgB,GAAG,IAAI,CAACC,mBAAmB,CAACH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,eAAe,CAAC;MAC3E,IAAI,CAACC,mBAAmB,CAACH,gBAAgB,EAAEF,OAAO,CAAC;MACnD;IACF;IAGA,MAAMM,GAAG,GAAG,IAAI,CAACnB,MAAM,CAACoB,EAAE,CAACC,YAAY,CAAC,8BAA8B,CAAC;IACvE,IAAIF,GAAG,IAAIN,OAAO,IAAI,OAAO,IAAIA,OAAO,IAAI,QAAQ,IAAIA,OAAO,EAAE;MAC/DM,GAAG,CAACP,MAAM,CAACC,OAAO,CAACS,KAAK,EAAET,OAAO,CAACU,MAAM,CAAC;IAC3C;EACF;EAEAC,MAAMA,CAAA,EAAG,CAMT;AACF"}
|
|
@@ -1,53 +1,33 @@
|
|
|
1
|
-
import type { DeviceProps, DeviceInfo, DeviceLimits, DeviceFeature, CanvasContextProps, TextureFormat } from '@luma.gl/
|
|
2
|
-
import { Device, CanvasContext } from '@luma.gl/
|
|
3
|
-
import { ContextState } from '../context/context/context-state';
|
|
1
|
+
import type { DeviceProps, DeviceInfo, DeviceLimits, DeviceFeature, CanvasContextProps, TextureFormat, VertexArray, VertexArrayProps, TypedArray } from '@luma.gl/core';
|
|
2
|
+
import { Device, CanvasContext } from '@luma.gl/core';
|
|
4
3
|
import { WebGLLimits } from './device-helpers/device-limits';
|
|
5
|
-
import WebGLCanvasContext from './webgl-canvas-context';
|
|
6
|
-
import type { BufferProps, ShaderProps, SamplerProps, TextureProps, ExternalTexture, ExternalTextureProps, FramebufferProps, RenderPipelineProps, ComputePipeline, ComputePipelineProps, RenderPassProps, ComputePass, ComputePassProps } from '@luma.gl/
|
|
7
|
-
import WEBGLBuffer from './resources/webgl-buffer';
|
|
8
|
-
import WEBGLShader from './resources/webgl-shader';
|
|
9
|
-
import WEBGLSampler from './resources/webgl-sampler';
|
|
10
|
-
import WEBGLTexture from './resources/webgl-texture';
|
|
11
|
-
import WEBGLFramebuffer from './resources/webgl-framebuffer';
|
|
12
|
-
import WEBGLRenderPass from './resources/webgl-render-pass';
|
|
13
|
-
import WEBGLRenderPipeline from './resources/webgl-render-pipeline';
|
|
4
|
+
import { WebGLCanvasContext } from './webgl-canvas-context';
|
|
5
|
+
import type { BufferProps, ShaderProps, SamplerProps, TextureProps, ExternalTexture, ExternalTextureProps, FramebufferProps, RenderPipelineProps, ComputePipeline, ComputePipelineProps, RenderPassProps, ComputePass, ComputePassProps, CommandEncoderProps, TransformFeedbackProps } from '@luma.gl/core';
|
|
6
|
+
import { WEBGLBuffer } from './resources/webgl-buffer';
|
|
7
|
+
import { WEBGLShader } from './resources/webgl-shader';
|
|
8
|
+
import { WEBGLSampler } from './resources/webgl-sampler';
|
|
9
|
+
import { WEBGLTexture } from './resources/webgl-texture';
|
|
10
|
+
import { WEBGLFramebuffer } from './resources/webgl-framebuffer';
|
|
11
|
+
import { WEBGLRenderPass } from './resources/webgl-render-pass';
|
|
12
|
+
import { WEBGLRenderPipeline } from './resources/webgl-render-pipeline';
|
|
13
|
+
import { WEBGLCommandEncoder } from './resources/webgl-command-encoder';
|
|
14
|
+
import { WEBGLTransformFeedback } from './resources/webgl-transform-feedback';
|
|
14
15
|
/** WebGPU style Device API for a WebGL context */
|
|
15
|
-
export
|
|
16
|
+
export declare class WebGLDevice extends Device {
|
|
16
17
|
static type: string;
|
|
17
18
|
static isSupported(): boolean;
|
|
18
19
|
readonly info: DeviceInfo;
|
|
19
20
|
readonly canvasContext: WebGLCanvasContext;
|
|
21
|
+
readonly handle: WebGLRenderingContext;
|
|
22
|
+
get features(): Set<DeviceFeature>;
|
|
23
|
+
get limits(): DeviceLimits;
|
|
20
24
|
readonly lost: Promise<{
|
|
21
25
|
reason: 'destroyed';
|
|
22
26
|
message: string;
|
|
23
27
|
}>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/** WebGL1 typed context. Can always be used. */
|
|
28
|
-
readonly gl: WebGLRenderingContext;
|
|
29
|
-
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
30
|
-
readonly gl2: WebGL2RenderingContext;
|
|
31
|
-
readonly debug: boolean;
|
|
32
|
-
/** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
|
|
33
|
-
readonly isWebGL1: boolean;
|
|
34
|
-
/** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
|
|
35
|
-
readonly isWebGL2: boolean;
|
|
36
|
-
get webglLimits(): WebGLLimits;
|
|
37
|
-
private _features;
|
|
38
|
-
private _limits;
|
|
39
|
-
private _webglLimits;
|
|
40
|
-
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
41
|
-
readonly _canvasSizeInfo: {
|
|
42
|
-
clientWidth: number;
|
|
43
|
-
clientHeight: number;
|
|
44
|
-
devicePixelRatio: number;
|
|
45
|
-
};
|
|
46
|
-
/** State used by luma.gl classes */
|
|
47
|
-
readonly _extensions: Record<string, any>;
|
|
48
|
-
_polyfilled: boolean;
|
|
49
|
-
/** Instance of Spector.js (if initialized) */
|
|
50
|
-
spector: any;
|
|
28
|
+
private _resolveContextLost?;
|
|
29
|
+
private _features?;
|
|
30
|
+
private _limits?;
|
|
51
31
|
/**
|
|
52
32
|
* Get a device instance from a GL context
|
|
53
33
|
* Creates and instruments the device if not already created
|
|
@@ -70,23 +50,78 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
70
50
|
/** Returns a WebGL2RenderingContext or throws an error */
|
|
71
51
|
assertWebGL2(): WebGL2RenderingContext;
|
|
72
52
|
createCanvasContext(props?: CanvasContextProps): CanvasContext;
|
|
73
|
-
|
|
53
|
+
createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WEBGLBuffer;
|
|
74
54
|
_createTexture(props: TextureProps): WEBGLTexture;
|
|
75
55
|
createExternalTexture(props: ExternalTextureProps): ExternalTexture;
|
|
76
56
|
createSampler(props: SamplerProps): WEBGLSampler;
|
|
77
57
|
createShader(props: ShaderProps): WEBGLShader;
|
|
78
58
|
createFramebuffer(props: FramebufferProps): WEBGLFramebuffer;
|
|
79
59
|
createRenderPipeline(props: RenderPipelineProps): WEBGLRenderPipeline;
|
|
60
|
+
createVertexArray(props: VertexArrayProps): VertexArray;
|
|
80
61
|
beginRenderPass(props: RenderPassProps): WEBGLRenderPass;
|
|
81
62
|
createComputePipeline(props?: ComputePipelineProps): ComputePipeline;
|
|
82
63
|
beginComputePass(props: ComputePassProps): ComputePass;
|
|
64
|
+
createTransformFeedback(props: TransformFeedbackProps): WEBGLTransformFeedback;
|
|
83
65
|
private renderPass;
|
|
84
66
|
getDefaultRenderPass(): WEBGLRenderPass;
|
|
67
|
+
createCommandEncoder(props?: CommandEncoderProps): WEBGLCommandEncoder;
|
|
85
68
|
/**
|
|
86
69
|
* Offscreen Canvas Support: Commit the frame
|
|
87
70
|
* https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
|
|
88
71
|
* Chrome's offscreen canvas does not require gl.commit
|
|
89
72
|
*/
|
|
90
73
|
submit(): void;
|
|
74
|
+
/** WebGL1 typed context. Can always be used. */
|
|
75
|
+
readonly gl: WebGLRenderingContext;
|
|
76
|
+
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
77
|
+
readonly gl2: WebGL2RenderingContext | null;
|
|
78
|
+
readonly debug: boolean;
|
|
79
|
+
/** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
|
|
80
|
+
readonly isWebGL1: boolean;
|
|
81
|
+
/** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
|
|
82
|
+
readonly isWebGL2: boolean;
|
|
83
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
84
|
+
readonly _canvasSizeInfo: {
|
|
85
|
+
clientWidth: number;
|
|
86
|
+
clientHeight: number;
|
|
87
|
+
devicePixelRatio: number;
|
|
88
|
+
};
|
|
89
|
+
/** State used by luma.gl classes - TODO - not used? */
|
|
90
|
+
readonly _extensions: Record<string, any>;
|
|
91
|
+
_polyfilled: boolean;
|
|
92
|
+
/** Instance of Spector.js (if initialized) */
|
|
93
|
+
spector: any;
|
|
94
|
+
private _webglLimits?;
|
|
95
|
+
/** Return WebGL specific limits */
|
|
96
|
+
get webglLimits(): WebGLLimits;
|
|
97
|
+
/**
|
|
98
|
+
* Triggers device (or WebGL context) loss.
|
|
99
|
+
* @note primarily intended for testing how application reacts to device loss
|
|
100
|
+
*/
|
|
101
|
+
loseDevice(): boolean;
|
|
102
|
+
/** Save current WebGL context state onto an internal stack */
|
|
103
|
+
pushState(): void;
|
|
104
|
+
/** Restores previously saved context state */
|
|
105
|
+
popState(): void;
|
|
106
|
+
/**
|
|
107
|
+
* Storing data on a special field on WebGLObjects makes that data visible in SPECTOR chrome debug extension
|
|
108
|
+
* luma.gl ids and props can be inspected
|
|
109
|
+
*/
|
|
110
|
+
setSpectorMetadata(handle: unknown, props: Record<string, unknown>): void;
|
|
111
|
+
/**
|
|
112
|
+
* Returns the GL.<KEY> constant that corresponds to a numeric value of a GL constant
|
|
113
|
+
* Be aware that there are some duplicates especially for constants that are 0,
|
|
114
|
+
* so this isn't guaranteed to return the right key in all cases.
|
|
115
|
+
*/
|
|
116
|
+
getGLKey(value: unknown, gl?: WebGLRenderingContext): string;
|
|
117
|
+
/** Store constants */
|
|
118
|
+
_constants: (TypedArray | null)[];
|
|
119
|
+
/**
|
|
120
|
+
* Set a constant value for a location. Disabled attributes at that location will read from this value
|
|
121
|
+
* @note WebGL constants are stored globally on the WebGL context, not the VertexArray
|
|
122
|
+
* so they need to be updated before every render
|
|
123
|
+
* @todo - remember/cache values to avoid setting them unnecessarily?
|
|
124
|
+
*/
|
|
125
|
+
setConstantAttribute(location: number, constant: TypedArray): void;
|
|
91
126
|
}
|
|
92
127
|
//# sourceMappingURL=webgl-device.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-device.d.ts","sourceRoot":"","sources":["../../src/adapter/webgl-device.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webgl-device.d.ts","sourceRoot":"","sources":["../../src/adapter/webgl-device.ts"],"names":[],"mappings":"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"}
|