@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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":["RenderPipeline","cast","log","decodeVertexFormat","GL","getWebGLDataType","getShaderLayout","withDeviceParameters","withGLParameters","setUniform","WEBGLBuffer","WEBGLTexture","WEBGLVertexArrayObject","LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","constructor","device","props","handle","gl","createProgram","__SPECTOR_Metadata","id","vs","fs","varyings","bufferMode","SEPARATE_ATTRIBS","length","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","layout","vertexArrayObject","destroy","deleteProgram","destroyed","setIndexBuffer","indexBuffer","webglBuffer","setElementBuffer","_indexBuffer","setAttributes","attributes","name","buffer","Object","entries","attribute","getAttributeLayout","warn","decoded","format","type","typeString","components","size","byteLength","stride","normalized","integer","divisor","stepMode","setBuffer","location","offset","setBindings","bindings","value","binding","find","Error","setUniforms","uniforms","assign","draw","options","renderPass","getDefaultRenderPass","vertexCount","indexCount","instanceCount","firstVertex","firstIndex","firstInstance","baseVertex","drawMode","getDrawMode","topology","isIndexed","Boolean","indexType","UNSIGNED_SHORT","UNSIGNED_INT","isInstanced","Number","_areTexturesRenderable","useProgram","bind","primitiveMode","getGLPrimitive","transformFeedback","begin","_applyBindings","_applyUniforms","parameters","framebuffer","drawElementsInstanced","drawElements","drawArraysInstanced","drawArrays","end","attachShader","time","linkProgram","timeEnd","debug","level","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","texturesRenderable","texture","_textureUniforms","update","loaded","undefined","textureUnit","uniformBufferIndex","getUniformBlockIndex","INVALID_INDEX","uniformBlockBinding","bindBufferBase","UNIFORM_BUFFER","bindBufferRange","activeTexture","TEXTURE0","bindTexture","target","uniformLayout","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","getAttributesByLocation","byLocation","getBindingLayout"],"mappings":"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","sourcesContent":["import type {\n RenderPipelineProps,\n RenderPass,\n Buffer,\n Binding,\n ShaderLayout,\n PrimitiveTopology,\n BindingLayout,\n AttributeLayout\n} from '@luma.gl/api';\nimport {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\n\nimport type {GLParameters} from '../../types/webgl';\nimport {getWebGLDataType} from '../converters/texture-formats';\nimport {getShaderLayout} from '../helpers/get-shader-layout';\nimport {withDeviceParameters, withGLParameters} from '../converters/device-parameters';\nimport {setUniform} from '../helpers/set-uniform';\n// import {copyUniform, checkUniformValues} from '../../classes/uniforms';\n\nimport WebGLDevice from '../webgl-device';\nimport WEBGLBuffer from './webgl-buffer';\nimport WEBGLShader from './webgl-shader';\nimport WEBGLTexture from './webgl-texture';\nimport WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\n/** Creates a new render pipeline */\nexport default class WEBGLRenderPipeline extends RenderPipeline {\n device: WebGLDevice;\n handle: WebGLProgram;\n vs: WEBGLShader;\n fs: WEBGLShader;\n layout: ShaderLayout;\n\n // configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n varyings: string[] | null = null;\n vertexArrayObject: WEBGLVertexArrayObject;\n _indexBuffer?: Buffer;\n uniforms: Record<string, any> = {};\n bindings: Record<string, any> = {};\n _textureUniforms: Record<string, any> = {};\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function> = {}; // TODO are these used?\n\n constructor(device: WebGLDevice, props: RenderPipelineProps) {\n super(device, props);\n this.device = device;\n this.handle = this.props.handle || this.device.gl.createProgram();\n // @ts-expect-error\n this.handle.__SPECTOR_Metadata = {id: this.props.id};\n\n // Create shaders if needed\n this.vs = cast<WEBGLShader>(props.vs);\n this.fs = cast<WEBGLShader>(props.fs);\n // assert(this.vs.stage === 'vertex');\n // assert(this.fs.stage === 'fragment');\n\n // Setup varyings if supplied\n // @ts-expect-error WebGL only\n const {varyings, bufferMode = GL.SEPARATE_ATTRIBS} = props;\n if (varyings && varyings.length > 0) {\n this.device.assertWebGL2();\n this.varyings = varyings;\n this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n\n this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);\n this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);\n }\n\n destroy(): void {\n if (this.handle) {\n this.device.gl.deleteProgram(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n setIndexBuffer(indexBuffer: Buffer): void {\n const webglBuffer = cast<WEBGLBuffer>(indexBuffer);\n this.vertexArrayObject.setElementBuffer(webglBuffer);\n this._indexBuffer = indexBuffer;\n }\n\n /** @todo needed for portable model */\n setAttributes(attributes: Record<string, Buffer>): void {\n for (const [name, buffer] of Object.entries(attributes)) {\n const webglBuffer = cast<WEBGLBuffer>(buffer);\n const attribute = getAttributeLayout(this.layout, name);\n if (!attribute) {\n log.warn(`Ignoring buffer supplied for unknown attribute \"${name}\" in pipeline \"${this.id}\" (buffer \"${buffer.id}\")`)();\n continue;\n }\n const decoded = decodeVertexFormat(attribute.format);\n const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;\n const divisor = attribute.stepMode === 'instance' ? 1 : 0;\n const type = getWebGLDataType(typeString);\n this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {\n size,\n type,\n stride,\n offset: 0,\n normalized,\n integer,\n divisor: attribute.stepMode === 'instance' ? 1 : 0\n });\n }\n }\n\n /** @todo needed for portable model */\n setBindings(bindings: Record<string, Binding>): void {\n // if (log.priority >= 2) {\n // checkUniformValues(uniforms, this.id, this._uniformSetters);\n // }\n\n for (const [name, value] of Object.entries(bindings)) {\n const binding = this.layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();\n continue;\n }\n if (!value) {\n log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();\n }\n switch (binding.type) {\n case 'uniform':\n // @ts-expect-error\n if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {\n throw new Error('buffer value');\n }\n break;\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture value');\n }\n break;\n case 'sampler':\n log.warn(`Ignoring sampler ${name}`)();\n break;\n default:\n throw new Error(binding.type);\n }\n\n this.bindings[name] = value;\n }\n }\n\n setUniforms(uniforms: Record<string, any>) {\n // TODO - check against layout\n Object.assign(this.uniforms, uniforms);\n }\n\n /** @todo needed for portable model\n * @note The WebGL API is offers many ways to draw things\n * This function unifies those ways into a single call using common parameters with sane defaults\n */\n draw(options: {\n renderPass?: RenderPass;\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n }): boolean {\n const {\n renderPass = this.device.getDefaultRenderPass(),\n vertexCount,\n indexCount,\n instanceCount,\n firstVertex = 0,\n firstIndex,\n firstInstance,\n baseVertex\n } = options;\n\n const drawMode = getDrawMode(this.props.topology);\n const isIndexed: boolean = Boolean(this._indexBuffer);\n const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;\n const isInstanced: boolean = Number(options.instanceCount) > 0;\n\n // Avoid WebGL draw call when not rendering any data or values are incomplete\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n if (!this._areTexturesRenderable() || options.vertexCount === 0) {\n // (isInstanced && instanceCount === 0)\n return false;\n }\n\n this.device.gl.useProgram(this.handle);\n\n this.vertexArrayObject.bind(() => {\n const primitiveMode = getGLPrimitive(this.props.topology);\n const transformFeedback: any = null;\n if (transformFeedback) {\n transformFeedback.begin(primitiveMode);\n }\n\n // We have to apply bindings before every draw call since other draw calls will overwrite\n this._applyBindings();\n this._applyUniforms();\n\n // TODO - double context push/pop\n withDeviceParameters(this.device, this.props.parameters, () => {\n withGLParameters(this.device, {framebuffer: renderPass.props.framebuffer}, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n // ANGLE_instanced_arrays extension\n this.device.gl2?.drawElementsInstanced(\n drawMode,\n vertexCount || 0, // indexCount?\n indexType,\n firstVertex,\n instanceCount || 0\n );\n // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {\n // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?\n } else if (isInstanced) {\n this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);\n } else {\n this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n });\n\n return true;\n }\n\n // setAttributes(attributes: Record<string, Buffer>): void {}\n // setBindings(bindings: Record<string, Binding>): void {}\n\n protected _compileAndLink() {\n const {gl} = this.device;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // PRIVATE METHODS\n\n /**\n * Checks if all texture-values uniforms are renderable (i.e. loaded)\n * Update a texture if needed (e.g. from video)\n * Note: This is currently done before every draw call\n */\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const [name, texture] of Object.entries(this._textureUniforms)) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n for (const [name, texture] of Object.entries(this.bindings)) {\n // texture.update();\n if (texture.loaded !== undefined) {\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n }\n\n return texturesRenderable;\n }\n\n /** Apply any bindings */\n _applyBindings() {\n this.device.gl.useProgram(this.handle);\n\n const {gl2} = this.device;\n if (!gl2) {\n throw new Error('bindings');\n }\n\n let textureUnit = 0;\n let uniformBufferIndex = 0;\n for (const binding of this.layout.bindings) {\n const value = this.bindings[binding.name];\n if (!value) {\n throw new Error(`No value for binding ${binding.name} in ${this.id}`);\n }\n switch (binding.type) {\n case 'uniform':\n // Set buffer\n const {name} = binding;\n const location = gl2.getUniformBlockIndex(this.handle, name);\n if (location === GL.INVALID_INDEX) {\n throw new Error(`Invalid uniform block name ${name}`);\n }\n gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);\n // console.debug(binding, location);\n if (value instanceof WEBGLBuffer) {\n gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);\n } else {\n gl2.bindBufferRange(\n GL.UNIFORM_BUFFER,\n uniformBufferIndex,\n value.buffer.handle,\n value.offset || 0,\n value.size || value.buffer.byteLength - value.offset\n );\n }\n uniformBufferIndex += 1;\n break;\n\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture');\n }\n const texture: WEBGLTexture = value;\n gl2.activeTexture(GL.TEXTURE0 + textureUnit);\n gl2.bindTexture(texture.target, texture.handle);\n // gl2.bindSampler(textureUnit, sampler.handle);\n textureUnit += 1;\n break;\n\n case 'sampler':\n // ignore\n break;\n\n case 'storage':\n case 'read-only-storage':\n throw new Error(`binding type '${binding.type}' not supported in WebGL`);\n }\n }\n }\n\n _applyUniforms() {\n for (const uniformLayout of this.layout.uniforms || []) {\n const {name, location, type, textureUnit} = uniformLayout;\n const value = this.uniforms[name] || textureUnit;\n if (value !== undefined) {\n setUniform(this.device.gl, location, type, value);\n }\n }\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getDrawMode(\n topology: PrimitiveTopology\n): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.LINE_LOOP | GL.TRIANGLES | GL.TRIANGLE_STRIP | GL.TRIANGLE_FAN {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINE_STRIP;\n case 'line-loop': return GL.LINE_LOOP;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLE_STRIP;\n case 'triangle-fan': return GL.TRIANGLE_FAN;\n default: throw new Error(topology);\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINES;\n case 'line-loop': return GL.LINES;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLES;\n case 'triangle-fan': return GL.TRIANGLES;\n default: throw new Error(topology);\n }\n}\n\nfunction getAttributesByLocation(\n attributes: Record<string, Buffer>,\n layout: ShaderLayout\n): Record<number, Buffer> {\n const byLocation: Record<number, Buffer> = {};\n for (const [name, buffer] of Object.entries(attributes)) {\n const attribute = getAttributeLayout(layout, name);\n if (attribute) {\n byLocation[attribute.location] = buffer;\n }\n }\n return byLocation;\n}\n\nfunction getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {\n return layout.attributes.find((binding) => binding.name === name) || null;\n}\n\nfunction getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {\n const binding = layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n throw new Error(`Unknown binding ${name}`);\n }\n return binding;\n}\n"],"file":"webgl-render-pipeline.js"}
|
|
1
|
+
{"version":3,"file":"webgl-render-pipeline.js","names":["RenderPipeline","cast","splitUniformsAndBindings","log","mergeShaderLayout","getShaderLayout","withDeviceAndGLParameters","setUniform","WEBGLBuffer","WEBGLFramebuffer","WEBGLTexture","getGLDrawMode","LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","constructor","device","props","handle","vs","fs","introspectedLayout","uniforms","bindings","varyings","_uniformCount","_uniformSetters","gl","createProgram","setSpectorMetadata","id","bufferMode","length","_this$device$gl","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","shaderLayout","topology","warn","destroy","deleteProgram","destroyed","setBindings","name","value","Object","entries","binding","find","validBindings","map","join","type","buffer","Error","setUniforms","keys","forEach","JSON","stringify","assign","draw","options","_vertexArray$indexBuf","renderPass","vertexArray","vertexCount","instanceCount","firstVertex","transformFeedback","glDrawMode","isIndexed","Boolean","indexBuffer","glIndexType","isInstanced","Number","_areTexturesRenderable","useProgram","bindBeforeRender","begin","_applyBindings","_applyUniforms","webglRenderPass","parameters","glParameters","_this$device$gl2","drawElementsInstanced","drawElements","_this$device$gl3","drawArraysInstanced","drawArrays","end","unbindAfterRender","attachShader","time","linkProgram","timeEnd","debug","level","linked","getProgramParameter","getProgramInfoLog","validateProgram","validated","texturesRenderable","texture","update","loaded","textureUnit","uniformBufferIndex","replace","location","getUniformBlockIndex","uniformBlockBinding","bindBufferBase","bindBufferRange","offset","size","byteLength","colorAttachments","activeTexture","bindTexture","target","uniformLayout","_this$uniforms$name","undefined"],"sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {UniformValue, RenderPipelineProps, Binding} from '@luma.gl/core';\nimport type {ShaderLayout} from '@luma.gl/core';\nimport type {RenderPass, VertexArray} from '@luma.gl/core';\nimport {RenderPipeline, cast, splitUniformsAndBindings, log} from '@luma.gl/core';\nimport {mergeShaderLayout} from '@luma.gl/core';\n// import {mergeShaderLayout, getAttributeInfosFromLayouts} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\n\nimport {getShaderLayout} from '../helpers/get-shader-layout';\nimport {withDeviceAndGLParameters} from '../converters/device-parameters';\nimport {setUniform} from '../helpers/set-uniform';\n// import {copyUniform, checkUniformValues} from '../../classes/uniforms';\n\nimport {WebGLDevice} from '../webgl-device';\nimport {WEBGLBuffer} from './webgl-buffer';\nimport {WEBGLShader} from './webgl-shader';\nimport {WEBGLFramebuffer} from './webgl-framebuffer';\nimport {WEBGLTexture} from './webgl-texture';\n// import {WEBGLVertexArray} from './webgl-vertex-array';\nimport {WEBGLRenderPass} from './webgl-render-pass';\nimport {WEBGLTransformFeedback} from './webgl-transform-feedback';\nimport {getGLDrawMode} from '../helpers/webgl-topology-utils';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\n/** Creates a new render pipeline */\nexport class WEBGLRenderPipeline extends RenderPipeline {\n /** The WebGL device that created this render pipeline */\n device: WebGLDevice;\n /** Handle to underlying WebGL program */\n handle: WebGLProgram;\n /** vertex shader */\n vs: WEBGLShader;\n /** fragment shader */\n fs: WEBGLShader;\n /** The layout extracted from shader by WebGL introspection APIs */\n introspectedLayout: ShaderLayout;\n\n /** Uniforms set on this model */\n uniforms: Record<string, UniformValue> = {};\n /** Bindings set on this model */\n bindings: Record<string, Binding> = {};\n /** WebGL varyings */\n varyings: string[] | null = null;\n\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function> = {}; // TODO are these used?\n\n constructor(device: WebGLDevice, props: RenderPipelineProps) {\n super(device, props);\n this.device = device;\n this.handle = this.props.handle || this.device.gl.createProgram();\n this.device.setSpectorMetadata(this.handle, {id: this.props.id});\n\n // Create shaders if needed\n this.vs = cast<WEBGLShader>(props.vs);\n this.fs = cast<WEBGLShader>(props.fs);\n // assert(this.vs.stage === 'vertex');\n // assert(this.fs.stage === 'fragment');\n\n // Setup varyings if supplied\n // @ts-expect-error WebGL only\n const {varyings, bufferMode = GL.SEPARATE_ATTRIBS} = props;\n if (varyings && varyings.length > 0) {\n this.device.assertWebGL2();\n this.varyings = varyings;\n this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n\n this.introspectedLayout = getShaderLayout(this.device.gl, this.handle);\n // Merge provided layout with introspected layout\n this.shaderLayout = mergeShaderLayout(this.introspectedLayout, props.shaderLayout);\n\n // WebGPU has more restrictive topology support than WebGL\n switch (this.props.topology) {\n case 'triangle-fan-webgl':\n case 'line-loop-webgl':\n log.warn(`Primitive topology ${this.props.topology} is deprecated and will be removed in v9.1`);\n break;\n default:\n }\n }\n\n override destroy(): void {\n if (this.handle) {\n this.device.gl.deleteProgram(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n /**\n * Bindings include: textures, samplers and uniform buffers\n * @todo needed for portable model\n */\n setBindings(bindings: Record<string, Binding>): void {\n // if (log.priority >= 2) {\n // checkUniformValues(uniforms, this.id, this._uniformSetters);\n // }\n\n for (const [name, value] of Object.entries(bindings)) {\n // Accept both `xyz` and `xyzUniforms` as valid names for `xyzUniforms` uniform block\n // This convention allows shaders to name uniform blocks as `uniform appUniforms {} app;`\n // and reference them as `app` from both GLSL and JS.\n // TODO - this is rather hacky - we could also remap the name directly in the shader layout.\n const binding =\n this.shaderLayout.bindings.find(binding => binding.name === name) ||\n this.shaderLayout.bindings.find(binding => binding.name === `${name}Uniforms`);\n\n if (!binding) {\n const validBindings = this.shaderLayout.bindings\n .map(binding => `\"${binding.name}\"`)\n .join(', ');\n log.warn(\n `Unknown binding \"${name}\" in render pipeline \"${this.id}\", expected one of ${validBindings}`\n )();\n continue; // eslint-disable-line no-continue\n }\n if (!value) {\n log.warn(`Unsetting binding \"${name}\" in render pipeline \"${this.id}\"`)();\n }\n switch (binding.type) {\n case 'uniform':\n // @ts-expect-error\n if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {\n throw new Error('buffer value');\n }\n break;\n case 'texture':\n if (!(value instanceof WEBGLTexture || value instanceof WEBGLFramebuffer)) {\n throw new Error('texture value');\n }\n break;\n case 'sampler':\n log.warn(`Ignoring sampler ${name}`)();\n break;\n default:\n throw new Error(binding.type);\n }\n\n this.bindings[name] = value;\n }\n }\n\n /** This function is @deprecated, use uniform buffers */\n setUniforms(uniforms: Record<string, UniformValue>) {\n const {bindings} = splitUniformsAndBindings(uniforms);\n Object.keys(bindings).forEach(name => {\n log.warn(\n `Unsupported value \"${JSON.stringify(bindings[name])}\" used in setUniforms() for key ${name}. Use setBindings() instead?`\n )();\n });\n // TODO - check against layout\n Object.assign(this.uniforms, uniforms);\n }\n\n /** @todo needed for portable model\n * @note The WebGL API is offers many ways to draw things\n * This function unifies those ways into a single call using common parameters with sane defaults\n */\n draw(options: {\n renderPass: RenderPass;\n /** vertex attributes */\n vertexArray: VertexArray;\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n transformFeedback?: WEBGLTransformFeedback;\n }): boolean {\n const {\n renderPass,\n vertexArray,\n vertexCount,\n // indexCount,\n instanceCount,\n firstVertex = 0,\n // firstIndex,\n // firstInstance,\n // baseVertex,\n transformFeedback\n } = options;\n\n const glDrawMode = getGLDrawMode(this.props.topology);\n const isIndexed: boolean = Boolean(vertexArray.indexBuffer);\n const glIndexType = (vertexArray.indexBuffer as WEBGLBuffer)?.glIndexType;\n const isInstanced: boolean = Number(instanceCount) > 0;\n\n // Avoid WebGL draw call when not rendering any data or values are incomplete\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n if (!this._areTexturesRenderable() || vertexCount === 0) {\n // (isInstanced && instanceCount === 0)\n return false;\n }\n\n this.device.gl.useProgram(this.handle);\n\n // Note: Rebinds constant attributes before each draw call\n vertexArray.bindBeforeRender(renderPass);\n\n if (transformFeedback) {\n transformFeedback.begin(this.props.topology);\n }\n\n // We have to apply bindings before every draw call since other draw calls will overwrite\n this._applyBindings();\n this._applyUniforms();\n\n const webglRenderPass = renderPass as WEBGLRenderPass;\n // // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n // if (isIndexed && isInstanced) {\n // // ANGLE_instanced_arrays extension\n // this.device.gl2?.drawElementsInstanced(\n // drawMode,\n // vertexCount || 0, // indexCount?\n // indexType,\n // firstVertex,\n // instanceCount || 0\n // );\n // // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {\n // // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n // } else if (isIndexed) {\n // this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?\n // } else if (isInstanced) {\n // this.device.gl2?.drawArraysInstanced(\n // drawMode,\n // firstVertex,\n // vertexCount || 0,\n // instanceCount || 0\n // );\n // } else {\n // this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);\n // }\n // });\n\n withDeviceAndGLParameters(\n this.device,\n this.props.parameters,\n webglRenderPass.glParameters,\n () => {\n if (isIndexed && isInstanced) {\n // ANGLE_instanced_arrays extension\n this.device.gl2?.drawElementsInstanced(\n glDrawMode,\n vertexCount || 0, // indexCount?\n glIndexType,\n firstVertex,\n instanceCount || 0\n );\n // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {\n // this.device.gl2.drawRangeElements(glDrawMode, start, end, vertexCount, glIndexType, offset);\n } else if (isIndexed) {\n this.device.gl.drawElements(glDrawMode, vertexCount || 0, glIndexType, firstVertex); // indexCount?\n } else if (isInstanced) {\n this.device.gl2?.drawArraysInstanced(\n glDrawMode,\n firstVertex,\n vertexCount || 0,\n instanceCount || 0\n );\n } else {\n this.device.gl.drawArrays(glDrawMode, firstVertex, vertexCount || 0);\n }\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n }\n );\n\n vertexArray.unbindAfterRender(renderPass);\n\n return true;\n }\n\n // setAttributes(attributes: Record<string, Buffer>): void {}\n // setBindings(bindings: Record<string, Binding>): void {}\n\n protected _compileAndLink() {\n const {gl} = this.device;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (!gl.debug && log.level === 0) {\n // return;\n }\n\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n\n // PRIVATE METHODS\n\n /**\n * Checks if all texture-values uniforms are renderable (i.e. loaded)\n * Update a texture if needed (e.g. from video)\n * Note: This is currently done before every draw call\n */\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const [, texture] of Object.entries(this.bindings)) {\n if (texture instanceof WEBGLTexture) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n }\n\n return texturesRenderable;\n }\n\n /** Apply any bindings (before each draw call) */\n _applyBindings() {\n this.device.gl.useProgram(this.handle);\n\n const {gl2} = this.device;\n if (!gl2) {\n throw new Error('bindings');\n }\n\n let textureUnit = 0;\n let uniformBufferIndex = 0;\n for (const binding of this.shaderLayout.bindings) {\n // Accept both `xyz` and `xyzUniforms` as valid names for `xyzUniforms` uniform block\n const value =\n this.bindings[binding.name] || this.bindings[binding.name.replace(/Uniforms$/, '')];\n if (!value) {\n throw new Error(`No value for binding ${binding.name} in ${this.id}`);\n }\n switch (binding.type) {\n case 'uniform':\n // Set buffer\n const {name} = binding;\n const location = gl2.getUniformBlockIndex(this.handle, name);\n if (location as GL === GL.INVALID_INDEX) {\n throw new Error(`Invalid uniform block name ${name}`);\n }\n gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);\n // console.debug(binding, location);\n if (value instanceof WEBGLBuffer) {\n gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);\n } else {\n gl2.bindBufferRange(\n GL.UNIFORM_BUFFER,\n uniformBufferIndex,\n // @ts-expect-error\n value.buffer.handle,\n // @ts-expect-error\n value.offset || 0,\n // @ts-expect-error\n value.size || value.buffer.byteLength - value.offset\n );\n }\n uniformBufferIndex += 1;\n break;\n\n case 'texture':\n if (!(value instanceof WEBGLTexture || value instanceof WEBGLFramebuffer)) {\n throw new Error('texture');\n }\n let texture: WEBGLTexture;\n if (value instanceof WEBGLTexture) {\n texture = value;\n } else if (\n value instanceof WEBGLFramebuffer &&\n value.colorAttachments[0] instanceof WEBGLTexture\n ) {\n log.warn(\n 'Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead'\n )();\n texture = value.colorAttachments[0];\n } else {\n throw new Error('No texture');\n }\n\n gl2.activeTexture(GL.TEXTURE0 + textureUnit);\n gl2.bindTexture(texture.target, texture.handle);\n // gl2.bindSampler(textureUnit, sampler.handle);\n textureUnit += 1;\n break;\n\n case 'sampler':\n // ignore\n break;\n\n case 'storage':\n case 'read-only-storage':\n throw new Error(`binding type '${binding.type}' not supported in WebGL`);\n }\n }\n }\n\n /**\n * Due to program sharing, uniforms need to be reset before every draw call\n * (though caching will avoid redundant WebGL calls)\n */\n _applyUniforms() {\n for (const uniformLayout of this.shaderLayout.uniforms || []) {\n const {name, location, type, textureUnit} = uniformLayout;\n const value = this.uniforms[name] ?? textureUnit;\n if (value !== undefined) {\n setUniform(this.device.gl, location, type, value);\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Sampler, SamplerProps } from '@luma.gl/
|
|
2
|
-
import
|
|
3
|
-
import type WebGLDevice from '../webgl-device';
|
|
1
|
+
import { Sampler, SamplerProps } from '@luma.gl/core';
|
|
2
|
+
import { GLSamplerParameters } from '@luma.gl/constants';
|
|
3
|
+
import type { WebGLDevice } from '../webgl-device';
|
|
4
4
|
/**
|
|
5
5
|
* Sampler object -
|
|
6
6
|
* Under WebGL2 we create an actual WebGL sampler
|
|
@@ -8,12 +8,13 @@ import type WebGLDevice from '../webgl-device';
|
|
|
8
8
|
* so that they can be set directly on the texture
|
|
9
9
|
* https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export declare class WEBGLSampler extends Sampler {
|
|
12
12
|
readonly device: WebGLDevice;
|
|
13
13
|
readonly handle: WebGLSampler;
|
|
14
14
|
readonly parameters: GLSamplerParameters;
|
|
15
15
|
constructor(device: WebGLDevice, props: SamplerProps);
|
|
16
16
|
destroy(): void;
|
|
17
|
+
toString(): string;
|
|
17
18
|
/** Set sampler parameters on the sampler */
|
|
18
19
|
private _setSamplerParameters;
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-sampler.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webgl-sampler.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;gBAE7B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY;IAU3C,OAAO,IAAI,IAAI;IAQf,QAAQ,IAAI,MAAM;IAI3B,4CAA4C;IAC5C,OAAO,CAAC,qBAAqB;CAgB9B"}
|
|
@@ -1,50 +1,40 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import { convertSamplerParametersToWebGL } from '../converters/sampler-parameters';
|
|
5
|
-
export default class WEBGLSampler extends Sampler {
|
|
1
|
+
import { Sampler } from '@luma.gl/core';
|
|
2
|
+
import { convertSamplerParametersToWebGL } from "../converters/sampler-parameters.js";
|
|
3
|
+
export class WEBGLSampler extends Sampler {
|
|
6
4
|
constructor(device, props) {
|
|
7
5
|
super(device, props);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
_defineProperty(this, "handle", void 0);
|
|
12
|
-
|
|
13
|
-
_defineProperty(this, "parameters", void 0);
|
|
14
|
-
|
|
6
|
+
this.device = void 0;
|
|
7
|
+
this.handle = void 0;
|
|
8
|
+
this.parameters = void 0;
|
|
15
9
|
this.device = device;
|
|
16
10
|
this.parameters = convertSamplerParametersToWebGL(props);
|
|
17
|
-
|
|
18
11
|
if (this.device.isWebGL2) {
|
|
19
12
|
this.handle = this.handle || this.device.gl2.createSampler();
|
|
20
|
-
|
|
21
13
|
this._setSamplerParameters(this.parameters);
|
|
22
14
|
}
|
|
23
15
|
}
|
|
24
|
-
|
|
25
16
|
destroy() {
|
|
26
17
|
if (this.handle) {
|
|
27
18
|
this.device.gl2.deleteSampler(this.handle);
|
|
28
19
|
this.handle = undefined;
|
|
29
20
|
}
|
|
30
21
|
}
|
|
31
|
-
|
|
22
|
+
toString() {
|
|
23
|
+
return `Sampler(${this.id},${JSON.stringify(this.props)})`;
|
|
24
|
+
}
|
|
32
25
|
_setSamplerParameters(parameters) {
|
|
33
26
|
for (const [pname, value] of Object.entries(parameters)) {
|
|
34
27
|
const param = Number(pname);
|
|
35
|
-
|
|
36
28
|
switch (param) {
|
|
37
|
-
case
|
|
38
|
-
case
|
|
29
|
+
case 33082:
|
|
30
|
+
case 33083:
|
|
39
31
|
this.device.gl2.samplerParameterf(this.handle, param, value);
|
|
40
32
|
break;
|
|
41
|
-
|
|
42
33
|
default:
|
|
43
34
|
this.device.gl2.samplerParameteri(this.handle, param, value);
|
|
44
35
|
break;
|
|
45
36
|
}
|
|
46
37
|
}
|
|
47
38
|
}
|
|
48
|
-
|
|
49
39
|
}
|
|
50
40
|
//# sourceMappingURL=webgl-sampler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"webgl-sampler.js","names":["Sampler","convertSamplerParametersToWebGL","WEBGLSampler","constructor","device","props","handle","parameters","isWebGL2","gl2","createSampler","_setSamplerParameters","destroy","deleteSampler","undefined","toString","id","JSON","stringify","pname","value","Object","entries","param","Number","samplerParameterf","samplerParameteri"],"sources":["../../../src/adapter/resources/webgl-sampler.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {Sampler, SamplerProps} from '@luma.gl/core';\nimport {GL, GLSamplerParameters} from '@luma.gl/constants';\nimport {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';\nimport type {WebGLDevice} from '../webgl-device';\n\n/**\n * Sampler object -\n * Under WebGL2 we create an actual WebGL sampler\n * Under WebGL1, we just store the sampler parameters\n * so that they can be set directly on the texture\n * https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html\n */\nexport class WEBGLSampler extends Sampler {\n readonly device: WebGLDevice;\n readonly handle: WebGLSampler;\n readonly parameters: GLSamplerParameters;\n\n constructor(device: WebGLDevice, props: SamplerProps) {\n super(device, props);\n this.device = device;\n this.parameters = convertSamplerParametersToWebGL(props);\n if (this.device.isWebGL2) {\n this.handle = this.handle || this.device.gl2.createSampler();\n this._setSamplerParameters(this.parameters);\n }\n }\n\n override destroy(): void {\n if (this.handle) {\n this.device.gl2.deleteSampler(this.handle);\n // @ts-expect-error read-only/undefined\n this.handle = undefined;\n }\n }\n\n override toString(): string {\n return `Sampler(${this.id},${JSON.stringify(this.props)})`;\n }\n\n /** Set sampler parameters on the sampler */\n private _setSamplerParameters(parameters: GLSamplerParameters): void {\n for (const [pname, value] of Object.entries(parameters)) {\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 const param = Number(pname) as GL.TEXTURE_MIN_LOD | GL.TEXTURE_MAX_LOD;\n switch (param) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.device.gl2.samplerParameterf(this.handle, param, value);\n break;\n default:\n this.device.gl2.samplerParameteri(this.handle, param, value);\n break;\n }\n }\n }\n}\n"],"mappings":"AAGA,SAAQA,OAAO,QAAqB,eAAe;AAAC,SAE5CC,+BAA+B;AAUvC,OAAO,MAAMC,YAAY,SAASF,OAAO,CAAC;EAKxCG,WAAWA,CAACC,MAAmB,EAAEC,KAAmB,EAAE;IACpD,KAAK,CAACD,MAAM,EAAEC,KAAK,CAAC;IAAC,KALdD,MAAM;IAAA,KACNE,MAAM;IAAA,KACNC,UAAU;IAIjB,IAAI,CAACH,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACG,UAAU,GAAGN,+BAA+B,CAACI,KAAK,CAAC;IACxD,IAAI,IAAI,CAACD,MAAM,CAACI,QAAQ,EAAE;MACxB,IAAI,CAACF,MAAM,GAAG,IAAI,CAACA,MAAM,IAAI,IAAI,CAACF,MAAM,CAACK,GAAG,CAACC,aAAa,CAAC,CAAC;MAC5D,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACJ,UAAU,CAAC;IAC7C;EACF;EAESK,OAAOA,CAAA,EAAS;IACvB,IAAI,IAAI,CAACN,MAAM,EAAE;MACf,IAAI,CAACF,MAAM,CAACK,GAAG,CAACI,aAAa,CAAC,IAAI,CAACP,MAAM,CAAC;MAE1C,IAAI,CAACA,MAAM,GAAGQ,SAAS;IACzB;EACF;EAESC,QAAQA,CAAA,EAAW;IAC1B,OAAQ,WAAU,IAAI,CAACC,EAAG,IAAGC,IAAI,CAACC,SAAS,CAAC,IAAI,CAACb,KAAK,CAAE,GAAE;EAC5D;EAGQM,qBAAqBA,CAACJ,UAA+B,EAAQ;IACnE,KAAK,MAAM,CAACY,KAAK,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACf,UAAU,CAAC,EAAE;MAGvD,MAAMgB,KAAK,GAAGC,MAAM,CAACL,KAAK,CAA4C;MACtE,QAAQI,KAAK;QACX;QACA;UACE,IAAI,CAACnB,MAAM,CAACK,GAAG,CAACgB,iBAAiB,CAAC,IAAI,CAACnB,MAAM,EAAEiB,KAAK,EAAEH,KAAK,CAAC;UAC5D;QACF;UACE,IAAI,CAAChB,MAAM,CAACK,GAAG,CAACiB,iBAAiB,CAAC,IAAI,CAACpB,MAAM,EAAEiB,KAAK,EAAEH,KAAK,CAAC;UAC5D;MACJ;IACF;EACF;AACF"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Shader, ShaderProps } from '@luma.gl/
|
|
2
|
-
import {
|
|
3
|
-
import WebGLDevice from '../webgl-device';
|
|
1
|
+
import { Shader, ShaderProps, CompilerMessage } from '@luma.gl/core';
|
|
2
|
+
import { WebGLDevice } from '../webgl-device';
|
|
4
3
|
/**
|
|
5
4
|
* An immutable compiled shader program that execute portions of the GPU Pipeline
|
|
6
5
|
*/
|
|
7
|
-
export
|
|
6
|
+
export declare class WEBGLShader extends Shader {
|
|
8
7
|
readonly device: WebGLDevice;
|
|
9
8
|
readonly handle: WebGLShader;
|
|
10
9
|
constructor(device: WebGLDevice, props: ShaderProps);
|
|
11
10
|
destroy(): void;
|
|
12
|
-
|
|
11
|
+
getCompilationInfo(): Promise<readonly CompilerMessage[]>;
|
|
12
|
+
getCompilationInfoSync(): readonly CompilerMessage[];
|
|
13
13
|
_compile(source: string): void;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=webgl-shader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webgl-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C;;GAEG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW;IAgB1C,OAAO,IAAI,IAAI;IAST,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAI/D,sBAAsB;IAO/B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAqB/B"}
|
|
@@ -1,37 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import { getShaderInfo, formatCompilerLog } from '@luma.gl/shadertools';
|
|
5
|
-
import { parseShaderCompilerLog } from '../helpers/parse-shader-compiler-log';
|
|
6
|
-
export default class WEBGLShader extends Shader {
|
|
1
|
+
import { Shader } from '@luma.gl/core';
|
|
2
|
+
import { parseShaderCompilerLog } from "../helpers/parse-shader-compiler-log.js";
|
|
3
|
+
export class WEBGLShader extends Shader {
|
|
7
4
|
constructor(device, props) {
|
|
8
|
-
super(device,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
_defineProperty(this, "device", void 0);
|
|
14
|
-
|
|
15
|
-
_defineProperty(this, "handle", void 0);
|
|
16
|
-
|
|
5
|
+
super(device, props);
|
|
6
|
+
this.device = void 0;
|
|
7
|
+
this.handle = void 0;
|
|
17
8
|
this.device = device;
|
|
18
|
-
|
|
19
9
|
switch (this.props.stage) {
|
|
20
10
|
case 'vertex':
|
|
21
|
-
this.handle = this.props.handle || this.device.gl.createShader(
|
|
11
|
+
this.handle = this.props.handle || this.device.gl.createShader(35633);
|
|
22
12
|
break;
|
|
23
|
-
|
|
24
13
|
case 'fragment':
|
|
25
|
-
this.handle = this.props.handle || this.device.gl.createShader(
|
|
14
|
+
this.handle = this.props.handle || this.device.gl.createShader(35632);
|
|
26
15
|
break;
|
|
27
|
-
|
|
28
16
|
default:
|
|
29
17
|
throw new Error(this.props.stage);
|
|
30
18
|
}
|
|
31
|
-
|
|
32
19
|
this._compile(this.source);
|
|
33
20
|
}
|
|
34
|
-
|
|
35
21
|
destroy() {
|
|
36
22
|
if (this.handle) {
|
|
37
23
|
this.removeStats();
|
|
@@ -39,38 +25,26 @@ export default class WEBGLShader extends Shader {
|
|
|
39
25
|
this.destroyed = true;
|
|
40
26
|
}
|
|
41
27
|
}
|
|
42
|
-
|
|
43
|
-
|
|
28
|
+
async getCompilationInfo() {
|
|
29
|
+
return this.getCompilationInfoSync();
|
|
30
|
+
}
|
|
31
|
+
getCompilationInfoSync() {
|
|
44
32
|
const log = this.device.gl.getShaderInfoLog(this.handle);
|
|
45
|
-
return
|
|
33
|
+
return parseShaderCompilerLog(log);
|
|
46
34
|
}
|
|
47
|
-
|
|
48
35
|
_compile(source) {
|
|
49
|
-
const addGLSLVersion = source => source.startsWith('#version ') ? source :
|
|
50
|
-
|
|
36
|
+
const addGLSLVersion = source => source.startsWith('#version ') ? source : `#version 100\n${source}`;
|
|
51
37
|
source = addGLSLVersion(source);
|
|
52
38
|
const {
|
|
53
39
|
gl
|
|
54
40
|
} = this.device;
|
|
55
41
|
gl.shaderSource(this.handle, source);
|
|
56
42
|
gl.compileShader(this.handle);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
|
|
62
|
-
const messages = parsedLog.filter(message => message.type === 'error');
|
|
63
|
-
const formattedLog = formatCompilerLog(messages, source);
|
|
64
|
-
const shaderName = getShaderInfo(source).name;
|
|
65
|
-
const shaderDescription = "".concat(this.stage, " shader ").concat(shaderName);
|
|
66
|
-
log.error("GLSL compilation errors in ".concat(shaderDescription, "\n").concat(formattedLog))();
|
|
67
|
-
throw new Error("GLSL compilation errors in ".concat(shaderName));
|
|
43
|
+
this.compilationStatus = gl.getShaderParameter(this.handle, 35713) ? 'success' : 'error';
|
|
44
|
+
this.debugShader();
|
|
45
|
+
if (this.compilationStatus === 'error') {
|
|
46
|
+
throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);
|
|
68
47
|
}
|
|
69
48
|
}
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function getShaderIdFromProps(props) {
|
|
74
|
-
return getShaderInfo(props.source).name || props.id || uid("unnamed ".concat(props.stage, "-shader"));
|
|
75
49
|
}
|
|
76
50
|
//# sourceMappingURL=webgl-shader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"webgl-shader.js","names":["Shader","parseShaderCompilerLog","WEBGLShader","constructor","device","props","handle","stage","gl","createShader","Error","_compile","source","destroy","removeStats","deleteShader","destroyed","getCompilationInfo","getCompilationInfoSync","log","getShaderInfoLog","addGLSLVersion","startsWith","shaderSource","compileShader","compilationStatus","getShaderParameter","debugShader","id"],"sources":["../../../src/adapter/resources/webgl-shader.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {Shader, ShaderProps, CompilerMessage} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';\nimport {WebGLDevice} from '../webgl-device';\n\n/**\n * An immutable compiled shader program that execute portions of the GPU Pipeline\n */\nexport class WEBGLShader extends Shader {\n readonly device: WebGLDevice;\n readonly handle: WebGLShader;\n\n constructor(device: WebGLDevice, props: ShaderProps) {\n super(device, props);\n this.device = device;\n switch (this.props.stage) {\n case 'vertex':\n this.handle = this.props.handle || this.device.gl.createShader(GL.VERTEX_SHADER);\n break;\n case 'fragment':\n this.handle = this.props.handle || this.device.gl.createShader(GL.FRAGMENT_SHADER);\n break;\n default:\n throw new Error(this.props.stage);\n }\n this._compile(this.source);\n }\n\n override destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.device.gl.deleteShader(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n override async getCompilationInfo(): Promise<readonly CompilerMessage[]> {\n return this.getCompilationInfoSync();\n }\n\n override getCompilationInfoSync() {\n const log = this.device.gl.getShaderInfoLog(this.handle);\n return parseShaderCompilerLog(log);\n }\n\n // PRIVATE METHODS\n\n _compile(source: string): void {\n const addGLSLVersion = (source: string) =>\n source.startsWith('#version ') ? source : `#version 100\\n${source}`;\n source = addGLSLVersion(source);\n\n const {gl} = this.device;\n gl.shaderSource(this.handle, source);\n gl.compileShader(this.handle);\n\n // TODO - For performance reasons, avoid checking shader compilation errors on production?\n // TODO - Load log even when no error reported, to catch warnings?\n // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings\n this.compilationStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS) ? 'success' : 'error';\n\n // The `Shader` base class will determine if debug window should be opened based on props\n this.debugShader();\n\n if (this.compilationStatus === 'error') {\n throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);\n }\n }\n}\n\n// TODO - Original code from luma.gl v8 - keep until new debug functionality has matured\n// if (!compilationSuccess) {\n// const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];\n// const messages = parsedLog.filter(message => message.type === 'error');\n// const formattedLog = formatCompilerLog(messages, source, {showSourceCode: 'all', html: true});\n// const shaderDescription = `${this.stage} shader ${shaderName}`;\n// log.error(`GLSL compilation errors in ${shaderDescription}\\n${formattedLog}`)();\n// displayShaderLog(parsedLog, source, shaderName);\n// }\n\n"],"mappings":"AAGA,SAAQA,MAAM,QAAqC,eAAe;AAAC,SAE3DC,sBAAsB;AAM9B,OAAO,MAAMC,WAAW,SAASF,MAAM,CAAC;EAItCG,WAAWA,CAACC,MAAmB,EAAEC,KAAkB,EAAE;IACnD,KAAK,CAACD,MAAM,EAAEC,KAAK,CAAC;IAAC,KAJdD,MAAM;IAAA,KACNE,MAAM;IAIb,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,QAAQ,IAAI,CAACC,KAAK,CAACE,KAAK;MACtB,KAAK,QAAQ;QACX,IAAI,CAACD,MAAM,GAAG,IAAI,CAACD,KAAK,CAACC,MAAM,IAAI,IAAI,CAACF,MAAM,CAACI,EAAE,CAACC,YAAY,MAAiB,CAAC;QAChF;MACF,KAAK,UAAU;QACb,IAAI,CAACH,MAAM,GAAG,IAAI,CAACD,KAAK,CAACC,MAAM,IAAI,IAAI,CAACF,MAAM,CAACI,EAAE,CAACC,YAAY,MAAmB,CAAC;QAClF;MACF;QACE,MAAM,IAAIC,KAAK,CAAC,IAAI,CAACL,KAAK,CAACE,KAAK,CAAC;IACrC;IACA,IAAI,CAACI,QAAQ,CAAC,IAAI,CAACC,MAAM,CAAC;EAC5B;EAESC,OAAOA,CAAA,EAAS;IACvB,IAAI,IAAI,CAACP,MAAM,EAAE;MACf,IAAI,CAACQ,WAAW,CAAC,CAAC;MAClB,IAAI,CAACV,MAAM,CAACI,EAAE,CAACO,YAAY,CAAC,IAAI,CAACT,MAAM,CAAC;MAExC,IAAI,CAACU,SAAS,GAAG,IAAI;IACvB;EACF;EAEA,MAAeC,kBAAkBA,CAAA,EAAwC;IACvE,OAAO,IAAI,CAACC,sBAAsB,CAAC,CAAC;EACtC;EAESA,sBAAsBA,CAAA,EAAG;IAChC,MAAMC,GAAG,GAAG,IAAI,CAACf,MAAM,CAACI,EAAE,CAACY,gBAAgB,CAAC,IAAI,CAACd,MAAM,CAAC;IACxD,OAAOL,sBAAsB,CAACkB,GAAG,CAAC;EACpC;EAIAR,QAAQA,CAACC,MAAc,EAAQ;IAC7B,MAAMS,cAAc,GAAIT,MAAc,IACpCA,MAAM,CAACU,UAAU,CAAC,WAAW,CAAC,GAAGV,MAAM,GAAI,iBAAgBA,MAAO,EAAC;IACrEA,MAAM,GAAGS,cAAc,CAACT,MAAM,CAAC;IAE/B,MAAM;MAACJ;IAAE,CAAC,GAAG,IAAI,CAACJ,MAAM;IACxBI,EAAE,CAACe,YAAY,CAAC,IAAI,CAACjB,MAAM,EAAEM,MAAM,CAAC;IACpCJ,EAAE,CAACgB,aAAa,CAAC,IAAI,CAAClB,MAAM,CAAC;IAK7B,IAAI,CAACmB,iBAAiB,GAAGjB,EAAE,CAACkB,kBAAkB,CAAC,IAAI,CAACpB,MAAM,OAAmB,CAAC,GAAG,SAAS,GAAG,OAAO;IAGpG,IAAI,CAACqB,WAAW,CAAC,CAAC;IAElB,IAAI,IAAI,CAACF,iBAAiB,KAAK,OAAO,EAAE;MACtC,MAAM,IAAIf,KAAK,CAAE,8BAA6B,IAAI,CAACL,KAAK,CAACE,KAAM,WAAU,IAAI,CAACF,KAAK,CAACuB,EAAG,EAAC,CAAC;IAC3F;EACF;AACF"}
|
|
@@ -1,19 +1,42 @@
|
|
|
1
|
-
import { Device, TextureProps, Sampler, SamplerProps, TypedArray } from '@luma.gl/
|
|
2
|
-
import { Texture } from '@luma.gl/
|
|
3
|
-
import GL from '@luma.gl/constants';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { Device, TextureProps, Sampler, SamplerProps, TypedArray } from '@luma.gl/core';
|
|
2
|
+
import { Texture } from '@luma.gl/core';
|
|
3
|
+
import { GL, GLSamplerParameters } from '@luma.gl/constants';
|
|
4
|
+
import { WebGLDevice } from '../webgl-device';
|
|
5
|
+
import { WEBGLSampler } from './webgl-sampler';
|
|
6
|
+
export type WEBGLTextureProps = TextureProps & {
|
|
7
|
+
/** @deprecated use props.sampler */
|
|
8
|
+
parameters?: Record<number, number>;
|
|
9
|
+
/** @deprecated use props.data */
|
|
10
|
+
pixels?: any;
|
|
11
|
+
/** @deprecated use props.format */
|
|
12
|
+
dataFormat?: number | null;
|
|
13
|
+
/** @deprecated rarely supported */
|
|
14
|
+
border?: number;
|
|
15
|
+
/** @deprecated WebGL only. */
|
|
16
|
+
pixelStore?: object;
|
|
17
|
+
/** @deprecated WebGL only. */
|
|
18
|
+
textureUnit?: number;
|
|
19
|
+
/** @deprecated WebGL only. Use dimension. */
|
|
20
|
+
target?: number;
|
|
21
|
+
};
|
|
22
|
+
export declare const DEFAULT_WEBGL_TEXTURE_PROPS: {
|
|
23
|
+
parameters: {};
|
|
24
|
+
pixelStore: {};
|
|
25
|
+
pixels: any;
|
|
26
|
+
border: number;
|
|
27
|
+
dataFormat: any;
|
|
28
|
+
textureUnit: any;
|
|
29
|
+
target: any;
|
|
30
|
+
};
|
|
31
|
+
export type TextureSourceData = TypedArray | ImageData | HTMLImageElement | HTMLCanvasElement | ImageBitmap | HTMLVideoElement;
|
|
32
|
+
type SetImageDataOptions = {
|
|
10
33
|
target?: number;
|
|
11
34
|
level?: number;
|
|
12
35
|
dataFormat?: any;
|
|
13
36
|
width?: number;
|
|
14
37
|
height?: number;
|
|
15
38
|
depth?: number;
|
|
16
|
-
|
|
39
|
+
glFormat?: GL;
|
|
17
40
|
type?: any;
|
|
18
41
|
offset?: number;
|
|
19
42
|
data: any;
|
|
@@ -44,14 +67,14 @@ declare type SetImageDataOptions = {
|
|
|
44
67
|
* @param {Number} offset - (WEBGL2) offset from start of buffer
|
|
45
68
|
* @parameters - temporary settings to be applied, can be used to supply pixel store settings.
|
|
46
69
|
*/
|
|
47
|
-
|
|
70
|
+
type SetSubImageDataOptions = {
|
|
48
71
|
target?: number;
|
|
49
72
|
level?: number;
|
|
50
73
|
dataFormat?: any;
|
|
51
74
|
width?: number;
|
|
52
75
|
height?: number;
|
|
53
76
|
depth?: number;
|
|
54
|
-
|
|
77
|
+
glFormat?: any;
|
|
55
78
|
type?: any;
|
|
56
79
|
offset?: number;
|
|
57
80
|
data: any;
|
|
@@ -62,7 +85,7 @@ declare type SetSubImageDataOptions = {
|
|
|
62
85
|
/** @deprecated */
|
|
63
86
|
pixels?: any;
|
|
64
87
|
};
|
|
65
|
-
|
|
88
|
+
type SetImageData3DOptions = {
|
|
66
89
|
level?: number;
|
|
67
90
|
dataFormat?: any;
|
|
68
91
|
width?: number;
|
|
@@ -74,18 +97,16 @@ declare type SetImageData3DOptions = {
|
|
|
74
97
|
data: any;
|
|
75
98
|
parameters?: Record<GL, any>;
|
|
76
99
|
};
|
|
77
|
-
export
|
|
100
|
+
export declare class WEBGLTexture extends Texture<WEBGLTextureProps> {
|
|
78
101
|
static FACES: number[];
|
|
79
102
|
readonly MAX_ATTRIBUTES: number;
|
|
80
103
|
readonly device: WebGLDevice;
|
|
81
104
|
readonly gl: WebGLRenderingContext;
|
|
82
105
|
readonly gl2: WebGL2RenderingContext | null;
|
|
83
106
|
readonly handle: WebGLTexture;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
depth: number;
|
|
88
|
-
format: GL;
|
|
107
|
+
/** Sampler object (currently unused) */
|
|
108
|
+
sampler: WEBGLSampler;
|
|
109
|
+
glFormat: GL;
|
|
89
110
|
type: GL;
|
|
90
111
|
dataFormat: GL;
|
|
91
112
|
mipmaps: boolean;
|
|
@@ -100,8 +121,6 @@ export default class WEBGLTexture extends Texture {
|
|
|
100
121
|
* */
|
|
101
122
|
target: GL;
|
|
102
123
|
textureUnit: number;
|
|
103
|
-
/** Sampler object (currently unused) */
|
|
104
|
-
sampler: WEBGLSampler;
|
|
105
124
|
/**
|
|
106
125
|
* Program.draw() checks the loaded flag of all textures to avoid
|
|
107
126
|
* Textures that are still loading from promises
|
|
@@ -113,11 +132,11 @@ export default class WEBGLTexture extends Texture {
|
|
|
113
132
|
parameters: any;
|
|
114
133
|
lastTime: number;
|
|
115
134
|
};
|
|
116
|
-
constructor(device: Device, props:
|
|
135
|
+
constructor(device: Device, props: WEBGLTextureProps);
|
|
117
136
|
destroy(): void;
|
|
118
137
|
toString(): string;
|
|
119
|
-
initialize(props?:
|
|
120
|
-
initializeCube(props?:
|
|
138
|
+
initialize(props?: WEBGLTextureProps): this;
|
|
139
|
+
initializeCube(props?: WEBGLTextureProps): this;
|
|
121
140
|
setSampler(sampler?: Sampler | SamplerProps): this;
|
|
122
141
|
/**
|
|
123
142
|
* If size has changed, reinitializes with current format
|
|
@@ -129,7 +148,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
129
148
|
mipmaps?: boolean;
|
|
130
149
|
}): this;
|
|
131
150
|
/** Update external texture (video frame) */
|
|
132
|
-
update():
|
|
151
|
+
update(): void;
|
|
133
152
|
generateMipmap(params?: {}): this;
|
|
134
153
|
setImageData(options: SetImageDataOptions): this;
|
|
135
154
|
/**
|
|
@@ -137,7 +156,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
137
156
|
* Note: does not allocate storage
|
|
138
157
|
* Redefines an area of an existing texture
|
|
139
158
|
*/
|
|
140
|
-
setSubImageData({ target, pixels, data, x, y, width, height, level,
|
|
159
|
+
setSubImageData({ target, pixels, data, x, y, width, height, level, glFormat, type, dataFormat, compressed, offset, parameters }: SetSubImageDataOptions): void;
|
|
141
160
|
/**
|
|
142
161
|
* Defines a two-dimensional texture image or cube-map texture image with
|
|
143
162
|
* pixels from the current framebuffer (rather than from client memory).
|
|
@@ -157,14 +176,14 @@ export default class WEBGLTexture extends Texture {
|
|
|
157
176
|
data: any;
|
|
158
177
|
dataType: string;
|
|
159
178
|
};
|
|
160
|
-
_deduceParameters(opts:
|
|
179
|
+
_deduceParameters(opts: WEBGLTextureProps): {
|
|
161
180
|
dataFormat: number;
|
|
162
181
|
type: number;
|
|
163
182
|
compressed: boolean;
|
|
164
183
|
width: number;
|
|
165
184
|
height: number;
|
|
166
|
-
format:
|
|
167
|
-
data: string | HTMLVideoElement | import("@luma.gl/
|
|
185
|
+
format: import("@luma.gl/core").TextureFormat;
|
|
186
|
+
data: string | HTMLVideoElement | import("@luma.gl/core").TextureData | Promise<import("@luma.gl/core").TextureData> | import("modules/core/dist/adapter/resources/texture").CubeTextureData;
|
|
168
187
|
};
|
|
169
188
|
_deduceImageSize(data: any, width: any, height: any): {
|
|
170
189
|
width: number;
|
|
@@ -186,8 +205,9 @@ export default class WEBGLTexture extends Texture {
|
|
|
186
205
|
* Sets sampler parameters on texture
|
|
187
206
|
* @note: Applies NPOT workaround if appropriate
|
|
188
207
|
*/
|
|
189
|
-
_setSamplerParameters(parameters: GLSamplerParameters):
|
|
208
|
+
_setSamplerParameters(parameters: GLSamplerParameters): void;
|
|
190
209
|
/** @deprecated For LegacyTexture subclass */
|
|
191
|
-
protected _getWebGL1NPOTParameterOverride(pname:
|
|
210
|
+
protected _getWebGL1NPOTParameterOverride(pname: GL.TEXTURE_MIN_FILTER | GL.TEXTURE_WRAP_S | GL.TEXTURE_WRAP_T, value: GL.LINEAR | GL.NEAREST): number;
|
|
192
211
|
}
|
|
212
|
+
export {};
|
|
193
213
|
//# sourceMappingURL=webgl-texture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"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"}
|