@luma.gl/webgl 9.0.0-alpha.14 → 9.0.0-alpha.16
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.js +199 -136
- package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
- package/dist/adapter/converters/renderbuffer-formats.js +62 -176
- package/dist/adapter/converters/sampler-parameters.js +149 -206
- package/dist/adapter/converters/texture-formats.d.ts +2 -2
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +437 -890
- package/dist/adapter/converters/vertex-formats.js +15 -33
- package/dist/adapter/device-helpers/device-features.js +119 -100
- package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +88 -86
- package/dist/adapter/device-helpers/get-device-info.js +42 -43
- package/dist/adapter/device-helpers/is-old-ie.js +9 -6
- package/dist/adapter/helpers/attribute-utils.js +50 -74
- 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 +27 -0
- package/dist/adapter/helpers/get-shader-layout.js +307 -296
- 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 +32 -33
- package/dist/adapter/helpers/set-uniform.js +67 -110
- package/dist/adapter/helpers/uniforms.js +80 -85
- package/dist/adapter/objects/constants-to-keys.js +33 -33
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +67 -86
- package/dist/adapter/objects/webgl-resource.js +213 -205
- 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 +74 -76
- package/dist/adapter/resources/webgl-buffer.js +150 -147
- package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +39 -55
- package/dist/adapter/resources/webgl-command-encoder.js +25 -49
- package/dist/adapter/resources/webgl-external-texture.js +91 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +231 -258
- 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 +8 -18
- package/dist/adapter/resources/webgl-render-pipeline.js +316 -378
- package/dist/adapter/resources/webgl-sampler.js +42 -47
- 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 +58 -68
- package/dist/adapter/resources/webgl-texture.d.ts +5 -5
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +661 -815
- package/dist/adapter/webgl-canvas-context.js +55 -49
- package/dist/adapter/webgl-device.js +288 -338
- package/dist/bundle.js +1 -2
- package/dist/classic/accessor.js +120 -127
- package/dist/classic/buffer.d.ts +1 -1
- package/dist/classic/buffer.d.ts.map +1 -1
- package/dist/classic/buffer.js +325 -356
- 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 +91 -101
- package/dist/context/context/create-browser-context.d.ts +1 -2
- package/dist/context/context/create-browser-context.d.ts.map +1 -1
- package/dist/context/context/create-browser-context.js +61 -52
- package/dist/context/context/create-headless-context.d.ts +1 -1
- package/dist/context/context/create-headless-context.d.ts.map +1 -1
- package/dist/context/context/create-headless-context.js +26 -33
- package/dist/context/context/webgl-checks.js +25 -20
- package/dist/context/debug/spector.d.ts +1 -2
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +53 -62
- 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 +106 -93
- package/dist/context/parameters/unified-parameter-api.js +91 -55
- package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +462 -423
- package/dist/context/polyfill/context-data.js +16 -12
- package/dist/context/polyfill/get-parameter-polyfill.js +91 -76
- package/dist/context/polyfill/polyfill-context.js +75 -80
- package/dist/context/polyfill/polyfill-table.js +133 -139
- package/dist/context/polyfill/polyfill-vertex-array-object.js +255 -297
- package/dist/context/state-tracker/deep-array-equal.js +16 -18
- package/dist/context/state-tracker/track-context-state.js +183 -161
- package/dist/context/state-tracker/with-parameters.js +43 -35
- package/dist/dist.min.js +1 -0
- package/dist/es5/adapter/converters/device-parameters.js +3 -38
- package/dist/es5/adapter/converters/device-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js +2 -14
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -1
- package/dist/es5/adapter/converters/sampler-parameters.js +2 -65
- package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/texture-formats.js +9 -81
- package/dist/es5/adapter/converters/texture-formats.js.map +1 -1
- package/dist/es5/adapter/converters/vertex-formats.js +0 -12
- package/dist/es5/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-features.js +6 -40
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +0 -10
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +0 -10
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -1
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +3 -25
- package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -1
- package/dist/es5/adapter/helpers/get-shader-info.js +31 -0
- package/dist/es5/adapter/helpers/get-shader-info.js.map +1 -0
- package/dist/es5/adapter/helpers/get-shader-layout.js +23 -101
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +6 -24
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/es5/adapter/helpers/set-uniform.js +0 -33
- package/dist/es5/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/es5/adapter/helpers/uniforms.js +13 -37
- package/dist/es5/adapter/helpers/uniforms.js.map +1 -1
- package/dist/es5/adapter/objects/constants-to-keys.js +1 -12
- package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +5 -33
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-resource.js +6 -60
- package/dist/es5/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +7 -35
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +20 -66
- package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-command-buffer.js +6 -32
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -18
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +10 -82
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-render-pass.js +2 -19
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +24 -133
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +2 -28
- package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-shader.js +13 -52
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-texture.js +137 -291
- package/dist/es5/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/es5/adapter/webgl-canvas-context.js +0 -24
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/es5/adapter/webgl-device.js +40 -127
- package/dist/es5/adapter/webgl-device.js.map +1 -1
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/classic/accessor.js +1 -31
- package/dist/es5/classic/accessor.js.map +1 -1
- package/dist/es5/classic/buffer.js +32 -102
- package/dist/es5/classic/buffer.js.map +1 -1
- package/dist/es5/classic/typed-array-utils.js +10 -37
- package/dist/es5/classic/typed-array-utils.js.map +1 -1
- package/dist/es5/context/context/create-browser-context.js +4 -21
- package/dist/es5/context/context/create-browser-context.js.map +1 -1
- package/dist/es5/context/context/create-headless-context.js +8 -21
- package/dist/es5/context/context/create-headless-context.js.map +1 -1
- package/dist/es5/context/context/webgl-checks.js +4 -14
- package/dist/es5/context/context/webgl-checks.js.map +1 -1
- package/dist/es5/context/debug/spector.js +20 -54
- package/dist/es5/context/debug/spector.js.map +1 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +19 -65
- package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/es5/context/parameters/unified-parameter-api.js +3 -28
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +18 -65
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/es5/context/polyfill/context-data.js +0 -3
- package/dist/es5/context/polyfill/context-data.js.map +1 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -12
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-context.js +8 -33
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-table.js +3 -27
- package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -70
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js +0 -5
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/es5/context/state-tracker/track-context-state.js +10 -53
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/context/state-tracker/with-parameters.js +1 -13
- package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/es5/index.js +72 -99
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +0 -3
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/types/webgl.js +0 -1
- package/dist/es5/types/webgl.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/esm/adapter/converters/device-parameters.js +0 -20
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -4
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -1
- package/dist/esm/adapter/converters/sampler-parameters.js +2 -57
- package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/esm/adapter/converters/texture-formats.js +8 -52
- package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
- package/dist/esm/adapter/converters/vertex-formats.js +0 -9
- package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-features.js +2 -19
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +0 -3
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +0 -6
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js +2 -1
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +0 -17
- package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -1
- package/dist/esm/adapter/helpers/get-shader-info.js +25 -0
- package/dist/esm/adapter/helpers/get-shader-info.js.map +1 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js +2 -48
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -7
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/esm/adapter/helpers/set-uniform.js +0 -30
- package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/esm/adapter/helpers/uniforms.js +0 -10
- package/dist/esm/adapter/helpers/uniforms.js.map +1 -1
- package/dist/esm/adapter/objects/constants-to-keys.js +0 -7
- package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +2 -18
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-resource.js +10 -57
- package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +5 -15
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +12 -40
- package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-command-buffer.js +2 -17
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -12
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -60
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-render-pass.js +1 -8
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -89
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +0 -12
- package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-shader.js +2 -16
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-texture.js +36 -154
- package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/esm/adapter/webgl-canvas-context.js +0 -14
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/esm/adapter/webgl-device.js +19 -89
- package/dist/esm/adapter/webgl-device.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/classic/accessor.js +10 -34
- package/dist/esm/classic/accessor.js.map +1 -1
- package/dist/esm/classic/buffer.js +15 -71
- package/dist/esm/classic/buffer.js.map +1 -1
- package/dist/esm/classic/typed-array-utils.js +0 -20
- package/dist/esm/classic/typed-array-utils.js.map +1 -1
- package/dist/esm/context/context/create-browser-context.js +6 -14
- package/dist/esm/context/context/create-browser-context.js.map +1 -1
- package/dist/esm/context/context/create-headless-context.js +2 -6
- package/dist/esm/context/context/create-headless-context.js.map +1 -1
- package/dist/esm/context/context/webgl-checks.js +0 -3
- package/dist/esm/context/context/webgl-checks.js.map +1 -1
- package/dist/esm/context/debug/spector.js +2 -14
- package/dist/esm/context/debug/spector.js.map +1 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +4 -22
- package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/esm/context/parameters/unified-parameter-api.js +2 -13
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -19
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/esm/context/polyfill/context-data.js +0 -2
- package/dist/esm/context/polyfill/context-data.js.map +1 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -5
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-context.js +14 -21
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-table.js +0 -23
- package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -70
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js +0 -4
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/esm/context/state-tracker/track-context-state.js +11 -45
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/context/state-tracker/with-parameters.js +0 -6
- package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/webgl.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/index.js +39 -25
- package/dist/init.js +1 -2
- package/dist/types/webgl.d.ts +20 -20
- package/dist/types/webgl.d.ts.map +1 -1
- package/dist/types/webgl.js +0 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/package.json +8 -8
- package/src/adapter/helpers/get-shader-info.ts +37 -0
- package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
- package/src/adapter/resources/webgl-render-pass.ts +1 -1
- package/src/adapter/resources/webgl-shader.ts +2 -2
- package/src/adapter/webgl-device.ts +1 -1
- package/src/context/debug/webgl-developer-tools.ts +0 -1
- package/src/types/webgl.ts +4 -4
- package/dist/adapter/converters/device-parameters.js.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/adapter/converters/texture-formats.js.map +0 -1
- package/dist/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/adapter/helpers/uniforms.js.map +0 -1
- package/dist/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/adapter/webgl-device.js.map +0 -1
- package/dist/bundle.js.map +0 -1
- package/dist/classic/accessor.js.map +0 -1
- package/dist/classic/buffer.js.map +0 -1
- package/dist/classic/typed-array-utils.js.map +0 -1
- package/dist/context/context/create-browser-context.js.map +0 -1
- package/dist/context/context/create-headless-context.js.map +0 -1
- package/dist/context/context/webgl-checks.js.map +0 -1
- package/dist/context/debug/spector.js.map +0 -1
- package/dist/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/context/polyfill/context-data.js.map +0 -1
- package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.js.map +0 -1
- package/dist/types/webgl.js.map +0 -1
- package/dist/types.js.map +0 -1
|
@@ -1,66 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
-
|
|
12
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
11
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
-
|
|
18
12
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
|
|
20
13
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
-
|
|
22
14
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
-
|
|
24
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
-
|
|
26
16
|
var _api = require("@luma.gl/api");
|
|
27
|
-
|
|
28
17
|
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
29
|
-
|
|
30
18
|
var _textureFormats = require("../converters/texture-formats");
|
|
31
|
-
|
|
32
19
|
var _getShaderLayout = require("../helpers/get-shader-layout");
|
|
33
|
-
|
|
34
20
|
var _deviceParameters = require("../converters/device-parameters");
|
|
35
|
-
|
|
36
21
|
var _setUniform = require("../helpers/set-uniform");
|
|
37
|
-
|
|
38
22
|
var _webglBuffer = _interopRequireDefault(require("./webgl-buffer"));
|
|
39
|
-
|
|
40
23
|
var _webglTexture = _interopRequireDefault(require("./webgl-texture"));
|
|
41
|
-
|
|
42
24
|
var _webglVertexArrayObject = _interopRequireDefault(require("../objects/webgl-vertex-array-object"));
|
|
43
|
-
|
|
44
25
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
45
|
-
|
|
46
26
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
47
|
-
|
|
48
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
49
|
-
|
|
27
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
50
28
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
51
|
-
|
|
52
29
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
53
|
-
|
|
54
30
|
var LOG_PROGRAM_PERF_PRIORITY = 4;
|
|
55
|
-
|
|
56
31
|
var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
57
32
|
(0, _inherits2.default)(WEBGLRenderPipeline, _RenderPipeline);
|
|
58
|
-
|
|
59
33
|
var _super = _createSuper(WEBGLRenderPipeline);
|
|
60
|
-
|
|
61
34
|
function WEBGLRenderPipeline(device, props) {
|
|
62
35
|
var _this;
|
|
63
|
-
|
|
64
36
|
(0, _classCallCheck2.default)(this, WEBGLRenderPipeline);
|
|
65
37
|
_this = _super.call(this, device, props);
|
|
66
38
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
|
|
@@ -85,25 +57,19 @@ var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
|
85
57
|
_this.vs = (0, _api.cast)(props.vs);
|
|
86
58
|
_this.fs = (0, _api.cast)(props.fs);
|
|
87
59
|
var varyings = props.varyings,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
60
|
+
_props$bufferMode = props.bufferMode,
|
|
61
|
+
bufferMode = _props$bufferMode === void 0 ? _constants.default.SEPARATE_ATTRIBS : _props$bufferMode;
|
|
91
62
|
if (varyings && varyings.length > 0) {
|
|
92
63
|
var _this$device$gl;
|
|
93
|
-
|
|
94
64
|
_this.device.assertWebGL2();
|
|
95
|
-
|
|
96
65
|
_this.varyings = varyings;
|
|
97
66
|
(_this$device$gl = _this.device.gl2) === null || _this$device$gl === void 0 ? void 0 : _this$device$gl.transformFeedbackVaryings(_this.handle, varyings, bufferMode);
|
|
98
67
|
}
|
|
99
|
-
|
|
100
68
|
_this._compileAndLink();
|
|
101
|
-
|
|
102
69
|
_this.layout = props.layout || (0, _getShaderLayout.getShaderLayout)(_this.device.gl, _this.handle);
|
|
103
70
|
_this.vertexArrayObject = new _webglVertexArrayObject.default(_this.device);
|
|
104
71
|
return _this;
|
|
105
72
|
}
|
|
106
|
-
|
|
107
73
|
(0, _createClass2.default)(WEBGLRenderPipeline, [{
|
|
108
74
|
key: "destroy",
|
|
109
75
|
value: function destroy() {
|
|
@@ -124,24 +90,20 @@ var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
|
124
90
|
value: function setAttributes(attributes) {
|
|
125
91
|
for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) {
|
|
126
92
|
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
93
|
+
name = _Object$entries$_i[0],
|
|
94
|
+
buffer = _Object$entries$_i[1];
|
|
130
95
|
var webglBuffer = (0, _api.cast)(buffer);
|
|
131
96
|
var attribute = getAttributeLayout(this.layout, name);
|
|
132
|
-
|
|
133
97
|
if (!attribute) {
|
|
134
98
|
_api.log.warn("Ignoring buffer supplied for unknown attribute \"".concat(name, "\" in pipeline \"").concat(this.id, "\" (buffer \"").concat(buffer.id, "\")"))();
|
|
135
|
-
|
|
136
99
|
continue;
|
|
137
100
|
}
|
|
138
|
-
|
|
139
101
|
var decoded = (0, _api.decodeVertexFormat)(attribute.format);
|
|
140
102
|
var typeString = decoded.type,
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
103
|
+
size = decoded.components,
|
|
104
|
+
stride = decoded.byteLength,
|
|
105
|
+
normalized = decoded.normalized,
|
|
106
|
+
integer = decoded.integer;
|
|
145
107
|
var divisor = attribute.stepMode === 'instance' ? 1 : 0;
|
|
146
108
|
var type = (0, _textureFormats.getWebGLDataType)(typeString);
|
|
147
109
|
this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {
|
|
@@ -159,56 +121,41 @@ var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
|
159
121
|
key: "setBindings",
|
|
160
122
|
value: function setBindings(bindings) {
|
|
161
123
|
var _this2 = this;
|
|
162
|
-
|
|
163
124
|
var _loop = function _loop() {
|
|
164
125
|
var _Object$entries2$_i = (0, _slicedToArray2.default)(_Object$entries2[_i2], 2),
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
126
|
+
name = _Object$entries2$_i[0],
|
|
127
|
+
value = _Object$entries2$_i[1];
|
|
168
128
|
var binding = _this2.layout.bindings.find(function (binding) {
|
|
169
129
|
return binding.name === name;
|
|
170
130
|
});
|
|
171
|
-
|
|
172
131
|
if (!binding) {
|
|
173
132
|
_api.log.warn("Unknown binding ".concat(name, " in render pipeline ").concat(_this2.id))();
|
|
174
|
-
|
|
175
133
|
return "continue";
|
|
176
134
|
}
|
|
177
|
-
|
|
178
135
|
if (!value) {
|
|
179
136
|
_api.log.warn("Unsetting binding ".concat(name, " in render pipeline ").concat(_this2.id))();
|
|
180
137
|
}
|
|
181
|
-
|
|
182
138
|
switch (binding.type) {
|
|
183
139
|
case 'uniform':
|
|
184
140
|
if (!(value instanceof _webglBuffer.default) && !(value.buffer instanceof _webglBuffer.default)) {
|
|
185
141
|
throw new Error('buffer value');
|
|
186
142
|
}
|
|
187
|
-
|
|
188
143
|
break;
|
|
189
|
-
|
|
190
144
|
case 'texture':
|
|
191
145
|
if (!(value instanceof _webglTexture.default)) {
|
|
192
146
|
throw new Error('texture value');
|
|
193
147
|
}
|
|
194
|
-
|
|
195
148
|
break;
|
|
196
|
-
|
|
197
149
|
case 'sampler':
|
|
198
150
|
_api.log.warn("Ignoring sampler ".concat(name))();
|
|
199
|
-
|
|
200
151
|
break;
|
|
201
|
-
|
|
202
152
|
default:
|
|
203
153
|
throw new Error(binding.type);
|
|
204
154
|
}
|
|
205
|
-
|
|
206
155
|
_this2.bindings[name] = value;
|
|
207
156
|
};
|
|
208
|
-
|
|
209
157
|
for (var _i2 = 0, _Object$entries2 = Object.entries(bindings); _i2 < _Object$entries2.length; _i2++) {
|
|
210
158
|
var _ret = _loop();
|
|
211
|
-
|
|
212
159
|
if (_ret === "continue") continue;
|
|
213
160
|
}
|
|
214
161
|
}
|
|
@@ -221,55 +168,45 @@ var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
|
221
168
|
key: "draw",
|
|
222
169
|
value: function draw(options) {
|
|
223
170
|
var _this$_indexBuffer,
|
|
224
|
-
|
|
225
|
-
|
|
171
|
+
_this3 = this;
|
|
226
172
|
var _options$renderPass = options.renderPass,
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
173
|
+
renderPass = _options$renderPass === void 0 ? this.device.getDefaultRenderPass() : _options$renderPass,
|
|
174
|
+
vertexCount = options.vertexCount,
|
|
175
|
+
instanceCount = options.instanceCount,
|
|
176
|
+
_options$firstVertex = options.firstVertex,
|
|
177
|
+
firstVertex = _options$firstVertex === void 0 ? 0 : _options$firstVertex;
|
|
232
178
|
var drawMode = getDrawMode(this.props.topology);
|
|
233
179
|
var isIndexed = Boolean(this._indexBuffer);
|
|
234
180
|
var indexType = ((_this$_indexBuffer = this._indexBuffer) === null || _this$_indexBuffer === void 0 ? void 0 : _this$_indexBuffer.props.indexType) === 'uint16' ? _constants.default.UNSIGNED_SHORT : _constants.default.UNSIGNED_INT;
|
|
235
181
|
var isInstanced = Number(options.instanceCount) > 0;
|
|
236
|
-
|
|
237
182
|
if (!this._areTexturesRenderable() || options.vertexCount === 0) {
|
|
238
183
|
return false;
|
|
239
184
|
}
|
|
240
|
-
|
|
241
185
|
this.device.gl.useProgram(this.handle);
|
|
242
186
|
this.vertexArrayObject.bind(function () {
|
|
243
187
|
var primitiveMode = getGLPrimitive(_this3.props.topology);
|
|
244
188
|
var transformFeedback = null;
|
|
245
|
-
|
|
246
189
|
if (transformFeedback) {
|
|
247
190
|
transformFeedback.begin(primitiveMode);
|
|
248
191
|
}
|
|
249
|
-
|
|
250
192
|
_this3._applyBindings();
|
|
251
|
-
|
|
252
193
|
_this3._applyUniforms();
|
|
253
|
-
|
|
254
194
|
(0, _deviceParameters.withDeviceParameters)(_this3.device, _this3.props.parameters, function () {
|
|
255
195
|
(0, _deviceParameters.withGLParameters)(_this3.device, {
|
|
256
196
|
framebuffer: renderPass.props.framebuffer
|
|
257
197
|
}, function () {
|
|
258
198
|
if (isIndexed && isInstanced) {
|
|
259
199
|
var _this3$device$gl;
|
|
260
|
-
|
|
261
200
|
(_this3$device$gl = _this3.device.gl2) === null || _this3$device$gl === void 0 ? void 0 : _this3$device$gl.drawElementsInstanced(drawMode, vertexCount || 0, indexType, firstVertex, instanceCount || 0);
|
|
262
201
|
} else if (isIndexed) {
|
|
263
202
|
_this3.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex);
|
|
264
203
|
} else if (isInstanced) {
|
|
265
204
|
var _this3$device$gl2;
|
|
266
|
-
|
|
267
205
|
(_this3$device$gl2 = _this3.device.gl2) === null || _this3$device$gl2 === void 0 ? void 0 : _this3$device$gl2.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);
|
|
268
206
|
} else {
|
|
269
207
|
_this3.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
|
|
270
208
|
}
|
|
271
209
|
});
|
|
272
|
-
|
|
273
210
|
if (transformFeedback) {
|
|
274
211
|
transformFeedback.end();
|
|
275
212
|
}
|
|
@@ -283,23 +220,16 @@ var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
|
283
220
|
var gl = this.device.gl;
|
|
284
221
|
gl.attachShader(this.handle, this.vs.handle);
|
|
285
222
|
gl.attachShader(this.handle, this.fs.handle);
|
|
286
|
-
|
|
287
223
|
_api.log.time(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
|
|
288
|
-
|
|
289
224
|
gl.linkProgram(this.handle);
|
|
290
|
-
|
|
291
225
|
_api.log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
|
|
292
|
-
|
|
293
226
|
if (gl.debug || _api.log.level > 0) {
|
|
294
227
|
var linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
|
|
295
|
-
|
|
296
228
|
if (!linked) {
|
|
297
229
|
throw new Error("Error linking: ".concat(gl.getProgramInfoLog(this.handle)));
|
|
298
230
|
}
|
|
299
|
-
|
|
300
231
|
gl.validateProgram(this.handle);
|
|
301
232
|
var validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
|
|
302
|
-
|
|
303
233
|
if (!validated) {
|
|
304
234
|
throw new Error("Error validating: ".concat(gl.getProgramInfoLog(this.handle)));
|
|
305
235
|
}
|
|
@@ -309,24 +239,19 @@ var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
|
309
239
|
key: "_areTexturesRenderable",
|
|
310
240
|
value: function _areTexturesRenderable() {
|
|
311
241
|
var texturesRenderable = true;
|
|
312
|
-
|
|
313
242
|
for (var _i3 = 0, _Object$entries3 = Object.entries(this._textureUniforms); _i3 < _Object$entries3.length; _i3++) {
|
|
314
243
|
var _Object$entries3$_i = (0, _slicedToArray2.default)(_Object$entries3[_i3], 2),
|
|
315
|
-
|
|
316
|
-
|
|
244
|
+
texture = _Object$entries3$_i[1];
|
|
317
245
|
texture.update();
|
|
318
246
|
texturesRenderable = texturesRenderable && texture.loaded;
|
|
319
247
|
}
|
|
320
|
-
|
|
321
248
|
for (var _i4 = 0, _Object$entries4 = Object.entries(this.bindings); _i4 < _Object$entries4.length; _i4++) {
|
|
322
249
|
var _Object$entries4$_i = (0, _slicedToArray2.default)(_Object$entries4[_i4], 2),
|
|
323
|
-
|
|
324
|
-
|
|
250
|
+
_texture = _Object$entries4$_i[1];
|
|
325
251
|
if (_texture.loaded !== undefined) {
|
|
326
252
|
texturesRenderable = texturesRenderable && _texture.loaded;
|
|
327
253
|
}
|
|
328
254
|
}
|
|
329
|
-
|
|
330
255
|
return texturesRenderable;
|
|
331
256
|
}
|
|
332
257
|
}, {
|
|
@@ -334,60 +259,46 @@ var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
|
334
259
|
value: function _applyBindings() {
|
|
335
260
|
this.device.gl.useProgram(this.handle);
|
|
336
261
|
var gl2 = this.device.gl2;
|
|
337
|
-
|
|
338
262
|
if (!gl2) {
|
|
339
263
|
throw new Error('bindings');
|
|
340
264
|
}
|
|
341
|
-
|
|
342
265
|
var textureUnit = 0;
|
|
343
266
|
var uniformBufferIndex = 0;
|
|
344
|
-
|
|
345
267
|
var _iterator = _createForOfIteratorHelper(this.layout.bindings),
|
|
346
|
-
|
|
347
|
-
|
|
268
|
+
_step;
|
|
348
269
|
try {
|
|
349
270
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
350
271
|
var binding = _step.value;
|
|
351
272
|
var value = this.bindings[binding.name];
|
|
352
|
-
|
|
353
273
|
if (!value) {
|
|
354
274
|
throw new Error("No value for binding ".concat(binding.name, " in ").concat(this.id));
|
|
355
275
|
}
|
|
356
|
-
|
|
357
276
|
switch (binding.type) {
|
|
358
277
|
case 'uniform':
|
|
359
278
|
var name = binding.name;
|
|
360
279
|
var location = gl2.getUniformBlockIndex(this.handle, name);
|
|
361
|
-
|
|
362
280
|
if (location === _constants.default.INVALID_INDEX) {
|
|
363
281
|
throw new Error("Invalid uniform block name ".concat(name));
|
|
364
282
|
}
|
|
365
|
-
|
|
366
283
|
gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);
|
|
367
|
-
|
|
368
284
|
if (value instanceof _webglBuffer.default) {
|
|
369
285
|
gl2.bindBufferBase(_constants.default.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
|
|
370
286
|
} else {
|
|
371
287
|
gl2.bindBufferRange(_constants.default.UNIFORM_BUFFER, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
|
|
372
288
|
}
|
|
373
|
-
|
|
374
289
|
uniformBufferIndex += 1;
|
|
375
290
|
break;
|
|
376
|
-
|
|
377
291
|
case 'texture':
|
|
378
292
|
if (!(value instanceof _webglTexture.default)) {
|
|
379
293
|
throw new Error('texture');
|
|
380
294
|
}
|
|
381
|
-
|
|
382
295
|
var texture = value;
|
|
383
296
|
gl2.activeTexture(_constants.default.TEXTURE0 + textureUnit);
|
|
384
297
|
gl2.bindTexture(texture.target, texture.handle);
|
|
385
298
|
textureUnit += 1;
|
|
386
299
|
break;
|
|
387
|
-
|
|
388
300
|
case 'sampler':
|
|
389
301
|
break;
|
|
390
|
-
|
|
391
302
|
case 'storage':
|
|
392
303
|
case 'read-only-storage':
|
|
393
304
|
throw new Error("binding type '".concat(binding.type, "' not supported in WebGL"));
|
|
@@ -403,17 +314,15 @@ var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
|
403
314
|
key: "_applyUniforms",
|
|
404
315
|
value: function _applyUniforms() {
|
|
405
316
|
var _iterator2 = _createForOfIteratorHelper(this.layout.uniforms || []),
|
|
406
|
-
|
|
407
|
-
|
|
317
|
+
_step2;
|
|
408
318
|
try {
|
|
409
319
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
410
320
|
var uniformLayout = _step2.value;
|
|
411
321
|
var name = uniformLayout.name,
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
322
|
+
location = uniformLayout.location,
|
|
323
|
+
type = uniformLayout.type,
|
|
324
|
+
textureUnit = uniformLayout.textureUnit;
|
|
415
325
|
var value = this.uniforms[name] || textureUnit;
|
|
416
|
-
|
|
417
326
|
if (value !== undefined) {
|
|
418
327
|
(0, _setUniform.setUniform)(this.device.gl, location, type, value);
|
|
419
328
|
}
|
|
@@ -427,65 +336,47 @@ var WEBGLRenderPipeline = function (_RenderPipeline) {
|
|
|
427
336
|
}]);
|
|
428
337
|
return WEBGLRenderPipeline;
|
|
429
338
|
}(_api.RenderPipeline);
|
|
430
|
-
|
|
431
339
|
exports.default = WEBGLRenderPipeline;
|
|
432
|
-
|
|
433
340
|
function getDrawMode(topology) {
|
|
434
341
|
switch (topology) {
|
|
435
342
|
case 'point-list':
|
|
436
343
|
return _constants.default.POINTS;
|
|
437
|
-
|
|
438
344
|
case 'line-list':
|
|
439
345
|
return _constants.default.LINES;
|
|
440
|
-
|
|
441
346
|
case 'line-strip':
|
|
442
347
|
return _constants.default.LINE_STRIP;
|
|
443
|
-
|
|
444
348
|
case 'line-loop':
|
|
445
349
|
return _constants.default.LINE_LOOP;
|
|
446
|
-
|
|
447
350
|
case 'triangle-list':
|
|
448
351
|
return _constants.default.TRIANGLES;
|
|
449
|
-
|
|
450
352
|
case 'triangle-strip':
|
|
451
353
|
return _constants.default.TRIANGLE_STRIP;
|
|
452
|
-
|
|
453
354
|
case 'triangle-fan':
|
|
454
355
|
return _constants.default.TRIANGLE_FAN;
|
|
455
|
-
|
|
456
356
|
default:
|
|
457
357
|
throw new Error(topology);
|
|
458
358
|
}
|
|
459
359
|
}
|
|
460
|
-
|
|
461
360
|
function getGLPrimitive(topology) {
|
|
462
361
|
switch (topology) {
|
|
463
362
|
case 'point-list':
|
|
464
363
|
return _constants.default.POINTS;
|
|
465
|
-
|
|
466
364
|
case 'line-list':
|
|
467
365
|
return _constants.default.LINES;
|
|
468
|
-
|
|
469
366
|
case 'line-strip':
|
|
470
367
|
return _constants.default.LINES;
|
|
471
|
-
|
|
472
368
|
case 'line-loop':
|
|
473
369
|
return _constants.default.LINES;
|
|
474
|
-
|
|
475
370
|
case 'triangle-list':
|
|
476
371
|
return _constants.default.TRIANGLES;
|
|
477
|
-
|
|
478
372
|
case 'triangle-strip':
|
|
479
373
|
return _constants.default.TRIANGLES;
|
|
480
|
-
|
|
481
374
|
case 'triangle-fan':
|
|
482
375
|
return _constants.default.TRIANGLES;
|
|
483
|
-
|
|
484
376
|
default:
|
|
485
377
|
throw new Error(topology);
|
|
486
378
|
}
|
|
487
379
|
}
|
|
488
|
-
|
|
489
380
|
function getAttributeLayout(layout, name) {
|
|
490
381
|
return layout.attributes.find(function (binding) {
|
|
491
382
|
return binding.name === name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":["LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","device","props","handle","gl","createProgram","__SPECTOR_Metadata","id","vs","fs","varyings","bufferMode","GL","SEPARATE_ATTRIBS","length","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","layout","vertexArrayObject","WEBGLVertexArrayObject","deleteProgram","destroyed","indexBuffer","webglBuffer","setElementBuffer","_indexBuffer","attributes","Object","entries","name","buffer","attribute","getAttributeLayout","log","warn","decoded","format","typeString","type","size","components","stride","byteLength","normalized","integer","divisor","stepMode","setBuffer","location","offset","bindings","value","binding","find","WEBGLBuffer","Error","WEBGLTexture","uniforms","assign","options","renderPass","getDefaultRenderPass","vertexCount","instanceCount","firstVertex","drawMode","getDrawMode","topology","isIndexed","Boolean","indexType","UNSIGNED_SHORT","UNSIGNED_INT","isInstanced","Number","_areTexturesRenderable","useProgram","bind","primitiveMode","getGLPrimitive","transformFeedback","begin","_applyBindings","_applyUniforms","parameters","framebuffer","drawElementsInstanced","drawElements","drawArraysInstanced","drawArrays","end","attachShader","time","linkProgram","timeEnd","debug","level","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","texturesRenderable","_textureUniforms","texture","update","loaded","undefined","textureUnit","uniformBufferIndex","getUniformBlockIndex","INVALID_INDEX","uniformBlockBinding","bindBufferBase","UNIFORM_BUFFER","bindBufferRange","activeTexture","TEXTURE0","bindTexture","target","uniformLayout","RenderPipeline","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN"],"mappings":"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","sourcesContent":["import type {\n RenderPipelineProps,\n RenderPass,\n Buffer,\n Binding,\n ShaderLayout,\n PrimitiveTopology,\n // BindingLayout,\n AttributeLayout\n} from '@luma.gl/api';\nimport {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\n\nimport {getWebGLDataType} from '../converters/texture-formats';\nimport {getShaderLayout} from '../helpers/get-shader-layout';\nimport {withDeviceParameters, withGLParameters} from '../converters/device-parameters';\nimport {setUniform} from '../helpers/set-uniform';\n// import {copyUniform, checkUniformValues} from '../../classes/uniforms';\n\nimport WebGLDevice from '../webgl-device';\nimport WEBGLBuffer from './webgl-buffer';\nimport WEBGLShader from './webgl-shader';\nimport WEBGLTexture from './webgl-texture';\nimport WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\n/** Creates a new render pipeline */\nexport default class WEBGLRenderPipeline extends RenderPipeline {\n device: WebGLDevice;\n handle: WebGLProgram;\n vs: WEBGLShader;\n fs: WEBGLShader;\n layout: ShaderLayout;\n\n // configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n varyings: string[] | null = null;\n vertexArrayObject: WEBGLVertexArrayObject;\n _indexBuffer?: Buffer;\n uniforms: Record<string, any> = {};\n bindings: Record<string, any> = {};\n _textureUniforms: Record<string, any> = {};\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function> = {}; // TODO are these used?\n\n constructor(device: WebGLDevice, props: RenderPipelineProps) {\n super(device, props);\n this.device = device;\n this.handle = this.props.handle || this.device.gl.createProgram();\n // @ts-expect-error\n this.handle.__SPECTOR_Metadata = {id: this.props.id};\n\n // Create shaders if needed\n this.vs = cast<WEBGLShader>(props.vs);\n this.fs = cast<WEBGLShader>(props.fs);\n // assert(this.vs.stage === 'vertex');\n // assert(this.fs.stage === 'fragment');\n\n // Setup varyings if supplied\n // @ts-expect-error WebGL only\n const {varyings, bufferMode = GL.SEPARATE_ATTRIBS} = props;\n if (varyings && varyings.length > 0) {\n this.device.assertWebGL2();\n this.varyings = varyings;\n this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n\n this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);\n this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);\n }\n\n override destroy(): void {\n if (this.handle) {\n this.device.gl.deleteProgram(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n setIndexBuffer(indexBuffer: Buffer): void {\n const webglBuffer = cast<WEBGLBuffer>(indexBuffer);\n this.vertexArrayObject.setElementBuffer(webglBuffer);\n this._indexBuffer = indexBuffer;\n }\n\n /** @todo needed for portable model */\n setAttributes(attributes: Record<string, Buffer>): void {\n for (const [name, buffer] of Object.entries(attributes)) {\n const webglBuffer = cast<WEBGLBuffer>(buffer);\n const attribute = getAttributeLayout(this.layout, name);\n if (!attribute) {\n log.warn(`Ignoring buffer supplied for unknown attribute \"${name}\" in pipeline \"${this.id}\" (buffer \"${buffer.id}\")`)();\n continue;\n }\n const decoded = decodeVertexFormat(attribute.format);\n const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;\n const divisor = attribute.stepMode === 'instance' ? 1 : 0;\n const type = getWebGLDataType(typeString);\n this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {\n size,\n type,\n stride,\n offset: 0,\n normalized,\n integer,\n divisor\n });\n }\n }\n\n /** @todo needed for portable model */\n setBindings(bindings: Record<string, Binding>): void {\n // if (log.priority >= 2) {\n // checkUniformValues(uniforms, this.id, this._uniformSetters);\n // }\n\n for (const [name, value] of Object.entries(bindings)) {\n const binding = this.layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();\n continue;\n }\n if (!value) {\n log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();\n }\n switch (binding.type) {\n case 'uniform':\n // @ts-expect-error\n if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {\n throw new Error('buffer value');\n }\n break;\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture value');\n }\n break;\n case 'sampler':\n log.warn(`Ignoring sampler ${name}`)();\n break;\n default:\n throw new Error(binding.type);\n }\n\n this.bindings[name] = value;\n }\n }\n\n setUniforms(uniforms: Record<string, any>) {\n // TODO - check against layout\n Object.assign(this.uniforms, uniforms);\n }\n\n /** @todo needed for portable model\n * @note The WebGL API is offers many ways to draw things\n * This function unifies those ways into a single call using common parameters with sane defaults\n */\n draw(options: {\n renderPass?: RenderPass;\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n }): boolean {\n const {\n renderPass = this.device.getDefaultRenderPass(),\n vertexCount,\n // indexCount,\n instanceCount,\n firstVertex = 0,\n // firstIndex,\n // firstInstance,\n // baseVertex\n } = options;\n\n const drawMode = getDrawMode(this.props.topology);\n const isIndexed: boolean = Boolean(this._indexBuffer);\n const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;\n const isInstanced: boolean = Number(options.instanceCount) > 0;\n\n // Avoid WebGL draw call when not rendering any data or values are incomplete\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n if (!this._areTexturesRenderable() || options.vertexCount === 0) {\n // (isInstanced && instanceCount === 0)\n return false;\n }\n\n this.device.gl.useProgram(this.handle);\n\n this.vertexArrayObject.bind(() => {\n const primitiveMode = getGLPrimitive(this.props.topology);\n const transformFeedback: any = null;\n if (transformFeedback) {\n transformFeedback.begin(primitiveMode);\n }\n\n // We have to apply bindings before every draw call since other draw calls will overwrite\n this._applyBindings();\n this._applyUniforms();\n\n // TODO - double context push/pop\n withDeviceParameters(this.device, this.props.parameters, () => {\n withGLParameters(this.device, {framebuffer: renderPass.props.framebuffer}, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n // ANGLE_instanced_arrays extension\n this.device.gl2?.drawElementsInstanced(\n drawMode,\n vertexCount || 0, // indexCount?\n indexType,\n firstVertex,\n instanceCount || 0\n );\n // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {\n // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?\n } else if (isInstanced) {\n this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);\n } else {\n this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n });\n\n return true;\n }\n\n // setAttributes(attributes: Record<string, Buffer>): void {}\n // setBindings(bindings: Record<string, Binding>): void {}\n\n protected _compileAndLink() {\n const {gl} = this.device;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // PRIVATE METHODS\n\n /**\n * Checks if all texture-values uniforms are renderable (i.e. loaded)\n * Update a texture if needed (e.g. from video)\n * Note: This is currently done before every draw call\n */\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const [, texture] of Object.entries(this._textureUniforms)) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n for (const [, texture] of Object.entries(this.bindings)) {\n // texture.update();\n if (texture.loaded !== undefined) {\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n }\n\n return texturesRenderable;\n }\n\n /** Apply any bindings */\n _applyBindings() {\n this.device.gl.useProgram(this.handle);\n\n const {gl2} = this.device;\n if (!gl2) {\n throw new Error('bindings');\n }\n\n let textureUnit = 0;\n let uniformBufferIndex = 0;\n for (const binding of this.layout.bindings) {\n const value = this.bindings[binding.name];\n if (!value) {\n throw new Error(`No value for binding ${binding.name} in ${this.id}`);\n }\n switch (binding.type) {\n case 'uniform':\n // Set buffer\n const {name} = binding;\n const location = gl2.getUniformBlockIndex(this.handle, name);\n if (location === GL.INVALID_INDEX) {\n throw new Error(`Invalid uniform block name ${name}`);\n }\n gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);\n // console.debug(binding, location);\n if (value instanceof WEBGLBuffer) {\n gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);\n } else {\n gl2.bindBufferRange(\n GL.UNIFORM_BUFFER,\n uniformBufferIndex,\n value.buffer.handle,\n value.offset || 0,\n value.size || value.buffer.byteLength - value.offset\n );\n }\n uniformBufferIndex += 1;\n break;\n\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture');\n }\n const texture: WEBGLTexture = value;\n gl2.activeTexture(GL.TEXTURE0 + textureUnit);\n gl2.bindTexture(texture.target, texture.handle);\n // gl2.bindSampler(textureUnit, sampler.handle);\n textureUnit += 1;\n break;\n\n case 'sampler':\n // ignore\n break;\n\n case 'storage':\n case 'read-only-storage':\n throw new Error(`binding type '${binding.type}' not supported in WebGL`);\n }\n }\n }\n\n _applyUniforms() {\n for (const uniformLayout of this.layout.uniforms || []) {\n const {name, location, type, textureUnit} = uniformLayout;\n const value = this.uniforms[name] || textureUnit;\n if (value !== undefined) {\n setUniform(this.device.gl, location, type, value);\n }\n }\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getDrawMode(\n topology: PrimitiveTopology\n): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.LINE_LOOP | GL.TRIANGLES | GL.TRIANGLE_STRIP | GL.TRIANGLE_FAN {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINE_STRIP;\n case 'line-loop': return GL.LINE_LOOP;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLE_STRIP;\n case 'triangle-fan': return GL.TRIANGLE_FAN;\n default: throw new Error(topology);\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINES;\n case 'line-loop': return GL.LINES;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLES;\n case 'triangle-fan': return GL.TRIANGLES;\n default: throw new Error(topology);\n }\n}\n\n// function getAttributesByLocation(\n// attributes: Record<string, Buffer>,\n// layout: ShaderLayout\n// ): Record<number, Buffer> {\n// const byLocation: Record<number, Buffer> = {};\n// for (const [name, buffer] of Object.entries(attributes)) {\n// const attribute = getAttributeLayout(layout, name);\n// if (attribute) {\n// byLocation[attribute.location] = buffer;\n// }\n// }\n// return byLocation;\n// }\n\nfunction getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {\n return layout.attributes.find((binding) => binding.name === name) || null;\n}\n\n/* TODO\nfunction getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {\n const binding = layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n throw new Error(`Unknown binding ${name}`);\n }\n return binding;\n}\n*/\n"],"file":"webgl-render-pipeline.js"}
|
|
1
|
+
{"version":3,"file":"webgl-render-pipeline.js","names":["_api","require","_constants","_interopRequireDefault","_textureFormats","_getShaderLayout","_deviceParameters","_setUniform","_webglBuffer","_webglTexture","_webglVertexArrayObject","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","_RenderPipeline","_inherits2","_super","device","props","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","handle","gl","createProgram","__SPECTOR_Metadata","id","vs","cast","fs","varyings","_props$bufferMode","bufferMode","GL","SEPARATE_ATTRIBS","_this$device$gl","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","layout","getShaderLayout","vertexArrayObject","WEBGLVertexArrayObject","_createClass2","key","destroy","deleteProgram","destroyed","setIndexBuffer","indexBuffer","webglBuffer","setElementBuffer","_indexBuffer","setAttributes","attributes","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray2","buffer","attribute","getAttributeLayout","log","warn","concat","decoded","decodeVertexFormat","format","typeString","type","size","components","stride","byteLength","normalized","integer","divisor","stepMode","getWebGLDataType","setBuffer","location","offset","setBindings","bindings","_this2","_loop","_Object$entries2$_i","_Object$entries2","_i2","binding","find","WEBGLBuffer","Error","WEBGLTexture","_ret","setUniforms","uniforms","assign","draw","options","_this$_indexBuffer","_this3","_options$renderPass","renderPass","getDefaultRenderPass","vertexCount","instanceCount","_options$firstVertex","firstVertex","drawMode","getDrawMode","topology","isIndexed","indexType","UNSIGNED_SHORT","UNSIGNED_INT","isInstanced","Number","_areTexturesRenderable","useProgram","bind","primitiveMode","getGLPrimitive","transformFeedback","begin","_applyBindings","_applyUniforms","withDeviceParameters","parameters","withGLParameters","framebuffer","_this3$device$gl","drawElementsInstanced","drawElements","_this3$device$gl2","drawArraysInstanced","drawArrays","end","attachShader","time","linkProgram","timeEnd","debug","level","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","texturesRenderable","_i3","_Object$entries3","_textureUniforms","_Object$entries3$_i","texture","update","loaded","_i4","_Object$entries4","_Object$entries4$_i","undefined","textureUnit","uniformBufferIndex","_iterator","_step","getUniformBlockIndex","INVALID_INDEX","uniformBlockBinding","bindBufferBase","UNIFORM_BUFFER","bindBufferRange","activeTexture","TEXTURE0","bindTexture","target","_iterator2","_step2","uniformLayout","setUniform","RenderPipeline","exports","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN"],"sources":["../../../../src/adapter/resources/webgl-render-pipeline.ts"],"sourcesContent":["import type {\n RenderPipelineProps,\n RenderPass,\n Buffer,\n Binding,\n ShaderLayout,\n PrimitiveTopology,\n // BindingLayout,\n AttributeLayout\n} from '@luma.gl/api';\nimport {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\n\nimport {getWebGLDataType} from '../converters/texture-formats';\nimport {getShaderLayout} from '../helpers/get-shader-layout';\nimport {withDeviceParameters, withGLParameters} from '../converters/device-parameters';\nimport {setUniform} from '../helpers/set-uniform';\n// import {copyUniform, checkUniformValues} from '../../classes/uniforms';\n\nimport WebGLDevice from '../webgl-device';\nimport WEBGLBuffer from './webgl-buffer';\nimport WEBGLShader from './webgl-shader';\nimport WEBGLTexture from './webgl-texture';\nimport WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\n/** Creates a new render pipeline */\nexport default class WEBGLRenderPipeline extends RenderPipeline {\n device: WebGLDevice;\n handle: WebGLProgram;\n vs: WEBGLShader;\n fs: WEBGLShader;\n layout: ShaderLayout;\n\n // configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n varyings: string[] | null = null;\n vertexArrayObject: WEBGLVertexArrayObject;\n _indexBuffer?: Buffer;\n uniforms: Record<string, any> = {};\n bindings: Record<string, any> = {};\n _textureUniforms: Record<string, any> = {};\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function> = {}; // TODO are these used?\n\n constructor(device: WebGLDevice, props: RenderPipelineProps) {\n super(device, props);\n this.device = device;\n this.handle = this.props.handle || this.device.gl.createProgram();\n // @ts-expect-error\n this.handle.__SPECTOR_Metadata = {id: this.props.id};\n\n // Create shaders if needed\n this.vs = cast<WEBGLShader>(props.vs);\n this.fs = cast<WEBGLShader>(props.fs);\n // assert(this.vs.stage === 'vertex');\n // assert(this.fs.stage === 'fragment');\n\n // Setup varyings if supplied\n // @ts-expect-error WebGL only\n const {varyings, bufferMode = GL.SEPARATE_ATTRIBS} = props;\n if (varyings && varyings.length > 0) {\n this.device.assertWebGL2();\n this.varyings = varyings;\n this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n\n this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);\n this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);\n }\n\n override destroy(): void {\n if (this.handle) {\n this.device.gl.deleteProgram(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n setIndexBuffer(indexBuffer: Buffer): void {\n const webglBuffer = cast<WEBGLBuffer>(indexBuffer);\n this.vertexArrayObject.setElementBuffer(webglBuffer);\n this._indexBuffer = indexBuffer;\n }\n\n /** @todo needed for portable model */\n setAttributes(attributes: Record<string, Buffer>): void {\n for (const [name, buffer] of Object.entries(attributes)) {\n const webglBuffer = cast<WEBGLBuffer>(buffer);\n const attribute = getAttributeLayout(this.layout, name);\n if (!attribute) {\n log.warn(`Ignoring buffer supplied for unknown attribute \"${name}\" in pipeline \"${this.id}\" (buffer \"${buffer.id}\")`)();\n continue;\n }\n const decoded = decodeVertexFormat(attribute.format);\n const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;\n const divisor = attribute.stepMode === 'instance' ? 1 : 0;\n const type = getWebGLDataType(typeString);\n this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {\n size,\n type,\n stride,\n offset: 0,\n normalized,\n integer,\n divisor\n });\n }\n }\n\n /** @todo needed for portable model */\n setBindings(bindings: Record<string, Binding>): void {\n // if (log.priority >= 2) {\n // checkUniformValues(uniforms, this.id, this._uniformSetters);\n // }\n\n for (const [name, value] of Object.entries(bindings)) {\n const binding = this.layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();\n continue;\n }\n if (!value) {\n log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();\n }\n switch (binding.type) {\n case 'uniform':\n // @ts-expect-error\n if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {\n throw new Error('buffer value');\n }\n break;\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture value');\n }\n break;\n case 'sampler':\n log.warn(`Ignoring sampler ${name}`)();\n break;\n default:\n throw new Error(binding.type);\n }\n\n this.bindings[name] = value;\n }\n }\n\n setUniforms(uniforms: Record<string, any>) {\n // TODO - check against layout\n Object.assign(this.uniforms, uniforms);\n }\n\n /** @todo needed for portable model\n * @note The WebGL API is offers many ways to draw things\n * This function unifies those ways into a single call using common parameters with sane defaults\n */\n draw(options: {\n renderPass?: RenderPass;\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n }): boolean {\n const {\n renderPass = this.device.getDefaultRenderPass(),\n vertexCount,\n // indexCount,\n instanceCount,\n firstVertex = 0,\n // firstIndex,\n // firstInstance,\n // baseVertex\n } = options;\n\n const drawMode = getDrawMode(this.props.topology);\n const isIndexed: boolean = Boolean(this._indexBuffer);\n const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;\n const isInstanced: boolean = Number(options.instanceCount) > 0;\n\n // Avoid WebGL draw call when not rendering any data or values are incomplete\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n if (!this._areTexturesRenderable() || options.vertexCount === 0) {\n // (isInstanced && instanceCount === 0)\n return false;\n }\n\n this.device.gl.useProgram(this.handle);\n\n this.vertexArrayObject.bind(() => {\n const primitiveMode = getGLPrimitive(this.props.topology);\n const transformFeedback: any = null;\n if (transformFeedback) {\n transformFeedback.begin(primitiveMode);\n }\n\n // We have to apply bindings before every draw call since other draw calls will overwrite\n this._applyBindings();\n this._applyUniforms();\n\n // TODO - double context push/pop\n withDeviceParameters(this.device, this.props.parameters, () => {\n withGLParameters(this.device, {framebuffer: renderPass.props.framebuffer}, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n // ANGLE_instanced_arrays extension\n this.device.gl2?.drawElementsInstanced(\n drawMode,\n vertexCount || 0, // indexCount?\n indexType,\n firstVertex,\n instanceCount || 0\n );\n // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {\n // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?\n } else if (isInstanced) {\n this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);\n } else {\n this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n });\n\n return true;\n }\n\n // setAttributes(attributes: Record<string, Buffer>): void {}\n // setBindings(bindings: Record<string, Binding>): void {}\n\n protected _compileAndLink() {\n const {gl} = this.device;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // PRIVATE METHODS\n\n /**\n * Checks if all texture-values uniforms are renderable (i.e. loaded)\n * Update a texture if needed (e.g. from video)\n * Note: This is currently done before every draw call\n */\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const [, texture] of Object.entries(this._textureUniforms)) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n for (const [, texture] of Object.entries(this.bindings)) {\n // texture.update();\n if (texture.loaded !== undefined) {\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n }\n\n return texturesRenderable;\n }\n\n /** Apply any bindings */\n _applyBindings() {\n this.device.gl.useProgram(this.handle);\n\n const {gl2} = this.device;\n if (!gl2) {\n throw new Error('bindings');\n }\n\n let textureUnit = 0;\n let uniformBufferIndex = 0;\n for (const binding of this.layout.bindings) {\n const value = this.bindings[binding.name];\n if (!value) {\n throw new Error(`No value for binding ${binding.name} in ${this.id}`);\n }\n switch (binding.type) {\n case 'uniform':\n // Set buffer\n const {name} = binding;\n const location = gl2.getUniformBlockIndex(this.handle, name);\n if (location === GL.INVALID_INDEX) {\n throw new Error(`Invalid uniform block name ${name}`);\n }\n gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);\n // console.debug(binding, location);\n if (value instanceof WEBGLBuffer) {\n gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);\n } else {\n gl2.bindBufferRange(\n GL.UNIFORM_BUFFER,\n uniformBufferIndex,\n value.buffer.handle,\n value.offset || 0,\n value.size || value.buffer.byteLength - value.offset\n );\n }\n uniformBufferIndex += 1;\n break;\n\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture');\n }\n const texture: WEBGLTexture = value;\n gl2.activeTexture(GL.TEXTURE0 + textureUnit);\n gl2.bindTexture(texture.target, texture.handle);\n // gl2.bindSampler(textureUnit, sampler.handle);\n textureUnit += 1;\n break;\n\n case 'sampler':\n // ignore\n break;\n\n case 'storage':\n case 'read-only-storage':\n throw new Error(`binding type '${binding.type}' not supported in WebGL`);\n }\n }\n }\n\n _applyUniforms() {\n for (const uniformLayout of this.layout.uniforms || []) {\n const {name, location, type, textureUnit} = uniformLayout;\n const value = this.uniforms[name] || textureUnit;\n if (value !== undefined) {\n setUniform(this.device.gl, location, type, value);\n }\n }\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getDrawMode(\n topology: PrimitiveTopology\n): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.LINE_LOOP | GL.TRIANGLES | GL.TRIANGLE_STRIP | GL.TRIANGLE_FAN {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINE_STRIP;\n case 'line-loop': return GL.LINE_LOOP;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLE_STRIP;\n case 'triangle-fan': return GL.TRIANGLE_FAN;\n default: throw new Error(topology);\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINES;\n case 'line-loop': return GL.LINES;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLES;\n case 'triangle-fan': return GL.TRIANGLES;\n default: throw new Error(topology);\n }\n}\n\n// function getAttributesByLocation(\n// attributes: Record<string, Buffer>,\n// layout: ShaderLayout\n// ): Record<number, Buffer> {\n// const byLocation: Record<number, Buffer> = {};\n// for (const [name, buffer] of Object.entries(attributes)) {\n// const attribute = getAttributeLayout(layout, name);\n// if (attribute) {\n// byLocation[attribute.location] = buffer;\n// }\n// }\n// return byLocation;\n// }\n\nfunction getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {\n return layout.attributes.find((binding) => binding.name === name) || null;\n}\n\n/* TODO\nfunction getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {\n const binding = layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n throw new Error(`Unknown binding ${name}`);\n }\n return binding;\n}\n*/\n"],"mappings":"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"}
|