@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.2
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 +100 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +217 -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 +9296 -0
- package/dist/index.cjs +6469 -0
- package/dist/index.d.ts +20 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -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 +343 -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 +42 -42
- 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapter/resources/webgl-texture.ts"],"names":["WEBGLTexture","device","props","format","GL","RGBA","undefined","gl","gl2","handle","createTexture","__SPECTOR_Metadata","data","target","getWebGLTextureTarget","loaded","Object","assign","initialize","seal","deleteTexture","removeStats","trackDeallocatedMemory","destroyed","id","width","height","dimension","initializeCube","Promise","then","resolvedImageData","pixels","isVideo","HTMLVideoElement","readyState","HAVE_METADATA","_video","addEventListener","parameters","recreate","pixelStore","textureUnit","dataFormat","type","compressed","mipmaps","depth","_deduceParameters","Number","isFinite","activeTexture","TEXTURE0","bindTexture","isWebGL1","isNPOT","log","warn","setImageData","setSampler","sampler","_setSamplerParameters","generateMipmap","video","lastTime","HAVE_CURRENT_DATA","currentTime","setCubeMapImageData","samplerProps","WEBGLSampler","options","setSubImageData","params","setImageData3D","level","offset","dataType","_getDataType","texImage2D","assertWebGL2","bindBuffer","PIXEL_UNPACK_BUFFER","isWebGL2","entries","levelIndex","levelData","compressedTexImage2D","byteLength","trackAllocatedMemory","bytesPerPixel","x","y","ndarray","shape","WEBGLBuffer","compressedTexSubImage2D","texSubImage2D","ArrayBuffer","isView","WebGLBuffer","opts","error","getParameter","ACTIVE_TEXTURE","_deduceImageSize","size","ImageData","HTMLImageElement","naturalWidth","naturalHeight","HTMLCanvasElement","ImageBitmap","videoWidth","videoHeight","UNSIGNED_BYTE","imageDataMap","all","FACES","map","face","facePixels","Array","isArray","resolvedFaces","bind","forEach","index","length","image","lodLevel","unbind","imageData","setImageDataForFace","webglTextureFormat","texImage3D","logParameters","pname","pvalue","param","value","TEXTURE_MIN_LOD","TEXTURE_MAX_LOD","texParameterf","texParameteri","npot","TEXTURE_MIN_FILTER","LINEAR","NEAREST","TEXTURE_WRAP_S","TEXTURE_WRAP_T","CLAMP_TO_EDGE","Texture","TEXTURE_CUBE_MAP_POSITIVE_X","TEXTURE_CUBE_MAP_NEGATIVE_X","TEXTURE_CUBE_MAP_POSITIVE_Y","TEXTURE_CUBE_MAP_NEGATIVE_Y","TEXTURE_CUBE_MAP_POSITIVE_Z","TEXTURE_CUBE_MAP_NEGATIVE_Z","TEXTURE_2D","TEXTURE_CUBE_MAP","TEXTURE_2D_ARRAY","TEXTURE_3D","Error"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\n// Texture class.\n// @todo\n// - [ ] cube texture init params\n// - [ ] video (external) textures\n\nimport {\n Device,\n TextureProps,\n Sampler,\n SamplerProps,\n SamplerParameters,\n TypedArray,\n isObjectEmpty\n} from '@luma.gl/api';\nimport {Texture, cast, log, assert, isPowerOfTwo, loadImage} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport type {GLSamplerParameters} from '../../types/webgl';\nimport {withParameters} from '../../context/state-tracker/with-parameters';\nimport {\n getWebGLTextureFormat,\n getWebGLTextureParameters,\n getTextureFormatBytesPerPixel\n} from '../converters/texture-formats';\nimport {\n convertSamplerParametersToWebGL,\n updateSamplerParametersForNPOT\n} from '../converters/sampler-parameters';\nimport WebGLDevice from '../webgl-device';\nimport WEBGLBuffer from './webgl-buffer';\nimport WEBGLSampler from './webgl-sampler';\n\nexport type {TextureProps};\n\nexport type TextureSourceData = \n TypedArray |\n ImageData |\n HTMLImageElement |\n HTMLCanvasElement |\n ImageBitmap |\n HTMLVideoElement\n ;\n\ntype SetImageDataOptions = {\n target?: number;\n level?: number;\n dataFormat?: any;\n width?: number;\n height?: number;\n depth?: number;\n format?: any;\n type?: any;\n offset?: number;\n data: any; // TextureSourceData;\n compressed?: boolean;\n parameters?: Record<GL, any>;\n /** @deprecated */\n pixels?: any;\n}\n\n/**\n * @param {*} pixels, data -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param x - xOffset from where texture to be updated\n * @param y - yOffset from where texture to be updated\n * @param width - width of the sub image to be updated\n * @param height - height of the sub image to be updated\n * @param level - mip level to be updated\n * @param {GLenum} format - internal format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer or ArrayBufferView\n * @param {GLenum} dataFormat - format of image data.\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\ntype SetSubImageDataOptions = {\n target?: number;\n level?: number;\n dataFormat?: any;\n width?: number;\n height?: number;\n depth?: number;\n format?: any;\n type?: any;\n offset?: number;\n data: any;\n parameters?: Record<GL, any>;\n compressed?: boolean;\n x?: number;\n y?: number;\n /** @deprecated */\n pixels?: any;\n};\n\ntype SetImageData3DOptions = {\n level?: number;\n dataFormat?: any;\n width?: number;\n height?: number;\n depth?: number;\n format?: any;\n type?: any;\n offset?: number;\n data: any;\n parameters?: Record<GL, any>;\n};\n\n\n// Polyfill\nexport default class WEBGLTexture extends Texture {\n // TODO - remove?\n static FACES: number[] = [\n GL.TEXTURE_CUBE_MAP_POSITIVE_X,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_X,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Y,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Z,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Z\n ];\n\n readonly MAX_ATTRIBUTES: number;\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: GL = undefined;\n type: GL = undefined;\n dataFormat: GL = undefined;\n mipmaps: boolean = undefined;\n\n /**\n * @note `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 saying that this texture is a 2D texture.\n * And it will always be a 2D texture; this state cannot be changed ever.\n * A texture that was first bound as a GL_TEXTURE_2D, must always be bound as a GL_TEXTURE_2D;\n * attempting to bind it as GL_TEXTURE_3D will give rise to a run-time error\n * */\n target: GL;\n textureUnit: number = undefined;\n\n /** Sampler object (currently unused) */\n sampler: WEBGLSampler = undefined;\n\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 */\n loaded: boolean = false;\n _video: {\n video: HTMLVideoElement;\n parameters: any;\n lastTime: number;\n };\n\n constructor(device: Device, props: TextureProps) {\n super(device, {format: GL.RGBA, ...props});\n\n this.device = cast<WebGLDevice>(device);\n this.gl = this.device.gl;\n this.gl2 = this.device.gl2;\n this.handle = this.props.handle || this.gl.createTexture();\n // @ts-expect-error Per SPECTOR docs\n this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};\n\n this.target = getWebGLTextureTarget(this.props);\n\n // Program.draw() checks the loaded flag of all textures\n this.loaded = false;\n\n // Signature: new Texture2D(gl, {data: url})\n if (typeof this.props?.data === 'string') {\n Object.assign(this.props, {data: loadImage(this.props.data)});\n }\n\n this.initialize(this.props);\n\n Object.seal(this);\n }\n\n destroy(): void {\n if (this.handle) {\n this.gl.deleteTexture(this.handle);\n this.removeStats();\n this.trackDeallocatedMemory('Texture');\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n toString(): string {\n return `Texture(${this.id},${this.width}x${this.height})`;\n }\n\n // eslint-disable-next-line max-statements\n initialize(props: TextureProps = {}): this {\n // Cube textures\n if (this.props.dimension === 'cube') {\n return this.initializeCube(props);\n }\n\n let data = props.data;\n\n if (data instanceof Promise) {\n data.then((resolvedImageData) =>\n this.initialize(\n Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })\n )\n );\n return this;\n }\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 // @ts-expect-error\n data.addEventListener('loadeddata', () => this.initialize(props));\n return this;\n }\n\n let {parameters = {} as Record<GL, any>} = props;\n\n const {\n pixels = null, recreate = false, pixelStore = {}, textureUnit = undefined} = props;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n // TODO - This looks backwards? Commenting out for now until we decide\n // which prop to use\n // log.deprecated('data', 'pixels')();\n data = pixels;\n }\n\n let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;\n const {depth = 0} = props;\n\n // Deduce width and height\n ({width, height, compressed, dataFormat, type} = this._deduceParameters({\n format: props.format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n const format = getWebGLTextureFormat(this.gl, props.format);\n\n // Store opts for accessors\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.textureUnit = textureUnit;\n\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n\n if (mipmaps && this.device.isWebGL1 && isNPOT(this.width, this.height)) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaps`)();\n mipmaps = false;\n }\n\n this.mipmaps = mipmaps;\n\n this.setImageData({\n data,\n width,\n height,\n depth,\n format,\n type,\n dataFormat,\n // @ts-expect-error \n parameters: pixelStore,\n compressed\n });\n\n // Set texture sampler parameters\n this.setSampler(props.sampler);\n this._setSamplerParameters(parameters);\n\n if (mipmaps) {\n this.generateMipmap();\n }\n\n // TODO - Store data to enable auto recreate on context loss\n if (recreate) {\n this.data = data;\n }\n if (isVideo) {\n this._video = {\n video: data as HTMLVideoElement,\n parameters,\n // @ts-expect-error\n lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n };\n }\n\n return this;\n }\n\n initializeCube(props?: TextureProps): this {\n const {mipmaps = true, parameters = {} as Record<GL, any>} = props;\n\n // Store props for accessors\n // this.props = props;\n\n // @ts-expect-error\n this.setCubeMapImageData(props).then(() => {\n this.loaded = true;\n\n // TODO - should genMipmap() be called on the cubemap or on the faces?\n // TODO - without generateMipmap() cube textures do not work at all!!! Why?\n if (mipmaps) {\n this.generateMipmap(props);\n }\n\n this.setSampler(props.sampler);\n this._setSamplerParameters(parameters);\n });\n return this;\n }\n\n setSampler(sampler: Sampler | SamplerProps = {}): this {\n let samplerProps: SamplerParameters;\n if (sampler instanceof WEBGLSampler) {\n this.sampler = sampler;\n samplerProps = sampler.props;\n } else {\n this.sampler = new WEBGLSampler(this.device, sampler);\n samplerProps = sampler as SamplerProps;\n }\n\n // TODO - technically, this is only needed in WebGL1. In WebGL2 we could always use the sampler.\n const parameters = convertSamplerParametersToWebGL(samplerProps);\n this._setSamplerParameters(parameters);\n return this;\n }\n\n /**\n * If size has changed, reinitializes with current format\n * @note note clears image and mipmaps\n */\n resize(options: {height: number, width: number, mipmaps?: boolean}): this {\n const {height, width, mipmaps = false} = options;\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n mipmaps\n });\n }\n return this;\n }\n\n /** Update external texture (video frame) */\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 // Call to regenerate mipmaps after modifying texture(s)\n generateMipmap(params = {}): this {\n if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n return this;\n }\n\n this.mipmaps = true;\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, params, () => {\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n /*\n * Allocates storage\n * @param {*} pixels -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param width -\n * @param height -\n * @param mipMapLevel -\n * @param {GLenum} format - format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n // eslint-disable-next-line max-statements, complexity\n setImageData(options: SetImageDataOptions) {\n if (this.props.dimension === '3d') {\n return this.setImageData3D(options);\n }\n\n this.trackDeallocatedMemory('Texture');\n\n const {\n target = this.target,\n pixels = null,\n level = 0,\n format = this.format,\n offset = 0,\n parameters = {} as Record<GL, any>\n } = options;\n\n let {\n data = null,\n type = this.type,\n width = this.width,\n height = this.height,\n dataFormat = this.dataFormat,\n compressed = false\n } = options;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format: this.props.format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n const {gl} = this;\n gl.bindTexture(this.target, this.handle);\n\n let dataType = null;\n ({data, dataType} = this._getDataType({data, compressed}));\n\n let gl2;\n\n withParameters(this.gl, parameters, () => {\n switch (dataType) {\n case 'null':\n gl.texImage2D(target, level, format, width, height, 0 /*border*/, dataFormat, type, data);\n break;\n case 'typed-array':\n // Looks like this assert is not necessary, as offset is ignored under WebGL1\n // assert((offset === 0 || this.device.isWebGL2), 'offset supported in WebGL2 only');\n gl.texImage2D(\n target,\n level,\n format,\n width,\n height,\n 0, // border (must be 0)\n dataFormat,\n type,\n data,\n // @ts-expect-error\n offset\n );\n break;\n case 'buffer':\n // WebGL2 enables creating textures directly from a WebGL buffer\n gl2 = this.device.assertWebGL2();\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);\n gl2.texImage2D(\n target,\n level,\n format,\n width,\n height,\n 0 /*border*/,\n dataFormat,\n type,\n offset\n );\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n break;\n case 'browser-object':\n if (this.device.isWebGL2) {\n gl.texImage2D(\n target,\n level,\n format,\n width,\n height,\n 0 /*border*/,\n dataFormat,\n type,\n data\n );\n } else {\n gl.texImage2D(target, level, format, dataFormat, type, data);\n }\n break;\n case 'compressed':\n for (const [levelIndex, levelData] of data.entries()) {\n gl.compressedTexImage2D(\n target,\n levelIndex,\n levelData.format,\n levelData.width,\n levelData.height,\n 0 /* border, must be 0 */,\n levelData.data\n );\n }\n\n break;\n default:\n assert(false, 'Unknown image data type');\n }\n });\n\n if (data && data.byteLength) {\n this.trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);\n this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');\n }\n\n this.loaded = true;\n\n return this;\n }\n\n /**\n * Redefines an area of an existing texture\n * Note: does not allocate storage\n * Redefines an area of an existing texture\n */\n setSubImageData({\n target = this.target,\n pixels = null,\n data = null,\n x = 0,\n y = 0,\n width = this.width,\n height = this.height,\n level = 0,\n format = this.format,\n type = this.type,\n dataFormat = this.dataFormat,\n compressed = false,\n offset = 0,\n parameters = {} as Record<GL, any>\n }: SetSubImageDataOptions) {\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format: this.props.format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n assert(this.depth === 1, 'texSubImage not supported for 3D textures');\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n // Support ndarrays\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n\n // Support buffers\n if (data instanceof WEBGLBuffer) {\n data = data.handle;\n }\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n // TODO - x,y parameters\n if (compressed) {\n this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n } else if (data === null) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n } else if (ArrayBuffer.isView(data)) {\n // const gl2 = this.device.assertWebGL2();\n // @ts-expect-error last offset parameter is ignored under WebGL1\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n } else if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {\n // WebGL2 allows us to create texture directly from a WebGL buffer\n const gl2 = this.device.assertWebGL2();\n // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n } else if (this.device.isWebGL2) {\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n const gl2 = this.device.assertWebGL2();\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else {\n this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n }\n });\n\n this.gl.bindTexture(this.target, null);\n }\n\n /**\n * Defines a two-dimensional texture image or cube-map texture image with\n * pixels from the current framebuffer (rather than from client memory).\n * (gl.copyTexImage2D wrapper)\n *\n * Note that binding a texture into a Framebuffer's color buffer and\n * rendering can be faster.\n */\n copyFramebuffer(opts = {}) {\n log.error(\n 'Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n getActiveUnit(): number {\n return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;\n }\n\n bind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n\n unbind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n\n // PRIVATE METHODS\n\n _getDataType({data, compressed = false}) {\n if (compressed) {\n return {data, dataType: 'compressed'};\n }\n if (data === null) {\n return {data, dataType: 'null'};\n }\n if (ArrayBuffer.isView(data)) {\n return {data, dataType: 'typed-array'};\n }\n if (data instanceof WEBGLBuffer) {\n return {data: data.handle, dataType: 'buffer'};\n }\n // Raw WebGL handle (not a luma wrapper)\n if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {\n return {data, dataType: 'buffer'};\n }\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n return {data, dataType: 'browser-object'};\n }\n\n // HELPER METHODS\n\n _deduceParameters(opts: TextureProps) {\n const {format, data} = opts;\n let {width, height, dataFormat, type, compressed} = opts;\n\n // Deduce format and type from format\n const parameters = getWebGLTextureParameters(this.gl, format);\n dataFormat = dataFormat || parameters.dataFormat;\n type = type || parameters.type;\n compressed = compressed || parameters.compressed;\n\n ({width, height} = this._deduceImageSize(data, width, height));\n\n return {dataFormat, type, compressed, width, height, format, data};\n }\n\n // eslint-disable-next-line complexity\n _deduceImageSize(data, width, height): {width: number; height: number} {\n let size;\n\n if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n size = {width: data.naturalWidth, height: data.naturalHeight};\n } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n size = {width: data.width, height: data.height};\n } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n size = {width: data.videoWidth, height: data.videoHeight};\n } else if (!data) {\n size = {width: width >= 0 ? width : 1, height: height >= 0 ? height : 1};\n } else {\n size = {width, height};\n }\n\n assert(size, 'Could not deduced texture size');\n assert(\n width === undefined || size.width === width,\n 'Deduced texture width does not match supplied width'\n );\n assert(\n height === undefined || size.height === height,\n 'Deduced texture height does not match supplied height'\n );\n\n return size;\n }\n\n // CUBE MAP METHODS\n\n /* eslint-disable max-statements, max-len */\n async setCubeMapImageData(options: {\n width: any;\n height: any;\n pixels: any;\n data: any;\n format?: any;\n type?: any;\n }): Promise<void> {\n const {gl} = this;\n\n const {width, height, pixels, data, format = GL.RGBA, type = GL.UNSIGNED_BYTE} = options;\n const imageDataMap = pixels || data;\n\n // pixel data (imageDataMap) is an Object from Face to Image or Promise.\n // For example:\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : Image-or-Promise,\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : Image-or-Promise,\n // ... }\n // To provide multiple level-of-details (LODs) this can be Face to Array\n // of Image or Promise, like this\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // ... }\n\n const resolvedFaces = await Promise.all(\n WEBGLTexture.FACES.map((face) => {\n const facePixels = imageDataMap[face];\n return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);\n })\n );\n\n this.bind();\n\n WEBGLTexture.FACES.forEach((face, index) => {\n if (resolvedFaces[index].length > 1 && this.props.mipmaps !== false) {\n // If the user provides multiple LODs, then automatic mipmap\n // generation generateMipmap() should be disabled to avoid overwritting them.\n log.warn(`${this.id} has mipmap and multiple LODs.`)();\n }\n resolvedFaces[index].forEach((image, lodLevel) => {\n // TODO: adjust width & height for LOD!\n if (width && height) {\n gl.texImage2D(face, lodLevel, format, width, height, 0 /*border*/, format, type, image);\n } else {\n gl.texImage2D(face, lodLevel, format, format, type, image);\n }\n });\n });\n\n this.unbind();\n }\n\n /** @todo update this method to accept LODs */\n setImageDataForFace(options) {\n const {\n face,\n width,\n height,\n pixels,\n data,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n // generateMipmap = false // TODO\n } = options;\n\n const {gl} = this;\n\n const imageData = pixels || data;\n\n this.bind();\n if (imageData instanceof Promise) {\n imageData.then((resolvedImageData) =>\n this.setImageDataForFace(\n Object.assign({}, options, {\n face,\n data: resolvedImageData,\n pixels: resolvedImageData\n })\n )\n );\n } else if (this.width || this.height) {\n gl.texImage2D(face, 0, format, width, height, 0 /*border*/, format, type, imageData);\n } else {\n gl.texImage2D(face, 0, format, format, type, imageData);\n }\n\n return this;\n }\n\n /** Image 3D copies from Typed Array or WebGLBuffer */\n setImageData3D(options: SetImageData3DOptions) {\n const {\n level = 0,\n dataFormat,\n format,\n type, // = GL.UNSIGNED_BYTE,\n width,\n height,\n depth = 1,\n offset = 0,\n data,\n parameters = {}\n } = options;\n\n this.trackDeallocatedMemory('Texture');\n\n this.gl.bindTexture(this.target, this.handle);\n\n const webglTextureFormat = getWebGLTextureParameters(this.gl, format);\n\n withParameters(this.gl, parameters, () => {\n if (ArrayBuffer.isView(data)) {\n // @ts-expect-error\n this.gl.texImage3D(\n this.target,\n level,\n webglTextureFormat.format,\n width,\n height,\n depth,\n 0 /* border, must be 0 */,\n webglTextureFormat.dataFormat,\n webglTextureFormat.type, // dataType: getWebGL,\n data\n );\n }\n\n if (data instanceof WEBGLBuffer) {\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);\n // @ts-expect-error\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n 0 /* border, must be 0 */,\n format,\n type,\n offset\n );\n }\n });\n\n if (data && data.byteLength) {\n this.trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);\n this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');\n }\n\n this.loaded = true;\n\n return this;\n }\n\n // RESOURCE METHODS\n\n /**\n * Sets sampler parameters on texture\n * @note: Applies NPOT workaround if appropriate\n */\n _setSamplerParameters(parameters: GLSamplerParameters) {\n // Work around WebGL1 sampling restrictions on NPOT textures\n if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {\n parameters = updateSamplerParametersForNPOT(parameters);\n }\n\n // NPOT parameters may populate an empty object\n if (isObjectEmpty(parameters)) {\n return;\n }\n\n logParameters(parameters);\n\n this.gl.bindTexture(this.target, this.handle);\n for (const [pname, pvalue] of Object.entries(parameters)) {\n const param = Number(pname);\n let value = pvalue;\n\n // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n switch (param) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.gl.texParameterf(this.target, param, value);\n break;\n\n default:\n this.gl.texParameteri(this.target, param, value);\n break;\n }\n }\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n /** @deprecated For LegacyTexture subclass */\n protected _getWebGL1NPOTParameterOverride(pname: number, value: number): number {\n // NOTE: Apply NPOT workaround\n const npot = this.device.isWebGL1 && isNPOT(this.width, this.height);\n if (npot) {\n switch (pname) {\n case GL.TEXTURE_MIN_FILTER:\n if (value !== GL.LINEAR && value !== GL.NEAREST) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n return GL.LINEAR;\n }\n break;\n case GL.TEXTURE_WRAP_S:\n case GL.TEXTURE_WRAP_T:\n // if (value !== GL.CLAMP_TO_EDGE) { log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)(); }\n return GL.CLAMP_TO_EDGE;\n default:\n break;\n }\n }\n return value;\n }\n}\n\n// HELPERS\n\nfunction getWebGLTextureTarget(props: TextureProps) {\n switch (props.dimension) {\n // supported in WebGL\n case '2d':\n return GL.TEXTURE_2D;\n case 'cube':\n return GL.TEXTURE_CUBE_MAP;\n // supported in WebGL2\n case '2d-array':\n return GL.TEXTURE_2D_ARRAY;\n case '3d':\n return GL.TEXTURE_3D;\n // not supported in any WebGL version\n case '1d':\n case 'cube-array':\n default:\n throw new Error(props.dimension);\n }\n}\n\nfunction isNPOT(width: number, height: number): boolean {\n // Width and height not available, avoid classifying as NPOT texture\n if (!width || !height) {\n return false;\n }\n return !isPowerOfTwo(width) || !isPowerOfTwo(height);\n}\n\nfunction logParameters(parameters: Record<number, GL | number>) {\n log.log(1, 'texture sampler parameters', parameters)();\n for (const [pname, pvalue] of Object.entries(parameters)) {\n }\n}\n"],"file":"webgl-texture.js"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
|
|
18
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
-
|
|
20
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
-
|
|
22
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
-
|
|
24
|
-
var _api = require("@luma.gl/api");
|
|
25
|
-
|
|
26
|
-
var _devicePixels = require("../context/context/device-pixels");
|
|
27
|
-
|
|
28
|
-
var _webglFramebuffer = _interopRequireDefault(require("./resources/webgl-framebuffer"));
|
|
29
|
-
|
|
30
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
31
|
-
|
|
32
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
33
|
-
|
|
34
|
-
var WebGLCanvasContext = function (_CanvasContext) {
|
|
35
|
-
(0, _inherits2.default)(WebGLCanvasContext, _CanvasContext);
|
|
36
|
-
|
|
37
|
-
var _super = _createSuper(WebGLCanvasContext);
|
|
38
|
-
|
|
39
|
-
function WebGLCanvasContext(device, props) {
|
|
40
|
-
var _this;
|
|
41
|
-
|
|
42
|
-
(0, _classCallCheck2.default)(this, WebGLCanvasContext);
|
|
43
|
-
_this = _super.call(this, props);
|
|
44
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
|
|
45
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "presentationSize", void 0);
|
|
46
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_framebuffer", null);
|
|
47
|
-
_this.device = device;
|
|
48
|
-
_this.presentationSize = [-1, -1];
|
|
49
|
-
|
|
50
|
-
_this.update();
|
|
51
|
-
|
|
52
|
-
return _this;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
(0, _createClass2.default)(WebGLCanvasContext, [{
|
|
56
|
-
key: "getCurrentFramebuffer",
|
|
57
|
-
value: function getCurrentFramebuffer() {
|
|
58
|
-
this.update();
|
|
59
|
-
this._framebuffer = this._framebuffer || new _webglFramebuffer.default(this.device, {
|
|
60
|
-
handle: null
|
|
61
|
-
});
|
|
62
|
-
return this._framebuffer;
|
|
63
|
-
}
|
|
64
|
-
}, {
|
|
65
|
-
key: "update",
|
|
66
|
-
value: function update() {
|
|
67
|
-
var size = this.getPixelSize();
|
|
68
|
-
var sizeChanged = size[0] !== this.presentationSize[0] || size[1] !== this.presentationSize[1];
|
|
69
|
-
|
|
70
|
-
if (sizeChanged) {
|
|
71
|
-
this.presentationSize = size;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}, {
|
|
75
|
-
key: "resize",
|
|
76
|
-
value: function resize(options) {
|
|
77
|
-
if (this.canvas) {
|
|
78
|
-
var devicePixelRatio = (0, _devicePixels.getDevicePixelRatio)(options === null || options === void 0 ? void 0 : options.useDevicePixels);
|
|
79
|
-
(0, _devicePixels.setDevicePixelRatio)(this.device.gl, devicePixelRatio, options);
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
var ext = this.device.gl.getExtension('STACKGL_resize_drawingbuffer');
|
|
84
|
-
|
|
85
|
-
if (ext && options && "width" in options && "height" in options) {
|
|
86
|
-
ext.resize(options.width, options.height);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}, {
|
|
90
|
-
key: "commit",
|
|
91
|
-
value: function commit() {}
|
|
92
|
-
}]);
|
|
93
|
-
return WebGLCanvasContext;
|
|
94
|
-
}(_api.CanvasContext);
|
|
95
|
-
|
|
96
|
-
exports.default = WebGLCanvasContext;
|
|
97
|
-
//# sourceMappingURL=webgl-canvas-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapter/webgl-canvas-context.ts"],"names":["WebGLCanvasContext","device","props","presentationSize","update","_framebuffer","WEBGLFramebuffer","handle","size","getPixelSize","sizeChanged","options","canvas","devicePixelRatio","useDevicePixels","gl","ext","getExtension","resize","width","height","CanvasContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA;;AACA;;AAEA;;;;;;IAMqBA,kB;;;;;AAKnB,8BAAYC,MAAZ,EAAiCC,KAAjC,EAA4D;AAAA;;AAAA;AAE1D,8BAAMA,KAAN;AAF0D;AAAA;AAAA,+FAFZ,IAEY;AAG1D,UAAKD,MAAL,GAAcA,MAAd;AACA,UAAKE,gBAAL,GAAwB,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,CAAxB;;AACA,UAAKC,MAAL;;AAL0D;AAM3D;;;;WAED,iCAA0C;AACxC,WAAKA,MAAL;AACA,WAAKC,YAAL,GAAoB,KAAKA,YAAL,IAAqB,IAAIC,yBAAJ,CAAqB,KAAKL,MAA1B,EAAkC;AAACM,QAAAA,MAAM,EAAE;AAAT,OAAlC,CAAzC;AACA,aAAO,KAAKF,YAAZ;AACD;;;WAGD,kBAAS;AACP,UAAMG,IAAI,GAAG,KAAKC,YAAL,EAAb;AACA,UAAMC,WAAW,GAAGF,IAAI,CAAC,CAAD,CAAJ,KAAY,KAAKL,gBAAL,CAAsB,CAAtB,CAAZ,IAAwCK,IAAI,CAAC,CAAD,CAAJ,KAAY,KAAKL,gBAAL,CAAsB,CAAtB,CAAxE;;AACA,UAAIO,WAAJ,EAAiB;AACf,aAAKP,gBAAL,GAAwBK,IAAxB;AACD;AACF;;;WAcA,gBAAOG,OAAP,EAA8F;AAE7F,UAAI,KAAKC,MAAT,EAAiB;AACf,YAAMC,gBAAgB,GAAG,uCAAoBF,OAApB,aAAoBA,OAApB,uBAAoBA,OAAO,CAAEG,eAA7B,CAAzB;AACA,+CAAoB,KAAKb,MAAL,CAAYc,EAAhC,EAAoCF,gBAApC,EAAsDF,OAAtD;AACA;AACD;;AAGD,UAAMK,GAAG,GAAG,KAAKf,MAAL,CAAYc,EAAZ,CAAeE,YAAf,CAA4B,8BAA5B,CAAZ;;AACA,UAAID,GAAG,IAAIL,OAAP,IAAkB,WAAWA,OAA7B,IAAwC,YAAYA,OAAxD,EAAiE;AAC/DK,QAAAA,GAAG,CAACE,MAAJ,CAAWP,OAAO,CAACQ,KAAnB,EAA0BR,OAAO,CAACS,MAAlC;AACD;AACF;;;WAED,kBAAS,CAMR;;;EA7D6CC,kB","sourcesContent":["// luma.gl, MIT license\nimport type {CanvasContextProps} from '@luma.gl/api';\nimport {CanvasContext} from '@luma.gl/api';\nimport {getDevicePixelRatio, setDevicePixelRatio} from '../context/context/device-pixels';\nimport WebGLDevice from './webgl-device';\nimport WEBGLFramebuffer from './resources/webgl-framebuffer';\n\n/** \n * Holds a WebGL Canvas Context which will handle drawing buffer resizing etc \n * @todo This class is WIP, intended to replace the old gltools-based context size tracking\n */\nexport default class WebGLCanvasContext extends CanvasContext {\n readonly device: WebGLDevice;\n presentationSize: [number, number];\n private _framebuffer: WEBGLFramebuffer | null = null;\n\n constructor(device: WebGLDevice, props: CanvasContextProps) {\n // Note: Base class creates / looks up the canvas (unless under Node.js)\n super(props);\n this.device = device;\n this.presentationSize = [-1, -1];\n this.update();\n }\n\n getCurrentFramebuffer(): WEBGLFramebuffer {\n this.update();\n this._framebuffer = this._framebuffer || new WEBGLFramebuffer(this.device, {handle: null});\n return this._framebuffer;\n }\n\n /** Resizes and updates render targets if necessary */\n update() {\n const size = this.getPixelSize();\n const sizeChanged = size[0] !== this.presentationSize[0] || size[1] !== this.presentationSize[1];\n if (sizeChanged) {\n this.presentationSize = size;\n }\n }\n\n /**\n * Resize the canvas' drawing buffer.\n *\n * Can match the canvas CSS size, and optionally also consider devicePixelRatio\n * Can be called every frame\n *\n * Regardless of size, the drawing buffer will always be scaled to the viewport, but\n * for best visual results, usually set to either:\n * canvas CSS width x canvas CSS height\n * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio\n * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n */\n resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {\n // Resize browser context .\n if (this.canvas) {\n const devicePixelRatio = getDevicePixelRatio(options?.useDevicePixels);\n setDevicePixelRatio(this.device.gl, devicePixelRatio, options);\n return;\n }\n\n // Resize headless gl context\n const ext = this.device.gl.getExtension('STACKGL_resize_drawingbuffer');\n if (ext && options && `width` in options && `height` in options) {\n ext.resize(options.width, options.height);\n }\n }\n\n commit() {\n // gl.commit was ultimately removed from standard??\n // if (this.offScreen && this.gl.commit) {\n // // @ts-expect-error gl.commit is not officially part of WebGLRenderingContext\n // this.gl.commit();\n // }\n }\n}\n"],"file":"webgl-canvas-context.js"}
|