@luma.gl/webgl 9.0.0-alpha.2 → 9.0.0-alpha.21
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.d.ts +2 -2
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
- package/dist/adapter/converters/renderbuffer-formats.js +2 -7
- 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 +3 -3
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +6 -22
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +3 -5
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +15 -68
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +6 -6
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +7 -17
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +18 -49
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts +2 -2
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +3 -18
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +3 -3
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +2 -15
- 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 +16 -16
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +17 -75
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +3 -3
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +3 -8
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +5 -5
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +51 -140
- 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 +5 -13
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +3 -4
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +8 -21
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +26 -26
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +66 -183
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/webgl-canvas-context.d.ts +3 -3
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +6 -19
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +53 -37
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +108 -109
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +1 -1
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +12 -36
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/buffer.d.ts +3 -4
- package/dist/classic/buffer.d.ts.map +1 -1
- package/dist/classic/buffer.js +30 -87
- 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 +9204 -0
- package/dist/index.cjs +5948 -0
- package/dist/index.d.ts +19 -19
- 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/.DS_Store +0 -0
- package/src/adapter/.DS_Store +0 -0
- package/src/adapter/converters/device-parameters.ts +45 -16
- package/src/adapter/converters/renderbuffer-formats.ts +1 -3
- 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 +59 -37
- 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 +8 -8
- package/src/adapter/objects/webgl-resource.ts +8 -13
- package/src/adapter/objects/webgl-vertex-array-object.ts +10 -10
- package/src/adapter/resources/webgl-buffer.ts +16 -16
- package/src/adapter/resources/webgl-command-buffer.ts +3 -3
- package/src/adapter/resources/webgl-command-encoder.ts +8 -8
- package/src/adapter/resources/webgl-external-texture.ts +1 -1
- package/src/adapter/resources/webgl-framebuffer.ts +36 -33
- package/src/adapter/resources/webgl-render-pass.ts +4 -3
- package/src/adapter/resources/webgl-render-pipeline.ts +89 -77
- package/src/adapter/resources/webgl-sampler.ts +12 -6
- package/src/adapter/resources/webgl-shader.ts +10 -9
- package/src/adapter/resources/webgl-texture.ts +55 -45
- package/src/adapter/webgl-canvas-context.ts +8 -9
- package/src/adapter/webgl-device.ts +153 -69
- package/src/classic/accessor.ts +2 -15
- package/src/classic/buffer.ts +18 -25
- package/src/classic/typed-array-utils.ts +4 -2
- package/src/context/.DS_Store +0 -0
- 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 +18 -12
- 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 +28 -26
- 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
|
@@ -6,10 +6,10 @@ import type {
|
|
|
6
6
|
CopyTextureToTextureOptions
|
|
7
7
|
} from '@luma.gl/api';
|
|
8
8
|
|
|
9
|
-
import CommandBuffer from './webgl-command-buffer';
|
|
10
|
-
import WebGLDevice from '../webgl-device';
|
|
9
|
+
import {CommandBuffer} from './webgl-command-buffer';
|
|
10
|
+
import {WebGLDevice} from '../webgl-device';
|
|
11
11
|
|
|
12
|
-
export
|
|
12
|
+
export class WEBGLCommandEncoder extends CommandEncoder {
|
|
13
13
|
readonly device: WebGLDevice;
|
|
14
14
|
|
|
15
15
|
readonly commandBuffer = new CommandBuffer();
|
|
@@ -19,7 +19,7 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
|
|
|
19
19
|
this.device = device;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
destroy() {}
|
|
22
|
+
override destroy(): void {}
|
|
23
23
|
|
|
24
24
|
// beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;
|
|
25
25
|
// beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;
|
|
@@ -41,10 +41,10 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
|
|
|
41
41
|
this.commandBuffer.commands.push({name: 'copy-texture-to-texture', options});
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
pushDebugGroup(groupLabel: string): void {}
|
|
45
|
-
popDebugGroup() {}
|
|
44
|
+
override pushDebugGroup(groupLabel: string): void {}
|
|
45
|
+
override popDebugGroup() {}
|
|
46
46
|
|
|
47
|
-
insertDebugMarker(markerLabel: string): void {}
|
|
47
|
+
override insertDebugMarker(markerLabel: string): void {}
|
|
48
48
|
|
|
49
49
|
// writeTimestamp(querySet: Query, queryIndex: number): void {}
|
|
50
50
|
|
|
@@ -55,4 +55,4 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
|
|
|
55
55
|
// destination: Buffer,
|
|
56
56
|
// destinationOffset?: number;
|
|
57
57
|
// }): void;
|
|
58
|
-
}
|
|
58
|
+
}
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {FramebufferProps, ColorTextureFormat} from '@luma.gl/api';
|
|
2
4
|
import {Framebuffer, Texture, log, assert} from '@luma.gl/api';
|
|
3
5
|
import GL from '@luma.gl/constants';
|
|
4
|
-
import WebGLDevice from '../webgl-device';
|
|
5
|
-
import
|
|
6
|
-
import
|
|
6
|
+
import {WebGLDevice} from '../webgl-device';
|
|
7
|
+
import {WEBGLTexture} from './webgl-texture';
|
|
8
|
+
import {WEBGLRenderbuffer} from '../objects/webgl-renderbuffer';
|
|
7
9
|
import {getWebGLTextureFormat, getWebGLDepthStencilAttachment} from '../converters/texture-formats';
|
|
8
10
|
|
|
9
11
|
export type TextureAttachment = [Texture, number?, number?];
|
|
10
|
-
export type Attachment =
|
|
12
|
+
export type Attachment = WEBGLTexture | WEBGLRenderbuffer | TextureAttachment;
|
|
11
13
|
|
|
12
14
|
/** luma.gl Framebuffer, WebGL implementation */
|
|
13
|
-
export
|
|
15
|
+
export class WEBGLFramebuffer extends Framebuffer {
|
|
14
16
|
device: WebGLDevice;
|
|
15
17
|
gl: WebGLRenderingContext;
|
|
16
18
|
handle: WebGLFramebuffer;
|
|
17
19
|
|
|
18
20
|
get texture() { return this.colorAttachments[0]; }
|
|
19
|
-
readonly colorAttachments:
|
|
20
|
-
readonly depthStencilAttachment:
|
|
21
|
-
protected _ownResources: (
|
|
21
|
+
readonly colorAttachments: WEBGLTexture[] = [];
|
|
22
|
+
readonly depthStencilAttachment: WEBGLTexture | null = null;
|
|
23
|
+
protected _ownResources: (WEBGLTexture | WEBGLRenderbuffer)[] = [];
|
|
22
24
|
|
|
23
25
|
constructor(device: WebGLDevice, props: FramebufferProps) {
|
|
24
26
|
super(device, props);
|
|
@@ -27,8 +29,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
27
29
|
this.handle = this.props.handle !== undefined ? this.props.handle : this.gl.createFramebuffer();
|
|
28
30
|
|
|
29
31
|
if (this.handle) { // default framebuffer is null...
|
|
30
|
-
|
|
31
|
-
this.handle.__SPECTOR_Metadata = {id: this.props.id, props: this.props};
|
|
32
|
+
device.setSpectorMetadata(this.handle, {id: this.props.id, props: this.props});
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
this.colorAttachments = this._createColorAttachments();
|
|
@@ -60,13 +61,14 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
destroy() {
|
|
64
|
+
override destroy(): void {
|
|
64
65
|
if (this.handle !== null) {
|
|
65
66
|
for (const resource of this._ownResources) {
|
|
66
67
|
resource.destroy();
|
|
67
68
|
}
|
|
68
69
|
this.gl.deleteFramebuffer(this.handle);
|
|
69
|
-
this.handle = null;
|
|
70
|
+
// this.handle = null;
|
|
71
|
+
this.destroyed = true;
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
|
|
@@ -84,12 +86,12 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
88
|
|
|
87
|
-
_createColorAttachments():
|
|
89
|
+
_createColorAttachments(): WEBGLTexture[] {
|
|
88
90
|
return this.props.colorAttachments.map(colorAttachment => {
|
|
89
91
|
if (!colorAttachment) {
|
|
90
92
|
return undefined;
|
|
91
93
|
}
|
|
92
|
-
if (colorAttachment instanceof
|
|
94
|
+
if (colorAttachment instanceof WEBGLTexture) {
|
|
93
95
|
return colorAttachment;
|
|
94
96
|
}
|
|
95
97
|
// if (typeof colorAttachment === 'default') {
|
|
@@ -101,7 +103,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
101
103
|
}
|
|
102
104
|
|
|
103
105
|
/** Create a color attachment */
|
|
104
|
-
protected _createColorAttachment(format: ColorTextureFormat, width: number, height: number):
|
|
106
|
+
protected _createColorAttachment(format: ColorTextureFormat, width: number, height: number): WEBGLTexture {
|
|
105
107
|
const texture = this.device._createTexture({
|
|
106
108
|
id: `${this.id}-color`,
|
|
107
109
|
data: null, // reserves texture memory, but texels are undefined
|
|
@@ -128,26 +130,26 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
128
130
|
// [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,
|
|
129
131
|
// [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE
|
|
130
132
|
// }
|
|
131
|
-
})
|
|
133
|
+
}) ;
|
|
132
134
|
this._ownResources.push(texture);
|
|
133
135
|
return texture;
|
|
134
136
|
}
|
|
135
137
|
|
|
136
138
|
/** Create a depth stencil attachment GL.DEPTH24_STENCIL8 */
|
|
137
|
-
protected _createDepthStencilAttachment():
|
|
139
|
+
protected _createDepthStencilAttachment(): WEBGLRenderbuffer | WEBGLTexture {
|
|
138
140
|
if (!this.props.depthStencilAttachment) {
|
|
139
141
|
return undefined;
|
|
140
142
|
}
|
|
141
|
-
if (this.props.depthStencilAttachment instanceof
|
|
143
|
+
if (this.props.depthStencilAttachment instanceof WEBGLRenderbuffer) {
|
|
142
144
|
return this.props.depthStencilAttachment;
|
|
143
145
|
}
|
|
144
146
|
if (this.props.depthStencilAttachment instanceof Texture) {
|
|
145
|
-
return this.props.depthStencilAttachment as unknown as
|
|
147
|
+
return this.props.depthStencilAttachment as unknown as WEBGLTexture;
|
|
146
148
|
}
|
|
147
149
|
const format = this.props.depthStencilAttachment;
|
|
148
150
|
const webglFormat = getWebGLTextureFormat(this.gl, format);
|
|
149
151
|
|
|
150
|
-
const texture = new
|
|
152
|
+
const texture = new WEBGLRenderbuffer(this.device, {
|
|
151
153
|
id: `${this.id}-depth-stencil`, // TODO misleading if not depth and stencil?
|
|
152
154
|
format: webglFormat,
|
|
153
155
|
// dataFormat: GL.DEPTH_STENCIL,
|
|
@@ -187,21 +189,22 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
187
189
|
}
|
|
188
190
|
|
|
189
191
|
/** Attach one attachment */
|
|
190
|
-
protected _attachOne(attachmentPoint: GL, attachment: Attachment):
|
|
191
|
-
if (attachment instanceof
|
|
192
|
-
this.
|
|
192
|
+
protected _attachOne(attachmentPoint: GL, attachment: Attachment): WEBGLTexture | WEBGLRenderbuffer {
|
|
193
|
+
if (attachment instanceof WEBGLRenderbuffer) {
|
|
194
|
+
this._attachWEBGLRenderbuffer(attachmentPoint, attachment);
|
|
193
195
|
return attachment;
|
|
194
196
|
} else if (Array.isArray(attachment)) {
|
|
195
197
|
const [texture, layer = 0, level = 0] = attachment;
|
|
196
|
-
this._attachTexture(attachmentPoint, texture as unknown as
|
|
197
|
-
return texture as unknown as
|
|
198
|
-
} else if (attachment instanceof
|
|
198
|
+
this._attachTexture(attachmentPoint, texture as unknown as WEBGLTexture, layer, level);
|
|
199
|
+
return texture as unknown as WEBGLTexture;
|
|
200
|
+
} else if (attachment instanceof WEBGLTexture) {
|
|
199
201
|
this._attachTexture(attachmentPoint, attachment, 0, 0);
|
|
200
202
|
return attachment;
|
|
201
203
|
}
|
|
204
|
+
throw new Error('attach');
|
|
202
205
|
}
|
|
203
206
|
|
|
204
|
-
protected
|
|
207
|
+
protected _attachWEBGLRenderbuffer(attachment: GL, renderbuffer: WEBGLRenderbuffer): void {
|
|
205
208
|
this.gl.framebufferRenderbuffer(
|
|
206
209
|
GL.FRAMEBUFFER,
|
|
207
210
|
attachment,
|
|
@@ -213,10 +216,10 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
213
216
|
/**
|
|
214
217
|
* @param attachment
|
|
215
218
|
* @param texture
|
|
216
|
-
* @param layer = 0 - index into
|
|
219
|
+
* @param layer = 0 - index into WEBGLTextureArray and Texture3D or face for `TextureCubeMap`
|
|
217
220
|
* @param level = 0 - mipmapLevel (must be 0 in WebGL1)
|
|
218
221
|
*/
|
|
219
|
-
|
|
222
|
+
protected _attachTexture(attachment: GL, texture: WEBGLTexture, layer: number, level: number): void {
|
|
220
223
|
const {gl, gl2} = this.device;
|
|
221
224
|
gl.bindTexture(texture.target, texture.handle);
|
|
222
225
|
|
|
@@ -224,7 +227,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
224
227
|
case GL.TEXTURE_2D_ARRAY:
|
|
225
228
|
case GL.TEXTURE_3D:
|
|
226
229
|
this.device.assertWebGL2();
|
|
227
|
-
gl2
|
|
230
|
+
gl2?.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
|
|
228
231
|
break;
|
|
229
232
|
|
|
230
233
|
case GL.TEXTURE_CUBE_MAP:
|
|
@@ -248,7 +251,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
|
|
|
248
251
|
// Helper functions
|
|
249
252
|
|
|
250
253
|
// Map an index to a cube map face constant
|
|
251
|
-
function mapIndexToCubeMapFace(layer) {
|
|
254
|
+
function mapIndexToCubeMapFace(layer: number | GL): GL {
|
|
252
255
|
// TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)
|
|
253
256
|
// if smaller assume layer is index, otherwise assume it is already a cube map face constant
|
|
254
257
|
return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
|
|
@@ -256,7 +259,7 @@ function mapIndexToCubeMapFace(layer) {
|
|
|
256
259
|
|
|
257
260
|
// Helper METHODS
|
|
258
261
|
// Get a string describing the framebuffer error if installed
|
|
259
|
-
function _getFrameBufferStatus(status) {
|
|
262
|
+
function _getFrameBufferStatus(status: GL) {
|
|
260
263
|
switch (status) {
|
|
261
264
|
case GL.FRAMEBUFFER_COMPLETE:
|
|
262
265
|
return 'success';
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import {RenderPass, RenderPassProps} from '@luma.gl/api';
|
|
2
|
-
import WebGLDevice from '../webgl-device';
|
|
2
|
+
import {WebGLDevice} from '../webgl-device';
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export class WEBGLRenderPass extends RenderPass {
|
|
5
5
|
readonly device: WebGLDevice;
|
|
6
6
|
|
|
7
7
|
constructor(device: WebGLDevice, props: RenderPassProps) {
|
|
8
8
|
super(device, props);
|
|
9
|
+
this.device = device;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
end(): void {}
|
|
12
13
|
|
|
13
14
|
pushDebugGroup(groupLabel: string): void {}
|
|
14
15
|
popDebugGroup(): void {}
|
|
@@ -1,32 +1,32 @@
|
|
|
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
|
|
|
20
|
-
import WebGLDevice from '../webgl-device';
|
|
21
|
-
import WEBGLBuffer from './webgl-buffer';
|
|
22
|
-
import WEBGLShader from './webgl-shader';
|
|
23
|
-
import WEBGLTexture from './webgl-texture';
|
|
24
|
-
import WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';
|
|
20
|
+
import {WebGLDevice} from '../webgl-device';
|
|
21
|
+
import {WEBGLBuffer} from './webgl-buffer';
|
|
22
|
+
import {WEBGLShader} from './webgl-shader';
|
|
23
|
+
import {WEBGLTexture} from './webgl-texture';
|
|
24
|
+
import {WEBGLVertexArrayObject} from '../objects/webgl-vertex-array-object';
|
|
25
25
|
|
|
26
26
|
const LOG_PROGRAM_PERF_PRIORITY = 4;
|
|
27
27
|
|
|
28
28
|
/** Creates a new render pipeline */
|
|
29
|
-
export
|
|
29
|
+
export class WEBGLRenderPipeline extends RenderPipeline {
|
|
30
30
|
device: WebGLDevice;
|
|
31
31
|
handle: WebGLProgram;
|
|
32
32
|
vs: WEBGLShader;
|
|
@@ -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,8 +1,10 @@
|
|
|
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
|
-
import type WebGLDevice from '../webgl-device';
|
|
7
|
+
import type {WebGLDevice} from '../webgl-device';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* Sampler object -
|
|
@@ -11,10 +13,10 @@ import type WebGLDevice from '../webgl-device';
|
|
|
11
13
|
* so that they can be set directly on the texture
|
|
12
14
|
* https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html
|
|
13
15
|
*/
|
|
14
|
-
export
|
|
16
|
+
export 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.
|