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