@luma.gl/webgl 9.0.0-alpha.9 → 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,19 +1,20 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import {
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import {Shader, ShaderProps, CompilerMessage} from '@luma.gl/core';
|
|
5
|
+
import {GL} from '@luma.gl/constants';
|
|
5
6
|
import {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';
|
|
6
|
-
import WebGLDevice from '../webgl-device';
|
|
7
|
+
import {WebGLDevice} from '../webgl-device';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* An immutable compiled shader program that execute portions of the GPU Pipeline
|
|
10
11
|
*/
|
|
11
|
-
|
|
12
|
+
export class WEBGLShader extends Shader {
|
|
12
13
|
readonly device: WebGLDevice;
|
|
13
14
|
readonly handle: WebGLShader;
|
|
14
15
|
|
|
15
16
|
constructor(device: WebGLDevice, props: ShaderProps) {
|
|
16
|
-
super(device,
|
|
17
|
+
super(device, props);
|
|
17
18
|
this.device = device;
|
|
18
19
|
switch (this.props.stage) {
|
|
19
20
|
case 'vertex':
|
|
@@ -28,7 +29,7 @@ import WebGLDevice from '../webgl-device';
|
|
|
28
29
|
this._compile(this.source);
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
destroy(): void {
|
|
32
|
+
override destroy(): void {
|
|
32
33
|
if (this.handle) {
|
|
33
34
|
this.removeStats();
|
|
34
35
|
this.device.gl.deleteShader(this.handle);
|
|
@@ -37,15 +38,20 @@ import WebGLDevice from '../webgl-device';
|
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
async
|
|
41
|
+
override async getCompilationInfo(): Promise<readonly CompilerMessage[]> {
|
|
42
|
+
return this.getCompilationInfoSync();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
override getCompilationInfoSync() {
|
|
41
46
|
const log = this.device.gl.getShaderInfoLog(this.handle);
|
|
42
|
-
return
|
|
47
|
+
return parseShaderCompilerLog(log);
|
|
43
48
|
}
|
|
44
49
|
|
|
45
50
|
// PRIVATE METHODS
|
|
46
51
|
|
|
47
52
|
_compile(source: string): void {
|
|
48
|
-
const addGLSLVersion = (source: string) =>
|
|
53
|
+
const addGLSLVersion = (source: string) =>
|
|
54
|
+
source.startsWith('#version ') ? source : `#version 100\n${source}`;
|
|
49
55
|
source = addGLSLVersion(source);
|
|
50
56
|
|
|
51
57
|
const {gl} = this.device;
|
|
@@ -55,25 +61,24 @@ import WebGLDevice from '../webgl-device';
|
|
|
55
61
|
// TODO - For performance reasons, avoid checking shader compilation errors on production?
|
|
56
62
|
// TODO - Load log even when no error reported, to catch warnings?
|
|
57
63
|
// https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const shaderDescription = `${this.stage} shader ${shaderName}`;
|
|
66
|
-
log.error(`GLSL compilation errors in ${shaderDescription}\n${formattedLog}`)();
|
|
67
|
-
throw new Error(`GLSL compilation errors in ${shaderName}`);
|
|
64
|
+
this.compilationStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS) ? 'success' : 'error';
|
|
65
|
+
|
|
66
|
+
// The `Shader` base class will determine if debug window should be opened based on props
|
|
67
|
+
this.debugShader();
|
|
68
|
+
|
|
69
|
+
if (this.compilationStatus === 'error') {
|
|
70
|
+
throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
74
|
|
|
72
|
-
//
|
|
75
|
+
// TODO - Original code from luma.gl v8 - keep until new debug functionality has matured
|
|
76
|
+
// if (!compilationSuccess) {
|
|
77
|
+
// const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
|
|
78
|
+
// const messages = parsedLog.filter(message => message.type === 'error');
|
|
79
|
+
// const formattedLog = formatCompilerLog(messages, source, {showSourceCode: 'all', html: true});
|
|
80
|
+
// const shaderDescription = `${this.stage} shader ${shaderName}`;
|
|
81
|
+
// log.error(`GLSL compilation errors in ${shaderDescription}\n${formattedLog}`)();
|
|
82
|
+
// displayShaderLog(parsedLog, source, shaderName);
|
|
83
|
+
// }
|
|
73
84
|
|
|
74
|
-
/** Deduce an id, from shader source, or supplied id, or shader type */
|
|
75
|
-
function getShaderIdFromProps(props: ShaderProps): string {
|
|
76
|
-
return getShaderInfo(props.source).name ||
|
|
77
|
-
props.id ||
|
|
78
|
-
uid(`unnamed ${props.stage}-shader`);
|
|
79
|
-
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
2
4
|
// Texture class.
|
|
3
5
|
// @todo
|
|
4
6
|
// - [ ] cube texture init params
|
|
@@ -10,15 +12,13 @@ import {
|
|
|
10
12
|
Sampler,
|
|
11
13
|
SamplerProps,
|
|
12
14
|
SamplerParameters,
|
|
13
|
-
TypedArray
|
|
14
|
-
|
|
15
|
-
} from '@luma.gl/
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import type {GLSamplerParameters} from '../../types/webgl';
|
|
19
|
-
import {withParameters} from '../../context/state-tracker/with-parameters';
|
|
15
|
+
TypedArray
|
|
16
|
+
} from '@luma.gl/core';
|
|
17
|
+
import {Texture, log, assert, isPowerOfTwo, loadImage, isObjectEmpty} from '@luma.gl/core';
|
|
18
|
+
import {GL, GLSamplerParameters} from '@luma.gl/constants';
|
|
19
|
+
import {withGLParameters} from '../../context/state-tracker/with-parameters';
|
|
20
20
|
import {
|
|
21
|
-
|
|
21
|
+
convertTextureFormatToGL,
|
|
22
22
|
getWebGLTextureParameters,
|
|
23
23
|
getTextureFormatBytesPerPixel
|
|
24
24
|
} from '../converters/texture-formats';
|
|
@@ -26,20 +26,45 @@ import {
|
|
|
26
26
|
convertSamplerParametersToWebGL,
|
|
27
27
|
updateSamplerParametersForNPOT
|
|
28
28
|
} from '../converters/sampler-parameters';
|
|
29
|
-
import WebGLDevice from '../webgl-device';
|
|
30
|
-
import WEBGLBuffer from './webgl-buffer';
|
|
31
|
-
import WEBGLSampler from './webgl-sampler';
|
|
29
|
+
import {WebGLDevice} from '../webgl-device';
|
|
30
|
+
import {WEBGLBuffer} from './webgl-buffer';
|
|
31
|
+
import {WEBGLSampler} from './webgl-sampler';
|
|
32
|
+
|
|
33
|
+
export type WEBGLTextureProps = TextureProps & {
|
|
34
|
+
/** @deprecated use props.sampler */
|
|
35
|
+
parameters?: Record<number, number>;
|
|
36
|
+
/** @deprecated use props.data */
|
|
37
|
+
pixels?: any;
|
|
38
|
+
/** @deprecated use props.format */
|
|
39
|
+
dataFormat?: number | null;
|
|
40
|
+
/** @deprecated rarely supported */
|
|
41
|
+
border?: number;
|
|
42
|
+
/** @deprecated WebGL only. */
|
|
43
|
+
pixelStore?: object;
|
|
44
|
+
/** @deprecated WebGL only. */
|
|
45
|
+
textureUnit?: number;
|
|
46
|
+
/** @deprecated WebGL only. Use dimension. */
|
|
47
|
+
target?: number;
|
|
48
|
+
};
|
|
32
49
|
|
|
33
|
-
export
|
|
50
|
+
export const DEFAULT_WEBGL_TEXTURE_PROPS = {
|
|
51
|
+
// deprecated
|
|
52
|
+
parameters: {},
|
|
53
|
+
pixelStore: {},
|
|
54
|
+
pixels: null,
|
|
55
|
+
border: 0,
|
|
56
|
+
dataFormat: undefined!,
|
|
57
|
+
textureUnit: undefined!,
|
|
58
|
+
target: undefined!
|
|
59
|
+
};
|
|
34
60
|
|
|
35
|
-
export type TextureSourceData =
|
|
36
|
-
TypedArray
|
|
37
|
-
ImageData
|
|
38
|
-
HTMLImageElement
|
|
39
|
-
HTMLCanvasElement
|
|
40
|
-
ImageBitmap
|
|
41
|
-
HTMLVideoElement
|
|
42
|
-
;
|
|
61
|
+
export type TextureSourceData =
|
|
62
|
+
| TypedArray
|
|
63
|
+
| ImageData
|
|
64
|
+
| HTMLImageElement
|
|
65
|
+
| HTMLCanvasElement
|
|
66
|
+
| ImageBitmap
|
|
67
|
+
| HTMLVideoElement;
|
|
43
68
|
|
|
44
69
|
type SetImageDataOptions = {
|
|
45
70
|
target?: number;
|
|
@@ -48,7 +73,7 @@ type SetImageDataOptions = {
|
|
|
48
73
|
width?: number;
|
|
49
74
|
height?: number;
|
|
50
75
|
depth?: number;
|
|
51
|
-
|
|
76
|
+
glFormat?: GL;
|
|
52
77
|
type?: any;
|
|
53
78
|
offset?: number;
|
|
54
79
|
data: any; // TextureSourceData;
|
|
@@ -56,7 +81,7 @@ type SetImageDataOptions = {
|
|
|
56
81
|
parameters?: Record<GL, any>;
|
|
57
82
|
/** @deprecated */
|
|
58
83
|
pixels?: any;
|
|
59
|
-
}
|
|
84
|
+
};
|
|
60
85
|
|
|
61
86
|
/**
|
|
62
87
|
* @param {*} pixels, data -
|
|
@@ -87,7 +112,7 @@ type SetSubImageDataOptions = {
|
|
|
87
112
|
width?: number;
|
|
88
113
|
height?: number;
|
|
89
114
|
depth?: number;
|
|
90
|
-
|
|
115
|
+
glFormat?: any;
|
|
91
116
|
type?: any;
|
|
92
117
|
offset?: number;
|
|
93
118
|
data: any;
|
|
@@ -112,9 +137,8 @@ type SetImageData3DOptions = {
|
|
|
112
137
|
parameters?: Record<GL, any>;
|
|
113
138
|
};
|
|
114
139
|
|
|
115
|
-
|
|
116
140
|
// Polyfill
|
|
117
|
-
export
|
|
141
|
+
export class WEBGLTexture extends Texture<WEBGLTextureProps> {
|
|
118
142
|
// TODO - remove?
|
|
119
143
|
static FACES: number[] = [
|
|
120
144
|
GL.TEXTURE_CUBE_MAP_POSITIVE_X,
|
|
@@ -131,13 +155,12 @@ export default class WEBGLTexture extends Texture {
|
|
|
131
155
|
readonly gl2: WebGL2RenderingContext | null;
|
|
132
156
|
readonly handle: WebGLTexture;
|
|
133
157
|
|
|
134
|
-
|
|
158
|
+
/** Sampler object (currently unused) */
|
|
159
|
+
sampler: WEBGLSampler = undefined;
|
|
135
160
|
|
|
136
|
-
|
|
137
|
-
height: number = undefined;
|
|
138
|
-
depth: number = undefined;
|
|
161
|
+
// data;
|
|
139
162
|
|
|
140
|
-
|
|
163
|
+
glFormat: GL = undefined;
|
|
141
164
|
type: GL = undefined;
|
|
142
165
|
dataFormat: GL = undefined;
|
|
143
166
|
mipmaps: boolean = undefined;
|
|
@@ -154,9 +177,6 @@ export default class WEBGLTexture extends Texture {
|
|
|
154
177
|
target: GL;
|
|
155
178
|
textureUnit: number = undefined;
|
|
156
179
|
|
|
157
|
-
/** Sampler object (currently unused) */
|
|
158
|
-
sampler: WEBGLSampler = undefined;
|
|
159
|
-
|
|
160
180
|
/**
|
|
161
181
|
* Program.draw() checks the loaded flag of all textures to avoid
|
|
162
182
|
* Textures that are still loading from promises
|
|
@@ -169,16 +189,16 @@ export default class WEBGLTexture extends Texture {
|
|
|
169
189
|
lastTime: number;
|
|
170
190
|
};
|
|
171
191
|
|
|
172
|
-
constructor(device: Device, props:
|
|
173
|
-
super(device, {format:
|
|
192
|
+
constructor(device: Device, props: WEBGLTextureProps) {
|
|
193
|
+
super(device, {...DEFAULT_WEBGL_TEXTURE_PROPS, format: 'rgba8unorm', ...props});
|
|
174
194
|
|
|
175
|
-
this.device =
|
|
195
|
+
this.device = device as WebGLDevice;
|
|
176
196
|
this.gl = this.device.gl;
|
|
177
197
|
this.gl2 = this.device.gl2;
|
|
178
198
|
this.handle = this.props.handle || this.gl.createTexture();
|
|
179
|
-
|
|
180
|
-
this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};
|
|
199
|
+
this.device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data}); // {name: this.props.id};
|
|
181
200
|
|
|
201
|
+
this.glFormat = GL.RGBA;
|
|
182
202
|
this.target = getWebGLTextureTarget(this.props);
|
|
183
203
|
|
|
184
204
|
// Program.draw() checks the loaded flag of all textures
|
|
@@ -194,7 +214,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
194
214
|
Object.seal(this);
|
|
195
215
|
}
|
|
196
216
|
|
|
197
|
-
destroy(): void {
|
|
217
|
+
override destroy(): void {
|
|
198
218
|
if (this.handle) {
|
|
199
219
|
this.gl.deleteTexture(this.handle);
|
|
200
220
|
this.removeStats();
|
|
@@ -204,12 +224,12 @@ export default class WEBGLTexture extends Texture {
|
|
|
204
224
|
}
|
|
205
225
|
}
|
|
206
226
|
|
|
207
|
-
toString(): string {
|
|
227
|
+
override toString(): string {
|
|
208
228
|
return `Texture(${this.id},${this.width}x${this.height})`;
|
|
209
229
|
}
|
|
210
230
|
|
|
211
231
|
// eslint-disable-next-line max-statements
|
|
212
|
-
initialize(props:
|
|
232
|
+
initialize(props: WEBGLTextureProps = {}): this {
|
|
213
233
|
// Cube textures
|
|
214
234
|
if (this.props.dimension === 'cube') {
|
|
215
235
|
return this.initializeCube(props);
|
|
@@ -218,7 +238,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
218
238
|
let data = props.data;
|
|
219
239
|
|
|
220
240
|
if (data instanceof Promise) {
|
|
221
|
-
data.then(
|
|
241
|
+
data.then(resolvedImageData =>
|
|
222
242
|
this.initialize(
|
|
223
243
|
Object.assign({}, props, {
|
|
224
244
|
pixels: resolvedImageData,
|
|
@@ -238,10 +258,9 @@ export default class WEBGLTexture extends Texture {
|
|
|
238
258
|
return this;
|
|
239
259
|
}
|
|
240
260
|
|
|
241
|
-
|
|
261
|
+
const {parameters = {} as Record<GL, any>} = props;
|
|
242
262
|
|
|
243
|
-
const {
|
|
244
|
-
pixels = null, recreate = false, pixelStore = {}, textureUnit = undefined} = props;
|
|
263
|
+
const {pixels = null, pixelStore = {}, textureUnit = undefined} = props;
|
|
245
264
|
|
|
246
265
|
// pixels variable is for API compatibility purpose
|
|
247
266
|
if (!data) {
|
|
@@ -254,6 +273,8 @@ export default class WEBGLTexture extends Texture {
|
|
|
254
273
|
let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;
|
|
255
274
|
const {depth = 0} = props;
|
|
256
275
|
|
|
276
|
+
const glFormat = convertTextureFormatToGL(props.format, this.device.isWebGL2);
|
|
277
|
+
|
|
257
278
|
// Deduce width and height
|
|
258
279
|
({width, height, compressed, dataFormat, type} = this._deduceParameters({
|
|
259
280
|
format: props.format,
|
|
@@ -265,13 +286,11 @@ export default class WEBGLTexture extends Texture {
|
|
|
265
286
|
height
|
|
266
287
|
}));
|
|
267
288
|
|
|
268
|
-
const format = getWebGLTextureFormat(this.gl, props.format);
|
|
269
|
-
|
|
270
289
|
// Store opts for accessors
|
|
271
290
|
this.width = width;
|
|
272
291
|
this.height = height;
|
|
273
|
-
this.depth = depth;
|
|
274
|
-
this.
|
|
292
|
+
// this.depth = depth;
|
|
293
|
+
this.glFormat = glFormat;
|
|
275
294
|
this.type = type;
|
|
276
295
|
this.dataFormat = dataFormat;
|
|
277
296
|
this.textureUnit = textureUnit;
|
|
@@ -293,10 +312,10 @@ export default class WEBGLTexture extends Texture {
|
|
|
293
312
|
width,
|
|
294
313
|
height,
|
|
295
314
|
depth,
|
|
296
|
-
format,
|
|
315
|
+
format: glFormat,
|
|
297
316
|
type,
|
|
298
317
|
dataFormat,
|
|
299
|
-
// @ts-expect-error
|
|
318
|
+
// @ts-expect-error
|
|
300
319
|
parameters: pixelStore,
|
|
301
320
|
compressed
|
|
302
321
|
});
|
|
@@ -309,10 +328,6 @@ export default class WEBGLTexture extends Texture {
|
|
|
309
328
|
this.generateMipmap();
|
|
310
329
|
}
|
|
311
330
|
|
|
312
|
-
// TODO - Store data to enable auto recreate on context loss
|
|
313
|
-
if (recreate) {
|
|
314
|
-
this.data = data;
|
|
315
|
-
}
|
|
316
331
|
if (isVideo) {
|
|
317
332
|
this._video = {
|
|
318
333
|
video: data as HTMLVideoElement,
|
|
@@ -325,8 +340,8 @@ export default class WEBGLTexture extends Texture {
|
|
|
325
340
|
return this;
|
|
326
341
|
}
|
|
327
342
|
|
|
328
|
-
initializeCube(props?:
|
|
329
|
-
const {mipmaps = true, parameters = {}
|
|
343
|
+
initializeCube(props?: WEBGLTextureProps): this {
|
|
344
|
+
const {mipmaps = true, parameters = {} as Record<GL, any>} = props;
|
|
330
345
|
|
|
331
346
|
// Store props for accessors
|
|
332
347
|
// this.props = props;
|
|
@@ -367,7 +382,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
367
382
|
* If size has changed, reinitializes with current format
|
|
368
383
|
* @note note clears image and mipmaps
|
|
369
384
|
*/
|
|
370
|
-
resize(options: {height: number
|
|
385
|
+
resize(options: {height: number; width: number; mipmaps?: boolean}): this {
|
|
371
386
|
const {height, width, mipmaps = false} = options;
|
|
372
387
|
if (width !== this.width || height !== this.height) {
|
|
373
388
|
return this.initialize({
|
|
@@ -383,7 +398,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
383
398
|
}
|
|
384
399
|
|
|
385
400
|
/** Update external texture (video frame) */
|
|
386
|
-
update():
|
|
401
|
+
update(): void {
|
|
387
402
|
if (this._video) {
|
|
388
403
|
const {video, parameters, lastTime} = this._video;
|
|
389
404
|
// @ts-expect-error
|
|
@@ -411,7 +426,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
411
426
|
this.mipmaps = true;
|
|
412
427
|
|
|
413
428
|
this.gl.bindTexture(this.target, this.handle);
|
|
414
|
-
|
|
429
|
+
withGLParameters(this.gl, params, () => {
|
|
415
430
|
this.gl.generateMipmap(this.target);
|
|
416
431
|
});
|
|
417
432
|
this.gl.bindTexture(this.target, null);
|
|
@@ -440,7 +455,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
440
455
|
*/
|
|
441
456
|
// eslint-disable-next-line max-statements, complexity
|
|
442
457
|
setImageData(options: SetImageDataOptions) {
|
|
443
|
-
if (this.props.dimension === '3d') {
|
|
458
|
+
if (this.props.dimension === '3d' || this.props.dimension === '2d-array') {
|
|
444
459
|
return this.setImageData3D(options);
|
|
445
460
|
}
|
|
446
461
|
|
|
@@ -450,9 +465,9 @@ export default class WEBGLTexture extends Texture {
|
|
|
450
465
|
target = this.target,
|
|
451
466
|
pixels = null,
|
|
452
467
|
level = 0,
|
|
453
|
-
|
|
468
|
+
glFormat = this.glFormat,
|
|
454
469
|
offset = 0,
|
|
455
|
-
parameters = {}
|
|
470
|
+
parameters = {} as Record<GL, any>
|
|
456
471
|
} = options;
|
|
457
472
|
|
|
458
473
|
let {
|
|
@@ -487,10 +502,20 @@ export default class WEBGLTexture extends Texture {
|
|
|
487
502
|
|
|
488
503
|
let gl2;
|
|
489
504
|
|
|
490
|
-
|
|
505
|
+
withGLParameters(this.gl, parameters, () => {
|
|
491
506
|
switch (dataType) {
|
|
492
507
|
case 'null':
|
|
493
|
-
gl.texImage2D(
|
|
508
|
+
gl.texImage2D(
|
|
509
|
+
target,
|
|
510
|
+
level,
|
|
511
|
+
glFormat,
|
|
512
|
+
width,
|
|
513
|
+
height,
|
|
514
|
+
0 /* border*/,
|
|
515
|
+
dataFormat,
|
|
516
|
+
type,
|
|
517
|
+
data
|
|
518
|
+
);
|
|
494
519
|
break;
|
|
495
520
|
case 'typed-array':
|
|
496
521
|
// Looks like this assert is not necessary, as offset is ignored under WebGL1
|
|
@@ -498,7 +523,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
498
523
|
gl.texImage2D(
|
|
499
524
|
target,
|
|
500
525
|
level,
|
|
501
|
-
|
|
526
|
+
glFormat,
|
|
502
527
|
width,
|
|
503
528
|
height,
|
|
504
529
|
0, // border (must be 0)
|
|
@@ -516,10 +541,10 @@ export default class WEBGLTexture extends Texture {
|
|
|
516
541
|
gl2.texImage2D(
|
|
517
542
|
target,
|
|
518
543
|
level,
|
|
519
|
-
|
|
544
|
+
glFormat,
|
|
520
545
|
width,
|
|
521
546
|
height,
|
|
522
|
-
0 /*border*/,
|
|
547
|
+
0 /* border*/,
|
|
523
548
|
dataFormat,
|
|
524
549
|
type,
|
|
525
550
|
offset
|
|
@@ -531,16 +556,16 @@ export default class WEBGLTexture extends Texture {
|
|
|
531
556
|
gl.texImage2D(
|
|
532
557
|
target,
|
|
533
558
|
level,
|
|
534
|
-
|
|
559
|
+
glFormat,
|
|
535
560
|
width,
|
|
536
561
|
height,
|
|
537
|
-
0 /*border*/,
|
|
562
|
+
0 /* border*/,
|
|
538
563
|
dataFormat,
|
|
539
564
|
type,
|
|
540
565
|
data
|
|
541
566
|
);
|
|
542
567
|
} else {
|
|
543
|
-
gl.texImage2D(target, level,
|
|
568
|
+
gl.texImage2D(target, level, glFormat, dataFormat, type, data);
|
|
544
569
|
}
|
|
545
570
|
break;
|
|
546
571
|
case 'compressed':
|
|
@@ -565,7 +590,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
565
590
|
if (data && data.byteLength) {
|
|
566
591
|
this.trackAllocatedMemory(data.byteLength, 'Texture');
|
|
567
592
|
} else {
|
|
568
|
-
const bytesPerPixel = getTextureFormatBytesPerPixel(this.
|
|
593
|
+
const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
|
|
569
594
|
this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');
|
|
570
595
|
}
|
|
571
596
|
|
|
@@ -588,7 +613,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
588
613
|
width = this.width,
|
|
589
614
|
height = this.height,
|
|
590
615
|
level = 0,
|
|
591
|
-
|
|
616
|
+
glFormat = this.glFormat,
|
|
592
617
|
type = this.type,
|
|
593
618
|
dataFormat = this.dataFormat,
|
|
594
619
|
compressed = false,
|
|
@@ -627,10 +652,10 @@ export default class WEBGLTexture extends Texture {
|
|
|
627
652
|
|
|
628
653
|
this.gl.bindTexture(this.target, this.handle);
|
|
629
654
|
|
|
630
|
-
|
|
655
|
+
withGLParameters(this.gl, parameters, () => {
|
|
631
656
|
// TODO - x,y parameters
|
|
632
657
|
if (compressed) {
|
|
633
|
-
this.gl.compressedTexSubImage2D(target, level, x, y, width, height,
|
|
658
|
+
this.gl.compressedTexSubImage2D(target, level, x, y, width, height, glFormat, data);
|
|
634
659
|
} else if (data === null) {
|
|
635
660
|
this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
|
|
636
661
|
} else if (ArrayBuffer.isView(data)) {
|
|
@@ -724,12 +749,12 @@ export default class WEBGLTexture extends Texture {
|
|
|
724
749
|
|
|
725
750
|
// HELPER METHODS
|
|
726
751
|
|
|
727
|
-
_deduceParameters(opts:
|
|
752
|
+
_deduceParameters(opts: WEBGLTextureProps) {
|
|
728
753
|
const {format, data} = opts;
|
|
729
754
|
let {width, height, dataFormat, type, compressed} = opts;
|
|
730
755
|
|
|
731
756
|
// Deduce format and type from format
|
|
732
|
-
const parameters = getWebGLTextureParameters(this.
|
|
757
|
+
const parameters = getWebGLTextureParameters(format, this.device.isWebGL2);
|
|
733
758
|
dataFormat = dataFormat || parameters.dataFormat;
|
|
734
759
|
type = type || parameters.type;
|
|
735
760
|
compressed = compressed || parameters.compressed;
|
|
@@ -802,7 +827,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
802
827
|
// ... }
|
|
803
828
|
|
|
804
829
|
const resolvedFaces = await Promise.all(
|
|
805
|
-
WEBGLTexture.FACES.map(
|
|
830
|
+
WEBGLTexture.FACES.map(face => {
|
|
806
831
|
const facePixels = imageDataMap[face];
|
|
807
832
|
return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);
|
|
808
833
|
})
|
|
@@ -819,7 +844,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
819
844
|
resolvedFaces[index].forEach((image, lodLevel) => {
|
|
820
845
|
// TODO: adjust width & height for LOD!
|
|
821
846
|
if (width && height) {
|
|
822
|
-
gl.texImage2D(face, lodLevel, format, width, height, 0 /*border*/, format, type, image);
|
|
847
|
+
gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*/, format, type, image);
|
|
823
848
|
} else {
|
|
824
849
|
gl.texImage2D(face, lodLevel, format, format, type, image);
|
|
825
850
|
}
|
|
@@ -848,7 +873,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
848
873
|
|
|
849
874
|
this.bind();
|
|
850
875
|
if (imageData instanceof Promise) {
|
|
851
|
-
imageData.then(
|
|
876
|
+
imageData.then(resolvedImageData =>
|
|
852
877
|
this.setImageDataForFace(
|
|
853
878
|
Object.assign({}, options, {
|
|
854
879
|
face,
|
|
@@ -858,7 +883,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
858
883
|
)
|
|
859
884
|
);
|
|
860
885
|
} else if (this.width || this.height) {
|
|
861
|
-
gl.texImage2D(face, 0, format, width, height, 0 /*border*/, format, type, imageData);
|
|
886
|
+
gl.texImage2D(face, 0, format, width, height, 0 /* border*/, format, type, imageData);
|
|
862
887
|
} else {
|
|
863
888
|
gl.texImage2D(face, 0, format, format, type, imageData);
|
|
864
889
|
}
|
|
@@ -885,9 +910,9 @@ export default class WEBGLTexture extends Texture {
|
|
|
885
910
|
|
|
886
911
|
this.gl.bindTexture(this.target, this.handle);
|
|
887
912
|
|
|
888
|
-
const webglTextureFormat = getWebGLTextureParameters(this.
|
|
913
|
+
const webglTextureFormat = getWebGLTextureParameters(format, this.device.isWebGL2);
|
|
889
914
|
|
|
890
|
-
|
|
915
|
+
withGLParameters(this.gl, parameters, () => {
|
|
891
916
|
if (ArrayBuffer.isView(data)) {
|
|
892
917
|
// @ts-expect-error
|
|
893
918
|
this.gl.texImage3D(
|
|
@@ -925,7 +950,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
925
950
|
if (data && data.byteLength) {
|
|
926
951
|
this.trackAllocatedMemory(data.byteLength, 'Texture');
|
|
927
952
|
} else {
|
|
928
|
-
const bytesPerPixel = getTextureFormatBytesPerPixel(this.
|
|
953
|
+
const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
|
|
929
954
|
this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
|
|
930
955
|
}
|
|
931
956
|
|
|
@@ -940,7 +965,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
940
965
|
* Sets sampler parameters on texture
|
|
941
966
|
* @note: Applies NPOT workaround if appropriate
|
|
942
967
|
*/
|
|
943
|
-
_setSamplerParameters(parameters: GLSamplerParameters) {
|
|
968
|
+
_setSamplerParameters(parameters: GLSamplerParameters): void {
|
|
944
969
|
// Work around WebGL1 sampling restrictions on NPOT textures
|
|
945
970
|
if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
|
|
946
971
|
parameters = updateSamplerParametersForNPOT(parameters);
|
|
@@ -955,8 +980,8 @@ export default class WEBGLTexture extends Texture {
|
|
|
955
980
|
|
|
956
981
|
this.gl.bindTexture(this.target, this.handle);
|
|
957
982
|
for (const [pname, pvalue] of Object.entries(parameters)) {
|
|
958
|
-
const param = Number(pname);
|
|
959
|
-
|
|
983
|
+
const param = Number(pname) as GL.TEXTURE_MIN_LOD | GL.TEXTURE_MAX_LOD;
|
|
984
|
+
const value = pvalue;
|
|
960
985
|
|
|
961
986
|
// Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
|
|
962
987
|
// For now, pick the float version for parameters specified as GLfloat.
|
|
@@ -972,11 +997,14 @@ export default class WEBGLTexture extends Texture {
|
|
|
972
997
|
}
|
|
973
998
|
}
|
|
974
999
|
this.gl.bindTexture(this.target, null);
|
|
975
|
-
return
|
|
1000
|
+
return;
|
|
976
1001
|
}
|
|
977
1002
|
|
|
978
1003
|
/** @deprecated For LegacyTexture subclass */
|
|
979
|
-
protected _getWebGL1NPOTParameterOverride(
|
|
1004
|
+
protected _getWebGL1NPOTParameterOverride(
|
|
1005
|
+
pname: GL.TEXTURE_MIN_FILTER | GL.TEXTURE_WRAP_S | GL.TEXTURE_WRAP_T,
|
|
1006
|
+
value: GL.LINEAR | GL.NEAREST
|
|
1007
|
+
): number {
|
|
980
1008
|
// NOTE: Apply NPOT workaround
|
|
981
1009
|
const npot = this.device.isWebGL1 && isNPOT(this.width, this.height);
|
|
982
1010
|
if (npot) {
|
|
@@ -1031,6 +1059,4 @@ function isNPOT(width: number, height: number): boolean {
|
|
|
1031
1059
|
|
|
1032
1060
|
function logParameters(parameters: Record<number, GL | number>) {
|
|
1033
1061
|
log.log(1, 'texture sampler parameters', parameters)();
|
|
1034
|
-
for (const [pname, pvalue] of Object.entries(parameters)) {
|
|
1035
|
-
}
|
|
1036
1062
|
}
|