@luma.gl/webgl 9.0.0-alpha.5 → 9.0.0-alpha.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +3 -1
- package/dist/adapter/converters/device-parameters.d.ts +23 -4
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +101 -73
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +6 -6
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +74 -111
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/shader-formats.d.ts +9 -0
- package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
- package/dist/adapter/converters/shader-formats.js +52 -0
- package/dist/adapter/converters/shader-formats.js.map +1 -0
- package/dist/adapter/converters/texture-formats.d.ts +32 -44
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +309 -346
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts +9 -3
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +53 -22
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +17 -23
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +54 -58
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +31 -22
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
- package/dist/adapter/device-helpers/is-old-ie.js +2 -1
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
- package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
- package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
- package/dist/adapter/helpers/decode-webgl-types.js +89 -0
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
- package/dist/adapter/helpers/get-shader-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 -48
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +87 -143
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts +3 -2
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +51 -82
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +2 -29
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +6 -9
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +26 -83
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +19 -11
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +60 -88
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +175 -48
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +10 -20
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +63 -173
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +99 -11
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -21
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +108 -270
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +11 -21
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +3 -4
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +21 -34
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +62 -42
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +137 -256
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.js +167 -0
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +6 -7
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +10 -23
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +76 -41
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +219 -129
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +3 -3
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +26 -52
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/clear.d.ts +22 -0
- package/dist/classic/clear.d.ts.map +1 -0
- package/dist/classic/clear.js +88 -0
- package/dist/classic/clear.js.map +1 -0
- package/dist/classic/copy-and-blit.d.ts +62 -0
- package/dist/classic/copy-and-blit.d.ts.map +1 -0
- package/dist/classic/copy-and-blit.js +191 -0
- package/dist/classic/copy-and-blit.js.map +1 -0
- package/dist/classic/format-utils.d.ts +3 -0
- package/dist/classic/format-utils.d.ts.map +1 -0
- package/dist/classic/format-utils.js +37 -0
- package/dist/classic/format-utils.js.map +1 -0
- package/dist/classic/typed-array-utils.d.ts +17 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +18 -39
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.d.ts +40 -0
- package/dist/context/context/create-browser-context.d.ts.map +1 -0
- package/dist/context/context/create-browser-context.js +53 -0
- 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.d.ts.map +1 -1
- package/dist/context/context/webgl-checks.js +1 -4
- package/dist/context/context/webgl-checks.js.map +1 -1
- package/dist/context/debug/spector.d.ts +1 -2
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +8 -20
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +15 -39
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -19
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +267 -286
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/context-data.d.ts +13 -0
- package/dist/context/polyfill/context-data.d.ts.map +1 -0
- package/dist/context/polyfill/context-data.js +12 -0
- package/dist/context/polyfill/context-data.js.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +22 -30
- 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 +18 -41
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +0 -4
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +26 -62
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts +2 -1
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +8 -10
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +8555 -0
- package/dist/index.cjs +6602 -0
- package/dist/index.d.ts +26 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -26
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist.min.js +49 -0
- package/package.json +21 -9
- package/src/adapter/converters/device-parameters.ts +144 -41
- package/src/adapter/converters/sampler-parameters.ts +103 -41
- package/src/adapter/converters/shader-formats.ts +44 -0
- package/src/adapter/converters/texture-formats.ts +268 -195
- package/src/adapter/converters/vertex-formats.ts +71 -10
- package/src/adapter/device-helpers/device-features.ts +14 -3
- package/src/adapter/device-helpers/device-limits.ts +5 -3
- package/src/adapter/device-helpers/get-device-info.ts +53 -18
- package/src/adapter/device-helpers/is-old-ie.ts +3 -0
- package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
- package/src/adapter/helpers/get-shader-info.ts +41 -0
- package/src/adapter/helpers/get-shader-layout.ts +121 -146
- package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
- package/src/adapter/helpers/set-uniform.ts +39 -35
- package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
- package/src/adapter/objects/constants-to-keys.ts +6 -25
- package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
- package/src/adapter/objects/webgl-resource.ts +16 -23
- package/src/adapter/resources/webgl-buffer.ts +67 -62
- package/src/adapter/resources/webgl-command-buffer.ts +327 -25
- package/src/adapter/resources/webgl-command-encoder.ts +20 -12
- package/src/adapter/resources/webgl-external-texture.ts +5 -2
- package/src/adapter/resources/webgl-framebuffer.ts +90 -134
- package/src/adapter/resources/webgl-render-pass.ts +166 -4
- package/src/adapter/resources/webgl-render-pipeline.ts +256 -192
- package/src/adapter/resources/webgl-sampler.ts +16 -10
- package/src/adapter/resources/webgl-shader.ts +14 -11
- package/src/adapter/resources/webgl-texture.ts +138 -99
- package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
- package/src/adapter/resources/webgl-vertex-array.ts +283 -0
- package/src/adapter/webgl-canvas-context.ts +16 -14
- package/src/adapter/webgl-device.ts +328 -79
- package/src/classic/accessor.ts +8 -18
- package/src/classic/clear.ts +113 -0
- package/src/classic/copy-and-blit.ts +311 -0
- package/src/classic/format-utils.ts +46 -0
- package/src/classic/typed-array-utils.ts +21 -27
- package/src/context/context/create-browser-context.ts +140 -0
- package/src/context/context/create-headless-context.ts +51 -0
- package/src/context/context/webgl-checks.ts +3 -1
- package/src/context/debug/spector.ts +9 -6
- package/src/context/debug/webgl-developer-tools.ts +23 -15
- package/src/context/parameters/unified-parameter-api.ts +23 -14
- package/src/context/parameters/webgl-parameter-tables.ts +120 -98
- package/src/context/polyfill/context-data.ts +30 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
- package/src/context/polyfill/polyfill-context.ts +10 -9
- package/src/context/polyfill/polyfill-table.ts +21 -16
- package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
- package/src/context/state-tracker/deep-array-equal.ts +2 -0
- package/src/context/state-tracker/track-context-state.ts +14 -11
- package/src/context/state-tracker/with-parameters.ts +13 -4
- package/src/index.ts +70 -35
- package/src/types.ts +5 -0
- package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js +0 -185
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
- package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
- package/dist/adapter/helpers/attribute-utils.js +0 -81
- package/dist/adapter/helpers/attribute-utils.js.map +0 -1
- package/dist/adapter/helpers/uniforms.d.ts +0 -26
- package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
- package/dist/adapter/helpers/uniforms.js +0 -99
- package/dist/adapter/helpers/uniforms.js.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/bundle.js.map +0 -1
- package/dist/classic/buffer.d.ts +0 -95
- package/dist/classic/buffer.d.ts.map +0 -1
- package/dist/classic/buffer.js +0 -384
- package/dist/classic/buffer.js.map +0 -1
- package/dist/context/context/context-state.d.ts +0 -18
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -26
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/context/context/create-context.d.ts +0 -41
- package/dist/context/context/create-context.d.ts.map +0 -1
- package/dist/context/context/create-context.js +0 -49
- 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 -833
- 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/dist/types/webgl.d.ts +0 -145
- package/dist/types/webgl.d.ts.map +0 -1
- package/dist/types/webgl.js +0 -2
- package/dist/types/webgl.js.map +0 -1
- package/src/adapter/converters/renderbuffer-formats.ts +0 -92
- package/src/adapter/helpers/attribute-utils.ts +0 -61
- package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
- package/src/bundle.ts +0 -4
- package/src/classic/buffer.ts +0 -474
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/create-context.ts +0 -110
- package/src/context/context/device-pixels.ts +0 -152
- package/src/init.ts +0 -4
- package/src/types/webgl.ts +0 -284
|
@@ -1,48 +1,36 @@
|
|
|
1
|
-
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import type {
|
|
2
5
|
ShaderLayout,
|
|
3
|
-
BindingLayout,
|
|
4
6
|
UniformBinding,
|
|
5
7
|
UniformBlockBinding,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} from '@luma.gl/api';
|
|
12
|
-
import GL from '@luma.gl/constants';
|
|
8
|
+
AttributeDeclaration,
|
|
9
|
+
VaryingBinding
|
|
10
|
+
} from '@luma.gl/core';
|
|
11
|
+
|
|
12
|
+
import {GL} from '@luma.gl/constants';
|
|
13
13
|
import {isWebGL2} from '../../context/context/webgl-checks';
|
|
14
|
-
import Accessor from '../../classic/accessor'; // TODO - should NOT depend on classic API
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
import {isSamplerUniform} from './uniforms';
|
|
14
|
+
import {Accessor} from '../../classic/accessor'; // TODO - should NOT depend on classic API
|
|
15
|
+
import {decodeGLUniformType, decodeGLAttributeType, isSamplerUniform} from './decode-webgl-types';
|
|
16
|
+
|
|
18
17
|
/**
|
|
19
18
|
* Extract metadata describing binding information for a program's shaders
|
|
20
19
|
* Note: `linkProgram()` needs to have been called
|
|
21
20
|
* (although linking does not need to have been successful).
|
|
22
21
|
*/
|
|
23
22
|
export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {
|
|
24
|
-
const programBindings = getProgramBindings(gl, program);
|
|
25
|
-
|
|
26
23
|
const shaderLayout: ShaderLayout = {
|
|
27
24
|
attributes: [],
|
|
28
25
|
bindings: []
|
|
29
26
|
};
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
const format =
|
|
33
|
-
// attribute.accessor.format ||
|
|
34
|
-
getVertexFormat(attribute.accessor.type || GL.FLOAT, attribute.accessor.size);
|
|
35
|
-
shaderLayout.attributes.push({
|
|
36
|
-
name: attribute.name,
|
|
37
|
-
location: attribute.location,
|
|
38
|
-
format,
|
|
39
|
-
stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
|
|
40
|
-
});
|
|
41
|
-
}
|
|
28
|
+
shaderLayout.attributes = readAttributeDeclarations(gl, program);
|
|
42
29
|
|
|
43
30
|
// Uniform blocks
|
|
44
|
-
|
|
45
|
-
|
|
31
|
+
const uniformBlocks: UniformBlockBinding[] = readUniformBlocks(gl, program);
|
|
32
|
+
for (const uniformBlock of uniformBlocks) {
|
|
33
|
+
const uniforms = uniformBlock.uniforms.map(uniform => ({
|
|
46
34
|
name: uniform.name,
|
|
47
35
|
format: uniform.format,
|
|
48
36
|
byteOffset: uniform.byteOffset,
|
|
@@ -59,8 +47,9 @@ export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram
|
|
|
59
47
|
});
|
|
60
48
|
}
|
|
61
49
|
|
|
50
|
+
const uniforms: UniformBinding[] = readUniformBindings(gl, program);
|
|
62
51
|
let textureUnit = 0;
|
|
63
|
-
for (const uniform of
|
|
52
|
+
for (const uniform of uniforms) {
|
|
64
53
|
if (isSamplerUniform(uniform.type)) {
|
|
65
54
|
const {viewDimension, sampleType} = getSamplerInfo(uniform.type);
|
|
66
55
|
shaderLayout.bindings.push({
|
|
@@ -77,69 +66,64 @@ export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram
|
|
|
77
66
|
}
|
|
78
67
|
}
|
|
79
68
|
|
|
80
|
-
const uniforms = programBindings.uniforms?.filter((uniform) => uniform.location !== null) || [];
|
|
81
69
|
if (uniforms.length) {
|
|
82
70
|
shaderLayout.uniforms = uniforms;
|
|
83
71
|
}
|
|
84
|
-
|
|
85
|
-
|
|
72
|
+
|
|
73
|
+
// Varyings
|
|
74
|
+
const varyings: VaryingBinding[] = readVaryings(gl, program);
|
|
75
|
+
// Note - samplers are always in unform bindings, even if uniform blocks are used
|
|
76
|
+
if (varyings?.length) {
|
|
77
|
+
shaderLayout.varyings = varyings;
|
|
86
78
|
}
|
|
87
79
|
|
|
88
80
|
return shaderLayout;
|
|
89
81
|
}
|
|
90
82
|
|
|
91
|
-
|
|
92
|
-
* Extract metadata describing binding information for a program's shaders
|
|
93
|
-
* Note: `linkProgram()` needs to have been called
|
|
94
|
-
* (although linking does not need to have been successful).
|
|
95
|
-
*/
|
|
96
|
-
export function getProgramBindings(
|
|
97
|
-
gl: WebGLRenderingContext,
|
|
98
|
-
program: WebGLProgram
|
|
99
|
-
): ProgramBindings {
|
|
100
|
-
const config: ProgramBindings = {
|
|
101
|
-
attributes: readAttributeBindings(gl, program),
|
|
102
|
-
uniforms: readUniformBindings(gl, program),
|
|
103
|
-
uniformBlocks: readUniformBlocks(gl, program),
|
|
104
|
-
varyings: readVaryings(gl, program)
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
Object.seal(config);
|
|
108
|
-
return config;
|
|
109
|
-
// generateWebGPUStyleBindings(bindings);
|
|
110
|
-
}
|
|
83
|
+
// HELPERS
|
|
111
84
|
|
|
112
85
|
/**
|
|
113
86
|
* Extract info about all transform feedback varyings
|
|
114
87
|
*
|
|
115
88
|
* linkProgram needs to have been called, although linking does not need to have been successful
|
|
116
89
|
*/
|
|
117
|
-
function
|
|
90
|
+
function readAttributeDeclarations(
|
|
118
91
|
gl: WebGLRenderingContext,
|
|
119
92
|
program: WebGLProgram
|
|
120
|
-
):
|
|
121
|
-
const attributes:
|
|
93
|
+
): AttributeDeclaration[] {
|
|
94
|
+
const attributes: AttributeDeclaration[] = [];
|
|
122
95
|
|
|
123
96
|
const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
|
|
124
97
|
|
|
125
98
|
for (let index = 0; index < count; index++) {
|
|
126
|
-
const
|
|
99
|
+
const activeInfo = gl.getActiveAttrib(program, index);
|
|
100
|
+
if (!activeInfo) {
|
|
101
|
+
throw new Error('activeInfo');
|
|
102
|
+
}
|
|
103
|
+
const {name, type: compositeType /* , size*/} = activeInfo;
|
|
127
104
|
const location = gl.getAttribLocation(program, name);
|
|
128
|
-
// Add only user provided attributes, for built-in attributes like
|
|
129
|
-
// `gl_InstanceID` locaiton will be < 0
|
|
105
|
+
// Add only user provided attributes, for built-in attributes like `gl_InstanceID` location will be < 0
|
|
130
106
|
if (location >= 0) {
|
|
131
|
-
const {
|
|
132
|
-
|
|
133
|
-
//
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const
|
|
138
|
-
|
|
107
|
+
const {attributeType} = decodeGLAttributeType(compositeType);
|
|
108
|
+
|
|
109
|
+
// Whether an attribute is instanced is essentially fixed by the structure of the shader code,
|
|
110
|
+
// so it is arguably a static property of the shader.
|
|
111
|
+
// There is no hint in the shader declarations
|
|
112
|
+
// Heuristic: Any attribute name containing the word "instance" will be assumed to be instanced
|
|
113
|
+
const stepMode = /instance/i.test(name) ? 'instance' : 'vertex';
|
|
114
|
+
|
|
115
|
+
attributes.push({
|
|
116
|
+
name,
|
|
117
|
+
location,
|
|
118
|
+
stepMode,
|
|
119
|
+
type: attributeType,
|
|
120
|
+
// size - for arrays, size is the number of elements in the array
|
|
121
|
+
});
|
|
139
122
|
}
|
|
140
123
|
}
|
|
141
124
|
|
|
142
|
-
|
|
125
|
+
// Sort by declaration order
|
|
126
|
+
attributes.sort((a: AttributeDeclaration, b: AttributeDeclaration) => a.location - b.location);
|
|
143
127
|
return attributes;
|
|
144
128
|
}
|
|
145
129
|
|
|
@@ -158,8 +142,12 @@ function readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): Varying
|
|
|
158
142
|
|
|
159
143
|
const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);
|
|
160
144
|
for (let location = 0; location < count; location++) {
|
|
161
|
-
const
|
|
162
|
-
|
|
145
|
+
const activeInfo = gl2.getTransformFeedbackVarying(program, location);
|
|
146
|
+
if (!activeInfo) {
|
|
147
|
+
throw new Error('activeInfo');
|
|
148
|
+
}
|
|
149
|
+
const {name, type: compositeType, size} = activeInfo;
|
|
150
|
+
const {glType, components} = decodeGLUniformType(compositeType);
|
|
163
151
|
const accessor = new Accessor({type: glType, size: size * components});
|
|
164
152
|
const varying = {location, name, accessor}; // Base values
|
|
165
153
|
varyings.push(varying);
|
|
@@ -179,7 +167,11 @@ function readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram):
|
|
|
179
167
|
|
|
180
168
|
const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);
|
|
181
169
|
for (let i = 0; i < uniformCount; i++) {
|
|
182
|
-
const
|
|
170
|
+
const activeInfo = gl.getActiveUniform(program, i);
|
|
171
|
+
if (!activeInfo) {
|
|
172
|
+
throw new Error('activeInfo');
|
|
173
|
+
}
|
|
174
|
+
const {name: rawName, size, type} = activeInfo;
|
|
183
175
|
const {name, isArray} = parseUniformName(rawName);
|
|
184
176
|
let webglLocation = gl.getUniformLocation(program, name);
|
|
185
177
|
const uniformInfo = {
|
|
@@ -214,9 +206,7 @@ function readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram):
|
|
|
214
206
|
|
|
215
207
|
/**
|
|
216
208
|
* Extract info about all "active" uniform blocks
|
|
217
|
-
*
|
|
218
|
-
* ("Active" just means that unused (aka inactive) blocks may have been
|
|
219
|
-
* optimized away during linking)
|
|
209
|
+
* @note In WebGL, "active" just means that unused (inactive) blocks may have been optimized away during linking)
|
|
220
210
|
*/
|
|
221
211
|
function readUniformBlocks(
|
|
222
212
|
gl: WebGLRenderingContext,
|
|
@@ -234,8 +224,8 @@ function readUniformBlocks(
|
|
|
234
224
|
|
|
235
225
|
const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);
|
|
236
226
|
for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
|
|
237
|
-
const blockInfo = {
|
|
238
|
-
name: gl2.getActiveUniformBlockName(program, blockIndex),
|
|
227
|
+
const blockInfo: UniformBlockBinding = {
|
|
228
|
+
name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
|
|
239
229
|
location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),
|
|
240
230
|
byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),
|
|
241
231
|
vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
|
|
@@ -244,33 +234,39 @@ function readUniformBlocks(
|
|
|
244
234
|
uniforms: [] as any[]
|
|
245
235
|
};
|
|
246
236
|
|
|
247
|
-
const uniformIndices =
|
|
237
|
+
const uniformIndices =
|
|
238
|
+
(getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[]) || [];
|
|
248
239
|
|
|
249
240
|
const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.
|
|
250
241
|
const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.
|
|
251
|
-
const uniformBlockIndex = gl2.getActiveUniforms(
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
); // Array of GLint indicating the block indices of the uniforms.
|
|
242
|
+
// const uniformBlockIndex = gl2.getActiveUniforms(
|
|
243
|
+
// program,
|
|
244
|
+
// uniformIndices,
|
|
245
|
+
// GL.UNIFORM_BLOCK_INDEX
|
|
246
|
+
// ); // Array of GLint indicating the block indices of the uniforms.
|
|
256
247
|
const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.
|
|
257
248
|
const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.
|
|
258
|
-
const uniformMatrixStride = gl2.getActiveUniforms(
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
|
|
263
|
-
const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
|
|
249
|
+
// const uniformMatrixStride = gl2.getActiveUniforms(
|
|
250
|
+
// program,
|
|
251
|
+
// uniformIndices,
|
|
252
|
+
// GL.UNIFORM_MATRIX_STRIDE
|
|
253
|
+
// ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
|
|
254
|
+
// const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
|
|
264
255
|
for (let i = 0; i < blockInfo.uniformCount; ++i) {
|
|
256
|
+
const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
|
|
257
|
+
if (!activeInfo) {
|
|
258
|
+
throw new Error('activeInfo');
|
|
259
|
+
}
|
|
260
|
+
|
|
265
261
|
blockInfo.uniforms.push({
|
|
266
|
-
name:
|
|
267
|
-
format:
|
|
262
|
+
name: activeInfo.name,
|
|
263
|
+
format: decodeGLUniformType(uniformType[i]).format,
|
|
268
264
|
type: uniformType[i],
|
|
269
265
|
arrayLength: uniformArrayLength[i],
|
|
270
266
|
byteOffset: uniformOffset[i],
|
|
271
|
-
byteStride: uniformStride[i]
|
|
272
|
-
matrixStride: uniformStride[i],
|
|
273
|
-
rowMajor: uniformRowMajor[i]
|
|
267
|
+
byteStride: uniformStride[i]
|
|
268
|
+
// matrixStride: uniformStride[i],
|
|
269
|
+
// rowMajor: uniformRowMajor[i]
|
|
274
270
|
});
|
|
275
271
|
}
|
|
276
272
|
|
|
@@ -281,6 +277,27 @@ function readUniformBlocks(
|
|
|
281
277
|
return uniformBlocks;
|
|
282
278
|
}
|
|
283
279
|
|
|
280
|
+
/**
|
|
281
|
+
* TOOD - compare with a above, confirm copy, then delete
|
|
282
|
+
const bindings: Binding[] = [];
|
|
283
|
+
const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
|
|
284
|
+
for (let blockIndex = 0; blockIndex < count; blockIndex++) {
|
|
285
|
+
const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
|
|
286
|
+
const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
|
|
287
|
+
const visibility = (vertex) + (fragment);
|
|
288
|
+
const binding: BufferBinding = {
|
|
289
|
+
location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
|
|
290
|
+
// name: gl.getActiveUniformBlockName(program, blockIndex),
|
|
291
|
+
type: 'uniform',
|
|
292
|
+
visibility,
|
|
293
|
+
minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
|
|
294
|
+
// uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
|
|
295
|
+
// uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
|
|
296
|
+
}
|
|
297
|
+
bindings.push(binding);
|
|
298
|
+
}
|
|
299
|
+
*/
|
|
300
|
+
|
|
284
301
|
const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
|
|
285
302
|
number,
|
|
286
303
|
[
|
|
@@ -305,18 +322,18 @@ const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
|
|
|
305
322
|
[GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
|
|
306
323
|
};
|
|
307
324
|
|
|
308
|
-
|
|
309
|
-
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
if (sampler) {
|
|
316
|
-
|
|
317
|
-
return {viewDimension, sampleType};
|
|
325
|
+
type SamplerInfo = {
|
|
326
|
+
viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
|
|
327
|
+
sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
function getSamplerInfo(type: GL): SamplerInfo {
|
|
331
|
+
const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
|
|
332
|
+
if (!sampler) {
|
|
333
|
+
throw new Error('sampler');
|
|
318
334
|
}
|
|
319
|
-
|
|
335
|
+
const [viewDimension, sampleType] = sampler;
|
|
336
|
+
return {viewDimension, sampleType};
|
|
320
337
|
}
|
|
321
338
|
|
|
322
339
|
// HELPERS
|
|
@@ -333,7 +350,7 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
|
|
|
333
350
|
|
|
334
351
|
// if array name then clean the array brackets
|
|
335
352
|
const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
|
|
336
|
-
const matches =
|
|
353
|
+
const matches = UNIFORM_NAME_REGEXP.exec(name);
|
|
337
354
|
if (!matches || matches.length < 2) {
|
|
338
355
|
throw new Error(`Failed to parse GLSL uniform name ${name}`);
|
|
339
356
|
}
|
|
@@ -344,45 +361,3 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
|
|
|
344
361
|
isArray: Boolean(matches[2])
|
|
345
362
|
};
|
|
346
363
|
}
|
|
347
|
-
|
|
348
|
-
/**
|
|
349
|
-
* TODO - verify this is a copy of above and delete
|
|
350
|
-
* import type {TextureFormat} from '@luma.gl/api';
|
|
351
|
-
* Extract info about all "active" uniform blocks
|
|
352
|
-
* ("Active" just means that unused (inactive) blocks may have been optimized away during linking)
|
|
353
|
-
*
|
|
354
|
-
function getUniformBlockBindings(gl, program): Binding[] {
|
|
355
|
-
if (!isWebGL2(gl)) {
|
|
356
|
-
return;
|
|
357
|
-
}
|
|
358
|
-
const bindings: Binding[] = [];
|
|
359
|
-
const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
|
|
360
|
-
for (let blockIndex = 0; blockIndex < count; blockIndex++) {
|
|
361
|
-
const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
|
|
362
|
-
const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
|
|
363
|
-
const visibility = (vertex) + (fragment);
|
|
364
|
-
const binding: BufferBinding = {
|
|
365
|
-
location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
|
|
366
|
-
// name: gl.getActiveUniformBlockName(program, blockIndex),
|
|
367
|
-
type: 'uniform',
|
|
368
|
-
visibility,
|
|
369
|
-
minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
|
|
370
|
-
// uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
|
|
371
|
-
// uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
|
|
372
|
-
}
|
|
373
|
-
bindings.push(binding);
|
|
374
|
-
}
|
|
375
|
-
return bindings;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
function setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {
|
|
379
|
-
for (const bindGroup of bindings) {
|
|
380
|
-
for (const binding of bindGroup) {
|
|
381
|
-
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
// Set up indirection table
|
|
386
|
-
// this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);
|
|
387
|
-
}
|
|
388
|
-
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
import type {CompilerMessage} from '@luma.gl/core';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Parse a WebGL-format GLSL compilation log into an array of WebGPU style message records.
|
|
@@ -16,10 +16,23 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
|
|
|
16
16
|
|
|
17
17
|
for (const line of lines) {
|
|
18
18
|
if (line.length <= 1) {
|
|
19
|
-
continue;
|
|
19
|
+
continue; // eslint-disable-line no-continue
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
const segments: string[] = line.split(':');
|
|
23
|
+
|
|
24
|
+
// Check for messages with no line information `ERROR: unsupported shader version`
|
|
25
|
+
if (segments.length === 2) {
|
|
26
|
+
const [messageType, message] = segments;
|
|
27
|
+
messages.push({
|
|
28
|
+
message: message.trim(),
|
|
29
|
+
type: getMessageType(messageType),
|
|
30
|
+
lineNum: 0,
|
|
31
|
+
linePos: 0
|
|
32
|
+
});
|
|
33
|
+
continue; // eslint-disable-line no-continue
|
|
34
|
+
}
|
|
35
|
+
|
|
23
36
|
const [messageType, linePosition, lineNumber, ...rest] = segments;
|
|
24
37
|
|
|
25
38
|
let lineNum = parseInt(lineNumber, 10);
|
|
@@ -32,13 +45,9 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
|
|
|
32
45
|
linePos = 0;
|
|
33
46
|
}
|
|
34
47
|
|
|
35
|
-
// Ensure supported type
|
|
36
|
-
const lowerCaseType = messageType.toLowerCase();
|
|
37
|
-
const type = (MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info') as 'warning' | 'error' | 'info';
|
|
38
|
-
|
|
39
48
|
messages.push({
|
|
40
49
|
message: rest.join(':').trim(),
|
|
41
|
-
type,
|
|
50
|
+
type: getMessageType(messageType),
|
|
42
51
|
lineNum,
|
|
43
52
|
linePos // TODO
|
|
44
53
|
})
|
|
@@ -46,3 +55,10 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
|
|
|
46
55
|
|
|
47
56
|
return messages;
|
|
48
57
|
}
|
|
58
|
+
|
|
59
|
+
/** Ensure supported type */
|
|
60
|
+
function getMessageType(messageType: string): 'warning' | 'error' | 'info' {
|
|
61
|
+
const MESSAGE_TYPES = ['warning', 'error', 'info'];
|
|
62
|
+
const lowerCaseType = messageType.toLowerCase();
|
|
63
|
+
return (MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info') as 'warning' | 'error' | 'info';
|
|
64
|
+
}
|
|
@@ -1,52 +1,56 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
|
|
1
6
|
// Uniforms
|
|
2
|
-
import
|
|
7
|
+
import type {UniformValue} from '@luma.gl/core';
|
|
8
|
+
import {GL, GLCompositeType, GLSamplerType} from '@luma.gl/constants';
|
|
3
9
|
|
|
4
10
|
/** Set a raw uniform (without type conversion and caching) */
|
|
5
11
|
/* eslint-disable max-len */
|
|
6
12
|
export function setUniform(
|
|
7
13
|
gl: WebGLRenderingContext,
|
|
8
14
|
location: WebGLUniformLocation,
|
|
9
|
-
type:
|
|
10
|
-
value:
|
|
15
|
+
type: GLCompositeType | GLSamplerType,
|
|
16
|
+
value: UniformValue
|
|
11
17
|
): void {
|
|
12
18
|
const gl2 = gl as WebGL2RenderingContext;
|
|
13
19
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
case GL.SAMPLER_2D:
|
|
19
|
-
case GL.SAMPLER_CUBE:
|
|
20
|
-
// WebGL2 samplers
|
|
21
|
-
case GL.SAMPLER_3D:
|
|
22
|
-
case GL.SAMPLER_2D_SHADOW:
|
|
23
|
-
case GL.SAMPLER_2D_ARRAY:
|
|
24
|
-
case GL.SAMPLER_2D_ARRAY_SHADOW:
|
|
25
|
-
case GL.SAMPLER_CUBE_SHADOW:
|
|
26
|
-
case GL.INT_SAMPLER_2D:
|
|
27
|
-
case GL.INT_SAMPLER_3D:
|
|
28
|
-
case GL.INT_SAMPLER_CUBE:
|
|
29
|
-
case GL.INT_SAMPLER_2D_ARRAY:
|
|
30
|
-
case GL.UNSIGNED_INT_SAMPLER_2D:
|
|
31
|
-
case GL.UNSIGNED_INT_SAMPLER_3D:
|
|
32
|
-
case GL.UNSIGNED_INT_SAMPLER_CUBE:
|
|
33
|
-
case GL.UNSIGNED_INT_SAMPLER_2D_ARRAY:
|
|
34
|
-
return gl.uniform1i(location, value);
|
|
35
|
-
}
|
|
20
|
+
// Prepare the value for WebGL setters
|
|
21
|
+
let uniformValue = value;
|
|
22
|
+
if (uniformValue === true) {
|
|
23
|
+
uniformValue = 1;
|
|
36
24
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (value === true) {
|
|
40
|
-
value = 1;
|
|
25
|
+
if (uniformValue === false) {
|
|
26
|
+
uniformValue = 0;
|
|
41
27
|
}
|
|
42
|
-
|
|
43
|
-
if (value === false) {
|
|
44
|
-
value = 1;
|
|
45
|
-
}
|
|
46
|
-
const arrayValue = (typeof value === 'number') ? [value] : value;
|
|
28
|
+
const arrayValue = typeof uniformValue === 'number' ? [uniformValue] : uniformValue;
|
|
47
29
|
|
|
48
30
|
// prettier-ignore
|
|
49
31
|
switch (type) {
|
|
32
|
+
// WebGL1 samplers
|
|
33
|
+
case GL.SAMPLER_2D:
|
|
34
|
+
case GL.SAMPLER_CUBE:
|
|
35
|
+
// WebGL2 samplers
|
|
36
|
+
case GL.SAMPLER_3D:
|
|
37
|
+
case GL.SAMPLER_2D_SHADOW:
|
|
38
|
+
case GL.SAMPLER_2D_ARRAY:
|
|
39
|
+
case GL.SAMPLER_2D_ARRAY_SHADOW:
|
|
40
|
+
case GL.SAMPLER_CUBE_SHADOW:
|
|
41
|
+
case GL.INT_SAMPLER_2D:
|
|
42
|
+
case GL.INT_SAMPLER_3D:
|
|
43
|
+
case GL.INT_SAMPLER_CUBE:
|
|
44
|
+
case GL.INT_SAMPLER_2D_ARRAY:
|
|
45
|
+
case GL.UNSIGNED_INT_SAMPLER_2D:
|
|
46
|
+
case GL.UNSIGNED_INT_SAMPLER_3D:
|
|
47
|
+
case GL.UNSIGNED_INT_SAMPLER_CUBE:
|
|
48
|
+
case GL.UNSIGNED_INT_SAMPLER_2D_ARRAY:
|
|
49
|
+
if (typeof value !== 'number') {
|
|
50
|
+
throw new Error('samplers must be set to integers');
|
|
51
|
+
}
|
|
52
|
+
return gl.uniform1i(location, value);
|
|
53
|
+
|
|
50
54
|
case GL.FLOAT: return gl.uniform1fv(location, arrayValue);
|
|
51
55
|
case GL.FLOAT_VEC2: return gl.uniform2fv(location, arrayValue);
|
|
52
56
|
case GL.FLOAT_VEC3: return gl.uniform3fv(location, arrayValue);
|
|
@@ -60,7 +64,7 @@ export function setUniform(
|
|
|
60
64
|
case GL.BOOL: return gl.uniform1iv(location, arrayValue);
|
|
61
65
|
case GL.BOOL_VEC2: return gl.uniform2iv(location, arrayValue);
|
|
62
66
|
case GL.BOOL_VEC3: return gl.uniform3iv(location, arrayValue);
|
|
63
|
-
case GL.BOOL_VEC4: gl.uniform4iv(location, arrayValue);
|
|
67
|
+
case GL.BOOL_VEC4: return gl.uniform4iv(location, arrayValue);
|
|
64
68
|
|
|
65
69
|
// WEBGL2 - unsigned integers
|
|
66
70
|
case GL.UNSIGNED_INT: return gl2.uniform1uiv(location, arrayValue, 1);
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import {GL, GLPrimitiveTopology, GLPrimitive} from '@luma.gl/constants';
|
|
5
|
+
import {PrimitiveTopology} from '@luma.gl/core';
|
|
6
|
+
|
|
7
|
+
// Counts the number of complete primitives given a number of vertices and a drawMode
|
|
8
|
+
export function getPrimitiveDrawMode(drawMode: GLPrimitiveTopology): GLPrimitive {
|
|
9
|
+
switch (drawMode) {
|
|
10
|
+
case GL.POINTS:
|
|
11
|
+
return GL.POINTS;
|
|
12
|
+
case GL.LINES:
|
|
13
|
+
return GL.LINES;
|
|
14
|
+
case GL.LINE_STRIP:
|
|
15
|
+
return GL.LINES;
|
|
16
|
+
case GL.LINE_LOOP:
|
|
17
|
+
return GL.LINES;
|
|
18
|
+
case GL.TRIANGLES:
|
|
19
|
+
return GL.TRIANGLES;
|
|
20
|
+
case GL.TRIANGLE_STRIP:
|
|
21
|
+
return GL.TRIANGLES;
|
|
22
|
+
case GL.TRIANGLE_FAN:
|
|
23
|
+
return GL.TRIANGLES;
|
|
24
|
+
default:
|
|
25
|
+
throw new Error('drawMode');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Counts the number of complete "primitives" given a number of vertices and a drawMode
|
|
30
|
+
export function getPrimitiveCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
|
|
31
|
+
const {drawMode, vertexCount} = options;
|
|
32
|
+
switch (drawMode) {
|
|
33
|
+
case GL.POINTS:
|
|
34
|
+
case GL.LINE_LOOP:
|
|
35
|
+
return vertexCount;
|
|
36
|
+
case GL.LINES:
|
|
37
|
+
return vertexCount / 2;
|
|
38
|
+
case GL.LINE_STRIP:
|
|
39
|
+
return vertexCount - 1;
|
|
40
|
+
case GL.TRIANGLES:
|
|
41
|
+
return vertexCount / 3;
|
|
42
|
+
case GL.TRIANGLE_STRIP:
|
|
43
|
+
case GL.TRIANGLE_FAN:
|
|
44
|
+
return vertexCount - 2;
|
|
45
|
+
default:
|
|
46
|
+
throw new Error('drawMode');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Counts the number of vertices after splitting the vertex stream into separate "primitives"
|
|
51
|
+
export function getVertexCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
|
|
52
|
+
const {drawMode, vertexCount} = options;
|
|
53
|
+
const primitiveCount = getPrimitiveCount({drawMode, vertexCount});
|
|
54
|
+
switch (getPrimitiveDrawMode(drawMode)) {
|
|
55
|
+
case GL.POINTS:
|
|
56
|
+
return primitiveCount;
|
|
57
|
+
case GL.LINES:
|
|
58
|
+
return primitiveCount * 2;
|
|
59
|
+
case GL.TRIANGLES:
|
|
60
|
+
return primitiveCount * 3;
|
|
61
|
+
default:
|
|
62
|
+
throw new Error('drawMode');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Get the primitive type for draw */
|
|
67
|
+
export function getGLDrawMode(
|
|
68
|
+
topology: PrimitiveTopology
|
|
69
|
+
):
|
|
70
|
+
| GL.POINTS
|
|
71
|
+
| GL.LINES
|
|
72
|
+
| GL.LINE_STRIP
|
|
73
|
+
| GL.LINE_LOOP
|
|
74
|
+
| GL.TRIANGLES
|
|
75
|
+
| GL.TRIANGLE_STRIP
|
|
76
|
+
| GL.TRIANGLE_FAN {
|
|
77
|
+
// prettier-ignore
|
|
78
|
+
switch (topology) {
|
|
79
|
+
case 'point-list': return GL.POINTS;
|
|
80
|
+
case 'line-list': return GL.LINES;
|
|
81
|
+
case 'line-strip': return GL.LINE_STRIP;
|
|
82
|
+
case 'line-loop-webgl': return GL.LINE_LOOP;
|
|
83
|
+
case 'triangle-list': return GL.TRIANGLES;
|
|
84
|
+
case 'triangle-strip': return GL.TRIANGLE_STRIP;
|
|
85
|
+
case 'triangle-fan-webgl': return GL.TRIANGLE_FAN;
|
|
86
|
+
default: throw new Error(topology);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** Get the primitive type for transform feedback */
|
|
91
|
+
export function getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {
|
|
92
|
+
// prettier-ignore
|
|
93
|
+
switch (topology) {
|
|
94
|
+
case 'point-list': return GL.POINTS;
|
|
95
|
+
case 'line-list': return GL.LINES;
|
|
96
|
+
case 'line-strip': return GL.LINES;
|
|
97
|
+
case 'line-loop-webgl': return GL.LINES;
|
|
98
|
+
case 'triangle-list': return GL.TRIANGLES;
|
|
99
|
+
case 'triangle-strip': return GL.TRIANGLES;
|
|
100
|
+
case 'triangle-fan-webgl': return GL.TRIANGLES;
|
|
101
|
+
default: throw new Error(topology);
|
|
102
|
+
}
|
|
103
|
+
}
|