@luma.gl/webgl 9.0.0-alpha.8 → 9.0.0-beta.1
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 +89 -74
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +29 -180
- 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 +306 -343
- 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 +9 -25
- 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 +49 -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 +58 -138
- 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 -14
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +67 -101
- 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 -25
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +63 -175
- 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 +98 -12
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
- 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 -44
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +51 -31
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +123 -244
- 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 +12 -23
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +92 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +205 -158
- 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 +192 -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 +17 -18
- package/dist/context/context/create-browser-context.d.ts.map +1 -1
- package/dist/context/context/create-browser-context.js +11 -19
- package/dist/context/context/create-browser-context.js.map +1 -1
- package/dist/context/context/create-headless-context.d.ts +1 -1
- package/dist/context/context/create-headless-context.d.ts.map +1 -1
- package/dist/context/context/create-headless-context.js +6 -7
- package/dist/context/context/create-headless-context.js.map +1 -1
- 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 +7 -19
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +18 -41
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -17
- 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 +27 -31
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +7 -7
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +17 -40
- 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 +25 -61
- 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 +9344 -0
- package/dist/index.cjs +6556 -0
- package/dist/index.d.ts +23 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -27
- 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 +120 -43
- package/src/adapter/converters/sampler-parameters.ts +54 -126
- package/src/adapter/converters/shader-formats.ts +44 -0
- package/src/adapter/converters/texture-formats.ts +265 -192
- package/src/adapter/converters/vertex-formats.ts +71 -10
- package/src/adapter/device-helpers/device-features.ts +5 -2
- package/src/adapter/device-helpers/device-limits.ts +4 -2
- package/src/adapter/device-helpers/get-device-info.ts +72 -18
- package/src/adapter/device-helpers/is-old-ie.ts +3 -0
- package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
- package/src/adapter/helpers/get-shader-layout.ts +87 -131
- 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-buffer.ts +101 -106
- 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 +86 -133
- package/src/adapter/resources/webgl-render-pass.ts +165 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
- package/src/adapter/resources/webgl-sampler.ts +12 -8
- package/src/adapter/resources/webgl-shader.ts +32 -27
- package/src/adapter/resources/webgl-texture.ts +117 -91
- 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 +18 -13
- package/src/adapter/webgl-device.ts +327 -92
- package/src/classic/accessor.ts +8 -5
- package/src/classic/clear.ts +113 -0
- package/src/classic/copy-and-blit.ts +312 -0
- package/src/classic/format-utils.ts +46 -0
- package/src/classic/typed-array-utils.ts +19 -27
- package/src/context/context/create-browser-context.ts +53 -31
- package/src/context/context/create-headless-context.ts +5 -2
- package/src/context/context/webgl-checks.ts +3 -1
- package/src/context/debug/spector.ts +8 -5
- package/src/context/debug/webgl-developer-tools.ts +26 -17
- package/src/context/parameters/unified-parameter-api.ts +15 -9
- 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 +15 -8
- package/src/context/polyfill/polyfill-table.ts +20 -15
- 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 +13 -10
- package/src/context/state-tracker/with-parameters.ts +13 -4
- package/src/index.ts +65 -39
- 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 -392
- 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/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/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/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/device-pixels.ts +0 -158
- package/src/init.ts +0 -4
- package/src/types/webgl.ts +0 -284
|
@@ -1,75 +1,79 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
2
3
|
|
|
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 {
|
|
4
|
+
import type {FramebufferProps, TextureFormat} from '@luma.gl/core';
|
|
5
|
+
import {Framebuffer, Texture, assert} from '@luma.gl/core';
|
|
6
|
+
import {GL} from '@luma.gl/constants';
|
|
7
|
+
import {WebGLDevice} from '../webgl-device';
|
|
8
|
+
import {WEBGLTexture} from './webgl-texture';
|
|
9
|
+
import {WEBGLRenderbuffer} from '../objects/webgl-renderbuffer';
|
|
10
|
+
import {getDepthStencilAttachmentWebGL} from '../converters/texture-formats';
|
|
10
11
|
|
|
11
12
|
export type TextureAttachment = [Texture, number?, number?];
|
|
12
|
-
export type Attachment =
|
|
13
|
+
export type Attachment = WEBGLTexture | WEBGLRenderbuffer | TextureAttachment;
|
|
13
14
|
|
|
14
15
|
/** luma.gl Framebuffer, WebGL implementation */
|
|
15
|
-
export
|
|
16
|
+
export class WEBGLFramebuffer extends Framebuffer {
|
|
16
17
|
device: WebGLDevice;
|
|
17
18
|
gl: WebGLRenderingContext;
|
|
18
19
|
handle: WebGLFramebuffer;
|
|
19
20
|
|
|
20
|
-
get texture() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
protected _ownResources: (WebGLTexture | Renderbuffer)[] = [];
|
|
21
|
+
get texture() {
|
|
22
|
+
return this.colorAttachments[0];
|
|
23
|
+
}
|
|
24
24
|
|
|
25
25
|
constructor(device: WebGLDevice, props: FramebufferProps) {
|
|
26
26
|
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
27
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this.depthStencilAttachment = this._createDepthStencilAttachment();
|
|
28
|
+
// WebGL default framebuffer handle is null
|
|
29
|
+
const isDefaultFramebuffer = props.handle === null;
|
|
39
30
|
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
this.device = device;
|
|
32
|
+
this.gl = device.gl;
|
|
33
|
+
this.handle =
|
|
34
|
+
this.props.handle || isDefaultFramebuffer ? this.props.handle : this.gl.createFramebuffer();
|
|
35
|
+
|
|
36
|
+
if (!isDefaultFramebuffer) {
|
|
37
|
+
// default framebuffer handle is null, so we can't set spector metadata...
|
|
38
|
+
device.setSpectorMetadata(this.handle, {id: this.props.id, props: this.props});
|
|
39
|
+
|
|
40
|
+
// Auto create textures for attachments if needed
|
|
41
|
+
this.autoCreateAttachmentTextures();
|
|
42
|
+
|
|
43
|
+
/** Attach from a map of attachments */
|
|
44
|
+
this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
|
|
45
|
+
|
|
46
|
+
// Walk the attachments
|
|
47
|
+
for (let i = 0; i < this.colorAttachments.length; ++i) {
|
|
48
|
+
const attachment = this.colorAttachments[i];
|
|
49
|
+
const attachmentPoint = GL.COLOR_ATTACHMENT0 + i;
|
|
50
|
+
if (attachment) {
|
|
51
|
+
this._attachOne(attachmentPoint, attachment as WEBGLTexture);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
42
54
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
this._attachOne(attachmentPoint, attachment);
|
|
55
|
+
if (this.depthStencilAttachment) {
|
|
56
|
+
this._attachOne(
|
|
57
|
+
getDepthStencilAttachmentWebGL(this.depthStencilAttachment.format),
|
|
58
|
+
this.depthStencilAttachment as WEBGLTexture
|
|
59
|
+
);
|
|
49
60
|
}
|
|
50
|
-
}
|
|
51
61
|
|
|
52
|
-
|
|
53
|
-
this._attachOne(getWebGLDepthStencilAttachment(this.depthStencilAttachment.format), this.depthStencilAttachment);
|
|
62
|
+
this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);
|
|
54
63
|
}
|
|
55
64
|
|
|
56
|
-
// @ts-expect-error
|
|
57
|
-
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
58
|
-
|
|
59
65
|
// @ts-expect-error
|
|
60
66
|
if (props.check !== false) {
|
|
61
67
|
this._checkStatus();
|
|
62
68
|
}
|
|
63
69
|
}
|
|
64
70
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
71
|
+
/** destroys any auto created resources etc. */
|
|
72
|
+
override destroy(): void {
|
|
73
|
+
super.destroy(); // destroys owned resources etc.
|
|
74
|
+
if (!this.destroyed && this.handle !== null) {
|
|
70
75
|
this.gl.deleteFramebuffer(this.handle);
|
|
71
76
|
// this.handle = null;
|
|
72
|
-
this.destroyed = true;
|
|
73
77
|
}
|
|
74
78
|
}
|
|
75
79
|
|
|
@@ -78,92 +82,31 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
78
82
|
/** Check the status */
|
|
79
83
|
protected _checkStatus(): void {
|
|
80
84
|
const {gl} = this;
|
|
81
|
-
|
|
85
|
+
// TODO - should we really rely on this trick?
|
|
86
|
+
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle) as unknown as WebGLFramebuffer;
|
|
82
87
|
const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
|
|
83
|
-
// @ts-expect-error
|
|
84
88
|
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
85
89
|
if (status !== gl.FRAMEBUFFER_COMPLETE) {
|
|
86
90
|
throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
93
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
|
111
|
-
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, {
|
|
94
|
+
/** In WebGL we must use renderbuffers for depth/stencil attachments (unless we have extensions) */
|
|
95
|
+
protected override createDepthStencilTexture(format: TextureFormat): Texture {
|
|
96
|
+
return new WEBGLRenderbuffer(this.device, {
|
|
154
97
|
id: `${this.id}-depth-stencil`, // TODO misleading if not depth and stencil?
|
|
155
|
-
format
|
|
98
|
+
format,
|
|
156
99
|
// dataFormat: GL.DEPTH_STENCIL,
|
|
157
100
|
// type: GL.UNSIGNED_INT_24_8,
|
|
158
101
|
width: this.width,
|
|
159
102
|
height: this.height
|
|
160
|
-
});
|
|
161
|
-
this._ownResources.push(texture);
|
|
162
|
-
return texture;
|
|
103
|
+
}) as unknown as WEBGLTexture;
|
|
163
104
|
}
|
|
164
105
|
|
|
165
|
-
/**
|
|
166
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Attachment resize is expected to be a noop if size is same
|
|
108
|
+
*/
|
|
109
|
+
protected override resizeAttachments(width: number, height: number): this {
|
|
167
110
|
// for default framebuffer, just update the stored size
|
|
168
111
|
if (this.handle === null) {
|
|
169
112
|
// assert(width === undefined && height === undefined);
|
|
@@ -171,6 +114,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
171
114
|
this.height = this.gl.drawingBufferHeight;
|
|
172
115
|
return this;
|
|
173
116
|
}
|
|
117
|
+
|
|
174
118
|
if (width === undefined) {
|
|
175
119
|
width = this.gl.drawingBufferWidth;
|
|
176
120
|
}
|
|
@@ -178,33 +122,37 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
178
122
|
height = this.gl.drawingBufferHeight;
|
|
179
123
|
}
|
|
180
124
|
|
|
181
|
-
|
|
182
|
-
log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();
|
|
183
|
-
}
|
|
125
|
+
// TODO Not clear that this is better than default destroy/create implementation
|
|
184
126
|
|
|
185
127
|
for (const colorAttachment of this.colorAttachments) {
|
|
186
|
-
colorAttachment.resize({width, height});
|
|
128
|
+
(colorAttachment as WEBGLTexture).resize({width, height});
|
|
129
|
+
}
|
|
130
|
+
if (this.depthStencilAttachment) {
|
|
131
|
+
(this.depthStencilAttachment as WEBGLTexture).resize({width, height});
|
|
187
132
|
}
|
|
188
|
-
this.depthStencilAttachment?.resize({width, height});
|
|
189
133
|
return this;
|
|
190
134
|
}
|
|
191
135
|
|
|
192
136
|
/** Attach one attachment */
|
|
193
|
-
protected _attachOne(
|
|
194
|
-
|
|
195
|
-
|
|
137
|
+
protected _attachOne(
|
|
138
|
+
attachmentPoint: GL,
|
|
139
|
+
attachment: Attachment
|
|
140
|
+
): WEBGLTexture | WEBGLRenderbuffer {
|
|
141
|
+
if (attachment instanceof WEBGLRenderbuffer) {
|
|
142
|
+
this._attachWEBGLRenderbuffer(attachmentPoint, attachment);
|
|
196
143
|
return attachment;
|
|
197
144
|
} else if (Array.isArray(attachment)) {
|
|
198
145
|
const [texture, layer = 0, level = 0] = attachment;
|
|
199
|
-
this._attachTexture(attachmentPoint, texture as unknown as
|
|
200
|
-
return texture as unknown as
|
|
201
|
-
} else if (attachment instanceof
|
|
146
|
+
this._attachTexture(attachmentPoint, texture as unknown as WEBGLTexture, layer, level);
|
|
147
|
+
return texture as unknown as WEBGLTexture;
|
|
148
|
+
} else if (attachment instanceof WEBGLTexture) {
|
|
202
149
|
this._attachTexture(attachmentPoint, attachment, 0, 0);
|
|
203
150
|
return attachment;
|
|
204
151
|
}
|
|
152
|
+
throw new Error('attach');
|
|
205
153
|
}
|
|
206
154
|
|
|
207
|
-
protected
|
|
155
|
+
protected _attachWEBGLRenderbuffer(attachment: GL, renderbuffer: WEBGLRenderbuffer): void {
|
|
208
156
|
this.gl.framebufferRenderbuffer(
|
|
209
157
|
GL.FRAMEBUFFER,
|
|
210
158
|
attachment,
|
|
@@ -216,10 +164,15 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
216
164
|
/**
|
|
217
165
|
* @param attachment
|
|
218
166
|
* @param texture
|
|
219
|
-
* @param layer = 0 - index into
|
|
167
|
+
* @param layer = 0 - index into WEBGLTextureArray and Texture3D or face for `TextureCubeMap`
|
|
220
168
|
* @param level = 0 - mipmapLevel (must be 0 in WebGL1)
|
|
221
169
|
*/
|
|
222
|
-
|
|
170
|
+
protected _attachTexture(
|
|
171
|
+
attachment: GL,
|
|
172
|
+
texture: WEBGLTexture,
|
|
173
|
+
layer: number,
|
|
174
|
+
level: number
|
|
175
|
+
): void {
|
|
223
176
|
const {gl, gl2} = this.device;
|
|
224
177
|
gl.bindTexture(texture.target, texture.handle);
|
|
225
178
|
|
|
@@ -251,15 +204,15 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
251
204
|
// Helper functions
|
|
252
205
|
|
|
253
206
|
// Map an index to a cube map face constant
|
|
254
|
-
function mapIndexToCubeMapFace(layer) {
|
|
207
|
+
function mapIndexToCubeMapFace(layer: number | GL): GL {
|
|
255
208
|
// TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)
|
|
256
209
|
// 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 ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
|
|
210
|
+
return layer < (GL.TEXTURE_CUBE_MAP_POSITIVE_X as number) ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
|
|
258
211
|
}
|
|
259
212
|
|
|
260
213
|
// Helper METHODS
|
|
261
214
|
// Get a string describing the framebuffer error if installed
|
|
262
|
-
function _getFrameBufferStatus(status) {
|
|
215
|
+
function _getFrameBufferStatus(status: GL) {
|
|
263
216
|
switch (status) {
|
|
264
217
|
case GL.FRAMEBUFFER_COMPLETE:
|
|
265
218
|
return 'success';
|
|
@@ -1,15 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
import {RenderPass, RenderPassProps, NumberArray, RenderPassParameters} from '@luma.gl/core';
|
|
5
|
+
import {WebGLDevice} from '../webgl-device';
|
|
6
|
+
import {GL, GLParameters} from '@luma.gl/constants';
|
|
7
|
+
import {withGLParameters} from '../../context/state-tracker/with-parameters';
|
|
8
|
+
import {setGLParameters} from '../../context/parameters/unified-parameter-api';
|
|
9
|
+
import {pushContextState, popContextState} from '../../context/state-tracker/track-context-state';
|
|
10
|
+
|
|
11
|
+
// Should collapse during minification
|
|
12
|
+
const GL_DEPTH_BUFFER_BIT = 0x00000100;
|
|
13
|
+
const GL_STENCIL_BUFFER_BIT = 0x00000400;
|
|
14
|
+
const GL_COLOR_BUFFER_BIT = 0x00004000;
|
|
15
|
+
|
|
16
|
+
const GL_COLOR = 0x1800;
|
|
17
|
+
|
|
18
|
+
export class WEBGLRenderPass extends RenderPass {
|
|
5
19
|
readonly device: WebGLDevice;
|
|
6
20
|
|
|
21
|
+
/** Parameters that should be applied before each draw call */
|
|
22
|
+
glParameters: GLParameters;
|
|
23
|
+
|
|
7
24
|
constructor(device: WebGLDevice, props: RenderPassProps) {
|
|
8
25
|
super(device, props);
|
|
9
26
|
this.device = device;
|
|
27
|
+
|
|
28
|
+
// TODO - do parameters (scissorRect) affect the clear operation?
|
|
29
|
+
pushContextState(this.device.gl);
|
|
30
|
+
this.setParameters(this.props.parameters);
|
|
31
|
+
|
|
32
|
+
// Hack - for now WebGL draws in "immediate mode" (instead of queueing the operations)...
|
|
33
|
+
this.clear();
|
|
10
34
|
}
|
|
11
35
|
|
|
12
|
-
|
|
36
|
+
end(): void {
|
|
37
|
+
popContextState(this.device.gl);
|
|
38
|
+
if (this.props.framebuffer) {
|
|
39
|
+
setGLParameters(this.device, {framebuffer: null});
|
|
40
|
+
}
|
|
41
|
+
// should add commands to CommandEncoder.
|
|
42
|
+
}
|
|
13
43
|
|
|
14
44
|
pushDebugGroup(groupLabel: string): void {}
|
|
15
45
|
popDebugGroup(): void {}
|
|
@@ -21,4 +51,135 @@ export default class WEBGLRenderPass extends RenderPass {
|
|
|
21
51
|
// endOcclusionQuery(): void;
|
|
22
52
|
|
|
23
53
|
// executeBundles(bundles: Iterable<GPURenderBundle>): void;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Maps RenderPass parameters to GL parameters
|
|
57
|
+
*/
|
|
58
|
+
setParameters(parameters: RenderPassParameters = {}): void {
|
|
59
|
+
const glParameters: GLParameters = {};
|
|
60
|
+
|
|
61
|
+
// Framebuffers are specified using parameters in WebGL
|
|
62
|
+
if (this.props.framebuffer) {
|
|
63
|
+
glParameters.framebuffer = this.props.framebuffer;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (this.props.depthReadOnly) {
|
|
67
|
+
glParameters.depthMask = !this.props.depthReadOnly;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
glParameters.stencilMask = this.props.stencilReadOnly ? 0 : 1;
|
|
71
|
+
|
|
72
|
+
glParameters[GL.RASTERIZER_DISCARD] = this.props.discard;
|
|
73
|
+
|
|
74
|
+
// Map the four renderpass parameters to WebGL parameters
|
|
75
|
+
if (parameters.viewport) {
|
|
76
|
+
// WebGPU viewports are 6 coordinates (X, Y, Z)
|
|
77
|
+
if (parameters.viewport.length >= 6) {
|
|
78
|
+
glParameters.viewport = parameters.viewport.slice(0, 4);
|
|
79
|
+
glParameters.depthRange = [parameters.viewport[4], parameters.viewport[5]];
|
|
80
|
+
} else {
|
|
81
|
+
// WebGL viewports are 4 coordinates (X, Y)
|
|
82
|
+
glParameters.viewport = parameters.viewport;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
glParameters.scissorTest = Boolean(parameters.scissorRect);
|
|
86
|
+
if (parameters.scissorRect) {
|
|
87
|
+
glParameters.scissor = parameters.scissorRect;
|
|
88
|
+
}
|
|
89
|
+
if (parameters.blendConstant) {
|
|
90
|
+
glParameters.blendColor = parameters.blendConstant;
|
|
91
|
+
}
|
|
92
|
+
if (parameters.stencilReference) {
|
|
93
|
+
// eslint-disable-next-line no-console
|
|
94
|
+
console.warn('RenderPassParameters.stencilReference not yet implemented in WebGL');
|
|
95
|
+
// parameters.stencilFunc = [func, ref, mask];
|
|
96
|
+
// Does this work?
|
|
97
|
+
parameters[GL.STENCIL_REF] = parameters.stencilReference;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
this.glParameters = glParameters;
|
|
101
|
+
|
|
102
|
+
setGLParameters(this.device, glParameters);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Internal
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Optionally clears depth, color and stencil buffers based on parameters
|
|
109
|
+
*/
|
|
110
|
+
protected clear(): void {
|
|
111
|
+
const glParameters: GLParameters = {...this.glParameters};
|
|
112
|
+
|
|
113
|
+
let clearMask = 0;
|
|
114
|
+
|
|
115
|
+
if (this.props.clearColor !== false) {
|
|
116
|
+
clearMask |= GL_COLOR_BUFFER_BIT;
|
|
117
|
+
glParameters.clearColor = this.props.clearColor;
|
|
118
|
+
}
|
|
119
|
+
if (this.props.clearDepth !== false) {
|
|
120
|
+
clearMask |= GL_DEPTH_BUFFER_BIT;
|
|
121
|
+
glParameters.clearDepth = this.props.clearDepth;
|
|
122
|
+
}
|
|
123
|
+
if (this.props.clearStencil !== false) {
|
|
124
|
+
clearMask |= GL_STENCIL_BUFFER_BIT;
|
|
125
|
+
glParameters.clearStencil = this.props.clearStencil;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (clearMask !== 0) {
|
|
129
|
+
// Temporarily set any clear "colors" and call clear
|
|
130
|
+
withGLParameters(this.device, glParameters, () => {
|
|
131
|
+
this.device.gl.clear(clearMask);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// TODO - clear multiple color attachments
|
|
135
|
+
// for (attachment of this.framebuffer.colorAttachments) {
|
|
136
|
+
// this.clearColorBuffer
|
|
137
|
+
// }
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* WebGL2 - clear a specific color buffer
|
|
143
|
+
*/
|
|
144
|
+
protected clearColorBuffer(drawBuffer: number = 0, value: NumberArray = [0, 0, 0, 0]) {
|
|
145
|
+
withGLParameters(this.device.gl2, {framebuffer: this.props.framebuffer}, () => {
|
|
146
|
+
// Method selection per OpenGL ES 3 docs
|
|
147
|
+
switch (value.constructor) {
|
|
148
|
+
case Int32Array:
|
|
149
|
+
this.device.gl2.clearBufferiv(GL_COLOR, drawBuffer, value);
|
|
150
|
+
break;
|
|
151
|
+
case Uint32Array:
|
|
152
|
+
this.device.gl2.clearBufferuiv(GL_COLOR, drawBuffer, value);
|
|
153
|
+
break;
|
|
154
|
+
case Float32Array:
|
|
155
|
+
default:
|
|
156
|
+
this.device.gl2.clearBufferfv(GL_COLOR, drawBuffer, value);
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// clearDepthStencil() {
|
|
163
|
+
// const GL_DEPTH = 0x1801;
|
|
164
|
+
// const GL_STENCIL = 0x1802;
|
|
165
|
+
// const GL_DEPTH_STENCIL = 0x84f9;
|
|
166
|
+
|
|
167
|
+
// case GL_DEPTH:
|
|
168
|
+
// this.device.gl2.clearBufferfv(GL_DEPTH, 0, [value]);
|
|
169
|
+
// break;
|
|
170
|
+
|
|
171
|
+
// case GL_STENCIL:
|
|
172
|
+
// this.device.gl2.clearBufferiv(GL_STENCIL, 0, [value]);
|
|
173
|
+
// break;
|
|
174
|
+
|
|
175
|
+
// case GL_DEPTH_STENCIL:
|
|
176
|
+
// const [depth, stencil] = value;
|
|
177
|
+
// this.device.gl2.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);
|
|
178
|
+
// break;
|
|
179
|
+
|
|
180
|
+
// default:
|
|
181
|
+
// assert(false, ERR_ARGUMENTS);
|
|
182
|
+
// }
|
|
183
|
+
// });
|
|
24
184
|
}
|
|
185
|
+
|