@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,169 +1,107 @@
|
|
|
1
|
-
// luma.gl
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
2
4
|
|
|
3
|
-
import type {FramebufferProps,
|
|
4
|
-
import {Framebuffer, Texture,
|
|
5
|
-
import GL from '@luma.gl/constants';
|
|
6
|
-
import WebGLDevice from '../webgl-device';
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
5
|
+
import type {FramebufferProps, TextureFormat} from '@luma.gl/core';
|
|
6
|
+
import {Framebuffer, Texture, assert} from '@luma.gl/core';
|
|
7
|
+
import {GL} from '@luma.gl/constants';
|
|
8
|
+
import {WebGLDevice} from '../webgl-device';
|
|
9
|
+
import {WEBGLTexture} from './webgl-texture';
|
|
10
|
+
import {WEBGLTextureView} from './webgl-texture-view';
|
|
11
|
+
import {getDepthStencilAttachmentWebGL} from '../converters/texture-formats';
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
// TODO - for now we don't see a usage for renderbuffers in WebGL 2.
|
|
14
|
+
// import {WEBGLRenderbuffer} from '../objects/webgl-renderbuffer';
|
|
15
|
+
|
|
16
|
+
export type Attachment = WEBGLTextureView | WEBGLTexture; // | WEBGLRenderbuffer;
|
|
13
17
|
|
|
14
18
|
/** luma.gl Framebuffer, WebGL implementation */
|
|
15
|
-
export
|
|
19
|
+
export class WEBGLFramebuffer extends Framebuffer {
|
|
16
20
|
device: WebGLDevice;
|
|
17
|
-
gl:
|
|
21
|
+
gl: WebGL2RenderingContext;
|
|
18
22
|
handle: WebGLFramebuffer;
|
|
19
23
|
|
|
20
|
-
get texture() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
protected _ownResources: (WebGLTexture | Renderbuffer)[] = [];
|
|
24
|
+
get texture() {
|
|
25
|
+
return this.colorAttachments[0];
|
|
26
|
+
}
|
|
24
27
|
|
|
25
28
|
constructor(device: WebGLDevice, props: FramebufferProps) {
|
|
26
29
|
super(device, props);
|
|
27
|
-
this.device = device;
|
|
28
|
-
this.gl = device.gl;
|
|
29
|
-
this.handle = this.props.handle !== undefined ? this.props.handle : this.gl.createFramebuffer();
|
|
30
|
-
|
|
31
|
-
if (this.handle) { // default framebuffer is null...
|
|
32
|
-
// @ts-expect-error Per SPECTOR docs
|
|
33
|
-
this.handle.__SPECTOR_Metadata = {id: this.props.id, props: this.props};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
this.colorAttachments = this._createColorAttachments();
|
|
37
|
-
// @ts-expect-error
|
|
38
|
-
this.depthStencilAttachment = this._createDepthStencilAttachment();
|
|
39
30
|
|
|
40
|
-
|
|
41
|
-
const
|
|
31
|
+
// WebGL default framebuffer handle is null
|
|
32
|
+
const isDefaultFramebuffer = props.handle === null;
|
|
42
33
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
34
|
+
this.device = device;
|
|
35
|
+
this.gl = device.gl;
|
|
36
|
+
this.handle =
|
|
37
|
+
this.props.handle || isDefaultFramebuffer ? this.props.handle : this.gl.createFramebuffer();
|
|
38
|
+
|
|
39
|
+
if (!isDefaultFramebuffer) {
|
|
40
|
+
// default framebuffer handle is null, so we can't set spector metadata...
|
|
41
|
+
device.setSpectorMetadata(this.handle, {id: this.props.id, props: this.props});
|
|
42
|
+
|
|
43
|
+
// Auto create textures for attachments if needed
|
|
44
|
+
this.autoCreateAttachmentTextures();
|
|
45
|
+
|
|
46
|
+
/** Attach from a map of attachments */
|
|
47
|
+
this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
|
|
48
|
+
|
|
49
|
+
// Walk the attachments
|
|
50
|
+
for (let i = 0; i < this.colorAttachments.length; ++i) {
|
|
51
|
+
const attachment = this.colorAttachments[i] as WEBGLTextureView;
|
|
52
|
+
const attachmentPoint = GL.COLOR_ATTACHMENT0 + i;
|
|
53
|
+
if (attachment) {
|
|
54
|
+
this._attachOne(attachmentPoint, attachment);
|
|
55
|
+
}
|
|
49
56
|
}
|
|
50
|
-
}
|
|
51
57
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
58
|
+
if (this.depthStencilAttachment) {
|
|
59
|
+
this._attachOne(
|
|
60
|
+
getDepthStencilAttachmentWebGL(this.depthStencilAttachment.props.format),
|
|
61
|
+
this.depthStencilAttachment as WEBGLTextureView
|
|
62
|
+
);
|
|
63
|
+
}
|
|
55
64
|
|
|
56
|
-
|
|
57
|
-
|
|
65
|
+
/** Check the status */
|
|
66
|
+
// @ts-expect-error
|
|
67
|
+
if (props.check !== false) {
|
|
68
|
+
const status = this.gl.checkFramebufferStatus(GL.FRAMEBUFFER) as GL;
|
|
69
|
+
if (status !== GL.FRAMEBUFFER_COMPLETE) {
|
|
70
|
+
throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
58
73
|
|
|
59
|
-
|
|
60
|
-
if (props.check !== false) {
|
|
61
|
-
this._checkStatus();
|
|
74
|
+
this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);
|
|
62
75
|
}
|
|
63
76
|
}
|
|
64
77
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
78
|
+
/** destroys any auto created resources etc. */
|
|
79
|
+
override destroy(): void {
|
|
80
|
+
super.destroy(); // destroys owned resources etc.
|
|
81
|
+
if (!this.destroyed && this.handle !== null) {
|
|
70
82
|
this.gl.deleteFramebuffer(this.handle);
|
|
71
83
|
// this.handle = null;
|
|
72
|
-
this.destroyed = true;
|
|
73
84
|
}
|
|
74
85
|
}
|
|
75
86
|
|
|
76
87
|
// PRIVATE
|
|
77
88
|
|
|
78
|
-
/**
|
|
79
|
-
protected
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// @ts-expect-error
|
|
84
|
-
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
85
|
-
if (status !== gl.FRAMEBUFFER_COMPLETE) {
|
|
86
|
-
throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
_createColorAttachments(): WebGLTexture[] {
|
|
91
|
-
return this.props.colorAttachments.map(colorAttachment => {
|
|
92
|
-
if (!colorAttachment) {
|
|
93
|
-
return undefined;
|
|
94
|
-
}
|
|
95
|
-
if (colorAttachment instanceof WebGLTexture) {
|
|
96
|
-
return colorAttachment;
|
|
97
|
-
}
|
|
98
|
-
// if (typeof colorAttachment === 'default') {
|
|
99
|
-
// return this._createColorAttachment('rgba8unorm', this.width, this.height);
|
|
100
|
-
// }
|
|
101
|
-
// @ts-expect-error
|
|
102
|
-
return this._createColorAttachment(colorAttachment, this.width, this.height);
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/** Create a color attachment */
|
|
107
|
-
protected _createColorAttachment(format: ColorTextureFormat, width: number, height: number): WebGLTexture {
|
|
108
|
-
const texture = this.device._createTexture({
|
|
109
|
-
id: `${this.id}-color`,
|
|
110
|
-
data: null, // reserves texture memory, but texels are undefined
|
|
89
|
+
/** In WebGL we must use renderbuffers for depth/stencil attachments (unless we have extensions) */
|
|
90
|
+
protected override createDepthStencilTexture(format: TextureFormat): Texture {
|
|
91
|
+
// return new WEBGLRenderbuffer(this.device, {
|
|
92
|
+
return new WEBGLTexture(this.device, {
|
|
93
|
+
id: `${this.id}-depth-stencil`,
|
|
111
94
|
format,
|
|
112
|
-
// type: GL.UNSIGNED_BYTE,
|
|
113
|
-
width,
|
|
114
|
-
height,
|
|
115
|
-
// Note: Mipmapping can be disabled by texture resource when we resize the texture
|
|
116
|
-
// to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant
|
|
117
|
-
// behavior we always disable mipmaps.
|
|
118
|
-
mipmaps: false,
|
|
119
|
-
// Set MIN and MAG filtering parameters so mipmaps are not used in sampling.
|
|
120
|
-
// Use LINEAR so subpixel algos like fxaa work.
|
|
121
|
-
// Set WRAP modes that support NPOT textures too.
|
|
122
|
-
sampler: {
|
|
123
|
-
minFilter: 'linear',
|
|
124
|
-
magFilter: 'linear',
|
|
125
|
-
addressModeU: 'clamp-to-edge',
|
|
126
|
-
addressModeV: 'clamp-to-edge'
|
|
127
|
-
},
|
|
128
|
-
// parameters: {
|
|
129
|
-
// [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,
|
|
130
|
-
// [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,
|
|
131
|
-
// [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,
|
|
132
|
-
// [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE
|
|
133
|
-
// }
|
|
134
|
-
}) as WebGLTexture;
|
|
135
|
-
this._ownResources.push(texture);
|
|
136
|
-
return texture;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/** Create a depth stencil attachment GL.DEPTH24_STENCIL8 */
|
|
140
|
-
protected _createDepthStencilAttachment(): Renderbuffer | WebGLTexture {
|
|
141
|
-
if (!this.props.depthStencilAttachment) {
|
|
142
|
-
return undefined;
|
|
143
|
-
}
|
|
144
|
-
if (this.props.depthStencilAttachment instanceof Renderbuffer) {
|
|
145
|
-
return this.props.depthStencilAttachment;
|
|
146
|
-
}
|
|
147
|
-
if (this.props.depthStencilAttachment instanceof Texture) {
|
|
148
|
-
return this.props.depthStencilAttachment as unknown as WebGLTexture;
|
|
149
|
-
}
|
|
150
|
-
const format = this.props.depthStencilAttachment;
|
|
151
|
-
const webglFormat = getWebGLTextureFormat(this.gl, format);
|
|
152
|
-
|
|
153
|
-
const texture = new Renderbuffer(this.device, {
|
|
154
|
-
id: `${this.id}-depth-stencil`, // TODO misleading if not depth and stencil?
|
|
155
|
-
format: webglFormat,
|
|
156
|
-
// dataFormat: GL.DEPTH_STENCIL,
|
|
157
|
-
// type: GL.UNSIGNED_INT_24_8,
|
|
158
95
|
width: this.width,
|
|
159
|
-
height: this.height
|
|
96
|
+
height: this.height,
|
|
97
|
+
mipmaps: false
|
|
160
98
|
});
|
|
161
|
-
this._ownResources.push(texture);
|
|
162
|
-
return texture;
|
|
163
99
|
}
|
|
164
100
|
|
|
165
|
-
/**
|
|
166
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Attachment resize is expected to be a noop if size is same
|
|
103
|
+
*/
|
|
104
|
+
protected override resizeAttachments(width: number, height: number): this {
|
|
167
105
|
// for default framebuffer, just update the stored size
|
|
168
106
|
if (this.handle === null) {
|
|
169
107
|
// assert(width === undefined && height === undefined);
|
|
@@ -171,6 +109,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
171
109
|
this.height = this.gl.drawingBufferHeight;
|
|
172
110
|
return this;
|
|
173
111
|
}
|
|
112
|
+
|
|
174
113
|
if (width === undefined) {
|
|
175
114
|
width = this.gl.drawingBufferWidth;
|
|
176
115
|
}
|
|
@@ -178,56 +117,75 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
178
117
|
height = this.gl.drawingBufferHeight;
|
|
179
118
|
}
|
|
180
119
|
|
|
181
|
-
|
|
182
|
-
log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();
|
|
183
|
-
}
|
|
120
|
+
// TODO Not clear that this is better than default destroy/create implementation
|
|
184
121
|
|
|
185
122
|
for (const colorAttachment of this.colorAttachments) {
|
|
186
|
-
colorAttachment.resize({width, height});
|
|
123
|
+
(colorAttachment.texture as WEBGLTexture).resize({width, height});
|
|
124
|
+
}
|
|
125
|
+
if (this.depthStencilAttachment) {
|
|
126
|
+
(this.depthStencilAttachment.texture as WEBGLTexture).resize({width, height});
|
|
187
127
|
}
|
|
188
|
-
this.depthStencilAttachment?.resize({width, height});
|
|
189
128
|
return this;
|
|
190
129
|
}
|
|
191
130
|
|
|
192
131
|
/** Attach one attachment */
|
|
193
|
-
protected _attachOne(attachmentPoint: GL, attachment: Attachment):
|
|
194
|
-
if (attachment instanceof
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
132
|
+
protected _attachOne(attachmentPoint: GL, attachment: Attachment): WEBGLTexture {
|
|
133
|
+
// if (attachment instanceof WEBGLRenderbuffer) {
|
|
134
|
+
// this._attachWEBGLRenderbuffer(attachmentPoint, attachment);
|
|
135
|
+
// return attachment;
|
|
136
|
+
// }
|
|
137
|
+
if (Array.isArray(attachment)) {
|
|
198
138
|
const [texture, layer = 0, level = 0] = attachment;
|
|
199
|
-
this._attachTexture(attachmentPoint, texture as unknown as
|
|
200
|
-
return texture as unknown as
|
|
201
|
-
}
|
|
139
|
+
this._attachTexture(attachmentPoint, texture as unknown as WEBGLTexture, layer, level);
|
|
140
|
+
return texture as unknown as WEBGLTexture;
|
|
141
|
+
}
|
|
142
|
+
if (attachment instanceof WEBGLTexture) {
|
|
202
143
|
this._attachTexture(attachmentPoint, attachment, 0, 0);
|
|
203
144
|
return attachment;
|
|
204
145
|
}
|
|
146
|
+
if (attachment instanceof WEBGLTextureView) {
|
|
147
|
+
const textureView = attachment;
|
|
148
|
+
this._attachTexture(
|
|
149
|
+
attachmentPoint,
|
|
150
|
+
textureView.texture,
|
|
151
|
+
textureView.props.baseMipLevel,
|
|
152
|
+
textureView.props.baseArrayLayer
|
|
153
|
+
);
|
|
154
|
+
return attachment.texture;
|
|
155
|
+
}
|
|
156
|
+
throw new Error('attach');
|
|
205
157
|
}
|
|
206
158
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
159
|
+
// TODO - we do not seem to need render buffers in WebGL 2
|
|
160
|
+
// protected _attachWEBGLRenderbuffer(attachment: GL, renderbuffer: WEBGLRenderbuffer): void {
|
|
161
|
+
// this.gl.framebufferRenderbuffer(
|
|
162
|
+
// GL.FRAMEBUFFER,
|
|
163
|
+
// attachment,
|
|
164
|
+
// GL.RENDERBUFFER,
|
|
165
|
+
// renderbuffer.handle
|
|
166
|
+
// );
|
|
167
|
+
// }
|
|
215
168
|
|
|
216
169
|
/**
|
|
217
170
|
* @param attachment
|
|
218
171
|
* @param texture
|
|
219
|
-
* @param layer = 0 - index into
|
|
220
|
-
* @param level
|
|
172
|
+
* @param layer = 0 - index into WEBGLTextureArray and Texture3D or face for `TextureCubeMap`
|
|
173
|
+
* @param level = 0 - mipmapLevel
|
|
221
174
|
*/
|
|
222
|
-
|
|
223
|
-
|
|
175
|
+
protected _attachTexture(
|
|
176
|
+
attachment: GL,
|
|
177
|
+
texture: WEBGLTexture,
|
|
178
|
+
layer: number,
|
|
179
|
+
level: number
|
|
180
|
+
): void {
|
|
181
|
+
const {gl} = this.device;
|
|
182
|
+
|
|
224
183
|
gl.bindTexture(texture.target, texture.handle);
|
|
225
184
|
|
|
226
185
|
switch (texture.target) {
|
|
227
186
|
case GL.TEXTURE_2D_ARRAY:
|
|
228
187
|
case GL.TEXTURE_3D:
|
|
229
|
-
|
|
230
|
-
gl2?.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
|
|
188
|
+
gl.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
|
|
231
189
|
break;
|
|
232
190
|
|
|
233
191
|
case GL.TEXTURE_CUBE_MAP:
|
|
@@ -251,15 +209,17 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
251
209
|
// Helper functions
|
|
252
210
|
|
|
253
211
|
// Map an index to a cube map face constant
|
|
254
|
-
function mapIndexToCubeMapFace(layer) {
|
|
212
|
+
function mapIndexToCubeMapFace(layer: number | GL): GL {
|
|
255
213
|
// TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)
|
|
256
214
|
// if smaller assume layer is index, otherwise assume it is already a cube map face constant
|
|
257
|
-
return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X
|
|
215
|
+
return layer < (GL.TEXTURE_CUBE_MAP_POSITIVE_X as number)
|
|
216
|
+
? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X
|
|
217
|
+
: layer;
|
|
258
218
|
}
|
|
259
219
|
|
|
260
220
|
// Helper METHODS
|
|
261
221
|
// Get a string describing the framebuffer error if installed
|
|
262
|
-
function _getFrameBufferStatus(status) {
|
|
222
|
+
function _getFrameBufferStatus(status: GL) {
|
|
263
223
|
switch (status) {
|
|
264
224
|
case GL.FRAMEBUFFER_COMPLETE:
|
|
265
225
|
return 'success';
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// WebGL2 Query (also handles disjoint timer extensions)
|
|
2
|
+
import {QuerySet, QuerySetProps} from '@luma.gl/core';
|
|
3
|
+
import {GL} from '@luma.gl/constants';
|
|
4
|
+
import {WebGLDevice} from '../webgl-device';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Asynchronous queries for different kinds of information
|
|
8
|
+
*/
|
|
9
|
+
export class WEBGLQuerySet extends QuerySet {
|
|
10
|
+
device: WebGLDevice;
|
|
11
|
+
handle: WebGLQuery;
|
|
12
|
+
|
|
13
|
+
target: number | null = null;
|
|
14
|
+
_queryPending = false;
|
|
15
|
+
_pollingPromise: Promise<any> | null = null;
|
|
16
|
+
|
|
17
|
+
override get [Symbol.toStringTag](): string {
|
|
18
|
+
return 'Query';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Create a query class
|
|
22
|
+
constructor(device: WebGLDevice, props: QuerySetProps) {
|
|
23
|
+
super(device, props);
|
|
24
|
+
this.device = device;
|
|
25
|
+
|
|
26
|
+
if (props.count > 1) {
|
|
27
|
+
throw new Error('WebGL QuerySet can only have one value');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
this.handle = this.device.gl.createQuery();
|
|
31
|
+
Object.seal(this);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
override destroy() {
|
|
35
|
+
this.device.gl.deleteQuery(this.handle);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// FOR RENDER PASS AND COMMAND ENCODER
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Shortcut for timer query (dependent on extension in both WebGL1 and 2)
|
|
42
|
+
* Measures GPU time delta between this call and a matching `end` call in the
|
|
43
|
+
* GPU instruction stream.
|
|
44
|
+
*/
|
|
45
|
+
beginTimestampQuery(): void {
|
|
46
|
+
return this._begin(GL.TIME_ELAPSED_EXT);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
endTimestampQuery(): void {
|
|
50
|
+
this._end();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Shortcut for occlusion queries
|
|
54
|
+
beginOcclusionQuery(options?: {conservative?: boolean}): void {
|
|
55
|
+
return this._begin(
|
|
56
|
+
options?.conservative ? GL.ANY_SAMPLES_PASSED_CONSERVATIVE : GL.ANY_SAMPLES_PASSED
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
endOcclusionQuery() {
|
|
61
|
+
this._end();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Shortcut for transformFeedbackQuery
|
|
65
|
+
beginTransformFeedbackQuery(): void {
|
|
66
|
+
return this._begin(GL.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
endTransformFeedbackQuery(): void {
|
|
70
|
+
this._end();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async resolveQuery(): Promise<bigint[]> {
|
|
74
|
+
const value = await this.pollQuery();
|
|
75
|
+
return [value];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// PRIVATE METHODS
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Due to OpenGL API limitations, after calling `begin()` on one Query
|
|
82
|
+
* instance, `end()` must be called on that same instance before
|
|
83
|
+
* calling `begin()` on another query. While there can be multiple
|
|
84
|
+
* outstanding queries representing disjoint `begin()`/`end()` intervals.
|
|
85
|
+
* It is not possible to interleave or overlap `begin` and `end` calls.
|
|
86
|
+
*/
|
|
87
|
+
protected _begin(target: number): void {
|
|
88
|
+
// Don't start a new query if one is already active.
|
|
89
|
+
if (this._queryPending) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
this.target = target;
|
|
94
|
+
this.device.gl.beginQuery(this.target, this.handle);
|
|
95
|
+
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// ends the current query
|
|
100
|
+
protected _end(): void {
|
|
101
|
+
// Can't end a new query if the last one hasn't been resolved.
|
|
102
|
+
if (this._queryPending) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (this.target) {
|
|
107
|
+
this.device.gl.endQuery(this.target);
|
|
108
|
+
this.target = null;
|
|
109
|
+
this._queryPending = true;
|
|
110
|
+
}
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Returns true if the query result is available
|
|
115
|
+
isResultAvailable(): boolean {
|
|
116
|
+
if (!this._queryPending) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const resultAvailable = this.device.gl.getQueryParameter(
|
|
121
|
+
this.handle,
|
|
122
|
+
GL.QUERY_RESULT_AVAILABLE
|
|
123
|
+
);
|
|
124
|
+
if (resultAvailable) {
|
|
125
|
+
this._queryPending = false;
|
|
126
|
+
}
|
|
127
|
+
return resultAvailable;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Timing query is disjoint, i.e. results are invalid
|
|
131
|
+
isTimerDisjoint(): boolean {
|
|
132
|
+
return this.device.gl.getParameter(GL.GPU_DISJOINT_EXT);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Returns query result.
|
|
136
|
+
getResult(): any {
|
|
137
|
+
return this.device.gl.getQueryParameter(this.handle, GL.QUERY_RESULT);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Returns the query result, converted to milliseconds to match JavaScript conventions.
|
|
141
|
+
getTimerMilliseconds() {
|
|
142
|
+
return this.getResult() / 1e6;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Polls the query
|
|
146
|
+
pollQuery(limit: number = Number.POSITIVE_INFINITY): Promise<any> {
|
|
147
|
+
if (this._pollingPromise) {
|
|
148
|
+
return this._pollingPromise;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
let counter = 0;
|
|
152
|
+
|
|
153
|
+
this._pollingPromise = new Promise((resolve, reject) => {
|
|
154
|
+
const poll = () => {
|
|
155
|
+
if (this.isResultAvailable()) {
|
|
156
|
+
resolve(this.getResult());
|
|
157
|
+
this._pollingPromise = null;
|
|
158
|
+
} else if (counter++ > limit) {
|
|
159
|
+
reject('Timed out');
|
|
160
|
+
this._pollingPromise = null;
|
|
161
|
+
} else {
|
|
162
|
+
requestAnimationFrame(poll);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
requestAnimationFrame(poll);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
return this._pollingPromise;
|
|
170
|
+
}
|
|
171
|
+
}
|