@luma.gl/webgl 9.0.0-alpha.4 → 9.0.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +3 -1
- package/dist/adapter/converters/device-parameters.d.ts +23 -4
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +42 -47
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +20 -56
- 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 +53 -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 +165 -201
- 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 +51 -19
- 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 +14 -21
- 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 +2 -5
- 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 +9 -11
- 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/{uniforms.js → decode-webgl-types.js} +20 -29
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
- package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
- package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
- package/dist/adapter/helpers/get-shader-info.js +25 -0
- package/dist/adapter/helpers/get-shader-info.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 +60 -115
- 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 +0 -7
- 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 +27 -57
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.d.ts +11 -0
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/{attribute-utils.js → webgl-topology-utils.js} +2 -19
- 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 +34 -41
- 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 +18 -10
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +49 -78
- 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 +169 -43
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +10 -20
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +46 -155
- 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 +91 -11
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +53 -19
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +108 -230
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +10 -19
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +3 -4
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +19 -31
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +64 -44
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +119 -235
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- 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 +166 -0
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +6 -7
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +10 -23
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +74 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +214 -128
- 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 +23 -48
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -29
- package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
- package/dist/classic/{buffer.js → buffer-with-accessor.js} +55 -125
- package/dist/classic/buffer-with-accessor.js.map +1 -0
- 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 +200 -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 +38 -0
- package/dist/classic/format-utils.js.map +1 -0
- package/dist/classic/typed-array-utils.d.ts +15 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +1 -21
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.d.ts +40 -0
- package/dist/context/context/create-browser-context.d.ts.map +1 -0
- package/dist/context/context/create-browser-context.js +53 -0
- package/dist/context/context/create-browser-context.js.map +1 -0
- package/dist/context/context/create-headless-context.d.ts +9 -0
- package/dist/context/context/create-headless-context.d.ts.map +1 -0
- package/dist/context/context/create-headless-context.js +42 -0
- package/dist/context/context/create-headless-context.js.map +1 -0
- package/dist/context/context/webgl-checks.d.ts.map +1 -1
- package/dist/context/context/webgl-checks.js +1 -4
- package/dist/context/context/webgl-checks.js.map +1 -1
- package/dist/context/debug/spector.d.ts +1 -2
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +8 -20
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +16 -39
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -19
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +18 -36
- 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 +4 -9
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +22 -30
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +8 -8
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +10 -32
- 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 +0 -70
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +0 -4
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +26 -62
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts +2 -1
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +8 -10
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +10391 -0
- package/dist/index.cjs +6625 -0
- package/dist/index.d.ts +27 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -26
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist.min.js +37 -0
- package/package.json +21 -9
- package/src/adapter/converters/device-parameters.ts +124 -36
- package/src/adapter/converters/sampler-parameters.ts +22 -9
- package/src/adapter/converters/shader-formats.ts +44 -0
- package/src/adapter/converters/texture-formats.ts +267 -194
- package/src/adapter/converters/vertex-formats.ts +71 -10
- package/src/adapter/device-helpers/device-features.ts +13 -3
- package/src/adapter/device-helpers/device-limits.ts +5 -3
- package/src/adapter/device-helpers/get-device-info.ts +17 -10
- package/src/adapter/device-helpers/is-old-ie.ts +3 -0
- package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
- package/src/adapter/helpers/get-shader-info.ts +41 -0
- package/src/adapter/helpers/get-shader-layout.ts +121 -146
- package/src/adapter/helpers/parse-shader-compiler-log.ts +4 -2
- package/src/adapter/helpers/set-uniform.ts +39 -35
- package/src/adapter/helpers/{attribute-utils.ts → webgl-topology-utils.ts} +7 -5
- 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 +59 -58
- package/src/adapter/resources/webgl-command-buffer.ts +333 -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 +89 -133
- package/src/adapter/resources/webgl-render-pass.ts +160 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +265 -170
- package/src/adapter/resources/webgl-sampler.ts +15 -9
- package/src/adapter/resources/webgl-shader.ts +14 -11
- package/src/adapter/resources/webgl-texture.ts +120 -90
- package/src/adapter/resources/webgl-vertex-array.ts +279 -0
- package/src/adapter/webgl-canvas-context.ts +16 -14
- package/src/adapter/webgl-device.ts +321 -78
- package/src/classic/accessor.ts +7 -17
- package/src/classic/{buffer.ts → buffer-with-accessor.ts} +68 -76
- package/src/classic/clear.ts +113 -0
- package/src/classic/copy-and-blit.ts +314 -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 +140 -0
- package/src/context/context/create-headless-context.ts +51 -0
- package/src/context/context/webgl-checks.ts +3 -1
- package/src/context/debug/spector.ts +9 -6
- package/src/context/debug/webgl-developer-tools.ts +23 -15
- package/src/context/parameters/unified-parameter-api.ts +23 -14
- package/src/context/parameters/webgl-parameter-tables.ts +120 -98
- package/src/context/polyfill/context-data.ts +30 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
- package/src/context/polyfill/polyfill-context.ts +10 -9
- package/src/context/polyfill/polyfill-table.ts +21 -16
- package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
- package/src/context/state-tracker/deep-array-equal.ts +2 -0
- package/src/context/state-tracker/track-context-state.ts +20 -16
- package/src/context/state-tracker/with-parameters.ts +13 -4
- package/src/index.ts +69 -35
- package/src/types.ts +5 -0
- package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
- package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
- package/dist/adapter/helpers/attribute-utils.js.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.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.map +0 -1
- package/dist/classic/buffer.js.map +0 -1
- package/dist/context/context/context-state.d.ts +0 -18
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -26
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/context/context/create-context.d.ts +0 -41
- package/dist/context/context/create-context.d.ts.map +0 -1
- package/dist/context/context/create-context.js +0 -49
- package/dist/context/context/create-context.js.map +0 -1
- package/dist/context/context/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -98
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/es5/adapter/converters/device-parameters.js +0 -170
- package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
- package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/texture-formats.js +0 -1031
- package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
- package/dist/es5/adapter/converters/vertex-formats.js +0 -45
- package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-features.js +0 -144
- package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
- package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
- package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/adapter/helpers/set-uniform.js +0 -125
- package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/es5/adapter/helpers/uniforms.js +0 -112
- package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
- package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
- package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-resource.js +0 -292
- package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
- package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
- package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-shader.js +0 -149
- package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-texture.js +0 -986
- package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/es5/adapter/webgl-canvas-context.js +0 -97
- package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/es5/adapter/webgl-device.js +0 -399
- package/dist/es5/adapter/webgl-device.js.map +0 -1
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/classic/accessor.js +0 -181
- package/dist/es5/classic/accessor.js.map +0 -1
- package/dist/es5/classic/buffer.js +0 -470
- package/dist/es5/classic/buffer.js.map +0 -1
- package/dist/es5/classic/typed-array-utils.js +0 -126
- package/dist/es5/classic/typed-array-utils.js.map +0 -1
- package/dist/es5/context/context/context-state.js +0 -31
- package/dist/es5/context/context/context-state.js.map +0 -1
- package/dist/es5/context/context/create-context.js +0 -69
- package/dist/es5/context/context/create-context.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -115
- package/dist/es5/context/context/device-pixels.js.map +0 -1
- package/dist/es5/context/context/webgl-checks.js +0 -54
- package/dist/es5/context/context/webgl-checks.js.map +0 -1
- package/dist/es5/context/debug/spector.js +0 -133
- package/dist/es5/context/debug/spector.js.map +0 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
- package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
- package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-context.js +0 -135
- package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-table.js +0 -166
- package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/es5/context/state-tracker/track-context-state.js +0 -211
- package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/es5/context/state-tracker/with-parameters.js +0 -44
- package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/es5/index.js +0 -276
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/init.js +0 -10
- package/dist/es5/init.js.map +0 -1
- package/dist/es5/types/webgl.js +0 -6
- package/dist/es5/types/webgl.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/types.js.map +0 -1
- package/dist/esm/adapter/converters/device-parameters.js +0 -155
- package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
- package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/texture-formats.js +0 -954
- package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
- package/dist/esm/adapter/converters/vertex-formats.js +0 -35
- package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-features.js +0 -102
- package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
- package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
- package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/adapter/helpers/set-uniform.js +0 -115
- package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/esm/adapter/helpers/uniforms.js +0 -99
- package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
- package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
- package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-resource.js +0 -216
- package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
- package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
- package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-shader.js +0 -75
- package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-texture.js +0 -831
- package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/esm/adapter/webgl-canvas-context.js +0 -54
- package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/esm/adapter/webgl-device.js +0 -280
- package/dist/esm/adapter/webgl-device.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/classic/accessor.js +0 -144
- package/dist/esm/classic/accessor.js.map +0 -1
- package/dist/esm/classic/buffer.js +0 -384
- package/dist/esm/classic/buffer.js.map +0 -1
- package/dist/esm/classic/typed-array-utils.js +0 -112
- package/dist/esm/classic/typed-array-utils.js.map +0 -1
- package/dist/esm/context/context/context-state.js +0 -26
- package/dist/esm/context/context/context-state.js.map +0 -1
- package/dist/esm/context/context/create-context.js +0 -49
- package/dist/esm/context/context/create-context.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -98
- package/dist/esm/context/context/device-pixels.js.map +0 -1
- package/dist/esm/context/context/webgl-checks.js +0 -34
- package/dist/esm/context/context/webgl-checks.js.map +0 -1
- package/dist/esm/context/debug/spector.js +0 -76
- package/dist/esm/context/debug/spector.js.map +0 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
- package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
- package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-context.js +0 -92
- package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-table.js +0 -160
- package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/esm/context/state-tracker/track-context-state.js +0 -183
- package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/esm/context/state-tracker/with-parameters.js +0 -36
- package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/esm/index.js +0 -27
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/init.js +0 -4
- package/dist/esm/init.js.map +0 -1
- package/dist/esm/types/webgl.js +0 -2
- package/dist/esm/types/webgl.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/init.d.ts +0 -2
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -4
- package/dist/init.js.map +0 -1
- package/dist/types/webgl.d.ts +0 -144
- 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/objects/webgl-vertex-array-object.ts +0 -111
- package/src/bundle.ts +0 -4
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/create-context.ts +0 -110
- package/src/context/context/device-pixels.ts +0 -152
- package/src/init.ts +0 -4
- package/src/types/webgl.ts +0 -283
|
@@ -1,72 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
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';
|
|
8
11
|
|
|
9
12
|
export type TextureAttachment = [Texture, number?, number?];
|
|
10
|
-
export type Attachment =
|
|
13
|
+
export type Attachment = WEBGLTexture | WEBGLRenderbuffer | TextureAttachment;
|
|
11
14
|
|
|
12
15
|
/** luma.gl Framebuffer, WebGL implementation */
|
|
13
|
-
export
|
|
16
|
+
export class WEBGLFramebuffer extends Framebuffer {
|
|
14
17
|
device: WebGLDevice;
|
|
15
18
|
gl: WebGLRenderingContext;
|
|
16
19
|
handle: WebGLFramebuffer;
|
|
17
20
|
|
|
18
|
-
get texture() {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
protected _ownResources: (WebGLTexture | Renderbuffer)[] = [];
|
|
21
|
+
get texture() {
|
|
22
|
+
return this.colorAttachments[0];
|
|
23
|
+
}
|
|
22
24
|
|
|
23
25
|
constructor(device: WebGLDevice, props: FramebufferProps) {
|
|
24
26
|
super(device, props);
|
|
25
|
-
this.device = device;
|
|
26
|
-
this.gl = device.gl;
|
|
27
|
-
this.handle = this.props.handle !== undefined ? this.props.handle : this.gl.createFramebuffer();
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this.handle.__SPECTOR_Metadata = {id: this.props.id, props: this.props};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
this.colorAttachments = this._createColorAttachments();
|
|
35
|
-
// @ts-expect-error
|
|
36
|
-
this.depthStencilAttachment = this._createDepthStencilAttachment();
|
|
28
|
+
// WebGL default framebuffer handle is null
|
|
29
|
+
const isDefaultFramebuffer = props.handle === null;
|
|
37
30
|
|
|
38
|
-
|
|
39
|
-
|
|
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
|
+
}
|
|
40
54
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this._attachOne(attachmentPoint, attachment);
|
|
55
|
+
if (this.depthStencilAttachment) {
|
|
56
|
+
this._attachOne(
|
|
57
|
+
getDepthStencilAttachmentWebGL(this.depthStencilAttachment.format),
|
|
58
|
+
this.depthStencilAttachment as WEBGLTexture
|
|
59
|
+
);
|
|
47
60
|
}
|
|
48
|
-
}
|
|
49
61
|
|
|
50
|
-
|
|
51
|
-
this._attachOne(getWebGLDepthStencilAttachment(this.depthStencilAttachment.format), this.depthStencilAttachment);
|
|
62
|
+
this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);
|
|
52
63
|
}
|
|
53
64
|
|
|
54
|
-
// @ts-expect-error
|
|
55
|
-
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
56
|
-
|
|
57
65
|
// @ts-expect-error
|
|
58
66
|
if (props.check !== false) {
|
|
59
67
|
this._checkStatus();
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
70
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
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) {
|
|
68
75
|
this.gl.deleteFramebuffer(this.handle);
|
|
69
|
-
this.handle = null;
|
|
76
|
+
// this.handle = null;
|
|
70
77
|
}
|
|
71
78
|
}
|
|
72
79
|
|
|
@@ -75,92 +82,31 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
75
82
|
/** Check the status */
|
|
76
83
|
protected _checkStatus(): void {
|
|
77
84
|
const {gl} = this;
|
|
78
|
-
|
|
85
|
+
// TODO - should we really rely on this trick?
|
|
86
|
+
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle) as unknown as WebGLFramebuffer;
|
|
79
87
|
const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
|
|
80
|
-
// @ts-expect-error
|
|
81
88
|
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
82
89
|
if (status !== gl.FRAMEBUFFER_COMPLETE) {
|
|
83
90
|
throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);
|
|
84
91
|
}
|
|
85
92
|
}
|
|
86
93
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
if (colorAttachment instanceof WebGLTexture) {
|
|
93
|
-
return colorAttachment;
|
|
94
|
-
}
|
|
95
|
-
// if (typeof colorAttachment === 'default') {
|
|
96
|
-
// return this._createColorAttachment('rgba8unorm', this.width, this.height);
|
|
97
|
-
// }
|
|
98
|
-
// @ts-expect-error
|
|
99
|
-
return this._createColorAttachment(colorAttachment, this.width, this.height);
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/** Create a color attachment */
|
|
104
|
-
protected _createColorAttachment(format: ColorTextureFormat, width: number, height: number): WebGLTexture {
|
|
105
|
-
const texture = this.device._createTexture({
|
|
106
|
-
id: `${this.id}-color`,
|
|
107
|
-
data: null, // reserves texture memory, but texels are undefined
|
|
108
|
-
format,
|
|
109
|
-
// type: GL.UNSIGNED_BYTE,
|
|
110
|
-
width,
|
|
111
|
-
height,
|
|
112
|
-
// Note: Mipmapping can be disabled by texture resource when we resize the texture
|
|
113
|
-
// to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant
|
|
114
|
-
// behavior we always disable mipmaps.
|
|
115
|
-
mipmaps: false,
|
|
116
|
-
// Set MIN and MAG filtering parameters so mipmaps are not used in sampling.
|
|
117
|
-
// Use LINEAR so subpixel algos like fxaa work.
|
|
118
|
-
// Set WRAP modes that support NPOT textures too.
|
|
119
|
-
sampler: {
|
|
120
|
-
minFilter: 'linear',
|
|
121
|
-
magFilter: 'linear',
|
|
122
|
-
addressModeU: 'clamp-to-edge',
|
|
123
|
-
addressModeV: 'clamp-to-edge'
|
|
124
|
-
},
|
|
125
|
-
// parameters: {
|
|
126
|
-
// [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,
|
|
127
|
-
// [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,
|
|
128
|
-
// [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,
|
|
129
|
-
// [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE
|
|
130
|
-
// }
|
|
131
|
-
}) as WebGLTexture;
|
|
132
|
-
this._ownResources.push(texture);
|
|
133
|
-
return texture;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/** Create a depth stencil attachment GL.DEPTH24_STENCIL8 */
|
|
137
|
-
protected _createDepthStencilAttachment(): Renderbuffer | WebGLTexture {
|
|
138
|
-
if (!this.props.depthStencilAttachment) {
|
|
139
|
-
return undefined;
|
|
140
|
-
}
|
|
141
|
-
if (this.props.depthStencilAttachment instanceof Renderbuffer) {
|
|
142
|
-
return this.props.depthStencilAttachment;
|
|
143
|
-
}
|
|
144
|
-
if (this.props.depthStencilAttachment instanceof Texture) {
|
|
145
|
-
return this.props.depthStencilAttachment as unknown as WebGLTexture;
|
|
146
|
-
}
|
|
147
|
-
const format = this.props.depthStencilAttachment;
|
|
148
|
-
const webglFormat = getWebGLTextureFormat(this.gl, format);
|
|
149
|
-
|
|
150
|
-
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, {
|
|
151
97
|
id: `${this.id}-depth-stencil`, // TODO misleading if not depth and stencil?
|
|
152
|
-
format
|
|
98
|
+
format,
|
|
153
99
|
// dataFormat: GL.DEPTH_STENCIL,
|
|
154
100
|
// type: GL.UNSIGNED_INT_24_8,
|
|
155
101
|
width: this.width,
|
|
156
102
|
height: this.height
|
|
157
|
-
});
|
|
158
|
-
this._ownResources.push(texture);
|
|
159
|
-
return texture;
|
|
103
|
+
}) as unknown as WEBGLTexture;
|
|
160
104
|
}
|
|
161
105
|
|
|
162
|
-
/**
|
|
163
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Attachment resize is expected to be a noop if size is same
|
|
108
|
+
*/
|
|
109
|
+
protected override resizeAttachments(width: number, height: number): this {
|
|
164
110
|
// for default framebuffer, just update the stored size
|
|
165
111
|
if (this.handle === null) {
|
|
166
112
|
// assert(width === undefined && height === undefined);
|
|
@@ -168,6 +114,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
168
114
|
this.height = this.gl.drawingBufferHeight;
|
|
169
115
|
return this;
|
|
170
116
|
}
|
|
117
|
+
|
|
171
118
|
if (width === undefined) {
|
|
172
119
|
width = this.gl.drawingBufferWidth;
|
|
173
120
|
}
|
|
@@ -175,33 +122,37 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
175
122
|
height = this.gl.drawingBufferHeight;
|
|
176
123
|
}
|
|
177
124
|
|
|
178
|
-
|
|
179
|
-
log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();
|
|
180
|
-
}
|
|
125
|
+
// TODO Not clear that this is better than default destroy/create implementation
|
|
181
126
|
|
|
182
127
|
for (const colorAttachment of this.colorAttachments) {
|
|
183
|
-
colorAttachment.resize({width, height});
|
|
128
|
+
(colorAttachment as WEBGLTexture).resize({width, height});
|
|
129
|
+
}
|
|
130
|
+
if (this.depthStencilAttachment) {
|
|
131
|
+
(this.depthStencilAttachment as WEBGLTexture).resize({width, height});
|
|
184
132
|
}
|
|
185
|
-
this.depthStencilAttachment?.resize({width, height});
|
|
186
133
|
return this;
|
|
187
134
|
}
|
|
188
135
|
|
|
189
136
|
/** Attach one attachment */
|
|
190
|
-
protected _attachOne(
|
|
191
|
-
|
|
192
|
-
|
|
137
|
+
protected _attachOne(
|
|
138
|
+
attachmentPoint: GL,
|
|
139
|
+
attachment: Attachment
|
|
140
|
+
): WEBGLTexture | WEBGLRenderbuffer {
|
|
141
|
+
if (attachment instanceof WEBGLRenderbuffer) {
|
|
142
|
+
this._attachWEBGLRenderbuffer(attachmentPoint, attachment);
|
|
193
143
|
return attachment;
|
|
194
144
|
} else if (Array.isArray(attachment)) {
|
|
195
145
|
const [texture, layer = 0, level = 0] = attachment;
|
|
196
|
-
this._attachTexture(attachmentPoint, texture as unknown as
|
|
197
|
-
return texture as unknown as
|
|
198
|
-
} 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) {
|
|
199
149
|
this._attachTexture(attachmentPoint, attachment, 0, 0);
|
|
200
150
|
return attachment;
|
|
201
151
|
}
|
|
152
|
+
throw new Error('attach');
|
|
202
153
|
}
|
|
203
154
|
|
|
204
|
-
protected
|
|
155
|
+
protected _attachWEBGLRenderbuffer(attachment: GL, renderbuffer: WEBGLRenderbuffer): void {
|
|
205
156
|
this.gl.framebufferRenderbuffer(
|
|
206
157
|
GL.FRAMEBUFFER,
|
|
207
158
|
attachment,
|
|
@@ -213,10 +164,15 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
213
164
|
/**
|
|
214
165
|
* @param attachment
|
|
215
166
|
* @param texture
|
|
216
|
-
* @param layer = 0 - index into
|
|
167
|
+
* @param layer = 0 - index into WEBGLTextureArray and Texture3D or face for `TextureCubeMap`
|
|
217
168
|
* @param level = 0 - mipmapLevel (must be 0 in WebGL1)
|
|
218
169
|
*/
|
|
219
|
-
|
|
170
|
+
protected _attachTexture(
|
|
171
|
+
attachment: GL,
|
|
172
|
+
texture: WEBGLTexture,
|
|
173
|
+
layer: number,
|
|
174
|
+
level: number
|
|
175
|
+
): void {
|
|
220
176
|
const {gl, gl2} = this.device;
|
|
221
177
|
gl.bindTexture(texture.target, texture.handle);
|
|
222
178
|
|
|
@@ -224,7 +180,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
224
180
|
case GL.TEXTURE_2D_ARRAY:
|
|
225
181
|
case GL.TEXTURE_3D:
|
|
226
182
|
this.device.assertWebGL2();
|
|
227
|
-
gl2
|
|
183
|
+
gl2?.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
|
|
228
184
|
break;
|
|
229
185
|
|
|
230
186
|
case GL.TEXTURE_CUBE_MAP:
|
|
@@ -248,7 +204,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
248
204
|
// Helper functions
|
|
249
205
|
|
|
250
206
|
// Map an index to a cube map face constant
|
|
251
|
-
function mapIndexToCubeMapFace(layer) {
|
|
207
|
+
function mapIndexToCubeMapFace(layer: number | GL): GL {
|
|
252
208
|
// TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)
|
|
253
209
|
// if smaller assume layer is index, otherwise assume it is already a cube map face constant
|
|
254
210
|
return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
|
|
@@ -256,7 +212,7 @@ function mapIndexToCubeMapFace(layer) {
|
|
|
256
212
|
|
|
257
213
|
// Helper METHODS
|
|
258
214
|
// Get a string describing the framebuffer error if installed
|
|
259
|
-
function _getFrameBufferStatus(status) {
|
|
215
|
+
function _getFrameBufferStatus(status: GL) {
|
|
260
216
|
switch (status) {
|
|
261
217
|
case GL.FRAMEBUFFER_COMPLETE:
|
|
262
218
|
return 'success';
|
|
@@ -1,14 +1,39 @@
|
|
|
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
|
+
|
|
10
|
+
// Should collapse during minification
|
|
11
|
+
const GL_DEPTH_BUFFER_BIT = 0x00000100;
|
|
12
|
+
const GL_STENCIL_BUFFER_BIT = 0x00000400;
|
|
13
|
+
const GL_COLOR_BUFFER_BIT = 0x00004000;
|
|
14
|
+
|
|
15
|
+
const GL_COLOR = 0x1800;
|
|
16
|
+
|
|
17
|
+
export class WEBGLRenderPass extends RenderPass {
|
|
5
18
|
readonly device: WebGLDevice;
|
|
6
19
|
|
|
20
|
+
/** Parameters that should be applied before each draw call */
|
|
21
|
+
glParameters: GLParameters;
|
|
22
|
+
|
|
7
23
|
constructor(device: WebGLDevice, props: RenderPassProps) {
|
|
8
24
|
super(device, props);
|
|
25
|
+
this.device = device;
|
|
26
|
+
|
|
27
|
+
// TODO - do parameters (scissorRect) affect the clear operation?
|
|
28
|
+
this.setParameters(this.props.parameters);
|
|
29
|
+
|
|
30
|
+
// Hack - for now WebGL draws in "immediate mode" (instead of queueing the operations)...
|
|
31
|
+
this.clear();
|
|
9
32
|
}
|
|
10
33
|
|
|
11
|
-
|
|
34
|
+
end(): void {
|
|
35
|
+
// should add commands to CommandEncoder.
|
|
36
|
+
}
|
|
12
37
|
|
|
13
38
|
pushDebugGroup(groupLabel: string): void {}
|
|
14
39
|
popDebugGroup(): void {}
|
|
@@ -20,4 +45,135 @@ export default class WEBGLRenderPass extends RenderPass {
|
|
|
20
45
|
// endOcclusionQuery(): void;
|
|
21
46
|
|
|
22
47
|
// executeBundles(bundles: Iterable<GPURenderBundle>): void;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Maps RenderPass parameters to GL parameters
|
|
51
|
+
*/
|
|
52
|
+
setParameters(parameters: RenderPassParameters = {}): void {
|
|
53
|
+
const glParameters: GLParameters = {};
|
|
54
|
+
|
|
55
|
+
// Framebuffers are specified using parameters in WebGL
|
|
56
|
+
if (this.props.framebuffer) {
|
|
57
|
+
glParameters.framebuffer = this.props.framebuffer;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (this.props.depthReadOnly) {
|
|
61
|
+
glParameters.depthMask = !this.props.depthReadOnly;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
glParameters.stencilMask = this.props.stencilReadOnly ? 0 : 1;
|
|
65
|
+
|
|
66
|
+
glParameters[GL.RASTERIZER_DISCARD] = this.props.discard;
|
|
67
|
+
|
|
68
|
+
// Map the four renderpass parameters to WebGL parameters
|
|
69
|
+
if (parameters.viewport) {
|
|
70
|
+
// WebGPU viewports are 6 coordinates (X, Y, Z)
|
|
71
|
+
if (parameters.viewport.length >= 6) {
|
|
72
|
+
glParameters.viewport = parameters.viewport.slice(0, 4);
|
|
73
|
+
glParameters.depthRange = [parameters.viewport[4], parameters.viewport[5]];
|
|
74
|
+
} else {
|
|
75
|
+
// WebGL viewports are 4 coordinates (X, Y)
|
|
76
|
+
glParameters.viewport = parameters.viewport;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
glParameters.scissorTest = Boolean(parameters.scissorRect);
|
|
80
|
+
if (parameters.scissorRect) {
|
|
81
|
+
glParameters.scissor = parameters.scissorRect;
|
|
82
|
+
}
|
|
83
|
+
if (parameters.blendConstant) {
|
|
84
|
+
glParameters.blendColor = parameters.blendConstant;
|
|
85
|
+
}
|
|
86
|
+
if (parameters.stencilReference) {
|
|
87
|
+
// eslint-disable-next-line no-console
|
|
88
|
+
console.warn('RenderPassParameters.stencilReference not yet implemented in WebGL');
|
|
89
|
+
// parameters.stencilFunc = [func, ref, mask];
|
|
90
|
+
// Does this work?
|
|
91
|
+
parameters[GL.STENCIL_REF] = parameters.stencilReference;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
this.glParameters = glParameters;
|
|
95
|
+
|
|
96
|
+
setGLParameters(this.device, glParameters);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Internal
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Optionally clears depth, color and stencil buffers based on parameters
|
|
103
|
+
*/
|
|
104
|
+
protected clear(): void {
|
|
105
|
+
const glParameters: GLParameters = {...this.glParameters};
|
|
106
|
+
|
|
107
|
+
let clearMask = 0;
|
|
108
|
+
|
|
109
|
+
if (this.props.clearColor !== false) {
|
|
110
|
+
clearMask |= GL_COLOR_BUFFER_BIT;
|
|
111
|
+
glParameters.clearColor = this.props.clearColor;
|
|
112
|
+
}
|
|
113
|
+
if (this.props.clearDepth !== false) {
|
|
114
|
+
clearMask |= GL_DEPTH_BUFFER_BIT;
|
|
115
|
+
glParameters.clearDepth = this.props.clearDepth;
|
|
116
|
+
}
|
|
117
|
+
if (this.props.clearStencil !== false) {
|
|
118
|
+
clearMask |= GL_STENCIL_BUFFER_BIT;
|
|
119
|
+
glParameters.clearStencil = this.props.clearStencil;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (clearMask !== 0) {
|
|
123
|
+
// Temporarily set any clear "colors" and call clear
|
|
124
|
+
withGLParameters(this.device, glParameters, () => {
|
|
125
|
+
this.device.gl.clear(clearMask);
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// TODO - clear multiple color attachments
|
|
129
|
+
// for (attachment of this.framebuffer.colorAttachments) {
|
|
130
|
+
// this.clearColorBuffer
|
|
131
|
+
// }
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* WebGL2 - clear a specific color buffer
|
|
137
|
+
*/
|
|
138
|
+
protected clearColorBuffer(drawBuffer: number = 0, value: NumberArray = [0, 0, 0, 0]) {
|
|
139
|
+
withGLParameters(this.device.gl2, {framebuffer: this.props.framebuffer}, () => {
|
|
140
|
+
// Method selection per OpenGL ES 3 docs
|
|
141
|
+
switch (value.constructor) {
|
|
142
|
+
case Int32Array:
|
|
143
|
+
this.device.gl2.clearBufferiv(GL_COLOR, drawBuffer, value);
|
|
144
|
+
break;
|
|
145
|
+
case Uint32Array:
|
|
146
|
+
this.device.gl2.clearBufferuiv(GL_COLOR, drawBuffer, value);
|
|
147
|
+
break;
|
|
148
|
+
case Float32Array:
|
|
149
|
+
default:
|
|
150
|
+
this.device.gl2.clearBufferfv(GL_COLOR, drawBuffer, value);
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// clearDepthStencil() {
|
|
157
|
+
// const GL_DEPTH = 0x1801;
|
|
158
|
+
// const GL_STENCIL = 0x1802;
|
|
159
|
+
// const GL_DEPTH_STENCIL = 0x84f9;
|
|
160
|
+
|
|
161
|
+
// case GL_DEPTH:
|
|
162
|
+
// this.device.gl2.clearBufferfv(GL_DEPTH, 0, [value]);
|
|
163
|
+
// break;
|
|
164
|
+
|
|
165
|
+
// case GL_STENCIL:
|
|
166
|
+
// this.device.gl2.clearBufferiv(GL_STENCIL, 0, [value]);
|
|
167
|
+
// break;
|
|
168
|
+
|
|
169
|
+
// case GL_DEPTH_STENCIL:
|
|
170
|
+
// const [depth, stencil] = value;
|
|
171
|
+
// this.device.gl2.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);
|
|
172
|
+
// break;
|
|
173
|
+
|
|
174
|
+
// default:
|
|
175
|
+
// assert(false, ERR_ARGUMENTS);
|
|
176
|
+
// }
|
|
177
|
+
// });
|
|
23
178
|
}
|
|
179
|
+
|