@luma.gl/webgl 9.0.0-alpha.8 → 9.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +3 -1
- package/dist/adapter/converters/device-parameters.d.ts +12 -3
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +89 -74
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +29 -180
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/shader-formats.d.ts +9 -0
- package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
- package/dist/adapter/converters/shader-formats.js +52 -0
- package/dist/adapter/converters/shader-formats.js.map +1 -0
- package/dist/adapter/converters/texture-formats.d.ts +32 -44
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +306 -343
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts +9 -3
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +53 -22
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +9 -25
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +54 -58
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +49 -22
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.js +2 -1
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
- package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
- package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
- package/dist/adapter/helpers/decode-webgl-types.js +89 -0
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +58 -138
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts +3 -2
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +51 -82
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +2 -29
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +6 -9
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +26 -83
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +19 -14
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +67 -101
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +175 -48
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +10 -20
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -25
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +63 -175
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +98 -12
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +11 -21
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +5 -5
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +18 -44
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +51 -31
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +123 -244
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.js +167 -0
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +6 -7
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +12 -23
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +92 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +205 -158
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +3 -3
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +26 -52
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/clear.d.ts +22 -0
- package/dist/classic/clear.d.ts.map +1 -0
- package/dist/classic/clear.js +88 -0
- package/dist/classic/clear.js.map +1 -0
- package/dist/classic/copy-and-blit.d.ts +62 -0
- package/dist/classic/copy-and-blit.d.ts.map +1 -0
- package/dist/classic/copy-and-blit.js +192 -0
- package/dist/classic/copy-and-blit.js.map +1 -0
- package/dist/classic/format-utils.d.ts +3 -0
- package/dist/classic/format-utils.d.ts.map +1 -0
- package/dist/classic/format-utils.js +37 -0
- package/dist/classic/format-utils.js.map +1 -0
- package/dist/classic/typed-array-utils.d.ts +17 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +18 -39
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.d.ts +17 -18
- package/dist/context/context/create-browser-context.d.ts.map +1 -1
- package/dist/context/context/create-browser-context.js +11 -19
- package/dist/context/context/create-browser-context.js.map +1 -1
- package/dist/context/context/create-headless-context.d.ts +1 -1
- package/dist/context/context/create-headless-context.d.ts.map +1 -1
- package/dist/context/context/create-headless-context.js +6 -7
- package/dist/context/context/create-headless-context.js.map +1 -1
- package/dist/context/context/webgl-checks.d.ts.map +1 -1
- package/dist/context/context/webgl-checks.js +1 -4
- package/dist/context/context/webgl-checks.js.map +1 -1
- package/dist/context/debug/spector.d.ts +1 -2
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +7 -19
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +18 -41
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -17
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +267 -286
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/context-data.d.ts +13 -0
- package/dist/context/polyfill/context-data.d.ts.map +1 -0
- package/dist/context/polyfill/context-data.js +12 -0
- package/dist/context/polyfill/context-data.js.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +27 -31
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +7 -7
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +17 -40
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +0 -4
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +25 -61
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts +2 -1
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +8 -10
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +9344 -0
- package/dist/index.cjs +6556 -0
- package/dist/index.d.ts +23 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -27
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist.min.js +52 -0
- package/package.json +21 -9
- package/src/adapter/converters/device-parameters.ts +120 -43
- package/src/adapter/converters/sampler-parameters.ts +54 -126
- package/src/adapter/converters/shader-formats.ts +44 -0
- package/src/adapter/converters/texture-formats.ts +265 -192
- package/src/adapter/converters/vertex-formats.ts +71 -10
- package/src/adapter/device-helpers/device-features.ts +5 -2
- package/src/adapter/device-helpers/device-limits.ts +4 -2
- package/src/adapter/device-helpers/get-device-info.ts +72 -18
- package/src/adapter/device-helpers/is-old-ie.ts +3 -0
- package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
- package/src/adapter/helpers/get-shader-layout.ts +87 -131
- package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
- package/src/adapter/helpers/set-uniform.ts +39 -35
- package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
- package/src/adapter/objects/constants-to-keys.ts +6 -25
- package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
- package/src/adapter/objects/webgl-resource.ts +16 -23
- package/src/adapter/resources/webgl-buffer.ts +101 -106
- package/src/adapter/resources/webgl-command-buffer.ts +327 -25
- package/src/adapter/resources/webgl-command-encoder.ts +20 -12
- package/src/adapter/resources/webgl-external-texture.ts +5 -2
- package/src/adapter/resources/webgl-framebuffer.ts +86 -133
- package/src/adapter/resources/webgl-render-pass.ts +165 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
- package/src/adapter/resources/webgl-sampler.ts +12 -8
- package/src/adapter/resources/webgl-shader.ts +32 -27
- package/src/adapter/resources/webgl-texture.ts +117 -91
- package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
- package/src/adapter/resources/webgl-vertex-array.ts +283 -0
- package/src/adapter/webgl-canvas-context.ts +18 -13
- package/src/adapter/webgl-device.ts +327 -92
- package/src/classic/accessor.ts +8 -5
- package/src/classic/clear.ts +113 -0
- package/src/classic/copy-and-blit.ts +312 -0
- package/src/classic/format-utils.ts +46 -0
- package/src/classic/typed-array-utils.ts +19 -27
- package/src/context/context/create-browser-context.ts +53 -31
- package/src/context/context/create-headless-context.ts +5 -2
- package/src/context/context/webgl-checks.ts +3 -1
- package/src/context/debug/spector.ts +8 -5
- package/src/context/debug/webgl-developer-tools.ts +26 -17
- package/src/context/parameters/unified-parameter-api.ts +15 -9
- package/src/context/parameters/webgl-parameter-tables.ts +120 -98
- package/src/context/polyfill/context-data.ts +30 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
- package/src/context/polyfill/polyfill-context.ts +15 -8
- package/src/context/polyfill/polyfill-table.ts +20 -15
- package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
- package/src/context/state-tracker/deep-array-equal.ts +2 -0
- package/src/context/state-tracker/track-context-state.ts +13 -10
- package/src/context/state-tracker/with-parameters.ts +13 -4
- package/src/index.ts +65 -39
- package/src/types.ts +5 -0
- package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
- package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
- package/dist/adapter/helpers/attribute-utils.js +0 -81
- package/dist/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/adapter/helpers/uniforms.d.ts +0 -26
- package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
- package/dist/adapter/helpers/uniforms.js +0 -99
- package/dist/adapter/helpers/uniforms.js.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/bundle.js.map +0 -1
- package/dist/classic/buffer.d.ts +0 -95
- package/dist/classic/buffer.d.ts.map +0 -1
- package/dist/classic/buffer.js +0 -392
- package/dist/classic/buffer.js.map +0 -1
- package/dist/context/context/context-state.d.ts +0 -18
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -26
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/context/context/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -103
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/es5/adapter/converters/device-parameters.js +0 -185
- package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
- package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/texture-formats.js +0 -1031
- package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
- package/dist/es5/adapter/converters/vertex-formats.js +0 -45
- package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-features.js +0 -155
- package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
- package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
- package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/adapter/helpers/set-uniform.js +0 -125
- package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/es5/adapter/helpers/uniforms.js +0 -112
- package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
- package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
- package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-resource.js +0 -292
- package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
- package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
- package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-shader.js +0 -150
- package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-texture.js +0 -986
- package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/es5/adapter/webgl-canvas-context.js +0 -97
- package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/es5/adapter/webgl-device.js +0 -463
- package/dist/es5/adapter/webgl-device.js.map +0 -1
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/classic/accessor.js +0 -181
- package/dist/es5/classic/accessor.js.map +0 -1
- package/dist/es5/classic/buffer.js +0 -478
- package/dist/es5/classic/buffer.js.map +0 -1
- package/dist/es5/classic/typed-array-utils.js +0 -126
- package/dist/es5/classic/typed-array-utils.js.map +0 -1
- package/dist/es5/context/context/context-state.js +0 -31
- package/dist/es5/context/context/context-state.js.map +0 -1
- package/dist/es5/context/context/create-browser-context.js +0 -83
- package/dist/es5/context/context/create-browser-context.js.map +0 -1
- package/dist/es5/context/context/create-headless-context.js +0 -60
- package/dist/es5/context/context/create-headless-context.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -121
- package/dist/es5/context/context/device-pixels.js.map +0 -1
- package/dist/es5/context/context/webgl-checks.js +0 -54
- package/dist/es5/context/context/webgl-checks.js.map +0 -1
- package/dist/es5/context/debug/spector.js +0 -133
- package/dist/es5/context/debug/spector.js.map +0 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
- package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
- package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-context.js +0 -134
- package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-table.js +0 -166
- package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/es5/context/state-tracker/track-context-state.js +0 -211
- package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/es5/context/state-tracker/with-parameters.js +0 -44
- package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/es5/index.js +0 -290
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/init.js +0 -10
- package/dist/es5/init.js.map +0 -1
- package/dist/es5/types/webgl.js +0 -6
- package/dist/es5/types/webgl.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/types.js.map +0 -1
- package/dist/esm/adapter/converters/device-parameters.js +0 -168
- package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
- package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/texture-formats.js +0 -954
- package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
- package/dist/esm/adapter/converters/vertex-formats.js +0 -35
- package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-features.js +0 -112
- package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
- package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
- package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/adapter/helpers/set-uniform.js +0 -115
- package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/esm/adapter/helpers/uniforms.js +0 -99
- package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
- package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
- package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-resource.js +0 -216
- package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
- package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
- package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-shader.js +0 -76
- package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-texture.js +0 -834
- package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/esm/adapter/webgl-canvas-context.js +0 -54
- package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/esm/adapter/webgl-device.js +0 -337
- package/dist/esm/adapter/webgl-device.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/classic/accessor.js +0 -144
- package/dist/esm/classic/accessor.js.map +0 -1
- package/dist/esm/classic/buffer.js +0 -392
- package/dist/esm/classic/buffer.js.map +0 -1
- package/dist/esm/classic/typed-array-utils.js +0 -112
- package/dist/esm/classic/typed-array-utils.js.map +0 -1
- package/dist/esm/context/context/context-state.js +0 -26
- package/dist/esm/context/context/context-state.js.map +0 -1
- package/dist/esm/context/context/create-browser-context.js +0 -61
- package/dist/esm/context/context/create-browser-context.js.map +0 -1
- package/dist/esm/context/context/create-headless-context.js +0 -43
- package/dist/esm/context/context/create-headless-context.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -103
- package/dist/esm/context/context/device-pixels.js.map +0 -1
- package/dist/esm/context/context/webgl-checks.js +0 -34
- package/dist/esm/context/context/webgl-checks.js.map +0 -1
- package/dist/esm/context/debug/spector.js +0 -76
- package/dist/esm/context/debug/spector.js.map +0 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
- package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
- package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-context.js +0 -91
- package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-table.js +0 -160
- package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/esm/context/state-tracker/track-context-state.js +0 -183
- package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/esm/context/state-tracker/with-parameters.js +0 -36
- package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/esm/index.js +0 -28
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/init.js +0 -4
- package/dist/esm/init.js.map +0 -1
- package/dist/esm/types/webgl.js +0 -2
- package/dist/esm/types/webgl.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/init.d.ts +0 -2
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -4
- package/dist/init.js.map +0 -1
- package/dist/types/webgl.d.ts +0 -145
- package/dist/types/webgl.d.ts.map +0 -1
- package/dist/types/webgl.js +0 -2
- package/dist/types/webgl.js.map +0 -1
- package/src/adapter/converters/renderbuffer-formats.ts +0 -92
- package/src/adapter/helpers/attribute-utils.ts +0 -61
- package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
- package/src/bundle.ts +0 -4
- package/src/classic/buffer.ts +0 -474
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/device-pixels.ts +0 -158
- package/src/init.ts +0 -4
- package/src/types/webgl.ts +0 -284
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { CommandEncoder, CommandEncoderProps } from '@luma.gl/
|
|
2
|
-
import type { CopyBufferToBufferOptions, CopyBufferToTextureOptions, CopyTextureToBufferOptions, CopyTextureToTextureOptions } from '@luma.gl/
|
|
3
|
-
import
|
|
4
|
-
import WebGLDevice from '../webgl-device';
|
|
5
|
-
export
|
|
1
|
+
import { CommandEncoder, CommandEncoderProps } from '@luma.gl/core';
|
|
2
|
+
import type { CopyBufferToBufferOptions, CopyBufferToTextureOptions, CopyTextureToBufferOptions, CopyTextureToTextureOptions } from '@luma.gl/core';
|
|
3
|
+
import { WEBGLCommandBuffer } from './webgl-command-buffer';
|
|
4
|
+
import { WebGLDevice } from '../webgl-device';
|
|
5
|
+
export declare class WEBGLCommandEncoder extends CommandEncoder {
|
|
6
6
|
readonly device: WebGLDevice;
|
|
7
|
-
readonly commandBuffer:
|
|
7
|
+
readonly commandBuffer: WEBGLCommandBuffer;
|
|
8
8
|
constructor(device: WebGLDevice, props: CommandEncoderProps);
|
|
9
9
|
destroy(): void;
|
|
10
|
+
finish(): void;
|
|
10
11
|
copyBufferToBuffer(options: CopyBufferToBufferOptions): void;
|
|
11
12
|
copyBufferToTexture(options: CopyBufferToTextureOptions): void;
|
|
12
13
|
copyTextureToBuffer(options: CopyTextureToBufferOptions): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-command-encoder.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-encoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webgl-command-encoder.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-encoder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;gBAE/B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IAMlD,OAAO,IAAI,IAAI;IAEf,MAAM,IAAI,IAAI;IAQvB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAI5D,mBAAmB,CAAC,OAAO,EAAE,0BAA0B;IAIvD,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAI9D,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,IAAI;IAIvD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa;IAEb,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CAWtD"}
|
|
@@ -1,53 +1,43 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export default class WEBGLCommandEncoder extends CommandEncoder {
|
|
1
|
+
import { CommandEncoder } from '@luma.gl/core';
|
|
2
|
+
import { WEBGLCommandBuffer } from "./webgl-command-buffer.js";
|
|
3
|
+
export class WEBGLCommandEncoder extends CommandEncoder {
|
|
5
4
|
constructor(device, props) {
|
|
6
|
-
super(props);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
_defineProperty(this, "commandBuffer", new CommandBuffer());
|
|
11
|
-
|
|
5
|
+
super(device, props);
|
|
6
|
+
this.device = void 0;
|
|
7
|
+
this.commandBuffer = void 0;
|
|
12
8
|
this.device = device;
|
|
9
|
+
this.commandBuffer = new WEBGLCommandBuffer(device);
|
|
13
10
|
}
|
|
14
|
-
|
|
15
11
|
destroy() {}
|
|
16
|
-
|
|
12
|
+
finish() {
|
|
13
|
+
this.commandBuffer.submitCommands();
|
|
14
|
+
}
|
|
17
15
|
copyBufferToBuffer(options) {
|
|
18
16
|
this.commandBuffer.commands.push({
|
|
19
17
|
name: 'copy-buffer-to-buffer',
|
|
20
18
|
options
|
|
21
19
|
});
|
|
22
20
|
}
|
|
23
|
-
|
|
24
21
|
copyBufferToTexture(options) {
|
|
25
22
|
this.commandBuffer.commands.push({
|
|
26
23
|
name: 'copy-buffer-to-texture',
|
|
27
24
|
options
|
|
28
25
|
});
|
|
29
26
|
}
|
|
30
|
-
|
|
31
27
|
copyTextureToBuffer(options) {
|
|
32
28
|
this.commandBuffer.commands.push({
|
|
33
29
|
name: 'copy-texture-to-buffer',
|
|
34
30
|
options
|
|
35
31
|
});
|
|
36
32
|
}
|
|
37
|
-
|
|
38
33
|
copyTextureToTexture(options) {
|
|
39
34
|
this.commandBuffer.commands.push({
|
|
40
35
|
name: 'copy-texture-to-texture',
|
|
41
36
|
options
|
|
42
37
|
});
|
|
43
38
|
}
|
|
44
|
-
|
|
45
39
|
pushDebugGroup(groupLabel) {}
|
|
46
|
-
|
|
47
40
|
popDebugGroup() {}
|
|
48
|
-
|
|
49
41
|
insertDebugMarker(markerLabel) {}
|
|
50
|
-
|
|
51
42
|
}
|
|
52
|
-
;
|
|
53
43
|
//# sourceMappingURL=webgl-command-encoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"webgl-command-encoder.js","names":["CommandEncoder","WEBGLCommandBuffer","WEBGLCommandEncoder","constructor","device","props","commandBuffer","destroy","finish","submitCommands","copyBufferToBuffer","options","commands","push","name","copyBufferToTexture","copyTextureToBuffer","copyTextureToTexture","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel"],"sources":["../../../src/adapter/resources/webgl-command-encoder.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {CommandEncoder, CommandEncoderProps} from '@luma.gl/core';\nimport type {\n CopyBufferToBufferOptions,\n CopyBufferToTextureOptions,\n CopyTextureToBufferOptions,\n CopyTextureToTextureOptions\n} from '@luma.gl/core';\n\nimport {WEBGLCommandBuffer} from './webgl-command-buffer';\nimport {WebGLDevice} from '../webgl-device';\n\nexport class WEBGLCommandEncoder extends CommandEncoder {\n readonly device: WebGLDevice;\n\n readonly commandBuffer: WEBGLCommandBuffer;\n\n constructor(device: WebGLDevice, props: CommandEncoderProps) {\n super(device, props);\n this.device = device;\n this.commandBuffer = new WEBGLCommandBuffer(device);\n }\n\n override destroy(): void {}\n\n override finish(): void {\n this.commandBuffer.submitCommands();\n }\n\n // beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;\n // beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;\n // finish(options?: {id?: string}): GPUCommandBuffer;\n\n copyBufferToBuffer(options: CopyBufferToBufferOptions): void {\n this.commandBuffer.commands.push({name: 'copy-buffer-to-buffer', options});\n }\n\n copyBufferToTexture(options: CopyBufferToTextureOptions) {\n this.commandBuffer.commands.push({name: 'copy-buffer-to-texture', options});\n }\n\n copyTextureToBuffer(options: CopyTextureToBufferOptions): void {\n this.commandBuffer.commands.push({name: 'copy-texture-to-buffer', options});\n }\n\n copyTextureToTexture(options: CopyTextureToTextureOptions): void {\n this.commandBuffer.commands.push({name: 'copy-texture-to-texture', options});\n }\n\n override pushDebugGroup(groupLabel: string): void {}\n override popDebugGroup() {}\n\n override insertDebugMarker(markerLabel: string): void {}\n\n // writeTimestamp(querySet: Query, queryIndex: number): void {}\n\n // resolveQuerySet(options: {\n // querySet: GPUQuerySet,\n // firstQuery: number,\n // queryCount: number,\n // destination: Buffer,\n // destinationOffset?: number;\n // }): void;\n}\n"],"mappings":"AAGA,SAAQA,cAAc,QAA4B,eAAe;AAAC,SAQ1DC,kBAAkB;AAG1B,OAAO,MAAMC,mBAAmB,SAASF,cAAc,CAAC;EAKtDG,WAAWA,CAACC,MAAmB,EAAEC,KAA0B,EAAE;IAC3D,KAAK,CAACD,MAAM,EAAEC,KAAK,CAAC;IAAC,KALdD,MAAM;IAAA,KAENE,aAAa;IAIpB,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,aAAa,GAAG,IAAIL,kBAAkB,CAACG,MAAM,CAAC;EACrD;EAESG,OAAOA,CAAA,EAAS,CAAC;EAEjBC,MAAMA,CAAA,EAAS;IACtB,IAAI,CAACF,aAAa,CAACG,cAAc,CAAC,CAAC;EACrC;EAMAC,kBAAkBA,CAACC,OAAkC,EAAQ;IAC3D,IAAI,CAACL,aAAa,CAACM,QAAQ,CAACC,IAAI,CAAC;MAACC,IAAI,EAAE,uBAAuB;MAAEH;IAAO,CAAC,CAAC;EAC5E;EAEAI,mBAAmBA,CAACJ,OAAmC,EAAE;IACvD,IAAI,CAACL,aAAa,CAACM,QAAQ,CAACC,IAAI,CAAC;MAACC,IAAI,EAAE,wBAAwB;MAAEH;IAAO,CAAC,CAAC;EAC7E;EAEAK,mBAAmBA,CAACL,OAAmC,EAAQ;IAC7D,IAAI,CAACL,aAAa,CAACM,QAAQ,CAACC,IAAI,CAAC;MAACC,IAAI,EAAE,wBAAwB;MAAEH;IAAO,CAAC,CAAC;EAC7E;EAEAM,oBAAoBA,CAACN,OAAoC,EAAQ;IAC/D,IAAI,CAACL,aAAa,CAACM,QAAQ,CAACC,IAAI,CAAC;MAACC,IAAI,EAAE,yBAAyB;MAAEH;IAAO,CAAC,CAAC;EAC9E;EAESO,cAAcA,CAACC,UAAkB,EAAQ,CAAC;EAC1CC,aAAaA,CAAA,EAAG,CAAC;EAEjBC,iBAAiBA,CAACC,WAAmB,EAAQ,CAAC;AAWzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"webgl-external-texture.js","names":[],"sources":["../../../src/adapter/resources/webgl-external-texture.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n/*\nexport class WEBGLExternalTexture extends WEBGLTexture {\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext | null;\n readonly handle: WebGLTexture;\n\n data;\n\n width: number = undefined;\n height: number = undefined;\n depth: number = undefined;\n\n format = undefined;\n type = undefined;\n dataFormat = undefined;\n border = undefined;\n mipmaps: boolean = undefined;\n\n textureUnit: number = undefined;\n\n sampler: WEBGLSampler;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n loaded = false;\n _video;\n\n readonly target: GL;\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_3D will give rise to an error\n // (while run-time).\n\n static isSupported(device: WebGLDevice, options?: TextureSupportOptions): boolean {\n const {format, linearFiltering} = options;\n let supported = true;\n if (format) {\n supported = supported && isFormatSupported(device.gl, format);\n supported = supported && (!linearFiltering || isTextureFormatFilterable(device.gl, format));\n }\n return supported;\n }\n\n // eslint-disable-next-line max-statements\n constructor(device: Device | WebGLRenderingContext, props: TextureProps) {\n super(WebGLDevice.attach(device), {id: uid('texture'), ...props});\n\n this.glTarget = getWebGLTextureTarget(props);\n\n this.device = WebGLDevice.attach(device);\n this.gl = this.device.gl;\n this.gl2 = this.device.gl2;\n this.handle = this.props.handle || this.gl.createTexture();\n\n let data = props.data;\n\n const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n // @ts-expect-error\n if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n this._video = null; // Declare member before the object is sealed\n data.addEventListener('loadeddata', () => this.initialize(props));\n return this;\n }\n\n update(): this {\n if (this._video) {\n const {video, parameters, lastTime} = this._video;\n // @ts-expect-error\n if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n return;\n }\n this.setSubImageData({\n data: video,\n parameters\n });\n if (this.mipmaps) {\n this.generateMipmap();\n }\n this._video.lastTime = video.currentTime;\n }\n }\n\n\n*/"],"mappings":""}
|
|
@@ -1,41 +1,37 @@
|
|
|
1
|
-
import type { FramebufferProps,
|
|
2
|
-
import { Framebuffer, Texture } from '@luma.gl/
|
|
3
|
-
import GL from '@luma.gl/constants';
|
|
4
|
-
import WebGLDevice from '../webgl-device';
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
export
|
|
8
|
-
export
|
|
1
|
+
import type { FramebufferProps, TextureFormat } from '@luma.gl/core';
|
|
2
|
+
import { Framebuffer, Texture } from '@luma.gl/core';
|
|
3
|
+
import { GL } from '@luma.gl/constants';
|
|
4
|
+
import { WebGLDevice } from '../webgl-device';
|
|
5
|
+
import { WEBGLTexture } from './webgl-texture';
|
|
6
|
+
import { WEBGLRenderbuffer } from '../objects/webgl-renderbuffer';
|
|
7
|
+
export type TextureAttachment = [Texture, number?, number?];
|
|
8
|
+
export type Attachment = WEBGLTexture | WEBGLRenderbuffer | TextureAttachment;
|
|
9
9
|
/** luma.gl Framebuffer, WebGL implementation */
|
|
10
|
-
export
|
|
10
|
+
export declare class WEBGLFramebuffer extends Framebuffer {
|
|
11
11
|
device: WebGLDevice;
|
|
12
12
|
gl: WebGLRenderingContext;
|
|
13
13
|
handle: WebGLFramebuffer;
|
|
14
|
-
get texture():
|
|
15
|
-
readonly colorAttachments: WebGLTexture[];
|
|
16
|
-
readonly depthStencilAttachment: WebGLTexture | null;
|
|
17
|
-
d: any;
|
|
18
|
-
protected _ownResources: (WebGLTexture | Renderbuffer)[];
|
|
14
|
+
get texture(): Texture<import("@luma.gl/core").TextureProps>;
|
|
19
15
|
constructor(device: WebGLDevice, props: FramebufferProps);
|
|
16
|
+
/** destroys any auto created resources etc. */
|
|
20
17
|
destroy(): void;
|
|
21
18
|
/** Check the status */
|
|
22
19
|
protected _checkStatus(): void;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
protected _resizeAttachments(width: number, height: number): this;
|
|
20
|
+
/** In WebGL we must use renderbuffers for depth/stencil attachments (unless we have extensions) */
|
|
21
|
+
protected createDepthStencilTexture(format: TextureFormat): Texture;
|
|
22
|
+
/**
|
|
23
|
+
* Attachment resize is expected to be a noop if size is same
|
|
24
|
+
*/
|
|
25
|
+
protected resizeAttachments(width: number, height: number): this;
|
|
30
26
|
/** Attach one attachment */
|
|
31
|
-
protected _attachOne(attachmentPoint: GL, attachment: Attachment):
|
|
32
|
-
protected
|
|
27
|
+
protected _attachOne(attachmentPoint: GL, attachment: Attachment): WEBGLTexture | WEBGLRenderbuffer;
|
|
28
|
+
protected _attachWEBGLRenderbuffer(attachment: GL, renderbuffer: WEBGLRenderbuffer): void;
|
|
33
29
|
/**
|
|
34
30
|
* @param attachment
|
|
35
31
|
* @param texture
|
|
36
|
-
* @param layer = 0 - index into
|
|
32
|
+
* @param layer = 0 - index into WEBGLTextureArray and Texture3D or face for `TextureCubeMap`
|
|
37
33
|
* @param level = 0 - mipmapLevel (must be 0 in WebGL1)
|
|
38
34
|
*/
|
|
39
|
-
protected _attachTexture(attachment: GL, texture:
|
|
35
|
+
protected _attachTexture(attachment: GL, texture: WEBGLTexture, layer: number, level: number): void;
|
|
40
36
|
}
|
|
41
37
|
//# sourceMappingURL=webgl-framebuffer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-framebuffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-framebuffer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webgl-framebuffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-framebuffer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAAC,WAAW,EAAE,OAAO,EAAS,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAGhE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAE9E,iDAAiD;AACjD,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,EAAE,WAAW,CAAC;IACpB,EAAE,EAAE,qBAAqB,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IAEzB,IAAI,OAAO,kDAEV;gBAEW,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB;IA8CxD,+CAA+C;IACtC,OAAO,IAAI,IAAI;IAUxB,uBAAuB;IACvB,SAAS,CAAC,YAAY,IAAI,IAAI;IAW9B,mGAAmG;cAChF,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAW5E;;OAEG;cACgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA2BzE,4BAA4B;IAC5B,SAAS,CAAC,UAAU,CAClB,eAAe,EAAE,EAAE,EACnB,UAAU,EAAE,UAAU,GACrB,YAAY,GAAG,iBAAiB;IAenC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,iBAAiB,GAAG,IAAI;IASzF;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CACtB,UAAU,EAAE,EAAE,EACd,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,IAAI;CA2BR"}
|
|
@@ -1,267 +1,155 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import { getWebGLTextureFormat, getWebGLDepthStencilAttachment } from '../converters/texture-formats';
|
|
7
|
-
export default class WEBGLFramebuffer extends Framebuffer {
|
|
1
|
+
import { Framebuffer, assert } from '@luma.gl/core';
|
|
2
|
+
import { WEBGLTexture } from "./webgl-texture.js";
|
|
3
|
+
import { WEBGLRenderbuffer } from "../objects/webgl-renderbuffer.js";
|
|
4
|
+
import { getDepthStencilAttachmentWebGL } from "../converters/texture-formats.js";
|
|
5
|
+
export class WEBGLFramebuffer extends Framebuffer {
|
|
8
6
|
get texture() {
|
|
9
7
|
return this.colorAttachments[0];
|
|
10
8
|
}
|
|
11
|
-
|
|
12
9
|
constructor(device, props) {
|
|
13
10
|
super(device, props);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
_defineProperty(this, "handle", void 0);
|
|
20
|
-
|
|
21
|
-
_defineProperty(this, "colorAttachments", []);
|
|
22
|
-
|
|
23
|
-
_defineProperty(this, "depthStencilAttachment", null);
|
|
24
|
-
|
|
25
|
-
_defineProperty(this, "d", void 0);
|
|
26
|
-
|
|
27
|
-
_defineProperty(this, "_ownResources", []);
|
|
28
|
-
|
|
11
|
+
this.device = void 0;
|
|
12
|
+
this.gl = void 0;
|
|
13
|
+
this.handle = void 0;
|
|
14
|
+
const isDefaultFramebuffer = props.handle === null;
|
|
29
15
|
this.device = device;
|
|
30
16
|
this.gl = device.gl;
|
|
31
|
-
this.handle = this.props.handle
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.handle.__SPECTOR_Metadata = {
|
|
17
|
+
this.handle = this.props.handle || isDefaultFramebuffer ? this.props.handle : this.gl.createFramebuffer();
|
|
18
|
+
if (!isDefaultFramebuffer) {
|
|
19
|
+
device.setSpectorMetadata(this.handle, {
|
|
35
20
|
id: this.props.id,
|
|
36
21
|
props: this.props
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const attachmentPoint = GL.COLOR_ATTACHMENT0 + i;
|
|
47
|
-
|
|
48
|
-
if (attachment) {
|
|
49
|
-
this._attachOne(attachmentPoint, attachment);
|
|
22
|
+
});
|
|
23
|
+
this.autoCreateAttachmentTextures();
|
|
24
|
+
this.gl.bindFramebuffer(36160, this.handle);
|
|
25
|
+
for (let i = 0; i < this.colorAttachments.length; ++i) {
|
|
26
|
+
const attachment = this.colorAttachments[i];
|
|
27
|
+
const attachmentPoint = 36064 + i;
|
|
28
|
+
if (attachment) {
|
|
29
|
+
this._attachOne(attachmentPoint, attachment);
|
|
30
|
+
}
|
|
50
31
|
}
|
|
32
|
+
if (this.depthStencilAttachment) {
|
|
33
|
+
this._attachOne(getDepthStencilAttachmentWebGL(this.depthStencilAttachment.format), this.depthStencilAttachment);
|
|
34
|
+
}
|
|
35
|
+
this.gl.bindFramebuffer(36160, null);
|
|
51
36
|
}
|
|
52
|
-
|
|
53
|
-
if (this.props.depthStencilAttachment) {
|
|
54
|
-
this._attachOne(getWebGLDepthStencilAttachment(this.depthStencilAttachment.format), this.depthStencilAttachment);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
58
|
-
|
|
59
37
|
if (props.check !== false) {
|
|
60
38
|
this._checkStatus();
|
|
61
39
|
}
|
|
62
40
|
}
|
|
63
|
-
|
|
64
41
|
destroy() {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
resource.destroy();
|
|
68
|
-
}
|
|
69
|
-
|
|
42
|
+
super.destroy();
|
|
43
|
+
if (!this.destroyed && this.handle !== null) {
|
|
70
44
|
this.gl.deleteFramebuffer(this.handle);
|
|
71
|
-
this.destroyed = true;
|
|
72
45
|
}
|
|
73
46
|
}
|
|
74
|
-
|
|
75
47
|
_checkStatus() {
|
|
76
48
|
const {
|
|
77
49
|
gl
|
|
78
50
|
} = this;
|
|
79
|
-
const prevHandle = gl.bindFramebuffer(
|
|
80
|
-
const status = gl.checkFramebufferStatus(
|
|
81
|
-
gl.bindFramebuffer(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
throw new Error("Framebuffer ".concat(_getFrameBufferStatus(status)));
|
|
51
|
+
const prevHandle = gl.bindFramebuffer(36160, this.handle);
|
|
52
|
+
const status = gl.checkFramebufferStatus(36160);
|
|
53
|
+
gl.bindFramebuffer(36160, prevHandle || null);
|
|
54
|
+
if (status !== 36053) {
|
|
55
|
+
throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);
|
|
85
56
|
}
|
|
86
57
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (!colorAttachment) {
|
|
91
|
-
return undefined;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (colorAttachment instanceof WebGLTexture) {
|
|
95
|
-
return colorAttachment;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return this._createColorAttachment(colorAttachment, this.width, this.height);
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
_createColorAttachment(format, width, height) {
|
|
103
|
-
const texture = this.device._createTexture({
|
|
104
|
-
id: "".concat(this.id, "-color"),
|
|
105
|
-
data: null,
|
|
58
|
+
createDepthStencilTexture(format) {
|
|
59
|
+
return new WEBGLRenderbuffer(this.device, {
|
|
60
|
+
id: `${this.id}-depth-stencil`,
|
|
106
61
|
format,
|
|
107
|
-
width,
|
|
108
|
-
height,
|
|
109
|
-
mipmaps: false,
|
|
110
|
-
sampler: {
|
|
111
|
-
minFilter: 'linear',
|
|
112
|
-
magFilter: 'linear',
|
|
113
|
-
addressModeU: 'clamp-to-edge',
|
|
114
|
-
addressModeV: 'clamp-to-edge'
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
this._ownResources.push(texture);
|
|
119
|
-
|
|
120
|
-
return texture;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
_createDepthStencilAttachment() {
|
|
124
|
-
if (!this.props.depthStencilAttachment) {
|
|
125
|
-
return undefined;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
if (this.props.depthStencilAttachment instanceof Renderbuffer) {
|
|
129
|
-
return this.props.depthStencilAttachment;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
if (this.props.depthStencilAttachment instanceof Texture) {
|
|
133
|
-
return this.props.depthStencilAttachment;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
const format = this.props.depthStencilAttachment;
|
|
137
|
-
const webglFormat = getWebGLTextureFormat(this.gl, format);
|
|
138
|
-
const texture = new Renderbuffer(this.device, {
|
|
139
|
-
id: "".concat(this.id, "-depth-stencil"),
|
|
140
|
-
format: webglFormat,
|
|
141
62
|
width: this.width,
|
|
142
63
|
height: this.height
|
|
143
64
|
});
|
|
144
|
-
|
|
145
|
-
this._ownResources.push(texture);
|
|
146
|
-
|
|
147
|
-
return texture;
|
|
148
65
|
}
|
|
149
|
-
|
|
150
|
-
_resizeAttachments(width, height) {
|
|
151
|
-
var _this$depthStencilAtt;
|
|
152
|
-
|
|
66
|
+
resizeAttachments(width, height) {
|
|
153
67
|
if (this.handle === null) {
|
|
154
68
|
this.width = this.gl.drawingBufferWidth;
|
|
155
69
|
this.height = this.gl.drawingBufferHeight;
|
|
156
70
|
return this;
|
|
157
71
|
}
|
|
158
|
-
|
|
159
72
|
if (width === undefined) {
|
|
160
73
|
width = this.gl.drawingBufferWidth;
|
|
161
74
|
}
|
|
162
|
-
|
|
163
75
|
if (height === undefined) {
|
|
164
76
|
height = this.gl.drawingBufferHeight;
|
|
165
77
|
}
|
|
166
|
-
|
|
167
|
-
if (width !== this.width && height !== this.height) {
|
|
168
|
-
log.log(2, "Resizing framebuffer ".concat(this.id, " to ").concat(width, "x").concat(height))();
|
|
169
|
-
}
|
|
170
|
-
|
|
171
78
|
for (const colorAttachment of this.colorAttachments) {
|
|
172
79
|
colorAttachment.resize({
|
|
173
80
|
width,
|
|
174
81
|
height
|
|
175
82
|
});
|
|
176
83
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
84
|
+
if (this.depthStencilAttachment) {
|
|
85
|
+
this.depthStencilAttachment.resize({
|
|
86
|
+
width,
|
|
87
|
+
height
|
|
88
|
+
});
|
|
89
|
+
}
|
|
182
90
|
return this;
|
|
183
91
|
}
|
|
184
|
-
|
|
185
92
|
_attachOne(attachmentPoint, attachment) {
|
|
186
|
-
if (attachment instanceof
|
|
187
|
-
this.
|
|
188
|
-
|
|
93
|
+
if (attachment instanceof WEBGLRenderbuffer) {
|
|
94
|
+
this._attachWEBGLRenderbuffer(attachmentPoint, attachment);
|
|
189
95
|
return attachment;
|
|
190
96
|
} else if (Array.isArray(attachment)) {
|
|
191
97
|
const [texture, layer = 0, level = 0] = attachment;
|
|
192
|
-
|
|
193
98
|
this._attachTexture(attachmentPoint, texture, layer, level);
|
|
194
|
-
|
|
195
99
|
return texture;
|
|
196
|
-
} else if (attachment instanceof
|
|
100
|
+
} else if (attachment instanceof WEBGLTexture) {
|
|
197
101
|
this._attachTexture(attachmentPoint, attachment, 0, 0);
|
|
198
|
-
|
|
199
102
|
return attachment;
|
|
200
103
|
}
|
|
104
|
+
throw new Error('attach');
|
|
201
105
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);
|
|
106
|
+
_attachWEBGLRenderbuffer(attachment, renderbuffer) {
|
|
107
|
+
this.gl.framebufferRenderbuffer(36160, attachment, 36161, renderbuffer.handle);
|
|
205
108
|
}
|
|
206
|
-
|
|
207
109
|
_attachTexture(attachment, texture, layer, level) {
|
|
208
110
|
const {
|
|
209
111
|
gl,
|
|
210
112
|
gl2
|
|
211
113
|
} = this.device;
|
|
212
114
|
gl.bindTexture(texture.target, texture.handle);
|
|
213
|
-
|
|
214
115
|
switch (texture.target) {
|
|
215
|
-
case
|
|
216
|
-
case
|
|
116
|
+
case 35866:
|
|
117
|
+
case 32879:
|
|
217
118
|
this.device.assertWebGL2();
|
|
218
|
-
gl2 === null || gl2 === void 0 ? void 0 : gl2.framebufferTextureLayer(
|
|
119
|
+
gl2 === null || gl2 === void 0 ? void 0 : gl2.framebufferTextureLayer(36160, attachment, texture.target, level, layer);
|
|
219
120
|
break;
|
|
220
|
-
|
|
221
|
-
case GL.TEXTURE_CUBE_MAP:
|
|
121
|
+
case 34067:
|
|
222
122
|
const face = mapIndexToCubeMapFace(layer);
|
|
223
|
-
gl.framebufferTexture2D(
|
|
123
|
+
gl.framebufferTexture2D(36160, attachment, face, texture.handle, level);
|
|
224
124
|
break;
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);
|
|
125
|
+
case 3553:
|
|
126
|
+
gl.framebufferTexture2D(36160, attachment, 3553, texture.handle, level);
|
|
228
127
|
break;
|
|
229
|
-
|
|
230
128
|
default:
|
|
231
129
|
assert(false, 'Illegal texture type');
|
|
232
130
|
}
|
|
233
|
-
|
|
234
131
|
gl.bindTexture(texture.target, null);
|
|
235
132
|
}
|
|
236
|
-
|
|
237
133
|
}
|
|
238
|
-
|
|
239
134
|
function mapIndexToCubeMapFace(layer) {
|
|
240
|
-
return layer <
|
|
135
|
+
return layer < 34069 ? layer + 34069 : layer;
|
|
241
136
|
}
|
|
242
|
-
|
|
243
137
|
function _getFrameBufferStatus(status) {
|
|
244
138
|
switch (status) {
|
|
245
|
-
case
|
|
139
|
+
case 36053:
|
|
246
140
|
return 'success';
|
|
247
|
-
|
|
248
|
-
case GL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
|
|
141
|
+
case 36054:
|
|
249
142
|
return 'Mismatched attachments';
|
|
250
|
-
|
|
251
|
-
case GL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
|
|
143
|
+
case 36055:
|
|
252
144
|
return 'No attachments';
|
|
253
|
-
|
|
254
|
-
case GL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
|
|
145
|
+
case 36057:
|
|
255
146
|
return 'Height/width mismatch';
|
|
256
|
-
|
|
257
|
-
case GL.FRAMEBUFFER_UNSUPPORTED:
|
|
147
|
+
case 36061:
|
|
258
148
|
return 'Unsupported or split attachments';
|
|
259
|
-
|
|
260
|
-
case GL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:
|
|
149
|
+
case 36182:
|
|
261
150
|
return 'Samples mismatch';
|
|
262
|
-
|
|
263
151
|
default:
|
|
264
|
-
return
|
|
152
|
+
return `${status}`;
|
|
265
153
|
}
|
|
266
154
|
}
|
|
267
155
|
//# sourceMappingURL=webgl-framebuffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapter/resources/webgl-framebuffer.ts"],"names":["Framebuffer","Texture","log","assert","GL","WebGLTexture","Renderbuffer","getWebGLTextureFormat","getWebGLDepthStencilAttachment","WEBGLFramebuffer","texture","colorAttachments","constructor","device","props","gl","handle","undefined","createFramebuffer","__SPECTOR_Metadata","id","_createColorAttachments","depthStencilAttachment","_createDepthStencilAttachment","prevHandle","bindFramebuffer","FRAMEBUFFER","i","length","attachment","attachmentPoint","COLOR_ATTACHMENT0","_attachOne","format","check","_checkStatus","destroy","resource","_ownResources","deleteFramebuffer","destroyed","status","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","Error","_getFrameBufferStatus","map","colorAttachment","_createColorAttachment","width","height","_createTexture","data","mipmaps","sampler","minFilter","magFilter","addressModeU","addressModeV","push","webglFormat","_resizeAttachments","drawingBufferWidth","drawingBufferHeight","resize","_attachRenderbuffer","Array","isArray","layer","level","_attachTexture","renderbuffer","framebufferRenderbuffer","RENDERBUFFER","gl2","bindTexture","target","TEXTURE_2D_ARRAY","TEXTURE_3D","assertWebGL2","framebufferTextureLayer","TEXTURE_CUBE_MAP","face","mapIndexToCubeMapFace","framebufferTexture2D","TEXTURE_2D","TEXTURE_CUBE_MAP_POSITIVE_X","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\n\nimport type {FramebufferProps, DepthStencilTextureFormat, ColorTextureFormat} from '@luma.gl/api';\nimport {Framebuffer, Texture, log, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../webgl-device';\nimport WebGLTexture from './webgl-texture';\nimport Renderbuffer from '../objects/webgl-renderbuffer';\nimport {getWebGLTextureFormat, getWebGLDepthStencilAttachment} from '../converters/texture-formats';\n\nexport type TextureAttachment = [Texture, number?, number?];\nexport type Attachment = WebGLTexture | Renderbuffer | TextureAttachment;\n\n/** luma.gl Framebuffer, WebGL implementation */\nexport default class WEBGLFramebuffer extends Framebuffer {\n device: WebGLDevice;\n gl: WebGLRenderingContext;\n handle: WebGLFramebuffer;\n\n get texture() { return this.colorAttachments[0]; }\n readonly colorAttachments: WebGLTexture[] = [];\n readonly depthStencilAttachment: WebGLTexture | null = null; d \n protected _ownResources: (WebGLTexture | Renderbuffer)[] = [];\n\n constructor(device: WebGLDevice, props: FramebufferProps) {\n super(device, props);\n this.device = device;\n this.gl = device.gl;\n this.handle = this.props.handle !== undefined ? this.props.handle : this.gl.createFramebuffer();\n\n if (this.handle) { // default framebuffer is null...\n // @ts-expect-error Per SPECTOR docs\n this.handle.__SPECTOR_Metadata = {id: this.props.id, props: this.props};\n }\n\n this.colorAttachments = this._createColorAttachments();\n // @ts-expect-error\n this.depthStencilAttachment = this._createDepthStencilAttachment();\n\n /** Attach from a map of attachments */\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n // Walk the attachments\n for (let i = 0; i < this.colorAttachments.length; ++i) {\n const attachment = this.colorAttachments[i];\n const attachmentPoint = GL.COLOR_ATTACHMENT0 + i;\n if (attachment) {\n this._attachOne(attachmentPoint, attachment);\n }\n }\n\n if (this.props.depthStencilAttachment) {\n this._attachOne(getWebGLDepthStencilAttachment(this.depthStencilAttachment.format), this.depthStencilAttachment);\n }\n\n // @ts-expect-error\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n // @ts-expect-error\n if (props.check !== false) {\n this._checkStatus();\n }\n }\n\n destroy() {\n if (this.handle !== null) {\n for (const resource of this._ownResources) {\n resource.destroy();\n }\n this.gl.deleteFramebuffer(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n // PRIVATE\n\n /** Check the status */\n protected _checkStatus(): void {\n const {gl} = this;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);\n // @ts-expect-error\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (status !== gl.FRAMEBUFFER_COMPLETE) {\n throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);\n }\n }\n\n _createColorAttachments(): WebGLTexture[] {\n return this.props.colorAttachments.map(colorAttachment => {\n if (!colorAttachment) {\n return undefined;\n }\n if (colorAttachment instanceof WebGLTexture) {\n return colorAttachment;\n }\n // if (typeof colorAttachment === 'default') {\n // return this._createColorAttachment('rgba8unorm', this.width, this.height);\n // }\n // @ts-expect-error\n return this._createColorAttachment(colorAttachment, this.width, this.height);\n });\n }\n\n /** Create a color attachment */\n protected _createColorAttachment(format: ColorTextureFormat, width: number, height: number): WebGLTexture {\n const texture = this.device._createTexture({\n id: `${this.id}-color`,\n data: null, // reserves texture memory, but texels are undefined\n format,\n // type: GL.UNSIGNED_BYTE,\n width,\n height,\n // Note: Mipmapping can be disabled by texture resource when we resize the texture\n // to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant\n // behavior we always disable mipmaps.\n mipmaps: false,\n // Set MIN and MAG filtering parameters so mipmaps are not used in sampling.\n // Use LINEAR so subpixel algos like fxaa work.\n // Set WRAP modes that support NPOT textures too.\n sampler: {\n minFilter: 'linear',\n magFilter: 'linear',\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge'\n },\n // parameters: {\n // [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,\n // [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n // [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n // [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n // }\n }) as WebGLTexture;\n this._ownResources.push(texture);\n return texture;\n }\n\n /** Create a depth stencil attachment GL.DEPTH24_STENCIL8 */\n protected _createDepthStencilAttachment(): Renderbuffer | WebGLTexture {\n if (!this.props.depthStencilAttachment) {\n return undefined;\n }\n if (this.props.depthStencilAttachment instanceof Renderbuffer) {\n return this.props.depthStencilAttachment;\n }\n if (this.props.depthStencilAttachment instanceof Texture) {\n return this.props.depthStencilAttachment as unknown as WebGLTexture;\n }\n const format = this.props.depthStencilAttachment;\n const webglFormat = getWebGLTextureFormat(this.gl, format);\n\n const texture = new Renderbuffer(this.device, {\n id: `${this.id}-depth-stencil`, // TODO misleading if not depth and stencil?\n format: webglFormat,\n // dataFormat: GL.DEPTH_STENCIL,\n // type: GL.UNSIGNED_INT_24_8,\n width: this.width,\n height: this.height\n });\n this._ownResources.push(texture);\n return texture;\n }\n\n /** Attachment resize is expected to be a noop if size is same */\n protected _resizeAttachments(width: number, height: number): this {\n // for default framebuffer, just update the stored size\n if (this.handle === null) {\n // assert(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n if (width === undefined) {\n width = this.gl.drawingBufferWidth;\n }\n if (height === undefined) {\n height = this.gl.drawingBufferHeight;\n }\n\n if (width !== this.width && height !== this.height) {\n log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();\n }\n\n for (const colorAttachment of this.colorAttachments) {\n colorAttachment.resize({width, height});\n }\n this.depthStencilAttachment?.resize({width, height});\n return this;\n }\n\n /** Attach one attachment */\n protected _attachOne(attachmentPoint: GL, attachment: Attachment): WebGLTexture | Renderbuffer {\n if (attachment instanceof Renderbuffer) {\n this._attachRenderbuffer(attachmentPoint, attachment);\n return attachment;\n } else if (Array.isArray(attachment)) {\n const [texture, layer = 0, level = 0] = attachment;\n this._attachTexture(attachmentPoint, texture as unknown as WebGLTexture, layer, level);\n return texture as unknown as WebGLTexture;\n } else if (attachment instanceof WebGLTexture) {\n this._attachTexture(attachmentPoint, attachment, 0, 0);\n return attachment;\n }\n }\n\n protected _attachRenderbuffer(attachment: GL, renderbuffer: Renderbuffer): void {\n this.gl.framebufferRenderbuffer(\n GL.FRAMEBUFFER,\n attachment,\n GL.RENDERBUFFER,\n renderbuffer.handle\n );\n }\n\n /**\n * @param attachment\n * @param texture\n * @param layer = 0 - index into WebGLTextureArray and Texture3D or face for `TextureCubeMap`\n * @param level = 0 - mipmapLevel (must be 0 in WebGL1)\n */\n protected _attachTexture(attachment: GL, texture: WebGLTexture, layer: number, level: number): void {\n const {gl, gl2} = this.device;\n gl.bindTexture(texture.target, texture.handle);\n\n switch (texture.target) {\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n this.device.assertWebGL2();\n gl2?.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);\n break;\n\n case GL.TEXTURE_CUBE_MAP:\n // layer must be a cubemap face (or if index, converted to cube map face)\n const face = mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);\n break;\n\n case GL.TEXTURE_2D:\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);\n break;\n\n default:\n assert(false, 'Illegal texture type');\n }\n\n gl.bindTexture(texture.target, null);\n }\n}\n\n// Helper functions\n\n// Map an index to a cube map face constant\nfunction mapIndexToCubeMapFace(layer) {\n // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)\n // if smaller assume layer is index, otherwise assume it is already a cube map face constant\n return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;\n}\n\n// Helper METHODS\n// Get a string describing the framebuffer error if installed\nfunction _getFrameBufferStatus(status) {\n switch (status) {\n case GL.FRAMEBUFFER_COMPLETE:\n return 'success';\n case GL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n return 'Mismatched attachments';\n case GL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n return 'No attachments';\n case GL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n return 'Height/width mismatch';\n case GL.FRAMEBUFFER_UNSUPPORTED:\n return 'Unsupported or split attachments';\n // WebGL2\n case GL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:\n return 'Samples mismatch';\n // OVR_multiview2 extension\n // case GL.FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: return 'baseViewIndex mismatch';\n default:\n return `${status}`;\n }\n}\n"],"file":"webgl-framebuffer.js"}
|
|
1
|
+
{"version":3,"file":"webgl-framebuffer.js","names":["Framebuffer","assert","WEBGLTexture","WEBGLRenderbuffer","getDepthStencilAttachmentWebGL","WEBGLFramebuffer","texture","colorAttachments","constructor","device","props","gl","handle","isDefaultFramebuffer","createFramebuffer","setSpectorMetadata","id","autoCreateAttachmentTextures","bindFramebuffer","i","length","attachment","attachmentPoint","_attachOne","depthStencilAttachment","format","check","_checkStatus","destroy","destroyed","deleteFramebuffer","prevHandle","status","checkFramebufferStatus","Error","_getFrameBufferStatus","createDepthStencilTexture","width","height","resizeAttachments","drawingBufferWidth","drawingBufferHeight","undefined","colorAttachment","resize","_attachWEBGLRenderbuffer","Array","isArray","layer","level","_attachTexture","renderbuffer","framebufferRenderbuffer","gl2","bindTexture","target","assertWebGL2","framebufferTextureLayer","face","mapIndexToCubeMapFace","framebufferTexture2D"],"sources":["../../../src/adapter/resources/webgl-framebuffer.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {FramebufferProps, TextureFormat} from '@luma.gl/core';\nimport {Framebuffer, Texture, assert} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {WebGLDevice} from '../webgl-device';\nimport {WEBGLTexture} from './webgl-texture';\nimport {WEBGLRenderbuffer} from '../objects/webgl-renderbuffer';\nimport {getDepthStencilAttachmentWebGL} from '../converters/texture-formats';\n\nexport type TextureAttachment = [Texture, number?, number?];\nexport type Attachment = WEBGLTexture | WEBGLRenderbuffer | TextureAttachment;\n\n/** luma.gl Framebuffer, WebGL implementation */\nexport class WEBGLFramebuffer extends Framebuffer {\n device: WebGLDevice;\n gl: WebGLRenderingContext;\n handle: WebGLFramebuffer;\n\n get texture() {\n return this.colorAttachments[0];\n }\n\n constructor(device: WebGLDevice, props: FramebufferProps) {\n super(device, props);\n\n // WebGL default framebuffer handle is null\n const isDefaultFramebuffer = props.handle === null;\n\n this.device = device;\n this.gl = device.gl;\n this.handle =\n this.props.handle || isDefaultFramebuffer ? this.props.handle : this.gl.createFramebuffer();\n\n if (!isDefaultFramebuffer) {\n // default framebuffer handle is null, so we can't set spector metadata...\n device.setSpectorMetadata(this.handle, {id: this.props.id, props: this.props});\n\n // Auto create textures for attachments if needed\n this.autoCreateAttachmentTextures();\n\n /** Attach from a map of attachments */\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n // Walk the attachments\n for (let i = 0; i < this.colorAttachments.length; ++i) {\n const attachment = this.colorAttachments[i];\n const attachmentPoint = GL.COLOR_ATTACHMENT0 + i;\n if (attachment) {\n this._attachOne(attachmentPoint, attachment as WEBGLTexture);\n }\n }\n\n if (this.depthStencilAttachment) {\n this._attachOne(\n getDepthStencilAttachmentWebGL(this.depthStencilAttachment.format),\n this.depthStencilAttachment as WEBGLTexture\n );\n }\n\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);\n }\n\n // @ts-expect-error\n if (props.check !== false) {\n this._checkStatus();\n }\n }\n\n /** destroys any auto created resources etc. */\n override destroy(): void {\n super.destroy(); // destroys owned resources etc.\n if (!this.destroyed && this.handle !== null) {\n this.gl.deleteFramebuffer(this.handle);\n // this.handle = null;\n }\n }\n\n // PRIVATE\n\n /** Check the status */\n protected _checkStatus(): void {\n const {gl} = this;\n // TODO - should we really rely on this trick? \n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle) as unknown as WebGLFramebuffer;\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (status !== gl.FRAMEBUFFER_COMPLETE) {\n throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);\n }\n }\n\n /** In WebGL we must use renderbuffers for depth/stencil attachments (unless we have extensions) */\n protected override createDepthStencilTexture(format: TextureFormat): Texture {\n return new WEBGLRenderbuffer(this.device, {\n id: `${this.id}-depth-stencil`, // TODO misleading if not depth and stencil?\n format,\n // dataFormat: GL.DEPTH_STENCIL,\n // type: GL.UNSIGNED_INT_24_8,\n width: this.width,\n height: this.height\n }) as unknown as WEBGLTexture;\n }\n\n /** \n * Attachment resize is expected to be a noop if size is same \n */\n protected override resizeAttachments(width: number, height: number): this {\n // for default framebuffer, just update the stored size\n if (this.handle === null) {\n // assert(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n\n if (width === undefined) {\n width = this.gl.drawingBufferWidth;\n }\n if (height === undefined) {\n height = this.gl.drawingBufferHeight;\n }\n\n // TODO Not clear that this is better than default destroy/create implementation\n\n for (const colorAttachment of this.colorAttachments) {\n (colorAttachment as WEBGLTexture).resize({width, height});\n }\n if (this.depthStencilAttachment) {\n (this.depthStencilAttachment as WEBGLTexture).resize({width, height});\n }\n return this;\n }\n\n /** Attach one attachment */\n protected _attachOne(\n attachmentPoint: GL,\n attachment: Attachment\n ): WEBGLTexture | WEBGLRenderbuffer {\n if (attachment instanceof WEBGLRenderbuffer) {\n this._attachWEBGLRenderbuffer(attachmentPoint, attachment);\n return attachment;\n } else if (Array.isArray(attachment)) {\n const [texture, layer = 0, level = 0] = attachment;\n this._attachTexture(attachmentPoint, texture as unknown as WEBGLTexture, layer, level);\n return texture as unknown as WEBGLTexture;\n } else if (attachment instanceof WEBGLTexture) {\n this._attachTexture(attachmentPoint, attachment, 0, 0);\n return attachment;\n }\n throw new Error('attach');\n }\n\n protected _attachWEBGLRenderbuffer(attachment: GL, renderbuffer: WEBGLRenderbuffer): void {\n this.gl.framebufferRenderbuffer(\n GL.FRAMEBUFFER,\n attachment,\n GL.RENDERBUFFER,\n renderbuffer.handle\n );\n }\n\n /**\n * @param attachment\n * @param texture\n * @param layer = 0 - index into WEBGLTextureArray and Texture3D or face for `TextureCubeMap`\n * @param level = 0 - mipmapLevel (must be 0 in WebGL1)\n */\n protected _attachTexture(\n attachment: GL,\n texture: WEBGLTexture,\n layer: number,\n level: number\n ): void {\n const {gl, gl2} = this.device;\n gl.bindTexture(texture.target, texture.handle);\n\n switch (texture.target) {\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n this.device.assertWebGL2();\n gl2?.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);\n break;\n\n case GL.TEXTURE_CUBE_MAP:\n // layer must be a cubemap face (or if index, converted to cube map face)\n const face = mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);\n break;\n\n case GL.TEXTURE_2D:\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);\n break;\n\n default:\n assert(false, 'Illegal texture type');\n }\n\n gl.bindTexture(texture.target, null);\n }\n}\n\n// Helper functions\n\n// Map an index to a cube map face constant\nfunction mapIndexToCubeMapFace(layer: number | GL): GL {\n // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)\n // if smaller assume layer is index, otherwise assume it is already a cube map face constant\n return layer < (GL.TEXTURE_CUBE_MAP_POSITIVE_X as number) ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;\n}\n\n// Helper METHODS\n// Get a string describing the framebuffer error if installed\nfunction _getFrameBufferStatus(status: GL) {\n switch (status) {\n case GL.FRAMEBUFFER_COMPLETE:\n return 'success';\n case GL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n return 'Mismatched attachments';\n case GL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n return 'No attachments';\n case GL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n return 'Height/width mismatch';\n case GL.FRAMEBUFFER_UNSUPPORTED:\n return 'Unsupported or split attachments';\n // WebGL2\n case GL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:\n return 'Samples mismatch';\n // OVR_multiview2 extension\n // case GL.FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: return 'baseViewIndex mismatch';\n default:\n return `${status}`;\n }\n}\n"],"mappings":"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"}
|