@luma.gl/webgl 9.0.0-alpha.2 → 9.0.0-alpha.20
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/dist/adapter/converters/device-parameters.d.ts +11 -1
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +17 -35
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/renderbuffer-formats.js +1 -5
- package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +4 -4
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +19 -55
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +13 -66
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +2 -8
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +13 -20
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +1 -4
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +8 -10
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.js +2 -1
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
- package/dist/adapter/helpers/attribute-utils.js +0 -17
- package/dist/adapter/helpers/attribute-utils.js.map +1 -1
- package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
- package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
- package/dist/adapter/helpers/get-shader-info.js +25 -0
- package/dist/adapter/helpers/get-shader-info.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +41 -67
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +1 -31
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/uniforms.d.ts +1 -1
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
- package/dist/adapter/helpers/uniforms.js +4 -14
- package/dist/adapter/helpers/uniforms.js.map +1 -1
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +0 -7
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +5 -21
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +2 -4
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +14 -67
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +6 -16
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +1 -2
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +17 -48
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +2 -17
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +1 -14
- 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 +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +9 -67
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +2 -7
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +50 -139
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +3 -2
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +4 -12
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +1 -2
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +7 -20
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +23 -23
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +65 -182
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +5 -18
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +45 -29
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +107 -108
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +11 -35
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/buffer.d.ts +0 -1
- package/dist/classic/buffer.d.ts.map +1 -1
- package/dist/classic/buffer.js +29 -86
- package/dist/classic/buffer.js.map +1 -1
- package/dist/classic/typed-array-utils.d.ts +1 -1
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +0 -20
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
- package/dist/context/context/create-browser-context.d.ts.map +1 -0
- package/dist/context/context/{create-context.js → create-browser-context.js} +19 -15
- package/dist/context/context/create-browser-context.js.map +1 -0
- package/dist/context/context/create-headless-context.d.ts +9 -0
- package/dist/context/context/create-headless-context.d.ts.map +1 -0
- package/dist/context/context/create-headless-context.js +42 -0
- package/dist/context/context/create-headless-context.js.map +1 -0
- package/dist/context/context/webgl-checks.js +0 -3
- package/dist/context/context/webgl-checks.js.map +1 -1
- package/dist/context/debug/spector.d.ts +1 -0
- 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 +8 -32
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +6 -5
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +8 -18
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +16 -34
- 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 +1 -6
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +20 -28
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +8 -8
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +8 -30
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +0 -4
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +15 -50
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts +2 -1
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +7 -9
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +9205 -0
- package/dist/index.cjs +5948 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -26
- package/dist/index.js.map +1 -1
- package/dist/types/webgl.d.ts +8 -7
- package/dist/types/webgl.d.ts.map +1 -1
- package/dist/types/webgl.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist.min.js +36 -0
- package/package.json +18 -9
- package/src/adapter/converters/device-parameters.ts +44 -15
- package/src/adapter/converters/sampler-parameters.ts +18 -7
- package/src/adapter/converters/texture-formats.ts +18 -16
- package/src/adapter/converters/vertex-formats.ts +1 -0
- package/src/adapter/device-helpers/device-features.ts +9 -2
- package/src/adapter/device-helpers/device-limits.ts +1 -1
- package/src/adapter/device-helpers/get-device-info.ts +12 -8
- package/src/adapter/helpers/get-shader-info.ts +37 -0
- package/src/adapter/helpers/get-shader-layout.ts +58 -36
- package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
- package/src/adapter/helpers/set-uniform.ts +3 -1
- package/src/adapter/helpers/uniforms.ts +21 -10
- package/src/adapter/objects/constants-to-keys.ts +4 -1
- package/src/adapter/objects/webgl-renderbuffer.ts +5 -5
- package/src/adapter/objects/webgl-resource.ts +7 -12
- package/src/adapter/objects/webgl-vertex-array-object.ts +5 -5
- package/src/adapter/resources/webgl-buffer.ts +14 -14
- package/src/adapter/resources/webgl-command-encoder.ts +5 -5
- package/src/adapter/resources/webgl-framebuffer.ts +14 -11
- package/src/adapter/resources/webgl-render-pass.ts +2 -1
- package/src/adapter/resources/webgl-render-pipeline.ts +83 -71
- package/src/adapter/resources/webgl-sampler.ts +10 -4
- package/src/adapter/resources/webgl-shader.ts +9 -8
- package/src/adapter/resources/webgl-texture.ts +51 -41
- package/src/adapter/webgl-canvas-context.ts +5 -6
- package/src/adapter/webgl-device.ts +144 -60
- package/src/classic/accessor.ts +1 -14
- package/src/classic/buffer.ts +14 -21
- package/src/classic/typed-array-utils.ts +4 -2
- package/src/context/context/{create-context.ts → create-browser-context.ts} +17 -7
- package/src/context/context/create-headless-context.ts +48 -0
- package/src/context/debug/spector.ts +6 -5
- package/src/context/debug/webgl-developer-tools.ts +13 -13
- package/src/context/parameters/unified-parameter-api.ts +17 -11
- package/src/context/parameters/webgl-parameter-tables.ts +113 -94
- package/src/context/polyfill/context-data.ts +27 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
- package/src/context/polyfill/polyfill-context.ts +6 -8
- package/src/context/polyfill/polyfill-table.ts +16 -14
- package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
- package/src/context/state-tracker/track-context-state.ts +13 -12
- package/src/context/state-tracker/with-parameters.ts +8 -2
- package/src/index.ts +14 -12
- package/src/types/webgl.ts +10 -7
- 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/context/context/context-state.d.ts +0 -18
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -26
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/context/context/create-context.d.ts.map +0 -1
- package/dist/context/context/create-context.js.map +0 -1
- package/dist/context/context/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -98
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/es5/adapter/converters/device-parameters.js +0 -170
- package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
- package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/texture-formats.js +0 -1031
- package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
- package/dist/es5/adapter/converters/vertex-formats.js +0 -45
- package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-features.js +0 -144
- package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
- package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
- package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/adapter/helpers/set-uniform.js +0 -125
- package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/es5/adapter/helpers/uniforms.js +0 -112
- package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
- package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
- package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-resource.js +0 -292
- package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
- package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
- package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-shader.js +0 -149
- package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/es5/adapter/resources/webgl-texture.js +0 -986
- package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/es5/adapter/webgl-canvas-context.js +0 -97
- package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/es5/adapter/webgl-device.js +0 -399
- package/dist/es5/adapter/webgl-device.js.map +0 -1
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/classic/accessor.js +0 -181
- package/dist/es5/classic/accessor.js.map +0 -1
- package/dist/es5/classic/buffer.js +0 -470
- package/dist/es5/classic/buffer.js.map +0 -1
- package/dist/es5/classic/typed-array-utils.js +0 -126
- package/dist/es5/classic/typed-array-utils.js.map +0 -1
- package/dist/es5/context/context/context-state.js +0 -31
- package/dist/es5/context/context/context-state.js.map +0 -1
- package/dist/es5/context/context/create-context.js +0 -69
- package/dist/es5/context/context/create-context.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -115
- package/dist/es5/context/context/device-pixels.js.map +0 -1
- package/dist/es5/context/context/webgl-checks.js +0 -54
- package/dist/es5/context/context/webgl-checks.js.map +0 -1
- package/dist/es5/context/debug/spector.js +0 -133
- package/dist/es5/context/debug/spector.js.map +0 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
- package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
- package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-context.js +0 -135
- package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-table.js +0 -166
- package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/es5/context/state-tracker/track-context-state.js +0 -211
- package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/es5/context/state-tracker/with-parameters.js +0 -44
- package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/es5/index.js +0 -276
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/init.js +0 -10
- package/dist/es5/init.js.map +0 -1
- package/dist/es5/types/webgl.js +0 -6
- package/dist/es5/types/webgl.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/types.js.map +0 -1
- package/dist/esm/adapter/converters/device-parameters.js +0 -155
- package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
- package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/texture-formats.js +0 -954
- package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
- package/dist/esm/adapter/converters/vertex-formats.js +0 -35
- package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-features.js +0 -102
- package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
- package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
- package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/adapter/helpers/set-uniform.js +0 -115
- package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/esm/adapter/helpers/uniforms.js +0 -99
- package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
- package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
- package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-resource.js +0 -216
- package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
- package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
- package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
- package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-shader.js +0 -75
- package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/esm/adapter/resources/webgl-texture.js +0 -831
- package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/esm/adapter/webgl-canvas-context.js +0 -54
- package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/esm/adapter/webgl-device.js +0 -280
- package/dist/esm/adapter/webgl-device.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/classic/accessor.js +0 -144
- package/dist/esm/classic/accessor.js.map +0 -1
- package/dist/esm/classic/buffer.js +0 -384
- package/dist/esm/classic/buffer.js.map +0 -1
- package/dist/esm/classic/typed-array-utils.js +0 -112
- package/dist/esm/classic/typed-array-utils.js.map +0 -1
- package/dist/esm/context/context/context-state.js +0 -26
- package/dist/esm/context/context/context-state.js.map +0 -1
- package/dist/esm/context/context/create-context.js +0 -49
- package/dist/esm/context/context/create-context.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -98
- package/dist/esm/context/context/device-pixels.js.map +0 -1
- package/dist/esm/context/context/webgl-checks.js +0 -34
- package/dist/esm/context/context/webgl-checks.js.map +0 -1
- package/dist/esm/context/debug/spector.js +0 -76
- package/dist/esm/context/debug/spector.js.map +0 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
- package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
- package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-context.js +0 -92
- package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-table.js +0 -160
- package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/esm/context/state-tracker/track-context-state.js +0 -183
- package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/esm/context/state-tracker/with-parameters.js +0 -36
- package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/esm/index.js +0 -27
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/init.js +0 -4
- package/dist/esm/init.js.map +0 -1
- package/dist/esm/types/webgl.js +0 -2
- package/dist/esm/types/webgl.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/init.d.ts +0 -2
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -4
- package/dist/init.js.map +0 -1
- package/src/bundle.ts +0 -4
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/device-pixels.ts +0 -152
- package/src/init.ts +0 -4
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
RenderPipelineProps,
|
|
3
|
-
RenderPipelineParameters,
|
|
4
3
|
RenderPass,
|
|
5
4
|
Buffer,
|
|
6
5
|
Binding,
|
|
7
6
|
ShaderLayout,
|
|
8
7
|
PrimitiveTopology,
|
|
9
|
-
BindingLayout,
|
|
8
|
+
// BindingLayout,
|
|
10
9
|
AttributeLayout
|
|
11
10
|
} from '@luma.gl/api';
|
|
12
11
|
import {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';
|
|
13
12
|
import GL from '@luma.gl/constants';
|
|
13
|
+
|
|
14
14
|
import {getWebGLDataType} from '../converters/texture-formats';
|
|
15
15
|
import {getShaderLayout} from '../helpers/get-shader-layout';
|
|
16
|
-
import {withDeviceParameters} from '../converters/device-parameters';
|
|
16
|
+
import {withDeviceParameters, withGLParameters} from '../converters/device-parameters';
|
|
17
17
|
import {setUniform} from '../helpers/set-uniform';
|
|
18
18
|
// import {copyUniform, checkUniformValues} from '../../classes/uniforms';
|
|
19
19
|
|
|
@@ -35,7 +35,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
35
35
|
|
|
36
36
|
// configuration: ProgramConfiguration;
|
|
37
37
|
// Experimental flag to avoid deleting Program object while it is cached
|
|
38
|
-
varyings: string[];
|
|
38
|
+
varyings: string[] | null = null;
|
|
39
39
|
vertexArrayObject: WEBGLVertexArrayObject;
|
|
40
40
|
_indexBuffer?: Buffer;
|
|
41
41
|
uniforms: Record<string, any> = {};
|
|
@@ -43,14 +43,13 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
43
43
|
_textureUniforms: Record<string, any> = {};
|
|
44
44
|
_textureIndexCounter: number = 0;
|
|
45
45
|
_uniformCount: number = 0;
|
|
46
|
-
_uniformSetters: Record<string, Function
|
|
46
|
+
_uniformSetters: Record<string, Function> = {}; // TODO are these used?
|
|
47
47
|
|
|
48
48
|
constructor(device: WebGLDevice, props: RenderPipelineProps) {
|
|
49
49
|
super(device, props);
|
|
50
50
|
this.device = device;
|
|
51
51
|
this.handle = this.props.handle || this.device.gl.createProgram();
|
|
52
|
-
|
|
53
|
-
this.handle.__SPECTOR_Metadata = {id: this.props.id};
|
|
52
|
+
this.device.setSpectorMetadata(this.handle, {id: this.props.id});
|
|
54
53
|
|
|
55
54
|
// Create shaders if needed
|
|
56
55
|
this.vs = cast<WEBGLShader>(props.vs);
|
|
@@ -64,7 +63,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
64
63
|
if (varyings && varyings.length > 0) {
|
|
65
64
|
this.device.assertWebGL2();
|
|
66
65
|
this.varyings = varyings;
|
|
67
|
-
this.device.gl2
|
|
66
|
+
this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
this._compileAndLink();
|
|
@@ -73,10 +72,11 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
73
72
|
this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
destroy(): void {
|
|
75
|
+
override destroy(): void {
|
|
77
76
|
if (this.handle) {
|
|
78
77
|
this.device.gl.deleteProgram(this.handle);
|
|
79
|
-
this.handle = null;
|
|
78
|
+
// this.handle = null;
|
|
79
|
+
this.destroyed = true;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -93,7 +93,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
93
93
|
const attribute = getAttributeLayout(this.layout, name);
|
|
94
94
|
if (!attribute) {
|
|
95
95
|
log.warn(`Ignoring buffer supplied for unknown attribute "${name}" in pipeline "${this.id}" (buffer "${buffer.id}")`)();
|
|
96
|
-
continue;
|
|
96
|
+
continue; // eslint-disable-line no-continue
|
|
97
97
|
}
|
|
98
98
|
const decoded = decodeVertexFormat(attribute.format);
|
|
99
99
|
const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;
|
|
@@ -106,7 +106,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
106
106
|
offset: 0,
|
|
107
107
|
normalized,
|
|
108
108
|
integer,
|
|
109
|
-
divisor
|
|
109
|
+
divisor
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
112
|
}
|
|
@@ -121,6 +121,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
121
121
|
const binding = this.layout.bindings.find((binding) => binding.name === name);
|
|
122
122
|
if (!binding) {
|
|
123
123
|
log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();
|
|
124
|
+
continue; // eslint-disable-line no-continue
|
|
124
125
|
}
|
|
125
126
|
if (!value) {
|
|
126
127
|
log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();
|
|
@@ -170,18 +171,18 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
170
171
|
const {
|
|
171
172
|
renderPass = this.device.getDefaultRenderPass(),
|
|
172
173
|
vertexCount,
|
|
173
|
-
indexCount,
|
|
174
|
+
// indexCount,
|
|
174
175
|
instanceCount,
|
|
175
176
|
firstVertex = 0,
|
|
176
|
-
firstIndex,
|
|
177
|
-
firstInstance,
|
|
178
|
-
baseVertex
|
|
177
|
+
// firstIndex,
|
|
178
|
+
// firstInstance,
|
|
179
|
+
// baseVertex
|
|
179
180
|
} = options;
|
|
180
181
|
|
|
181
182
|
const drawMode = getDrawMode(this.props.topology);
|
|
182
183
|
const isIndexed: boolean = Boolean(this._indexBuffer);
|
|
183
184
|
const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;
|
|
184
|
-
const isInstanced: boolean = options.instanceCount > 0;
|
|
185
|
+
const isInstanced: boolean = Number(options.instanceCount) > 0;
|
|
185
186
|
|
|
186
187
|
// Avoid WebGL draw call when not rendering any data or values are incomplete
|
|
187
188
|
// Note: async textures set as uniforms might still be loading.
|
|
@@ -195,8 +196,6 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
195
196
|
this.device.gl.useProgram(this.handle);
|
|
196
197
|
|
|
197
198
|
this.vertexArrayObject.bind(() => {
|
|
198
|
-
const parameters = {...this.props.parameters, framebuffer: renderPass.props.framebuffer};
|
|
199
|
-
|
|
200
199
|
const primitiveMode = getGLPrimitive(this.props.topology);
|
|
201
200
|
const transformFeedback: any = null;
|
|
202
201
|
if (transformFeedback) {
|
|
@@ -208,31 +207,33 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
208
207
|
this._applyUniforms();
|
|
209
208
|
|
|
210
209
|
// TODO - double context push/pop
|
|
211
|
-
withDeviceParameters(this.device, parameters, () => {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
210
|
+
withDeviceParameters(this.device, this.props.parameters, () => {
|
|
211
|
+
withGLParameters(this.device, {framebuffer: renderPass.props.framebuffer}, () => {
|
|
212
|
+
// TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension
|
|
213
|
+
if (isIndexed && isInstanced) {
|
|
214
|
+
// ANGLE_instanced_arrays extension
|
|
215
|
+
this.device.gl2?.drawElementsInstanced(
|
|
216
|
+
drawMode,
|
|
217
|
+
vertexCount || 0, // indexCount?
|
|
218
|
+
indexType,
|
|
219
|
+
firstVertex,
|
|
220
|
+
instanceCount || 0
|
|
221
|
+
);
|
|
222
|
+
// } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {
|
|
223
|
+
// this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);
|
|
224
|
+
} else if (isIndexed) {
|
|
225
|
+
this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?
|
|
226
|
+
} else if (isInstanced) {
|
|
227
|
+
this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);
|
|
228
|
+
} else {
|
|
229
|
+
this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
if (transformFeedback) {
|
|
234
|
+
transformFeedback.end();
|
|
230
235
|
}
|
|
231
236
|
});
|
|
232
|
-
|
|
233
|
-
if (transformFeedback) {
|
|
234
|
-
transformFeedback.end();
|
|
235
|
-
}
|
|
236
237
|
});
|
|
237
238
|
|
|
238
239
|
return true;
|
|
@@ -275,12 +276,12 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
275
276
|
_areTexturesRenderable() {
|
|
276
277
|
let texturesRenderable = true;
|
|
277
278
|
|
|
278
|
-
for (const [
|
|
279
|
+
for (const [, texture] of Object.entries(this._textureUniforms)) {
|
|
279
280
|
texture.update();
|
|
280
281
|
texturesRenderable = texturesRenderable && texture.loaded;
|
|
281
282
|
}
|
|
282
283
|
|
|
283
|
-
for (const [
|
|
284
|
+
for (const [, texture] of Object.entries(this.bindings)) {
|
|
284
285
|
// texture.update();
|
|
285
286
|
if (texture.loaded !== undefined) {
|
|
286
287
|
texturesRenderable = texturesRenderable && texture.loaded;
|
|
@@ -295,6 +296,9 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
295
296
|
this.device.gl.useProgram(this.handle);
|
|
296
297
|
|
|
297
298
|
const {gl2} = this.device;
|
|
299
|
+
if (!gl2) {
|
|
300
|
+
throw new Error('bindings');
|
|
301
|
+
}
|
|
298
302
|
|
|
299
303
|
let textureUnit = 0;
|
|
300
304
|
let uniformBufferIndex = 0;
|
|
@@ -363,15 +367,17 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
363
367
|
/** Get the primitive type for transform feedback */
|
|
364
368
|
function getDrawMode(
|
|
365
369
|
topology: PrimitiveTopology
|
|
366
|
-
): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.TRIANGLES | GL.TRIANGLE_STRIP {
|
|
370
|
+
): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.LINE_LOOP | GL.TRIANGLES | GL.TRIANGLE_STRIP | GL.TRIANGLE_FAN {
|
|
367
371
|
// prettier-ignore
|
|
368
372
|
switch (topology) {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
373
|
+
case 'point-list': return GL.POINTS;
|
|
374
|
+
case 'line-list': return GL.LINES;
|
|
375
|
+
case 'line-strip': return GL.LINE_STRIP;
|
|
376
|
+
case 'line-loop': return GL.LINE_LOOP;
|
|
377
|
+
case 'triangle-list': return GL.TRIANGLES;
|
|
378
|
+
case 'triangle-strip': return GL.TRIANGLE_STRIP;
|
|
379
|
+
case 'triangle-fan': return GL.TRIANGLE_FAN;
|
|
380
|
+
default: throw new Error(topology);
|
|
375
381
|
}
|
|
376
382
|
}
|
|
377
383
|
|
|
@@ -379,31 +385,36 @@ function getDrawMode(
|
|
|
379
385
|
function getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {
|
|
380
386
|
// prettier-ignore
|
|
381
387
|
switch (topology) {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
function getAttributesByLocation(
|
|
392
|
-
attributes: Record<string, Buffer>,
|
|
393
|
-
layout: ShaderLayout
|
|
394
|
-
): Record<number, Buffer> {
|
|
395
|
-
const byLocation: Record<number, Buffer> = {};
|
|
396
|
-
for (const [name, buffer] of Object.entries(attributes)) {
|
|
397
|
-
const attribute = getAttributeLayout(layout, name);
|
|
398
|
-
byLocation[attribute.location] = buffer;
|
|
388
|
+
case 'point-list': return GL.POINTS;
|
|
389
|
+
case 'line-list': return GL.LINES;
|
|
390
|
+
case 'line-strip': return GL.LINES;
|
|
391
|
+
case 'line-loop': return GL.LINES;
|
|
392
|
+
case 'triangle-list': return GL.TRIANGLES;
|
|
393
|
+
case 'triangle-strip': return GL.TRIANGLES;
|
|
394
|
+
case 'triangle-fan': return GL.TRIANGLES;
|
|
395
|
+
default: throw new Error(topology);
|
|
399
396
|
}
|
|
400
|
-
return byLocation;
|
|
401
397
|
}
|
|
402
398
|
|
|
403
|
-
function
|
|
404
|
-
|
|
399
|
+
// function getAttributesByLocation(
|
|
400
|
+
// attributes: Record<string, Buffer>,
|
|
401
|
+
// layout: ShaderLayout
|
|
402
|
+
// ): Record<number, Buffer> {
|
|
403
|
+
// const byLocation: Record<number, Buffer> = {};
|
|
404
|
+
// for (const [name, buffer] of Object.entries(attributes)) {
|
|
405
|
+
// const attribute = getAttributeLayout(layout, name);
|
|
406
|
+
// if (attribute) {
|
|
407
|
+
// byLocation[attribute.location] = buffer;
|
|
408
|
+
// }
|
|
409
|
+
// }
|
|
410
|
+
// return byLocation;
|
|
411
|
+
// }
|
|
412
|
+
|
|
413
|
+
function getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {
|
|
414
|
+
return layout.attributes.find((binding) => binding.name === name) || null;
|
|
405
415
|
}
|
|
406
416
|
|
|
417
|
+
/* TODO
|
|
407
418
|
function getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {
|
|
408
419
|
const binding = layout.bindings.find((binding) => binding.name === name);
|
|
409
420
|
if (!binding) {
|
|
@@ -411,3 +422,4 @@ function getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {
|
|
|
411
422
|
}
|
|
412
423
|
return binding;
|
|
413
424
|
}
|
|
425
|
+
*/
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
|
|
1
3
|
import {Sampler, SamplerProps} from '@luma.gl/api';
|
|
2
4
|
import GL from '@luma.gl/constants';
|
|
3
|
-
import type {
|
|
5
|
+
import type {GLSamplerParameters} from '../../types/webgl';
|
|
4
6
|
import {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';
|
|
5
7
|
import type WebGLDevice from '../webgl-device';
|
|
6
8
|
|
|
@@ -14,7 +16,7 @@ import type WebGLDevice from '../webgl-device';
|
|
|
14
16
|
export default class WEBGLSampler extends Sampler {
|
|
15
17
|
readonly device: WebGLDevice;
|
|
16
18
|
readonly handle: WebGLSampler;
|
|
17
|
-
readonly parameters:
|
|
19
|
+
readonly parameters: GLSamplerParameters;
|
|
18
20
|
|
|
19
21
|
constructor(device: WebGLDevice, props: SamplerProps) {
|
|
20
22
|
super(device, props);
|
|
@@ -26,7 +28,7 @@ export default class WEBGLSampler extends Sampler {
|
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
|
|
29
|
-
destroy(): void {
|
|
31
|
+
override destroy(): void {
|
|
30
32
|
if (this.handle) {
|
|
31
33
|
this.device.gl2.deleteSampler(this.handle);
|
|
32
34
|
// @ts-expect-error
|
|
@@ -34,8 +36,12 @@ export default class WEBGLSampler extends Sampler {
|
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
|
|
39
|
+
override toString(): string {
|
|
40
|
+
return `Sampler(${this.id},${JSON.stringify(this.props)})`;
|
|
41
|
+
}
|
|
42
|
+
|
|
37
43
|
/** Set sampler parameters on the sampler */
|
|
38
|
-
private _setSamplerParameters(parameters:
|
|
44
|
+
private _setSamplerParameters(parameters: GLSamplerParameters): void {
|
|
39
45
|
for (const [pname, value] of Object.entries(parameters)) {
|
|
40
46
|
// Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
|
|
41
47
|
// For now, pick the float version for parameters specified as GLfloat.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
import {log, uid, Shader, ShaderProps} from '@luma.gl/api';
|
|
2
|
+
import {log, uid, Shader, ShaderProps, CompilerMessage, formatCompilerLog} from '@luma.gl/api';
|
|
3
3
|
import GL from '@luma.gl/constants';
|
|
4
|
-
import {getShaderInfo
|
|
4
|
+
import {getShaderInfo} from '../helpers/get-shader-info';
|
|
5
5
|
import {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';
|
|
6
6
|
import WebGLDevice from '../webgl-device';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* An immutable compiled shader program that execute portions of the GPU Pipeline
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
export default class WEBGLShader extends Shader {
|
|
12
12
|
readonly device: WebGLDevice;
|
|
13
13
|
readonly handle: WebGLShader;
|
|
14
14
|
|
|
@@ -28,18 +28,18 @@ import WebGLDevice from '../webgl-device';
|
|
|
28
28
|
this._compile(this.source);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
destroy(): void {
|
|
31
|
+
override destroy(): void {
|
|
32
32
|
if (this.handle) {
|
|
33
33
|
this.removeStats();
|
|
34
34
|
this.device.gl.deleteShader(this.handle);
|
|
35
|
-
//
|
|
36
|
-
this.
|
|
35
|
+
// this.handle = null;
|
|
36
|
+
this.destroyed = true;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
async compilationInfo(): Promise<readonly CompilerMessage[]> {
|
|
41
41
|
const log = this.device.gl.getShaderInfoLog(this.handle);
|
|
42
|
-
return parseShaderCompilerLog(log);
|
|
42
|
+
return log ? parseShaderCompilerLog(log) : [];
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// PRIVATE METHODS
|
|
@@ -58,7 +58,8 @@ import WebGLDevice from '../webgl-device';
|
|
|
58
58
|
const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);
|
|
59
59
|
if (!compileStatus) {
|
|
60
60
|
const shaderLog = gl.getShaderInfoLog(this.handle);
|
|
61
|
-
const
|
|
61
|
+
const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
|
|
62
|
+
const messages = parsedLog.filter(message => message.type === 'error');
|
|
62
63
|
const formattedLog = formatCompilerLog(messages, source);
|
|
63
64
|
const shaderName: string = getShaderInfo(source).name;
|
|
64
65
|
const shaderDescription = `${this.stage} shader ${shaderName}`;
|
|
@@ -10,11 +10,12 @@ import {
|
|
|
10
10
|
Sampler,
|
|
11
11
|
SamplerProps,
|
|
12
12
|
SamplerParameters,
|
|
13
|
+
TypedArray,
|
|
13
14
|
isObjectEmpty
|
|
14
15
|
} from '@luma.gl/api';
|
|
15
16
|
import {Texture, cast, log, assert, isPowerOfTwo, loadImage} from '@luma.gl/api';
|
|
16
17
|
import GL from '@luma.gl/constants';
|
|
17
|
-
import type {
|
|
18
|
+
import type {GLSamplerParameters} from '../../types/webgl';
|
|
18
19
|
import {withParameters} from '../../context/state-tracker/with-parameters';
|
|
19
20
|
import {
|
|
20
21
|
getWebGLTextureFormat,
|
|
@@ -31,22 +32,31 @@ import WEBGLSampler from './webgl-sampler';
|
|
|
31
32
|
|
|
32
33
|
export type {TextureProps};
|
|
33
34
|
|
|
35
|
+
export type TextureSourceData =
|
|
36
|
+
TypedArray |
|
|
37
|
+
ImageData |
|
|
38
|
+
HTMLImageElement |
|
|
39
|
+
HTMLCanvasElement |
|
|
40
|
+
ImageBitmap |
|
|
41
|
+
HTMLVideoElement
|
|
42
|
+
;
|
|
43
|
+
|
|
34
44
|
type SetImageDataOptions = {
|
|
35
45
|
target?: number;
|
|
36
46
|
level?: number;
|
|
37
47
|
dataFormat?: any;
|
|
38
|
-
width
|
|
39
|
-
height
|
|
48
|
+
width?: number;
|
|
49
|
+
height?: number;
|
|
40
50
|
depth?: number;
|
|
41
|
-
format
|
|
51
|
+
format?: any;
|
|
42
52
|
type?: any;
|
|
43
53
|
offset?: number;
|
|
44
|
-
data: any;
|
|
54
|
+
data: any; // TextureSourceData;
|
|
45
55
|
compressed?: boolean;
|
|
46
56
|
parameters?: Record<GL, any>;
|
|
47
57
|
/** @deprecated */
|
|
48
58
|
pixels?: any;
|
|
49
|
-
}
|
|
59
|
+
}
|
|
50
60
|
|
|
51
61
|
/**
|
|
52
62
|
* @param {*} pixels, data -
|
|
@@ -92,10 +102,10 @@ type SetSubImageDataOptions = {
|
|
|
92
102
|
type SetImageData3DOptions = {
|
|
93
103
|
level?: number;
|
|
94
104
|
dataFormat?: any;
|
|
95
|
-
width
|
|
96
|
-
height
|
|
105
|
+
width?: number;
|
|
106
|
+
height?: number;
|
|
97
107
|
depth?: number;
|
|
98
|
-
format
|
|
108
|
+
format?: any;
|
|
99
109
|
type?: any;
|
|
100
110
|
offset?: number;
|
|
101
111
|
data: any;
|
|
@@ -166,8 +176,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
166
176
|
this.gl = this.device.gl;
|
|
167
177
|
this.gl2 = this.device.gl2;
|
|
168
178
|
this.handle = this.props.handle || this.gl.createTexture();
|
|
169
|
-
|
|
170
|
-
this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};
|
|
179
|
+
this.device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data}); // {name: this.props.id};
|
|
171
180
|
|
|
172
181
|
this.target = getWebGLTextureTarget(this.props);
|
|
173
182
|
|
|
@@ -184,17 +193,17 @@ export default class WEBGLTexture extends Texture {
|
|
|
184
193
|
Object.seal(this);
|
|
185
194
|
}
|
|
186
195
|
|
|
187
|
-
destroy(): void {
|
|
196
|
+
override destroy(): void {
|
|
188
197
|
if (this.handle) {
|
|
189
198
|
this.gl.deleteTexture(this.handle);
|
|
190
199
|
this.removeStats();
|
|
191
200
|
this.trackDeallocatedMemory('Texture');
|
|
192
|
-
//
|
|
193
|
-
this.
|
|
201
|
+
// this.handle = null;
|
|
202
|
+
this.destroyed = true;
|
|
194
203
|
}
|
|
195
204
|
}
|
|
196
205
|
|
|
197
|
-
toString(): string {
|
|
206
|
+
override toString(): string {
|
|
198
207
|
return `Texture(${this.id},${this.width}x${this.height})`;
|
|
199
208
|
}
|
|
200
209
|
|
|
@@ -228,7 +237,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
228
237
|
return this;
|
|
229
238
|
}
|
|
230
239
|
|
|
231
|
-
|
|
240
|
+
const {parameters = {} as Record<GL, any>} = props;
|
|
232
241
|
|
|
233
242
|
const {
|
|
234
243
|
pixels = null, recreate = false, pixelStore = {}, textureUnit = undefined} = props;
|
|
@@ -357,7 +366,8 @@ export default class WEBGLTexture extends Texture {
|
|
|
357
366
|
* If size has changed, reinitializes with current format
|
|
358
367
|
* @note note clears image and mipmaps
|
|
359
368
|
*/
|
|
360
|
-
resize({height, width, mipmaps
|
|
369
|
+
resize(options: {height: number, width: number, mipmaps?: boolean}): this {
|
|
370
|
+
const {height, width, mipmaps = false} = options;
|
|
361
371
|
if (width !== this.width || height !== this.height) {
|
|
362
372
|
return this.initialize({
|
|
363
373
|
width,
|
|
@@ -372,7 +382,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
372
382
|
}
|
|
373
383
|
|
|
374
384
|
/** Update external texture (video frame) */
|
|
375
|
-
update():
|
|
385
|
+
update(): void {
|
|
376
386
|
if (this._video) {
|
|
377
387
|
const {video, parameters, lastTime} = this._video;
|
|
378
388
|
// @ts-expect-error
|
|
@@ -479,7 +489,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
479
489
|
withParameters(this.gl, parameters, () => {
|
|
480
490
|
switch (dataType) {
|
|
481
491
|
case 'null':
|
|
482
|
-
gl.texImage2D(target, level, format, width, height, 0 /*border*/, dataFormat, type, data);
|
|
492
|
+
gl.texImage2D(target, level, format, width, height, 0 /* border*/, dataFormat, type, data);
|
|
483
493
|
break;
|
|
484
494
|
case 'typed-array':
|
|
485
495
|
// Looks like this assert is not necessary, as offset is ignored under WebGL1
|
|
@@ -508,7 +518,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
508
518
|
format,
|
|
509
519
|
width,
|
|
510
520
|
height,
|
|
511
|
-
0 /*border*/,
|
|
521
|
+
0 /* border*/,
|
|
512
522
|
dataFormat,
|
|
513
523
|
type,
|
|
514
524
|
offset
|
|
@@ -523,7 +533,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
523
533
|
format,
|
|
524
534
|
width,
|
|
525
535
|
height,
|
|
526
|
-
0 /*border*/,
|
|
536
|
+
0 /* border*/,
|
|
527
537
|
dataFormat,
|
|
528
538
|
type,
|
|
529
539
|
data
|
|
@@ -713,7 +723,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
713
723
|
|
|
714
724
|
// HELPER METHODS
|
|
715
725
|
|
|
716
|
-
_deduceParameters(opts) {
|
|
726
|
+
_deduceParameters(opts: TextureProps) {
|
|
717
727
|
const {format, data} = opts;
|
|
718
728
|
let {width, height, dataFormat, type, compressed} = opts;
|
|
719
729
|
|
|
@@ -808,7 +818,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
808
818
|
resolvedFaces[index].forEach((image, lodLevel) => {
|
|
809
819
|
// TODO: adjust width & height for LOD!
|
|
810
820
|
if (width && height) {
|
|
811
|
-
gl.texImage2D(face, lodLevel, format, width, height, 0 /*border*/, format, type, image);
|
|
821
|
+
gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*/, format, type, image);
|
|
812
822
|
} else {
|
|
813
823
|
gl.texImage2D(face, lodLevel, format, format, type, image);
|
|
814
824
|
}
|
|
@@ -847,7 +857,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
847
857
|
)
|
|
848
858
|
);
|
|
849
859
|
} else if (this.width || this.height) {
|
|
850
|
-
gl.texImage2D(face, 0, format, width, height, 0 /*border*/, format, type, imageData);
|
|
860
|
+
gl.texImage2D(face, 0, format, width, height, 0 /* border*/, format, type, imageData);
|
|
851
861
|
} else {
|
|
852
862
|
gl.texImage2D(face, 0, format, format, type, imageData);
|
|
853
863
|
}
|
|
@@ -856,18 +866,20 @@ export default class WEBGLTexture extends Texture {
|
|
|
856
866
|
}
|
|
857
867
|
|
|
858
868
|
/** Image 3D copies from Typed Array or WebGLBuffer */
|
|
859
|
-
setImageData3D({
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
869
|
+
setImageData3D(options: SetImageData3DOptions) {
|
|
870
|
+
const {
|
|
871
|
+
level = 0,
|
|
872
|
+
dataFormat,
|
|
873
|
+
format,
|
|
874
|
+
type, // = GL.UNSIGNED_BYTE,
|
|
875
|
+
width,
|
|
876
|
+
height,
|
|
877
|
+
depth = 1,
|
|
878
|
+
offset = 0,
|
|
879
|
+
data,
|
|
880
|
+
parameters = {}
|
|
881
|
+
} = options;
|
|
882
|
+
|
|
871
883
|
this.trackDeallocatedMemory('Texture');
|
|
872
884
|
|
|
873
885
|
this.gl.bindTexture(this.target, this.handle);
|
|
@@ -927,7 +939,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
927
939
|
* Sets sampler parameters on texture
|
|
928
940
|
* @note: Applies NPOT workaround if appropriate
|
|
929
941
|
*/
|
|
930
|
-
_setSamplerParameters(parameters:
|
|
942
|
+
_setSamplerParameters(parameters: GLSamplerParameters): void {
|
|
931
943
|
// Work around WebGL1 sampling restrictions on NPOT textures
|
|
932
944
|
if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
|
|
933
945
|
parameters = updateSamplerParametersForNPOT(parameters);
|
|
@@ -943,7 +955,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
943
955
|
this.gl.bindTexture(this.target, this.handle);
|
|
944
956
|
for (const [pname, pvalue] of Object.entries(parameters)) {
|
|
945
957
|
const param = Number(pname);
|
|
946
|
-
|
|
958
|
+
const value = pvalue;
|
|
947
959
|
|
|
948
960
|
// Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
|
|
949
961
|
// For now, pick the float version for parameters specified as GLfloat.
|
|
@@ -959,7 +971,7 @@ export default class WEBGLTexture extends Texture {
|
|
|
959
971
|
}
|
|
960
972
|
}
|
|
961
973
|
this.gl.bindTexture(this.target, null);
|
|
962
|
-
return
|
|
974
|
+
return;
|
|
963
975
|
}
|
|
964
976
|
|
|
965
977
|
/** @deprecated For LegacyTexture subclass */
|
|
@@ -1018,6 +1030,4 @@ function isNPOT(width: number, height: number): boolean {
|
|
|
1018
1030
|
|
|
1019
1031
|
function logParameters(parameters: Record<number, GL | number>) {
|
|
1020
1032
|
log.log(1, 'texture sampler parameters', parameters)();
|
|
1021
|
-
for (const [pname, pvalue] of Object.entries(parameters)) {
|
|
1022
|
-
}
|
|
1023
1033
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
2
|
import type {CanvasContextProps} from '@luma.gl/api';
|
|
3
3
|
import {CanvasContext} from '@luma.gl/api';
|
|
4
|
-
import {getDevicePixelRatio, setDevicePixelRatio} from '../context/context/device-pixels';
|
|
5
4
|
import WebGLDevice from './webgl-device';
|
|
6
5
|
import WEBGLFramebuffer from './resources/webgl-framebuffer';
|
|
7
6
|
|
|
@@ -12,13 +11,14 @@ import WEBGLFramebuffer from './resources/webgl-framebuffer';
|
|
|
12
11
|
export default class WebGLCanvasContext extends CanvasContext {
|
|
13
12
|
readonly device: WebGLDevice;
|
|
14
13
|
presentationSize: [number, number];
|
|
15
|
-
private _framebuffer: WEBGLFramebuffer;
|
|
14
|
+
private _framebuffer: WEBGLFramebuffer | null = null;
|
|
16
15
|
|
|
17
16
|
constructor(device: WebGLDevice, props: CanvasContextProps) {
|
|
18
17
|
// Note: Base class creates / looks up the canvas (unless under Node.js)
|
|
19
18
|
super(props);
|
|
20
19
|
this.device = device;
|
|
21
20
|
this.presentationSize = [-1, -1];
|
|
21
|
+
this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
|
|
22
22
|
this.update();
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -49,17 +49,16 @@ export default class WebGLCanvasContext extends CanvasContext {
|
|
|
49
49
|
* canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio
|
|
50
50
|
* See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
|
|
51
51
|
*/
|
|
52
|
-
|
|
52
|
+
resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
|
|
53
53
|
// Resize browser context .
|
|
54
54
|
if (this.canvas) {
|
|
55
|
-
|
|
56
|
-
setDevicePixelRatio(this.device.gl, devicePixelRatio, options);
|
|
55
|
+
this.setDevicePixelRatio(devicePixelRatio, options);
|
|
57
56
|
return;
|
|
58
57
|
}
|
|
59
58
|
|
|
60
59
|
// Resize headless gl context
|
|
61
60
|
const ext = this.device.gl.getExtension('STACKGL_resize_drawingbuffer');
|
|
62
|
-
if (ext && options &&
|
|
61
|
+
if (ext && options && 'width' in options && 'height' in options) {
|
|
63
62
|
ext.resize(options.width, options.height);
|
|
64
63
|
}
|
|
65
64
|
}
|