@luma.gl/webgl 8.5.10 → 8.6.0-alpha.4
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 +8 -1
- package/dist/_deprecated/context-api.d.ts +85 -0
- package/dist/_deprecated/context-api.d.ts.map +1 -0
- package/dist/_deprecated/context-api.js +70 -0
- package/dist/_deprecated/context-api.js.map +1 -0
- package/dist/_deprecated/features.d.ts +27 -0
- package/dist/_deprecated/features.d.ts.map +1 -0
- package/{src/features/webgl-features-table.js → dist/_deprecated/features.js} +66 -59
- package/dist/_deprecated/features.js.map +1 -0
- package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
- package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/set-device-parameters.js +124 -0
- package/dist/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/adapter/device-helpers/device-features.d.ts +12 -0
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
- package/dist/adapter/device-helpers/device-features.js +123 -0
- package/dist/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/adapter/device-helpers/device-limits.d.ts +51 -0
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
- package/dist/adapter/device-helpers/device-limits.js +90 -0
- package/dist/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/adapter/device-helpers/get-device-info.d.ts +4 -0
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
- package/dist/adapter/device-helpers/get-device-info.js +44 -0
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/adapter/device-helpers/is-old-ie.d.ts +2 -0
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
- package/dist/{esm/features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +111 -0
- package/dist/adapter/webgl-device.d.ts.map +1 -0
- package/dist/adapter/webgl-device.js +208 -0
- package/dist/adapter/webgl-device.js.map +1 -0
- package/dist/adapter/webgl-shader.d.ts +18 -0
- package/dist/adapter/webgl-shader.d.ts.map +1 -0
- package/dist/adapter/webgl-shader.js +82 -0
- package/dist/adapter/webgl-shader.js.map +1 -0
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +5 -0
- package/dist/bundle.js.map +1 -0
- package/dist/classes/accessor.d.ts +28 -0
- package/dist/classes/accessor.d.ts.map +1 -0
- package/dist/classes/accessor.js +112 -0
- package/dist/classes/accessor.js.map +1 -0
- package/dist/classes/accessor.ts.disabled +159 -0
- package/dist/classes/clear.d.ts +17 -0
- package/dist/classes/clear.d.ts.map +1 -0
- package/{src → dist}/classes/clear.js +29 -23
- package/dist/classes/clear.js.map +1 -0
- package/dist/classes/copy-and-blit.d.ts +86 -0
- package/dist/classes/copy-and-blit.d.ts.map +1 -0
- package/dist/classes/copy-and-blit.js +338 -0
- package/dist/classes/copy-and-blit.js.map +1 -0
- package/dist/classes/framebuffer.d.ts +139 -0
- package/dist/classes/framebuffer.d.ts.map +1 -0
- package/dist/classes/framebuffer.js +656 -0
- package/dist/classes/framebuffer.js.map +1 -0
- package/dist/classes/program-configuration.d.ts +24 -0
- package/dist/classes/program-configuration.d.ts.map +1 -0
- package/dist/classes/program-configuration.js +73 -0
- package/dist/classes/program-configuration.js.map +1 -0
- package/dist/classes/program.d.ts +66 -0
- package/dist/classes/program.d.ts.map +1 -0
- package/dist/classes/program.js +379 -0
- package/dist/classes/program.js.map +1 -0
- package/dist/classes/query.d.ts +27 -0
- package/dist/classes/query.d.ts.map +1 -0
- package/dist/classes/query.js +145 -0
- package/dist/classes/query.js.map +1 -0
- package/dist/classes/renderbuffer-formats.d.ts +16 -0
- package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
- package/dist/classes/renderbuffer-formats.js +185 -0
- package/dist/classes/renderbuffer-formats.js.map +1 -0
- package/dist/classes/renderbuffer.d.ts +60 -0
- package/dist/classes/renderbuffer.d.ts.map +1 -0
- package/dist/classes/renderbuffer.js +128 -0
- package/dist/classes/renderbuffer.js.map +1 -0
- package/dist/classes/shader.d.ts +42 -0
- package/dist/classes/shader.d.ts.map +1 -0
- package/dist/classes/shader.js +118 -0
- package/dist/classes/shader.js.map +1 -0
- package/dist/classes/texture-2d.d.ts +9 -0
- package/dist/classes/texture-2d.d.ts.map +1 -0
- package/dist/classes/texture-2d.js +36 -0
- package/dist/classes/texture-2d.js.map +1 -0
- package/dist/classes/texture-3d.d.ts +29 -0
- package/dist/classes/texture-3d.d.ts.map +1 -0
- package/dist/classes/texture-3d.js +76 -0
- package/dist/classes/texture-3d.js.map +1 -0
- package/dist/classes/texture-cube.d.ts +28 -0
- package/dist/classes/texture-cube.d.ts.map +1 -0
- package/dist/classes/texture-cube.js +130 -0
- package/dist/classes/texture-cube.js.map +1 -0
- package/dist/classes/texture-formats.d.ts +37 -0
- package/dist/classes/texture-formats.d.ts.map +1 -0
- package/dist/classes/texture-formats.js +98 -0
- package/dist/classes/texture-formats.js.map +1 -0
- package/dist/classes/texture.d.ts +123 -0
- package/dist/classes/texture.d.ts.map +1 -0
- package/dist/classes/texture.js +786 -0
- package/dist/classes/texture.js.map +1 -0
- package/dist/classes/transform-feedback.d.ts +33 -0
- package/dist/classes/transform-feedback.d.ts.map +1 -0
- package/dist/classes/transform-feedback.js +198 -0
- package/dist/classes/transform-feedback.js.map +1 -0
- package/dist/classes/uniform-buffer-layout.d.ts +17 -0
- package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
- package/dist/classes/uniform-buffer-layout.js +104 -0
- package/dist/classes/uniform-buffer-layout.js.map +1 -0
- package/dist/classes/uniforms.d.ts +37 -0
- package/dist/classes/uniforms.d.ts.map +1 -0
- package/dist/classes/uniforms.js +250 -0
- package/dist/classes/uniforms.js.map +1 -0
- package/dist/classes/vertex-array-object.d.ts +76 -0
- package/dist/classes/vertex-array-object.d.ts.map +1 -0
- package/dist/classes/vertex-array-object.js +261 -0
- package/dist/classes/vertex-array-object.js.map +1 -0
- package/dist/classes/vertex-array.d.ts +75 -0
- package/dist/classes/vertex-array.d.ts.map +1 -0
- package/dist/classes/vertex-array.js +408 -0
- package/dist/classes/vertex-array.js.map +1 -0
- package/dist/classes/webgl-buffer.d.ts +100 -0
- package/dist/classes/webgl-buffer.d.ts.map +1 -0
- package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +100 -73
- package/dist/classes/webgl-buffer.js.map +1 -0
- package/dist/classes/webgl-resource.d.ts +56 -0
- package/dist/classes/webgl-resource.d.ts.map +1 -0
- package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +35 -52
- package/dist/classes/webgl-resource.js.map +1 -0
- package/dist/context/context/context-state.d.ts +18 -0
- package/dist/context/context/context-state.d.ts.map +1 -0
- package/dist/context/context/context-state.js +26 -0
- package/dist/context/context/context-state.js.map +1 -0
- package/dist/context/context/create-context.d.ts +40 -0
- package/dist/context/context/create-context.d.ts.map +1 -0
- package/dist/context/context/create-context.js +37 -0
- package/dist/context/context/create-context.js.map +1 -0
- package/dist/context/context/device-pixels.d.ts +25 -0
- package/dist/context/context/device-pixels.d.ts.map +1 -0
- package/dist/context/context/device-pixels.js +98 -0
- package/dist/context/context/device-pixels.js.map +1 -0
- package/dist/context/context/get-canvas.d.ts +13 -0
- package/dist/context/context/get-canvas.d.ts.map +1 -0
- package/dist/context/context/get-canvas.js +31 -0
- package/dist/context/context/get-canvas.js.map +1 -0
- package/dist/context/context/resize-context.d.ts +20 -0
- package/dist/context/context/resize-context.d.ts.map +1 -0
- package/dist/context/context/resize-context.js +15 -0
- package/dist/context/context/resize-context.js.map +1 -0
- package/dist/context/context/webgl-checks.d.ts +13 -0
- package/dist/context/context/webgl-checks.d.ts.map +1 -0
- package/dist/context/context/webgl-checks.js +34 -0
- package/dist/context/context/webgl-checks.js.map +1 -0
- package/dist/context/parameters/unified-parameter-api.d.ts +31 -0
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
- package/dist/context/parameters/unified-parameter-api.js +65 -0
- package/dist/context/parameters/unified-parameter-api.js.map +1 -0
- package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
- package/dist/context/parameters/webgl-parameter-tables.js +445 -0
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
- package/dist/context/parameters/webgl-parameters.d.ts +144 -0
- package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
- package/dist/context/parameters/webgl-parameters.js +2 -0
- package/dist/context/parameters/webgl-parameters.js.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
- package/dist/context/polyfill/polyfill-context.d.ts +5 -0
- package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
- package/dist/context/polyfill/polyfill-context.js +91 -0
- package/dist/context/polyfill/polyfill-context.js.map +1 -0
- package/dist/context/polyfill/polyfill-table.d.ts +48 -0
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
- package/dist/context/polyfill/polyfill-table.js +160 -0
- package/dist/context/polyfill/polyfill-table.js.map +1 -0
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
- package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
- package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
- package/dist/context/state-tracker/deep-array-equal.js +21 -0
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
- package/dist/context/state-tracker/track-context-state.d.ts +22 -0
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
- package/dist/context/state-tracker/track-context-state.js +169 -0
- package/dist/context/state-tracker/track-context-state.js.map +1 -0
- package/dist/context/state-tracker/with-parameters.d.ts +13 -0
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
- package/dist/context/state-tracker/with-parameters.js +36 -0
- package/dist/context/state-tracker/with-parameters.js.map +1 -0
- package/dist/debug/debug-program-configuration.d.ts +2 -0
- package/dist/debug/debug-program-configuration.d.ts.map +1 -0
- package/dist/debug/debug-program-configuration.js +40 -0
- package/dist/debug/debug-program-configuration.js.map +1 -0
- package/dist/debug/debug-uniforms.d.ts +12 -0
- package/dist/debug/debug-uniforms.d.ts.map +1 -0
- package/dist/debug/debug-uniforms.js +108 -0
- package/dist/debug/debug-uniforms.js.map +1 -0
- package/dist/debug/debug-vertex-array.d.ts +5 -0
- package/dist/debug/debug-vertex-array.d.ts.map +1 -0
- package/dist/debug/debug-vertex-array.js +118 -0
- package/dist/debug/debug-vertex-array.js.map +1 -0
- package/dist/es5/_deprecated/context-api.js +110 -0
- package/dist/es5/_deprecated/context-api.js.map +1 -0
- package/dist/es5/_deprecated/features.js +118 -0
- package/dist/es5/_deprecated/features.js.map +1 -0
- package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
- package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-features.js +152 -0
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-limits.js +64 -0
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/es5/adapter/device-helpers/get-device-info.js +55 -0
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/es5/{features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/es5/adapter/webgl-device.js +279 -0
- package/dist/es5/adapter/webgl-device.js.map +1 -0
- package/dist/es5/adapter/webgl-shader.js +155 -0
- package/dist/es5/adapter/webgl-shader.js.map +1 -0
- package/dist/es5/bundle.js +2 -4
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/classes/accessor.js +36 -38
- package/dist/es5/classes/accessor.js.map +1 -1
- package/dist/es5/classes/accessor.ts.disabled +159 -0
- package/dist/es5/classes/clear.js +17 -11
- package/dist/es5/classes/clear.js.map +1 -1
- package/dist/es5/classes/copy-and-blit.js +121 -117
- package/dist/es5/classes/copy-and-blit.js.map +1 -1
- package/dist/es5/classes/framebuffer.js +435 -423
- package/dist/es5/classes/framebuffer.js.map +1 -1
- package/dist/es5/classes/program-configuration.js +44 -108
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +108 -85
- package/dist/es5/classes/program.js.map +1 -1
- package/dist/es5/classes/query.js +58 -59
- package/dist/es5/classes/query.js.map +1 -1
- package/dist/es5/classes/renderbuffer-formats.js +79 -52
- package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
- package/dist/es5/classes/renderbuffer.js +129 -100
- package/dist/es5/classes/renderbuffer.js.map +1 -1
- package/dist/es5/classes/shader.js +70 -96
- package/dist/es5/classes/shader.js.map +1 -1
- package/dist/es5/classes/texture-2d.js +25 -21
- package/dist/es5/classes/texture-2d.js.map +1 -1
- package/dist/es5/classes/texture-3d.js +49 -29
- package/dist/es5/classes/texture-3d.js.map +1 -1
- package/dist/es5/classes/texture-cube.js +45 -36
- package/dist/es5/classes/texture-cube.js.map +1 -1
- package/dist/es5/classes/texture-formats.js +35 -33
- package/dist/es5/classes/texture-formats.js.map +1 -1
- package/dist/es5/classes/texture.js +213 -101
- package/dist/es5/classes/texture.js.map +1 -1
- package/dist/es5/classes/transform-feedback.js +37 -34
- package/dist/es5/classes/transform-feedback.js.map +1 -1
- package/dist/es5/classes/uniform-buffer-layout.js +4 -4
- package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/es5/classes/uniforms.js +73 -73
- package/dist/es5/classes/uniforms.js.map +1 -1
- package/dist/es5/classes/vertex-array-object.js +106 -149
- package/dist/es5/classes/vertex-array-object.js.map +1 -1
- package/dist/es5/classes/vertex-array.js +52 -43
- package/dist/es5/classes/vertex-array.js.map +1 -1
- package/dist/es5/classes/{buffer.js → webgl-buffer.js} +120 -111
- package/dist/es5/classes/webgl-buffer.js.map +1 -0
- package/dist/es5/classes/{resource.js → webgl-resource.js} +78 -99
- package/dist/es5/classes/webgl-resource.js.map +1 -0
- package/dist/es5/context/context/context-state.js +31 -0
- package/dist/es5/context/context/context-state.js.map +1 -0
- package/dist/es5/context/context/create-context.js +57 -0
- package/dist/es5/context/context/create-context.js.map +1 -0
- package/dist/es5/context/context/device-pixels.js +115 -0
- package/dist/es5/context/context/device-pixels.js.map +1 -0
- package/dist/es5/context/context/get-canvas.js +40 -0
- package/dist/es5/context/context/get-canvas.js.map +1 -0
- package/dist/es5/context/context/resize-context.js +23 -0
- package/dist/es5/context/context/resize-context.js.map +1 -0
- package/dist/es5/context/context/webgl-checks.js +54 -0
- package/dist/es5/context/context/webgl-checks.js.map +1 -0
- package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
- package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
- package/dist/es5/context/parameters/webgl-parameters.js +6 -0
- package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
- package/dist/es5/context/polyfill/polyfill-context.js +134 -0
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
- package/dist/es5/context/polyfill/polyfill-table.js +166 -0
- package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
- package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
- package/dist/es5/context/state-tracker/track-context-state.js +196 -0
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
- package/dist/es5/context/state-tracker/with-parameters.js +44 -0
- package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
- package/dist/es5/debug/debug-program-configuration.js +1 -1
- package/dist/es5/debug/debug-program-configuration.js.map +1 -1
- package/dist/es5/debug/debug-uniforms.js +18 -20
- package/dist/es5/debug/debug-uniforms.js.map +1 -1
- package/dist/es5/debug/debug-vertex-array.js +16 -16
- package/dist/es5/debug/debug-vertex-array.js.map +1 -1
- package/dist/es5/helpers/get-program-bindings.js +274 -0
- package/dist/es5/helpers/get-program-bindings.js.map +1 -0
- package/dist/es5/helpers/program-bindings.js +2 -0
- package/dist/es5/helpers/program-bindings.js.map +1 -0
- package/dist/es5/index.js +229 -99
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +21 -41
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/types/accessor.d.ts +29 -0
- package/dist/es5/types.js +2 -0
- package/dist/es5/types.js.map +1 -0
- package/dist/es5/webgl-utils/attribute-utils.js +4 -4
- package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/es5/webgl-utils/constants-to-keys.js +3 -3
- package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/es5/webgl-utils/format-utils.js +21 -17
- package/dist/es5/webgl-utils/format-utils.js.map +1 -1
- package/dist/es5/webgl-utils/get-error.js.map +1 -1
- package/dist/es5/webgl-utils/index.js +74 -0
- package/dist/es5/webgl-utils/index.js.map +1 -0
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js +72 -0
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
- package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/es5/webgl-utils/texture-utils.js +6 -4
- package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
- package/dist/es5/webgl-utils/typed-array-utils.js +39 -34
- package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
- package/dist/esm/_deprecated/context-api.js +70 -0
- package/dist/esm/_deprecated/context-api.js.map +1 -0
- package/dist/esm/{features/webgl-features-table.js → _deprecated/features.js} +66 -26
- package/dist/esm/_deprecated/features.js.map +1 -0
- package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
- package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-features.js +123 -0
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-limits.js +90 -0
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/esm/adapter/device-helpers/get-device-info.js +44 -0
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/esm/adapter/device-helpers/is-old-ie.js +8 -0
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/esm/adapter/webgl-device.js +208 -0
- package/dist/esm/adapter/webgl-device.js.map +1 -0
- package/dist/esm/adapter/webgl-shader.js +82 -0
- package/dist/esm/adapter/webgl-shader.js.map +1 -0
- package/dist/esm/bundle.js +2 -4
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/classes/accessor.js +6 -6
- package/dist/esm/classes/accessor.js.map +1 -1
- package/dist/esm/classes/accessor.ts.disabled +159 -0
- package/dist/esm/classes/clear.js +19 -14
- package/dist/esm/classes/clear.js.map +1 -1
- package/dist/esm/classes/copy-and-blit.js +67 -64
- package/dist/esm/classes/copy-and-blit.js.map +1 -1
- package/dist/esm/classes/framebuffer.js +341 -313
- package/dist/esm/classes/framebuffer.js.map +1 -1
- package/dist/esm/classes/program-configuration.js +25 -104
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +98 -62
- package/dist/esm/classes/program.js.map +1 -1
- package/dist/esm/classes/query.js +20 -16
- package/dist/esm/classes/query.js.map +1 -1
- package/dist/esm/classes/renderbuffer-formats.js +72 -49
- package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
- package/dist/esm/classes/renderbuffer.js +86 -73
- package/dist/esm/classes/renderbuffer.js.map +1 -1
- package/dist/esm/classes/shader.js +47 -67
- package/dist/esm/classes/shader.js.map +1 -1
- package/dist/esm/classes/texture-2d.js +13 -9
- package/dist/esm/classes/texture-2d.js.map +1 -1
- package/dist/esm/classes/texture-3d.js +28 -16
- package/dist/esm/classes/texture-3d.js.map +1 -1
- package/dist/esm/classes/texture-cube.js +45 -31
- package/dist/esm/classes/texture-cube.js.map +1 -1
- package/dist/esm/classes/texture-formats.js +52 -51
- package/dist/esm/classes/texture-formats.js.map +1 -1
- package/dist/esm/classes/texture.js +174 -58
- package/dist/esm/classes/texture.js.map +1 -1
- package/dist/esm/classes/transform-feedback.js +26 -14
- package/dist/esm/classes/transform-feedback.js.map +1 -1
- package/dist/esm/classes/uniform-buffer-layout.js +1 -1
- package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/esm/classes/uniforms.js +111 -113
- package/dist/esm/classes/uniforms.js.map +1 -1
- package/dist/esm/classes/vertex-array-object.js +52 -89
- package/dist/esm/classes/vertex-array-object.js.map +1 -1
- package/dist/esm/classes/vertex-array.js +52 -31
- package/dist/esm/classes/vertex-array.js.map +1 -1
- package/dist/esm/classes/webgl-buffer.js +382 -0
- package/dist/esm/classes/webgl-buffer.js.map +1 -0
- package/dist/esm/classes/webgl-resource.js +212 -0
- package/dist/esm/classes/webgl-resource.js.map +1 -0
- package/dist/esm/context/context/context-state.js +26 -0
- package/dist/esm/context/context/context-state.js.map +1 -0
- package/dist/esm/context/context/create-context.js +37 -0
- package/dist/esm/context/context/create-context.js.map +1 -0
- package/dist/esm/context/context/device-pixels.js +98 -0
- package/dist/esm/context/context/device-pixels.js.map +1 -0
- package/dist/esm/context/context/get-canvas.js +31 -0
- package/dist/esm/context/context/get-canvas.js.map +1 -0
- package/dist/esm/context/context/resize-context.js +15 -0
- package/dist/esm/context/context/resize-context.js.map +1 -0
- package/dist/esm/context/context/webgl-checks.js +34 -0
- package/dist/esm/context/context/webgl-checks.js.map +1 -0
- package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
- package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
- package/dist/esm/context/parameters/webgl-parameters.js +2 -0
- package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
- package/dist/esm/context/polyfill/polyfill-context.js +91 -0
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
- package/dist/esm/context/polyfill/polyfill-table.js +160 -0
- package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
- package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
- package/dist/esm/context/state-tracker/track-context-state.js +169 -0
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
- package/dist/esm/context/state-tracker/with-parameters.js +36 -0
- package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
- package/dist/esm/debug/debug-program-configuration.js +4 -4
- package/dist/esm/debug/debug-program-configuration.js.map +1 -1
- package/dist/esm/debug/debug-uniforms.js +9 -9
- package/dist/esm/debug/debug-uniforms.js.map +1 -1
- package/dist/esm/debug/debug-vertex-array.js +18 -16
- package/dist/esm/debug/debug-vertex-array.js.map +1 -1
- package/dist/esm/helpers/get-program-bindings.js +228 -0
- package/dist/esm/helpers/get-program-bindings.js.map +1 -0
- package/dist/esm/helpers/program-bindings.js +2 -0
- package/dist/esm/helpers/program-bindings.js.map +1 -0
- package/dist/esm/index.js +19 -15
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +12 -28
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/accessor.d.ts +29 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/webgl-utils/attribute-utils.js +1 -1
- package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/esm/webgl-utils/constants-to-keys.js +4 -4
- package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/esm/webgl-utils/format-utils.js +16 -15
- package/dist/esm/webgl-utils/format-utils.js.map +1 -1
- package/dist/esm/webgl-utils/get-error.js +1 -1
- package/dist/esm/webgl-utils/get-error.js.map +1 -1
- package/dist/esm/webgl-utils/index.js +5 -0
- package/dist/esm/webgl-utils/index.js.map +1 -0
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
- package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/esm/webgl-utils/texture-utils.js +4 -3
- package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
- package/dist/esm/webgl-utils/typed-array-utils.js +41 -36
- package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
- package/dist/helpers/get-program-bindings.d.ts +8 -0
- package/dist/helpers/get-program-bindings.d.ts.map +1 -0
- package/dist/helpers/get-program-bindings.js +228 -0
- package/dist/helpers/get-program-bindings.js.map +1 -0
- package/dist/helpers/program-bindings.d.ts +41 -0
- package/dist/helpers/program-bindings.d.ts.map +1 -0
- package/dist/helpers/program-bindings.js +2 -0
- package/dist/helpers/program-bindings.js.map +1 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +5 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +33 -0
- package/dist/init.js.map +1 -0
- package/dist/types/accessor.d.ts +29 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/webgl-utils/attribute-utils.d.ts +18 -0
- package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
- package/dist/webgl-utils/attribute-utils.js +182 -0
- package/dist/webgl-utils/attribute-utils.js.map +1 -0
- package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
- package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
- package/dist/webgl-utils/constants-to-keys.js +41 -0
- package/dist/webgl-utils/constants-to-keys.js.map +1 -0
- package/dist/webgl-utils/format-utils.d.ts +3 -0
- package/dist/webgl-utils/format-utils.d.ts.map +1 -0
- package/dist/webgl-utils/format-utils.js +45 -0
- package/dist/webgl-utils/format-utils.js.map +1 -0
- package/dist/webgl-utils/get-error.d.ts +3 -0
- package/dist/webgl-utils/get-error.d.ts.map +1 -0
- package/dist/webgl-utils/get-error.js +41 -0
- package/dist/webgl-utils/get-error.js.map +1 -0
- package/dist/webgl-utils/index.d.ts +5 -0
- package/dist/webgl-utils/index.d.ts.map +1 -0
- package/dist/webgl-utils/index.js +5 -0
- package/dist/webgl-utils/index.js.map +1 -0
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
- package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
- package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
- package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
- package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
- package/dist/webgl-utils/request-animation-frame.js +7 -0
- package/dist/webgl-utils/request-animation-frame.js.map +1 -0
- package/dist/webgl-utils/texture-utils.d.ts +15 -0
- package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
- package/dist/webgl-utils/texture-utils.js +48 -0
- package/dist/webgl-utils/texture-utils.js.map +1 -0
- package/dist/webgl-utils/typed-array-utils.d.ts +43 -0
- package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
- package/{src → dist}/webgl-utils/typed-array-utils.js +45 -27
- package/dist/webgl-utils/typed-array-utils.js.map +1 -0
- package/package.json +9 -9
- package/src/.DS_Store +0 -0
- package/src/_deprecated/context-api.ts +140 -0
- package/src/_deprecated/features.ts +159 -0
- package/src/adapter/converters/set-device-parameters.ts +182 -0
- package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
- package/src/adapter/device-helpers/device-features.ts +227 -0
- package/src/adapter/device-helpers/device-limits.ts +150 -0
- package/src/adapter/device-helpers/get-device-info.ts +49 -0
- package/src/{features/check-old-ie.js → adapter/device-helpers/is-old-ie.ts} +3 -3
- package/src/adapter/webgl-device.ts +406 -0
- package/src/adapter/webgl-shader.ts +84 -0
- package/src/bundle.ts +4 -0
- package/src/classes/accessor.js +2 -3
- package/src/classes/accessor.ts.disabled +159 -0
- package/src/classes/clear.ts +108 -0
- package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +143 -55
- package/src/classes/{framebuffer.js → framebuffer.ts} +381 -321
- package/src/classes/program-configuration.ts +77 -0
- package/src/classes/{program.js → program.ts} +111 -77
- package/src/classes/{query.js → query.ts} +31 -25
- package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
- package/src/classes/renderbuffer.ts +154 -0
- package/src/classes/shader.ts +129 -0
- package/src/classes/texture-2d.ts +35 -0
- package/src/classes/{texture-3d.js → texture-3d.ts} +48 -18
- package/src/classes/{texture-cube.js → texture-cube.ts} +52 -34
- package/src/classes/{texture-formats.js → texture-formats.ts} +10 -2
- package/src/classes/{texture.js → texture.ts} +223 -57
- package/src/classes/{transform-feedback.js → transform-feedback.ts} +34 -25
- package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
- package/src/classes/{uniforms.js → uniforms.ts} +123 -77
- package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +136 -114
- package/src/classes/{vertex-array.js → vertex-array.ts} +84 -59
- package/src/classes/{buffer.js → webgl-buffer.ts} +126 -50
- package/src/classes/{resource.js → webgl-resource.ts} +55 -46
- package/src/context/context/context-state.ts +39 -0
- package/src/context/context/create-context.ts +83 -0
- package/src/context/context/device-pixels.ts +147 -0
- package/src/context/context/get-canvas.ts +37 -0
- package/src/context/context/resize-context.ts +37 -0
- package/src/context/context/webgl-checks.ts +49 -0
- package/src/context/parameters/unified-parameter-api.ts +128 -0
- package/src/context/parameters/webgl-parameter-tables.ts +625 -0
- package/src/context/parameters/webgl-parameters.ts +197 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
- package/src/context/polyfill/polyfill-context.ts +98 -0
- package/src/context/polyfill/polyfill-table.ts +162 -0
- package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
- package/src/context/state-tracker/deep-array-equal.ts +20 -0
- package/src/context/state-tracker/track-context-state.ts +250 -0
- package/src/context/state-tracker/with-parameters.ts +50 -0
- package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
- package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
- package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +6 -5
- package/src/helpers/get-program-bindings.ts +244 -0
- package/src/helpers/program-bindings.ts +46 -0
- package/src/index.ts +144 -0
- package/src/{init.js → init.ts} +11 -25
- package/src/types/accessor.d.ts +29 -0
- package/src/{types.d.ts → types.ts} +1 -1
- package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
- package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
- package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
- package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
- package/src/webgl-utils/index.ts +12 -0
- package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
- package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
- package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +14 -10
- package/src/webgl-utils/typed-array-utils.ts +137 -0
- package/dist/dist.js +0 -13555
- package/dist/dist.min.js +0 -1
- package/dist/es5/classes/buffer.d.ts +0 -84
- package/dist/es5/classes/buffer.js.map +0 -1
- package/dist/es5/classes/clear.d.ts +0 -11
- package/dist/es5/classes/copy-and-blit.d.ts +0 -101
- package/dist/es5/classes/framebuffer.d.ts +0 -96
- package/dist/es5/classes/program-configuration.d.ts +0 -15
- package/dist/es5/classes/program.d.ts +0 -44
- package/dist/es5/classes/query.d.ts +0 -21
- package/dist/es5/classes/renderbuffer.d.ts +0 -34
- package/dist/es5/classes/resource.d.ts +0 -47
- package/dist/es5/classes/resource.js.map +0 -1
- package/dist/es5/classes/shader.d.ts +0 -29
- package/dist/es5/classes/texture-2d.d.ts +0 -11
- package/dist/es5/classes/texture-3d.d.ts +0 -29
- package/dist/es5/classes/texture-cube.d.ts +0 -23
- package/dist/es5/classes/texture.d.ts +0 -80
- package/dist/es5/classes/transform-feedback.d.ts +0 -16
- package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
- package/dist/es5/classes/uniforms.d.ts +0 -63
- package/dist/es5/classes/vertex-array-object.d.ts +0 -25
- package/dist/es5/classes/vertex-array.d.ts +0 -37
- package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
- package/dist/es5/debug/debug-uniforms.d.ts +0 -11
- package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
- package/dist/es5/features/check-glsl-extension.js +0 -41
- package/dist/es5/features/check-glsl-extension.js.map +0 -1
- package/dist/es5/features/check-old-ie.js.map +0 -1
- package/dist/es5/features/features.js +0 -99
- package/dist/es5/features/features.js.map +0 -1
- package/dist/es5/features/index.js +0 -64
- package/dist/es5/features/index.js.map +0 -1
- package/dist/es5/features/limits.js +0 -64
- package/dist/es5/features/limits.js.map +0 -1
- package/dist/es5/features/webgl-features-table.js +0 -64
- package/dist/es5/features/webgl-features-table.js.map +0 -1
- package/dist/es5/features/webgl-limits-table.js +0 -132
- package/dist/es5/features/webgl-limits-table.js.map +0 -1
- package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
- package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
- package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
- package/dist/es5/glsl-utils/get-shader-name.js +0 -14
- package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
- package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
- package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
- package/dist/es5/glsl-utils/get-shader-version.js +0 -22
- package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
- package/dist/es5/glsl-utils/index.js +0 -48
- package/dist/es5/glsl-utils/index.js.map +0 -1
- package/dist/es5/index.d.ts +0 -71
- package/dist/es5/init.d.ts +0 -12
- package/dist/es5/types.d.ts +0 -8
- package/dist/es5/utils/array-utils-flat.js +0 -51
- package/dist/es5/utils/array-utils-flat.js.map +0 -1
- package/dist/es5/utils/assert.d.ts +0 -1
- package/dist/es5/utils/assert.js +0 -13
- package/dist/es5/utils/assert.js.map +0 -1
- package/dist/es5/utils/check-props.js +0 -51
- package/dist/es5/utils/check-props.js.map +0 -1
- package/dist/es5/utils/format-value.js +0 -57
- package/dist/es5/utils/format-value.js.map +0 -1
- package/dist/es5/utils/is-old-ie.d.ts +0 -1
- package/dist/es5/utils/is-old-ie.js +0 -14
- package/dist/es5/utils/is-old-ie.js.map +0 -1
- package/dist/es5/utils/load-file.js +0 -50
- package/dist/es5/utils/load-file.js.map +0 -1
- package/dist/es5/utils/stub-methods.js +0 -25
- package/dist/es5/utils/stub-methods.js.map +0 -1
- package/dist/es5/utils/utils.d.ts +0 -13
- package/dist/es5/utils/utils.js +0 -36
- package/dist/es5/utils/utils.js.map +0 -1
- package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
- package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
- package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
- package/dist/esm/classes/buffer.d.ts +0 -84
- package/dist/esm/classes/buffer.js.map +0 -1
- package/dist/esm/classes/clear.d.ts +0 -11
- package/dist/esm/classes/copy-and-blit.d.ts +0 -101
- package/dist/esm/classes/framebuffer.d.ts +0 -96
- package/dist/esm/classes/program-configuration.d.ts +0 -15
- package/dist/esm/classes/program.d.ts +0 -44
- package/dist/esm/classes/query.d.ts +0 -21
- package/dist/esm/classes/renderbuffer.d.ts +0 -34
- package/dist/esm/classes/resource.d.ts +0 -47
- package/dist/esm/classes/resource.js.map +0 -1
- package/dist/esm/classes/shader.d.ts +0 -29
- package/dist/esm/classes/texture-2d.d.ts +0 -11
- package/dist/esm/classes/texture-3d.d.ts +0 -29
- package/dist/esm/classes/texture-cube.d.ts +0 -23
- package/dist/esm/classes/texture.d.ts +0 -80
- package/dist/esm/classes/transform-feedback.d.ts +0 -16
- package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
- package/dist/esm/classes/uniforms.d.ts +0 -63
- package/dist/esm/classes/vertex-array-object.d.ts +0 -25
- package/dist/esm/classes/vertex-array.d.ts +0 -37
- package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
- package/dist/esm/debug/debug-uniforms.d.ts +0 -11
- package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
- package/dist/esm/features/check-glsl-extension.js +0 -27
- package/dist/esm/features/check-glsl-extension.js.map +0 -1
- package/dist/esm/features/check-old-ie.js.map +0 -1
- package/dist/esm/features/features.js +0 -66
- package/dist/esm/features/features.js.map +0 -1
- package/dist/esm/features/index.js +0 -5
- package/dist/esm/features/index.js.map +0 -1
- package/dist/esm/features/limits.js +0 -52
- package/dist/esm/features/limits.js.map +0 -1
- package/dist/esm/features/webgl-features-table.js.map +0 -1
- package/dist/esm/features/webgl-limits-table.js +0 -160
- package/dist/esm/features/webgl-limits-table.js.map +0 -1
- package/dist/esm/glsl-utils/format-glsl-error.d.ts +0 -16
- package/dist/esm/glsl-utils/format-glsl-error.js +0 -93
- package/dist/esm/glsl-utils/format-glsl-error.js.map +0 -1
- package/dist/esm/glsl-utils/get-shader-name.js +0 -6
- package/dist/esm/glsl-utils/get-shader-name.js.map +0 -1
- package/dist/esm/glsl-utils/get-shader-type-name.js +0 -15
- package/dist/esm/glsl-utils/get-shader-type-name.js.map +0 -1
- package/dist/esm/glsl-utils/get-shader-version.js +0 -15
- package/dist/esm/glsl-utils/get-shader-version.js.map +0 -1
- package/dist/esm/glsl-utils/index.js +0 -5
- package/dist/esm/glsl-utils/index.js.map +0 -1
- package/dist/esm/index.d.ts +0 -71
- package/dist/esm/init.d.ts +0 -12
- package/dist/esm/types.d.ts +0 -8
- package/dist/esm/utils/array-utils-flat.js +0 -39
- package/dist/esm/utils/array-utils-flat.js.map +0 -1
- package/dist/esm/utils/assert.d.ts +0 -1
- package/dist/esm/utils/assert.js +0 -6
- package/dist/esm/utils/assert.js.map +0 -1
- package/dist/esm/utils/check-props.js +0 -38
- package/dist/esm/utils/check-props.js.map +0 -1
- package/dist/esm/utils/format-value.js +0 -50
- package/dist/esm/utils/format-value.js.map +0 -1
- package/dist/esm/utils/is-old-ie.d.ts +0 -1
- package/dist/esm/utils/is-old-ie.js +0 -5
- package/dist/esm/utils/is-old-ie.js.map +0 -1
- package/dist/esm/utils/load-file.js +0 -30
- package/dist/esm/utils/load-file.js.map +0 -1
- package/dist/esm/utils/stub-methods.js +0 -17
- package/dist/esm/utils/stub-methods.js.map +0 -1
- package/dist/esm/utils/utils.d.ts +0 -13
- package/dist/esm/utils/utils.js +0 -22
- package/dist/esm/utils/utils.js.map +0 -1
- package/dist/esm/webgl-utils/request-animation-frame.d.ts +0 -3
- package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
- package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
- package/src/bundle.js +0 -8
- package/src/classes/buffer.d.ts +0 -84
- package/src/classes/clear.d.ts +0 -11
- package/src/classes/copy-and-blit.d.ts +0 -101
- package/src/classes/framebuffer.d.ts +0 -96
- package/src/classes/program-configuration.d.ts +0 -15
- package/src/classes/program-configuration.js +0 -123
- package/src/classes/program.d.ts +0 -44
- package/src/classes/query.d.ts +0 -21
- package/src/classes/renderbuffer.d.ts +0 -34
- package/src/classes/renderbuffer.js +0 -105
- package/src/classes/resource.d.ts +0 -47
- package/src/classes/shader.d.ts +0 -29
- package/src/classes/shader.js +0 -147
- package/src/classes/texture-2d.d.ts +0 -11
- package/src/classes/texture-2d.js +0 -30
- package/src/classes/texture-3d.d.ts +0 -29
- package/src/classes/texture-cube.d.ts +0 -23
- package/src/classes/texture.d.ts +0 -80
- package/src/classes/transform-feedback.d.ts +0 -16
- package/src/classes/uniform-buffer-layout.d.ts +0 -18
- package/src/classes/uniforms.d.ts +0 -63
- package/src/classes/vertex-array-object.d.ts +0 -25
- package/src/classes/vertex-array.d.ts +0 -37
- package/src/debug/debug-program-configuration.d.ts +0 -1
- package/src/debug/debug-uniforms.d.ts +0 -11
- package/src/debug/debug-vertex-array.d.ts +0 -1
- package/src/features/check-glsl-extension.js +0 -34
- package/src/features/features.js +0 -79
- package/src/features/index.js +0 -5
- package/src/features/limits.js +0 -65
- package/src/features/webgl-limits-table.js +0 -51
- package/src/glsl-utils/format-glsl-error.d.ts +0 -16
- package/src/glsl-utils/format-glsl-error.js +0 -107
- package/src/glsl-utils/get-shader-name.js +0 -7
- package/src/glsl-utils/get-shader-type-name.js +0 -13
- package/src/glsl-utils/get-shader-version.js +0 -12
- package/src/glsl-utils/index.js +0 -8
- package/src/index.d.ts +0 -71
- package/src/index.js +0 -70
- package/src/init.d.ts +0 -12
- package/src/utils/array-utils-flat.js +0 -56
- package/src/utils/assert.d.ts +0 -1
- package/src/utils/assert.js +0 -7
- package/src/utils/check-props.js +0 -68
- package/src/utils/format-value.js +0 -37
- package/src/utils/is-old-ie.d.ts +0 -1
- package/src/utils/is-old-ie.js +0 -6
- package/src/utils/load-file.js +0 -39
- package/src/utils/stub-methods.js +0 -20
- package/src/utils/utils.d.ts +0 -13
- package/src/utils/utils.js +0 -36
- package/src/webgl-utils/request-animation-frame.d.ts +0 -3
- package/src/webgl-utils/texture-utils.d.ts +0 -11
- package/src/webgl-utils/typed-array-utils.d.ts +0 -36
|
@@ -11,41 +11,47 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
11
11
|
|
|
12
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
16
|
+
var _api = require("@luma.gl/api");
|
|
17
|
+
|
|
18
|
+
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
15
19
|
|
|
16
20
|
var _accessor2 = _interopRequireDefault(require("./accessor"));
|
|
17
21
|
|
|
18
|
-
var
|
|
22
|
+
var _webglBuffer = _interopRequireDefault(require("./webgl-buffer"));
|
|
19
23
|
|
|
20
24
|
var _vertexArrayObject = _interopRequireDefault(require("./vertex-array-object"));
|
|
21
25
|
|
|
22
|
-
var
|
|
26
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
23
27
|
|
|
24
|
-
var
|
|
28
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
25
29
|
|
|
26
30
|
var ERR_ATTRIBUTE_TYPE = 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';
|
|
27
31
|
var MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;
|
|
28
|
-
var DEPRECATIONS_V6 = ['setBuffers', 'setGeneric', 'clearBindings', 'setLocations', 'setGenericValues', 'setDivisor', 'enable', 'disable'];
|
|
29
32
|
|
|
30
33
|
var VertexArray = function () {
|
|
31
|
-
function VertexArray(gl) {
|
|
32
|
-
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
34
|
+
function VertexArray(gl, props) {
|
|
33
35
|
(0, _classCallCheck2.default)(this, VertexArray);
|
|
34
|
-
|
|
36
|
+
(0, _defineProperty2.default)(this, "id", void 0);
|
|
37
|
+
(0, _defineProperty2.default)(this, "gl", void 0);
|
|
38
|
+
(0, _defineProperty2.default)(this, "attributes", {});
|
|
39
|
+
(0, _defineProperty2.default)(this, "vertexArrayObject", void 0);
|
|
40
|
+
(0, _defineProperty2.default)(this, "accessors", []);
|
|
41
|
+
(0, _defineProperty2.default)(this, "configuration", null);
|
|
42
|
+
(0, _defineProperty2.default)(this, "elements", null);
|
|
43
|
+
(0, _defineProperty2.default)(this, "elementsAccessor", null);
|
|
44
|
+
(0, _defineProperty2.default)(this, "values", null);
|
|
45
|
+
(0, _defineProperty2.default)(this, "unused", null);
|
|
46
|
+
(0, _defineProperty2.default)(this, "drawParams", null);
|
|
47
|
+
(0, _defineProperty2.default)(this, "buffer", null);
|
|
48
|
+
(0, _defineProperty2.default)(this, "bindOnUse", false);
|
|
49
|
+
var id = (props === null || props === void 0 ? void 0 : props.id) || (props === null || props === void 0 ? void 0 : props.program) && (props === null || props === void 0 ? void 0 : props.program.id);
|
|
50
|
+
this.vertexArrayObject = new _vertexArrayObject.default(gl);
|
|
35
51
|
this.id = id;
|
|
36
52
|
this.gl = gl;
|
|
37
53
|
this.configuration = null;
|
|
38
|
-
this.
|
|
39
|
-
this.elementsAccessor = null;
|
|
40
|
-
this.values = null;
|
|
41
|
-
this.accessors = null;
|
|
42
|
-
this.unused = null;
|
|
43
|
-
this.drawParams = null;
|
|
44
|
-
this.buffer = null;
|
|
45
|
-
this.attributes = {};
|
|
46
|
-
this.vertexArrayObject = new _vertexArrayObject.default(gl);
|
|
47
|
-
(0, _stubMethods.stubRemovedMethods)(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);
|
|
48
|
-
this.initialize(opts);
|
|
54
|
+
this.initialize(props);
|
|
49
55
|
Object.seal(this);
|
|
50
56
|
}
|
|
51
57
|
|
|
@@ -60,12 +66,11 @@ var VertexArray = function () {
|
|
|
60
66
|
}
|
|
61
67
|
}, {
|
|
62
68
|
key: "initialize",
|
|
63
|
-
value: function initialize() {
|
|
64
|
-
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
69
|
+
value: function initialize(props) {
|
|
65
70
|
this.reset();
|
|
66
71
|
this.configuration = null;
|
|
67
72
|
this.bindOnUse = false;
|
|
68
|
-
return this.setProps(props);
|
|
73
|
+
return this.setProps(props || {});
|
|
69
74
|
}
|
|
70
75
|
}, {
|
|
71
76
|
key: "reset",
|
|
@@ -122,13 +127,13 @@ var VertexArray = function () {
|
|
|
122
127
|
|
|
123
128
|
Object.assign(this.attributes, attributes);
|
|
124
129
|
this.vertexArrayObject.bind(function () {
|
|
125
|
-
for (var
|
|
126
|
-
var
|
|
130
|
+
for (var _locationOrName in attributes) {
|
|
131
|
+
var _value = attributes[_locationOrName];
|
|
127
132
|
|
|
128
|
-
_this._setAttribute(
|
|
133
|
+
_this._setAttribute(_locationOrName, _value);
|
|
129
134
|
}
|
|
130
135
|
|
|
131
|
-
_this.gl.bindBuffer(
|
|
136
|
+
_this.gl.bindBuffer(_constants.default.ARRAY_BUFFER, null);
|
|
132
137
|
});
|
|
133
138
|
return this;
|
|
134
139
|
}
|
|
@@ -148,8 +153,9 @@ var VertexArray = function () {
|
|
|
148
153
|
value: function setBuffer(locationOrName, buffer) {
|
|
149
154
|
var appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
150
155
|
|
|
151
|
-
if (buffer.target ===
|
|
152
|
-
|
|
156
|
+
if (buffer.target === _constants.default.ELEMENT_ARRAY_BUFFER) {
|
|
157
|
+
this.setElementBuffer(buffer, appAccessor);
|
|
158
|
+
return this;
|
|
153
159
|
}
|
|
154
160
|
|
|
155
161
|
var _this$_resolveLocatio = this._resolveLocationAndAccessor(locationOrName, buffer, buffer.accessor, appAccessor),
|
|
@@ -170,7 +176,7 @@ var VertexArray = function () {
|
|
|
170
176
|
value: function setConstant(locationOrName, arrayValue) {
|
|
171
177
|
var appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
172
178
|
|
|
173
|
-
var _this$_resolveLocatio2 = this._resolveLocationAndAccessor(locationOrName, arrayValue,
|
|
179
|
+
var _this$_resolveLocatio2 = this._resolveLocationAndAccessor(locationOrName, arrayValue, _objectSpread({
|
|
174
180
|
size: arrayValue.length
|
|
175
181
|
}, appAccessor)),
|
|
176
182
|
location = _this$_resolveLocatio2.location,
|
|
@@ -196,19 +202,19 @@ var VertexArray = function () {
|
|
|
196
202
|
_this2.vertexArrayObject.setElementBuffer(null);
|
|
197
203
|
}
|
|
198
204
|
|
|
199
|
-
_this2.buffer = _this2.buffer || new
|
|
205
|
+
_this2.buffer = _this2.buffer || new _webglBuffer.default(_this2.gl, {
|
|
200
206
|
accessor: {
|
|
201
207
|
size: 4
|
|
202
208
|
}
|
|
203
209
|
});
|
|
204
210
|
|
|
205
211
|
for (var location = 0; location < _this2.vertexArrayObject.MAX_ATTRIBUTES; location++) {
|
|
206
|
-
if (_this2.values[location] instanceof
|
|
212
|
+
if (_this2.values[location] instanceof _webglBuffer.default) {
|
|
207
213
|
_this2.gl.disableVertexAttribArray(location);
|
|
208
214
|
|
|
209
|
-
_this2.gl.bindBuffer(
|
|
215
|
+
_this2.gl.bindBuffer(_constants.default.ARRAY_BUFFER, _this2.buffer.handle);
|
|
210
216
|
|
|
211
|
-
_this2.gl.vertexAttribPointer(location, 1,
|
|
217
|
+
_this2.gl.vertexAttribPointer(location, 1, _constants.default.FLOAT, false, 0, 0);
|
|
212
218
|
}
|
|
213
219
|
}
|
|
214
220
|
});
|
|
@@ -227,7 +233,7 @@ var VertexArray = function () {
|
|
|
227
233
|
for (var location = 0; location < _this3.vertexArrayObject.MAX_ATTRIBUTES; location++) {
|
|
228
234
|
var buffer = _this3.values[location];
|
|
229
235
|
|
|
230
|
-
if (buffer instanceof
|
|
236
|
+
if (buffer instanceof _webglBuffer.default) {
|
|
231
237
|
_this3.setBuffer(location, buffer);
|
|
232
238
|
}
|
|
233
239
|
}
|
|
@@ -264,7 +270,7 @@ var VertexArray = function () {
|
|
|
264
270
|
if (!Number.isFinite(location) || location < 0) {
|
|
265
271
|
this.unused[locationOrName] = value;
|
|
266
272
|
|
|
267
|
-
|
|
273
|
+
_api.log.once(3, function () {
|
|
268
274
|
return "unused value ".concat(locationOrName, " in ").concat(_this5.id);
|
|
269
275
|
})();
|
|
270
276
|
|
|
@@ -283,7 +289,7 @@ var VertexArray = function () {
|
|
|
283
289
|
|
|
284
290
|
var size = accessor.size,
|
|
285
291
|
type = accessor.type;
|
|
286
|
-
(0,
|
|
292
|
+
(0, _api.assert)(Number.isFinite(size) && Number.isFinite(type));
|
|
287
293
|
return {
|
|
288
294
|
location: location,
|
|
289
295
|
accessor: accessor
|
|
@@ -305,8 +311,8 @@ var VertexArray = function () {
|
|
|
305
311
|
};
|
|
306
312
|
}
|
|
307
313
|
|
|
308
|
-
var multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);
|
|
309
|
-
var name = multiLocation ? multiLocation[1] : locationOrName;
|
|
314
|
+
var multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(String(locationOrName));
|
|
315
|
+
var name = multiLocation ? multiLocation[1] : String(locationOrName);
|
|
310
316
|
var locationOffset = multiLocation ? Number(multiLocation[2]) : 0;
|
|
311
317
|
|
|
312
318
|
if (this.configuration) {
|
|
@@ -323,16 +329,16 @@ var VertexArray = function () {
|
|
|
323
329
|
}, {
|
|
324
330
|
key: "_setAttribute",
|
|
325
331
|
value: function _setAttribute(locationOrName, value) {
|
|
326
|
-
if (value instanceof
|
|
332
|
+
if (value instanceof _webglBuffer.default) {
|
|
327
333
|
this.setBuffer(locationOrName, value);
|
|
328
|
-
} else if (Array.isArray(value) && value.length && value[0] instanceof
|
|
334
|
+
} else if (Array.isArray(value) && value.length && value[0] instanceof _webglBuffer.default) {
|
|
329
335
|
var buffer = value[0];
|
|
330
336
|
var accessor = value[1];
|
|
331
337
|
this.setBuffer(locationOrName, buffer, accessor);
|
|
332
338
|
} else if (ArrayBuffer.isView(value) || Array.isArray(value)) {
|
|
333
339
|
var constant = value;
|
|
334
340
|
this.setConstant(locationOrName, constant);
|
|
335
|
-
} else if (value.buffer instanceof
|
|
341
|
+
} else if (value.buffer instanceof _webglBuffer.default) {
|
|
336
342
|
var _accessor = value;
|
|
337
343
|
this.setBuffer(locationOrName, _accessor.buffer, _accessor);
|
|
338
344
|
} else {
|
|
@@ -380,6 +386,9 @@ var VertexArray = function () {
|
|
|
380
386
|
key: "_updateDrawParams",
|
|
381
387
|
value: function _updateDrawParams() {
|
|
382
388
|
var drawParams = {
|
|
389
|
+
elementCount: 0,
|
|
390
|
+
indexType: Uint16Array,
|
|
391
|
+
indexOffset: 0,
|
|
383
392
|
isIndexed: false,
|
|
384
393
|
isInstanced: false,
|
|
385
394
|
indexCount: Infinity,
|
|
@@ -426,7 +435,7 @@ var VertexArray = function () {
|
|
|
426
435
|
var isInstanced = divisor > 0;
|
|
427
436
|
drawParams.isInstanced = drawParams.isInstanced || isInstanced;
|
|
428
437
|
|
|
429
|
-
if (value instanceof
|
|
438
|
+
if (value instanceof _webglBuffer.default) {
|
|
430
439
|
var buffer = value;
|
|
431
440
|
|
|
432
441
|
if (isInstanced) {
|
|
@@ -444,7 +453,7 @@ var VertexArray = function () {
|
|
|
444
453
|
var elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
445
454
|
var accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
446
455
|
|
|
447
|
-
|
|
456
|
+
_api.log.deprecated('setElements', 'setElementBuffer')();
|
|
448
457
|
|
|
449
458
|
return this.setElementBuffer(elementBuffer, accessor);
|
|
450
459
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/vertex-array.js"],"names":["ERR_ATTRIBUTE_TYPE","MULTI_LOCATION_ATTRIBUTE_REGEXP","DEPRECATIONS_V6","VertexArray","gl","opts","id","program","configuration","elements","elementsAccessor","values","accessors","unused","drawParams","buffer","attributes","vertexArrayObject","VertexArrayObject","initialize","Object","seal","delete","props","reset","bindOnUse","setProps","MAX_ATTRIBUTES","Array","fill","setAttributes","setElementBuffer","_updateDrawParams","assign","bind","locationOrName","value","_setAttribute","bindBuffer","elementBuffer","accessor","clearDrawParams","appAccessor","target","_resolveLocationAndAccessor","location","setBuffer","arrayValue","size","length","_normalizeConstantArrayValue","enable","Buffer","disableVertexAttribArray","handle","vertexAttribPointer","vertexCount","instanceCount","func","_setConstantAttributes","valueAccessor","INVALID_RESULT","_getAttributeIndex","name","Number","isFinite","log","once","accessInfo","_getAttributeInfo","currentAccessor","Accessor","resolve","type","attributeName","getAttributeInfo","multiLocation","exec","locationOffset","getAttributeLocation","isArray","ArrayBuffer","isView","constant","setConstant","Error","elementCount","Math","max","_setConstantAttributeZero","_setConstantAttribute","isSupported","constantAttributeZero","getConstantBuffer","isIndexed","isInstanced","indexCount","Infinity","_updateDrawParamsForLocation","getElementCount","indexType","indexOffset","offset","divisor","getVertexCount","min","deprecated"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Accessor from './accessor';\nimport Buffer from './buffer';\nimport VertexArrayObject from './vertex-array-object';\nimport {assert} from '../utils/assert';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_ATTRIBUTE_TYPE =\n 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\n\n// This is done to support mat type attributes.\n// See section \"Notes about setting mat type attributes\"\n// in vertex-array.md\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\n\nconst DEPRECATIONS_V6 = [\n 'setBuffers',\n 'setGeneric',\n 'clearBindings',\n 'setLocations',\n 'setGenericValues',\n 'setDivisor',\n 'enable',\n 'disable'\n];\n\nexport default class VertexArray {\n constructor(gl, opts = {}) {\n // Use program's id if program is supplied but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n // super(gl, Object.assign({}, opts, {id}));\n\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n\n // Extracted information\n this.elements = null;\n this.elementsAccessor = null;\n this.values = null;\n this.accessors = null;\n this.unused = null;\n this.drawParams = null;\n this.buffer = null; // For attribute 0 on desktops, and created when unbinding buffers\n\n this.attributes = {};\n\n this.vertexArrayObject = new VertexArrayObject(gl);\n\n // Issue errors when using removed methods\n stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n\n this.initialize(opts);\n Object.seal(this);\n }\n\n delete() {\n if (this.buffer) {\n this.buffer.delete();\n }\n\n this.vertexArrayObject.delete();\n }\n\n initialize(props = {}) {\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props);\n }\n\n // Resets all attributes (to default valued constants)\n reset() {\n // this.vertexArrayObject.reset();\n\n this.elements = null;\n this.elementsAccessor = null;\n const {MAX_ATTRIBUTES} = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n\n // Auto detects draw params\n this.drawParams = null;\n\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n return this;\n }\n\n // Automatically called if buffers changed through VertexArray API\n clearDrawParams() {\n this.drawParams = null;\n }\n\n getDrawParams() {\n // Auto deduced draw parameters\n this.drawParams = this.drawParams || this._updateDrawParams();\n\n return this.drawParams;\n }\n\n // Set (bind) an array or map of vertex array buffers, either in numbered or named locations.\n // For names that are not present in `location`, the supplied buffers will be ignored.\n // if a single buffer of type GL.ELEMENT_ARRAY_BUFFER is present, it will be set as elements\n // Signatures:\n // {attributeName: buffer}\n // {attributeName: [buffer, accessor]}\n // {attributeName: (typed) array} => constant\n setAttributes(attributes) {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n // Make sure we don't leave any bindings\n this.gl.bindBuffer(GL.ARRAY_BUFFER, null);\n });\n\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, accessor = {}) {\n this.elements = elementBuffer; // Save value for debugging\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n\n return this;\n }\n\n // Set a location in vertex attributes array to a buffer\n setBuffer(locationOrName, buffer, appAccessor = {}) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, appAccessor);\n }\n\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n buffer,\n buffer.accessor,\n appAccessor\n );\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n\n return this;\n }\n\n // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)\n setConstant(locationOrName, arrayValue, appAccessor = {}) {\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n arrayValue,\n // Ensure that size isn't taken from program for multi-column\n // attributes\n Object.assign({size: arrayValue.length}, appAccessor)\n );\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // NOTE: We set the actual constant value later on bind. We can't set the value now since\n // constants are global and affect all other VertexArrays that have disabled attributes\n // in the same location.\n // We do disable the attribute which makes it use the global constant value at that location\n this.vertexArrayObject.enable(location, false);\n }\n\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, unbind temporarily to avoid conflicting with TransformFeedback\n unbindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n\n // Chrome does not like buffers that are bound to several binding points,\n // so we need to offer and unbind facility\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {accessor: {size: 4}});\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, rebind rebind after temporary unbind\n bindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n // Bind for use\n // When a vertex array is about to be used, we must:\n // - Set constant attributes (since these are stored on the context and reset on bind)\n // - Check if we need to initialize the buffer\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n\n this.vertexArrayObject.bind(() => {\n // Make sure that any constant attributes are updated (stored on the context, not the VAO)\n // Also handles attribute 0\n this._setConstantAttributes(vertexCount, instanceCount);\n\n value = func();\n });\n\n return value;\n }\n\n // PRIVATE\n\n // Resolve locations and accessors\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const INVALID_RESULT = {\n location: -1,\n accessor: null\n };\n\n const {location, name} = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => `unused value ${locationOrName} in ${this.id}`)();\n return INVALID_RESULT;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n // Attribute location wasn't directly found.\n // Likely due to multi-location attributes (e.g. matrix)\n if (!accessInfo) {\n return INVALID_RESULT;\n }\n\n // Resolve the partial accessors into a final accessor\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(\n accessInfo.accessor,\n currentAccessor,\n valueAccessor,\n appAccessor\n );\n\n const {size, type} = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n\n return {location, accessor};\n }\n\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {location: -1};\n }\n\n _setAttribute(locationOrName, value) {\n if (value instanceof Buffer) {\n // Signature: {attributeName: Buffer}\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n // Signature: {attributeName: [buffer, accessor]}\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n // Signature: {attributeName: constant}, constant == short (typed) array\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n // luma.gl v7: Support accessor objects with 'buffer' field\n // for interleaved data\n // Signature: {attributeName: {...accessor, buffer}}\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n // Updates all constant attribute values (constants are used when vertex attributes are disabled).\n // This needs to be done repeatedly since in contrast to buffer bindings,\n // constants are stored on the WebGL context, not the VAO\n _setConstantAttributes(vertexCount, instanceCount) {\n // TODO - use accessor to determine what length to use\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount) {\n if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {\n this._setConstantAttribute(0, constant);\n return;\n }\n\n // Get a dummy buffer populated with repeated constants\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n\n // Set the buffer on location 0\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location, constant) {\n VertexArrayObject.setConstant(this.gl, location, constant);\n }\n\n // Walks the buffers and updates draw parameters\n _updateDrawParams() {\n const drawParams = {\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n // indexing is autodetected - buffer with target GL.ELEMENT_ARRAY_BUFFER\n // index type is saved for drawElement calls\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n // Post-calculation checks\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams, location) {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n // Check if instanced (whether buffer or constant)\n const {divisor} = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n // instance attribute\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n // normal attribute\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n // DEPRECATED in v6.x - but not warnings not properly implemented\n\n setElements(elementBuffer = null, accessor = {}) {\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n}\n"],"file":"vertex-array.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/vertex-array.ts"],"names":["ERR_ATTRIBUTE_TYPE","MULTI_LOCATION_ATTRIBUTE_REGEXP","VertexArray","gl","props","id","program","vertexArrayObject","VertexArrayObject","configuration","initialize","Object","seal","buffer","delete","reset","bindOnUse","setProps","elements","elementsAccessor","MAX_ATTRIBUTES","values","Array","fill","accessors","unused","drawParams","setAttributes","attributes","setElementBuffer","_updateDrawParams","assign","bind","locationOrName","value","_setAttribute","bindBuffer","GL","ARRAY_BUFFER","elementBuffer","accessor","clearDrawParams","appAccessor","target","ELEMENT_ARRAY_BUFFER","_resolveLocationAndAccessor","location","setBuffer","arrayValue","size","length","_normalizeConstantArrayValue","enable","Buffer","disableVertexAttribArray","handle","vertexAttribPointer","FLOAT","vertexCount","instanceCount","func","_setConstantAttributes","valueAccessor","INVALID_RESULT","_getAttributeIndex","name","Number","isFinite","log","once","accessInfo","_getAttributeInfo","currentAccessor","Accessor","resolve","type","attributeName","getAttributeInfo","multiLocation","exec","String","locationOffset","getAttributeLocation","isArray","ArrayBuffer","isView","constant","setConstant","Error","elementCount","Math","max","_setConstantAttributeZero","_setConstantAttribute","isSupported","constantAttributeZero","getConstantBuffer","indexType","Uint16Array","indexOffset","isIndexed","isInstanced","indexCount","Infinity","_updateDrawParamsForLocation","getElementCount","offset","divisor","getVertexCount","min","deprecated"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAIA;;;;;;AAEA,IAAMA,kBAAkB,GACtB,yEADF;AAMA,IAAMC,+BAA+B,GAAG,2BAAxC;;IAsBqBC,W;AAmBnB,uBAAYC,EAAZ,EAAuCC,KAAvC,EAAiE;AAAA;AAAA;AAAA;AAAA,sDAhBnC,EAgBmC;AAAA;AAAA,qDAbzC,EAayC;AAAA,yDAZpB,IAYoB;AAAA,oDATtD,IASsD;AAAA,4DAR9C,IAQ8C;AAAA,kDAPxD,IAOwD;AAAA,kDANxD,IAMwD;AAAA,sDALpD,IAKoD;AAAA,kDAJxD,IAIwD;AAAA,qDAFrD,KAEqD;AAE/D,QAAMC,EAAE,GAAG,CAAAD,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEC,EAAP,KAAc,CAAAD,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEE,OAAP,MAAkBF,KAAlB,aAAkBA,KAAlB,uBAAkBA,KAAK,CAAEE,OAAP,CAAeD,EAAjC,CAAzB;AAGA,SAAKE,iBAAL,GAAyB,IAAIC,0BAAJ,CAAsBL,EAAtB,CAAzB;AAEA,SAAKE,EAAL,GAAUA,EAAV;AACA,SAAKF,EAAL,GAAUA,EAAV;AACA,SAAKM,aAAL,GAAqB,IAArB;AAEA,SAAKC,UAAL,CAAgBN,KAAhB;AACAO,IAAAA,MAAM,CAACC,IAAP,CAAY,IAAZ;AACD;;;;WAED,mBAAe;AACb,UAAI,KAAKC,MAAT,EAAiB;AACf,aAAKA,MAAL,CAAYC,MAAZ;AACD;;AAED,WAAKP,iBAAL,CAAuBO,MAAvB;AACD;;;WAED,oBAAWV,KAAX,EAAqC;AACnC,WAAKW,KAAL;AACA,WAAKN,aAAL,GAAqB,IAArB;AACA,WAAKO,SAAL,GAAiB,KAAjB;AACA,aAAO,KAAKC,QAAL,CAAcb,KAAK,IAAI,EAAvB,CAAP;AACD;;;WAGD,iBAAQ;AAGN,WAAKc,QAAL,GAAgB,IAAhB;AACA,WAAKC,gBAAL,GAAwB,IAAxB;AACA,UAAOC,cAAP,GAAyB,KAAKb,iBAA9B,CAAOa,cAAP;AACA,WAAKC,MAAL,GAAc,IAAIC,KAAJ,CAAUF,cAAV,EAA0BG,IAA1B,CAA+B,IAA/B,CAAd;AACA,WAAKC,SAAL,GAAiB,IAAIF,KAAJ,CAAUF,cAAV,EAA0BG,IAA1B,CAA+B,IAA/B,CAAjB;AACA,WAAKE,MAAL,GAAc,EAAd;AAGA,WAAKC,UAAL,GAAkB,IAAlB;AAEA,aAAO,IAAP;AACD;;;WAED,kBAAStB,KAAT,EAAkC;AAChC,UAAI,aAAaA,KAAjB,EAAwB;AACtB,aAAKK,aAAL,GAAqBL,KAAK,CAACE,OAAN,IAAiBF,KAAK,CAACE,OAAN,CAAcG,aAApD;AACD;;AACD,UAAI,mBAAmBL,KAAvB,EAA8B;AAC5B,aAAKK,aAAL,GAAqBL,KAAK,CAACK,aAA3B;AACD;;AACD,UAAI,gBAAgBL,KAApB,EAA2B;AACzB,aAAKuB,aAAL,CAAmBvB,KAAK,CAACwB,UAAzB;AACD;;AACD,UAAI,cAAcxB,KAAlB,EAAyB;AACvB,aAAKyB,gBAAL,CAAsBzB,KAAK,CAACc,QAA5B;AACD;;AACD,UAAI,eAAed,KAAnB,EAA0B;AAExBA,QAAAA,KAAK,GAAGA,KAAK,CAACY,SAAd;AACD;;AACD,aAAO,IAAP;AACD;;;WAGD,2BAAwB;AACtB,WAAKU,UAAL,GAAkB,IAAlB;AACD;;;WAED,yBAA4B;AAE1B,WAAKA,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAAKI,iBAAL,EAArC;AAEA,aAAO,KAAKJ,UAAZ;AACD;;;WASD,uBAAcE,UAAd,EAAgC;AAAA;;AAC9BjB,MAAAA,MAAM,CAACoB,MAAP,CAAc,KAAKH,UAAnB,EAA+BA,UAA/B;AACA,WAAKrB,iBAAL,CAAuByB,IAAvB,CAA4B,YAAM;AAChC,aAAK,IAAMC,eAAX,IAA6BL,UAA7B,EAAyC;AACvC,cAAMM,MAAK,GAAGN,UAAU,CAACK,eAAD,CAAxB;;AACA,UAAA,KAAI,CAACE,aAAL,CAAmBF,eAAnB,EAAmCC,MAAnC;AACD;;AAED,QAAA,KAAI,CAAC/B,EAAL,CAAQiC,UAAR,CAAmBC,mBAAGC,YAAtB,EAAoC,IAApC;AACD,OAPD;AASA,aAAO,IAAP;AACD;;;WAID,4BAA2E;AAAA,UAA1DC,aAA0D,uEAA3B,IAA2B;AAAA,UAArBC,QAAqB,uEAAV,EAAU;AACzE,WAAKtB,QAAL,GAAgBqB,aAAhB;AACA,WAAKpB,gBAAL,GAAwBqB,QAAxB;AACA,WAAKC,eAAL;AACA,WAAKlC,iBAAL,CAAuBsB,gBAAvB,CAAwCU,aAAxC,EAAuDC,QAAvD;AAEA,aAAO,IAAP;AACD;;;WAGD,mBAAUP,cAAV,EAA2CpB,MAA3C,EAAmF;AAAA,UAAxB6B,WAAwB,uEAAV,EAAU;;AAEjF,UAAI7B,MAAM,CAAC8B,MAAP,KAAkBN,mBAAGO,oBAAzB,EAA+C;AAC7C,aAAKf,gBAAL,CAAsBhB,MAAtB,EAA8B6B,WAA9B;AACA,eAAO,IAAP;AACD;;AAED,kCAA6B,KAAKG,2BAAL,CAC3BZ,cAD2B,EAE3BpB,MAF2B,EAG3BA,MAAM,CAAC2B,QAHoB,EAI3BE,WAJ2B,CAA7B;AAAA,UAAOI,QAAP,yBAAOA,QAAP;AAAA,UAAiBN,QAAjB,yBAAiBA,QAAjB;;AAOA,UAAIM,QAAQ,IAAI,CAAhB,EAAmB;AACjB,aAAKzB,MAAL,CAAYyB,QAAZ,IAAwBjC,MAAxB;AACA,aAAKW,SAAL,CAAesB,QAAf,IAA2BN,QAA3B;AACA,aAAKC,eAAL;AACA,aAAKlC,iBAAL,CAAuBwC,SAAvB,CAAiCD,QAAjC,EAA2CjC,MAA3C,EAAmD2B,QAAnD;AACD;;AAED,aAAO,IAAP;AACD;;;WAGD,qBAAYP,cAAZ,EAA4Be,UAA5B,EAAgE;AAAA,UAAxBN,WAAwB,uEAAV,EAAU;;AAE9D,mCAA6B,KAAKG,2BAAL,CAC3BZ,cAD2B,EAE3Be,UAF2B;AAK1BC,QAAAA,IAAI,EAAED,UAAU,CAACE;AALS,SAKER,WALF,EAA7B;AAAA,UAAOI,QAAP,0BAAOA,QAAP;AAAA,UAAiBN,QAAjB,0BAAiBA,QAAjB;;AAQA,UAAIM,QAAQ,IAAI,CAAhB,EAAmB;AACjBE,QAAAA,UAAU,GAAG,KAAKzC,iBAAL,CAAuB4C,4BAAvB,CAAoDH,UAApD,CAAb;AAEA,aAAK3B,MAAL,CAAYyB,QAAZ,IAAwBE,UAAxB;AACA,aAAKxB,SAAL,CAAesB,QAAf,IAA2BN,QAA3B;AACA,aAAKC,eAAL;AAMA,aAAKlC,iBAAL,CAAuB6C,MAAvB,CAA8BN,QAA9B,EAAwC,KAAxC;AACD;;AAED,aAAO,IAAP;AACD;;;WAID,yBAAsB;AAAA;;AACpB,WAAKvC,iBAAL,CAAuByB,IAAvB,CAA4B,YAAM;AAChC,YAAI,MAAI,CAACd,QAAT,EAAmB;AACjB,UAAA,MAAI,CAACX,iBAAL,CAAuBsB,gBAAvB,CAAwC,IAAxC;AACD;;AAMD,QAAA,MAAI,CAAChB,MAAL,GAAc,MAAI,CAACA,MAAL,IAAe,IAAIwC,oBAAJ,CAAW,MAAI,CAAClD,EAAhB,EAAoB;AAACqC,UAAAA,QAAQ,EAAE;AAACS,YAAAA,IAAI,EAAE;AAAP;AAAX,SAApB,CAA7B;;AAEA,aAAK,IAAIH,QAAQ,GAAG,CAApB,EAAuBA,QAAQ,GAAG,MAAI,CAACvC,iBAAL,CAAuBa,cAAzD,EAAyE0B,QAAQ,EAAjF,EAAqF;AACnF,cAAI,MAAI,CAACzB,MAAL,CAAYyB,QAAZ,aAAiCO,oBAArC,EAA6C;AAC3C,YAAA,MAAI,CAAClD,EAAL,CAAQmD,wBAAR,CAAiCR,QAAjC;;AACA,YAAA,MAAI,CAAC3C,EAAL,CAAQiC,UAAR,CAAmBC,mBAAGC,YAAtB,EAAoC,MAAI,CAACzB,MAAL,CAAY0C,MAAhD;;AACA,YAAA,MAAI,CAACpD,EAAL,CAAQqD,mBAAR,CAA4BV,QAA5B,EAAsC,CAAtC,EAAyCT,mBAAGoB,KAA5C,EAAmD,KAAnD,EAA0D,CAA1D,EAA6D,CAA7D;AACD;AACF;AACF,OAlBD;AAmBA,aAAO,IAAP;AACD;;;WAID,uBAAoB;AAAA;;AAClB,WAAKlD,iBAAL,CAAuByB,IAAvB,CAA4B,YAAM;AAChC,YAAI,MAAI,CAACd,QAAT,EAAmB;AACjB,UAAA,MAAI,CAACW,gBAAL,CAAsB,MAAI,CAACX,QAA3B;AACD;;AAED,aAAK,IAAI4B,QAAQ,GAAG,CAApB,EAAuBA,QAAQ,GAAG,MAAI,CAACvC,iBAAL,CAAuBa,cAAzD,EAAyE0B,QAAQ,EAAjF,EAAqF;AACnF,cAAMjC,MAAM,GAAG,MAAI,CAACQ,MAAL,CAAYyB,QAAZ,CAAf;;AACA,cAAIjC,MAAM,YAAYwC,oBAAtB,EAA8B;AAC5B,YAAA,MAAI,CAACN,SAAL,CAAeD,QAAf,EAAyBjC,MAAzB;AACD;AACF;AACF,OAXD;AAYA,aAAO,IAAP;AACD;;;WAMD,qBAAY6C,WAAZ,EAAyBC,aAAzB,EAAwCC,IAAxC,EAA8C;AAAA;;AAC5C,UAAI1B,KAAJ;AAEA,WAAK3B,iBAAL,CAAuByB,IAAvB,CAA4B,YAAM;AAGhC,QAAA,MAAI,CAAC6B,sBAAL,CAA4BH,WAA5B,EAAyCC,aAAzC;;AAEAzB,QAAAA,KAAK,GAAG0B,IAAI,EAAZ;AACD,OAND;AAQA,aAAO1B,KAAP;AACD;;;WAKD,qCAA4BD,cAA5B,EAA4CC,KAA5C,EAAmD4B,aAAnD,EAAkEpB,WAAlE,EAA+E;AAAA;;AAC7E,UAAMqB,cAAc,GAAG;AACrBjB,QAAAA,QAAQ,EAAE,CAAC,CADU;AAErBN,QAAAA,QAAQ,EAAE;AAFW,OAAvB;;AAKA,kCAAyB,KAAKwB,kBAAL,CAAwB/B,cAAxB,CAAzB;AAAA,UAAOa,QAAP,yBAAOA,QAAP;AAAA,UAAiBmB,IAAjB,yBAAiBA,IAAjB;;AACA,UAAI,CAACC,MAAM,CAACC,QAAP,CAAgBrB,QAAhB,CAAD,IAA8BA,QAAQ,GAAG,CAA7C,EAAgD;AAC9C,aAAKrB,MAAL,CAAYQ,cAAZ,IAA8BC,KAA9B;;AACAkC,iBAAIC,IAAJ,CAAS,CAAT,EAAY;AAAA,wCAAsBpC,cAAtB,iBAA2C,MAAI,CAAC5B,EAAhD;AAAA,SAAZ;;AACA,eAAO0D,cAAP;AACD;;AAED,UAAMO,UAAU,GAAG,KAAKC,iBAAL,CAAuBN,IAAI,IAAInB,QAA/B,CAAnB;;AAIA,UAAI,CAACwB,UAAL,EAAiB;AACf,eAAOP,cAAP;AACD;;AAGD,UAAMS,eAAe,GAAG,KAAKhD,SAAL,CAAesB,QAAf,KAA4B,EAApD;;AACA,UAAMN,QAAQ,GAAGiC,mBAASC,OAAT,CACfJ,UAAU,CAAC9B,QADI,EAEfgC,eAFe,EAGfV,aAHe,EAIfpB,WAJe,CAAjB;;AAOA,UAAOO,IAAP,GAAqBT,QAArB,CAAOS,IAAP;AAAA,UAAa0B,IAAb,GAAqBnC,QAArB,CAAamC,IAAb;AACA,uBAAOT,MAAM,CAACC,QAAP,CAAgBlB,IAAhB,KAAyBiB,MAAM,CAACC,QAAP,CAAgBQ,IAAhB,CAAhC;AAEA,aAAO;AAAC7B,QAAAA,QAAQ,EAARA,QAAD;AAAWN,QAAAA,QAAQ,EAARA;AAAX,OAAP;AACD;;;WAED,2BAAkBoC,aAAlB,EAAoE;AAClE,aAAO,KAAKnE,aAAL,IAAsB,KAAKA,aAAL,CAAmBoE,gBAAnB,CAAoCD,aAApC,CAA7B;AACD;;;WAED,4BAAmB3C,cAAnB,EAAuF;AACrF,UAAMa,QAAQ,GAAGoB,MAAM,CAACjC,cAAD,CAAvB;;AACA,UAAIiC,MAAM,CAACC,QAAP,CAAgBrB,QAAhB,CAAJ,EAA+B;AAC7B,eAAO;AAACA,UAAAA,QAAQ,EAARA;AAAD,SAAP;AACD;;AAED,UAAMgC,aAAa,GAAG7E,+BAA+B,CAAC8E,IAAhC,CAAqCC,MAAM,CAAC/C,cAAD,CAA3C,CAAtB;AACA,UAAMgC,IAAI,GAAGa,aAAa,GAAGA,aAAa,CAAC,CAAD,CAAhB,GAAsBE,MAAM,CAAC/C,cAAD,CAAtD;AACA,UAAMgD,cAAc,GAAGH,aAAa,GAAGZ,MAAM,CAACY,aAAa,CAAC,CAAD,CAAd,CAAT,GAA8B,CAAlE;;AAEA,UAAI,KAAKrE,aAAT,EAAwB;AACtB,eAAO;AACLqC,UAAAA,QAAQ,EAAE,KAAKrC,aAAL,CAAmByE,oBAAnB,CAAwCjB,IAAxC,IAAgDgB,cADrD;AAELhB,UAAAA,IAAI,EAAJA;AAFK,SAAP;AAID;;AAED,aAAO;AAACnB,QAAAA,QAAQ,EAAE,CAAC;AAAZ,OAAP;AACD;;;WAOD,uBAAcb,cAAd,EAA+CC,KAA/C,EAA4D;AAC1D,UAAIA,KAAK,YAAYmB,oBAArB,EAA6B;AAE3B,aAAKN,SAAL,CAAed,cAAf,EAA+BC,KAA/B;AACD,OAHD,MAGO,IAAIZ,KAAK,CAAC6D,OAAN,CAAcjD,KAAd,KAAwBA,KAAK,CAACgB,MAA9B,IAAwChB,KAAK,CAAC,CAAD,CAAL,YAAoBmB,oBAAhE,EAAwE;AAE7E,YAAMxC,MAAM,GAAGqB,KAAK,CAAC,CAAD,CAApB;AACA,YAAMM,QAAQ,GAAGN,KAAK,CAAC,CAAD,CAAtB;AACA,aAAKa,SAAL,CAAed,cAAf,EAA+BpB,MAA/B,EAAuC2B,QAAvC;AACD,OALM,MAKA,IAAI4C,WAAW,CAACC,MAAZ,CAAmBnD,KAAnB,KAA6BZ,KAAK,CAAC6D,OAAN,CAAcjD,KAAd,CAAjC,EAAuD;AAE5D,YAAMoD,QAAQ,GAAGpD,KAAjB;AACA,aAAKqD,WAAL,CAAiBtD,cAAjB,EAAiCqD,QAAjC;AACD,OAJM,MAIA,IAAIpD,KAAK,CAACrB,MAAN,YAAwBwC,oBAA5B,EAAoC;AAIzC,YAAMb,SAAQ,GAAGN,KAAjB;AACA,aAAKa,SAAL,CAAed,cAAf,EAA+BO,SAAQ,CAAC3B,MAAxC,EAAgD2B,SAAhD;AACD,OANM,MAMA;AACL,cAAM,IAAIgD,KAAJ,CAAUxF,kBAAV,CAAN;AACD;AACF;;;WAKD,gCAAuB0D,WAAvB,EAA4CC,aAA5C,EAAyE;AAEvE,UAAM8B,YAAY,GAAGC,IAAI,CAACC,GAAL,CAASjC,WAAW,GAAG,CAAvB,EAA0BC,aAAa,GAAG,CAA1C,CAArB;AACA,UAAI2B,QAAQ,GAAG,KAAKjE,MAAL,CAAY,CAAZ,CAAf;;AACA,UAAI+D,WAAW,CAACC,MAAZ,CAAmBC,QAAnB,CAAJ,EAAkC;AAChC,aAAKM,yBAAL,CAA+BN,QAA/B,EAAyCG,YAAzC;AACD;;AAED,WAAK,IAAI3C,QAAQ,GAAG,CAApB,EAAuBA,QAAQ,GAAG,KAAKvC,iBAAL,CAAuBa,cAAzD,EAAyE0B,QAAQ,EAAjF,EAAqF;AACnFwC,QAAAA,QAAQ,GAAG,KAAKjE,MAAL,CAAYyB,QAAZ,CAAX;;AACA,YAAIsC,WAAW,CAACC,MAAZ,CAAmBC,QAAnB,CAAJ,EAAkC;AAChC,eAAKO,qBAAL,CAA2B/C,QAA3B,EAAqCwC,QAArC;AACD;AACF;AACF;;;WAED,mCAA0BA,QAA1B,EAAoCG,YAApC,EAAgE;AAC9D,UAAIjF,2BAAkBsF,WAAlB,CAA8B,KAAK3F,EAAnC,EAAuC;AAAC4F,QAAAA,qBAAqB,EAAE;AAAxB,OAAvC,CAAJ,EAA2E;AACzE,aAAKF,qBAAL,CAA2B,CAA3B,EAA8BP,QAA9B;;AACA;AACD;;AAGD,UAAMzE,MAAM,GAAG,KAAKN,iBAAL,CAAuByF,iBAAvB,CAAyCP,YAAzC,EAAuDH,QAAvD,CAAf;AAGA,WAAK/E,iBAAL,CAAuBwC,SAAvB,CAAiC,CAAjC,EAAoClC,MAApC,EAA4C,KAAKW,SAAL,CAAe,CAAf,CAA5C;AACD;;;WAED,+BAAsBsB,QAAtB,EAAiDwC,QAAjD,EAAiE;AAC/D9E,iCAAkB+E,WAAlB,CAA8B,KAAKpF,EAAnC,EAAuC2C,QAAvC,EAAiDwC,QAAjD;AACD;;;WAGD,6BAAgC;AAC9B,UAAM5D,UAAU,GAAG;AACjB+D,QAAAA,YAAY,EAAE,CADG;AAEjBQ,QAAAA,SAAS,EAAEC,WAFM;AAGjBC,QAAAA,WAAW,EAAE,CAHI;AAIjBC,QAAAA,SAAS,EAAE,KAJM;AAKjBC,QAAAA,WAAW,EAAE,KALI;AAMjBC,QAAAA,UAAU,EAAEC,QANK;AAOjB7C,QAAAA,WAAW,EAAE6C,QAPI;AAQjB5C,QAAAA,aAAa,EAAE4C;AARE,OAAnB;;AAWA,WAAK,IAAIzD,QAAQ,GAAG,CAApB,EAAuBA,QAAQ,GAAG,KAAKvC,iBAAL,CAAuBa,cAAzD,EAAyE0B,QAAQ,EAAjF,EAAqF;AACnF,aAAK0D,4BAAL,CAAkC9E,UAAlC,EAA8CoB,QAA9C;AACD;;AAED,UAAI,KAAK5B,QAAT,EAAmB;AAGjBQ,QAAAA,UAAU,CAAC+D,YAAX,GAA0B,KAAKvE,QAAL,CAAcuF,eAAd,CAA8B,KAAKvF,QAAL,CAAcsB,QAA5C,CAA1B;AACAd,QAAAA,UAAU,CAAC0E,SAAX,GAAuB,IAAvB;AACA1E,QAAAA,UAAU,CAACuE,SAAX,GAAuB,KAAK9E,gBAAL,CAAsBwD,IAAtB,IAA8B,KAAKzD,QAAL,CAAcsB,QAAd,CAAuBmC,IAA5E;AACAjD,QAAAA,UAAU,CAACyE,WAAX,GAAyB,KAAKhF,gBAAL,CAAsBuF,MAAtB,IAAgC,CAAzD;AACD;;AAGD,UAAIhF,UAAU,CAAC4E,UAAX,KAA0BC,QAA9B,EAAwC;AACtC7E,QAAAA,UAAU,CAAC4E,UAAX,GAAwB,CAAxB;AACD;;AACD,UAAI5E,UAAU,CAACgC,WAAX,KAA2B6C,QAA/B,EAAyC;AACvC7E,QAAAA,UAAU,CAACgC,WAAX,GAAyB,CAAzB;AACD;;AACD,UAAIhC,UAAU,CAACiC,aAAX,KAA6B4C,QAAjC,EAA2C;AACzC7E,QAAAA,UAAU,CAACiC,aAAX,GAA2B,CAA3B;AACD;;AAED,aAAOjC,UAAP;AACD;;;WAED,sCAA6BA,UAA7B,EAAqDoB,QAArD,EAAqE;AACnE,UAAMZ,KAAK,GAAG,KAAKb,MAAL,CAAYyB,QAAZ,CAAd;AACA,UAAMN,QAAQ,GAAG,KAAKhB,SAAL,CAAesB,QAAf,CAAjB;;AAEA,UAAI,CAACZ,KAAL,EAAY;AACV;AACD;;AAGD,UAAOyE,OAAP,GAAkBnE,QAAlB,CAAOmE,OAAP;AACA,UAAMN,WAAW,GAAGM,OAAO,GAAG,CAA9B;AACAjF,MAAAA,UAAU,CAAC2E,WAAX,GAAyB3E,UAAU,CAAC2E,WAAX,IAA0BA,WAAnD;;AAEA,UAAInE,KAAK,YAAYmB,oBAArB,EAA6B;AAC3B,YAAMxC,MAAM,GAAGqB,KAAf;;AAEA,YAAImE,WAAJ,EAAiB;AAEf,cAAM1C,aAAa,GAAG9C,MAAM,CAAC+F,cAAP,CAAsBpE,QAAtB,CAAtB;AACAd,UAAAA,UAAU,CAACiC,aAAX,GAA2B+B,IAAI,CAACmB,GAAL,CAASnF,UAAU,CAACiC,aAApB,EAAmCA,aAAnC,CAA3B;AACD,SAJD,MAIO;AAEL,cAAMD,WAAW,GAAG7C,MAAM,CAAC+F,cAAP,CAAsBpE,QAAtB,CAApB;AACAd,UAAAA,UAAU,CAACgC,WAAX,GAAyBgC,IAAI,CAACmB,GAAL,CAASnF,UAAU,CAACgC,WAApB,EAAiCA,WAAjC,CAAzB;AACD;AACF;AACF;;;WAID,uBAAiD;AAAA,UAArCnB,aAAqC,uEAArB,IAAqB;AAAA,UAAfC,QAAe,uEAAJ,EAAI;;AAC/C4B,eAAI0C,UAAJ,CAAe,aAAf,EAA8B,kBAA9B;;AACA,aAAO,KAAKjF,gBAAL,CAAsBU,aAAtB,EAAqCC,QAArC,CAAP;AACD","sourcesContent":["import {log, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport Accessor from './accessor';\nimport Buffer from './webgl-buffer';\nimport Program from './program'; \nimport type {AttributeBinding} from '../helpers/program-bindings'\nimport ProgramConfiguration from './program-configuration';\nimport VertexArrayObject, {VertexArrayObjectProps} from './vertex-array-object';\n\nconst ERR_ATTRIBUTE_TYPE =\n 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\n\n// This is done to support mat type attributes.\n// See section \"Notes about setting mat type attributes\"\n// in vertex-array.md\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\n\nexport type VertexArrayProps = {\n id?: string;\n program?: Program;\n configuration?: ProgramConfiguration;\n attributes?: Record<string, any>;\n elements?: any;\n bindOnUse?: boolean;\n};\n\nexport type DrawParams = {\n elementCount: number;\n indexType: Uint16ArrayConstructor | Uint32ArrayConstructor;\n indexOffset: number;\n isIndexed: boolean;\n isInstanced: boolean;\n indexCount: number;\n vertexCount: number;\n instanceCount: number;\n};\n\nexport default class VertexArray {\n id: string;\n gl: WebGLRenderingContext;\n readonly attributes: object = {};\n\n vertexArrayObject: VertexArrayObject;\n accessors: Accessor[] = [];\n configuration: ProgramConfiguration | null = null;\n\n // Extracted information\n elements = null;\n elementsAccessor = null;\n values = null;\n unused = null;\n drawParams = null;\n buffer = null; // For attribute 0 on desktops, and created when unbinding buffers\n \n bindOnUse = false;\n\n constructor(gl: WebGLRenderingContext, props?: VertexArrayProps) {\n // Use program's id if program is supplied but no id is supplied\n const id = props?.id || (props?.program && props?.program.id);\n // super(gl, Object.assign({}, props, {id}));\n\n this.vertexArrayObject = new VertexArrayObject(gl);\n\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n\n this.initialize(props);\n Object.seal(this);\n }\n\n delete(): void {\n if (this.buffer) {\n this.buffer.delete();\n }\n\n this.vertexArrayObject.delete();\n }\n\n initialize(props?: VertexArrayProps) {\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props || {});\n }\n\n // Resets all attributes (to default valued constants)\n reset() {\n // this.vertexArrayObject.reset();\n\n this.elements = null;\n this.elementsAccessor = null;\n const {MAX_ATTRIBUTES} = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n\n // Auto detects draw params\n this.drawParams = null;\n\n return this;\n }\n\n setProps(props: VertexArrayProps) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n if ('bindOnUse' in props) {\n // @ts-expect-error\n props = props.bindOnUse;\n }\n return this;\n }\n\n // Automatically called if buffers changed through VertexArray API\n clearDrawParams(): void {\n this.drawParams = null;\n }\n\n getDrawParams(): DrawParams {\n // Auto deduced draw parameters\n this.drawParams = this.drawParams || this._updateDrawParams();\n\n return this.drawParams;\n }\n\n // Set (bind) an array or map of vertex array buffers, either in numbered or named locations.\n // For names that are not present in `location`, the supplied buffers will be ignored.\n // if a single buffer of type GL.ELEMENT_ARRAY_BUFFER is present, it will be set as elements\n // Signatures:\n // {attributeName: buffer}\n // {attributeName: [buffer, accessor]}\n // {attributeName: (typed) array} => constant\n setAttributes(attributes): this {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n // Make sure we don't leave any bindings\n this.gl.bindBuffer(GL.ARRAY_BUFFER, null);\n });\n\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer: Buffer | null = null, accessor = {}): this {\n this.elements = elementBuffer; // Save value for debugging\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n\n return this;\n }\n\n // Set a location in vertex attributes array to a buffer\n setBuffer(locationOrName: number | string, buffer: Buffer, appAccessor = {}): this {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n this.setElementBuffer(buffer, appAccessor);\n return this;\n }\n\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n buffer,\n buffer.accessor,\n appAccessor\n );\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n\n return this;\n }\n\n // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)\n setConstant(locationOrName, arrayValue, appAccessor = {}): this {\n // @ts-expect-error\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n arrayValue,\n // Ensure that size isn't taken from program for multi-column\n // attributes\n {size: arrayValue.length, ...appAccessor}\n );\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // NOTE: We set the actual constant value later on bind. We can't set the value now since\n // constants are global and affect all other VertexArrays that have disabled attributes\n // in the same location.\n // We do disable the attribute which makes it use the global constant value at that location\n this.vertexArrayObject.enable(location, false);\n }\n\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, unbind temporarily to avoid conflicting with TransformFeedback\n unbindBuffers(): this {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n\n // Chrome does not like buffers that are bound to several binding points,\n // so we need to offer and unbind facility\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {accessor: {size: 4}});\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, rebind rebind after temporary unbind\n bindBuffers(): this {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n // Bind for use\n // When a vertex array is about to be used, we must:\n // - Set constant attributes (since these are stored on the context and reset on bind)\n // - Check if we need to initialize the buffer\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n\n this.vertexArrayObject.bind(() => {\n // Make sure that any constant attributes are updated (stored on the context, not the VAO)\n // Also handles attribute 0\n this._setConstantAttributes(vertexCount, instanceCount);\n\n value = func();\n });\n\n return value;\n }\n\n // PRIVATE\n\n // Resolve locations and accessors\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const INVALID_RESULT = {\n location: -1,\n accessor: null\n };\n\n const {location, name} = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => `unused value ${locationOrName} in ${this.id}`)();\n return INVALID_RESULT;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n // Attribute location wasn't directly found.\n // Likely due to multi-location attributes (e.g. matrix)\n if (!accessInfo) {\n return INVALID_RESULT;\n }\n\n // Resolve the partial accessors into a final accessor\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(\n accessInfo.accessor,\n currentAccessor,\n valueAccessor,\n appAccessor\n );\n\n const {size, type} = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n\n return {location, accessor};\n }\n\n _getAttributeInfo(attributeName: string | number): AttributeBinding {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName: number | string): {location: number, name?: string} {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(String(locationOrName));\n const name = multiLocation ? multiLocation[1] : String(locationOrName);\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {location: -1};\n }\n\n _setAttribute(locationOrName: number | string, value: Buffer): void;\n _setAttribute(locationOrName: number | string, value: [Buffer, any]): void;\n _setAttribute(locationOrName: number | string, value: ArrayBuffer | any[]): void;\n _setAttribute(locationOrName: number | string, value: {value: Buffer}): void;\n\n _setAttribute(locationOrName: number | string, value): void {\n if (value instanceof Buffer) {\n // Signature: {attributeName: Buffer}\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n // Signature: {attributeName: [buffer, accessor]}\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n // Signature: {attributeName: constant}, constant == short (typed) array\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n // luma.gl v7: Support accessor objects with 'buffer' field\n // for interleaved data\n // Signature: {attributeName: {...accessor, buffer}}\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n // Updates all constant attribute values (constants are used when vertex attributes are disabled).\n // This needs to be done repeatedly since in contrast to buffer bindings,\n // constants are stored on the WebGL context, not the VAO\n _setConstantAttributes(vertexCount: number, instanceCount: number): void {\n // TODO - use accessor to determine what length to use\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount: number): void {\n if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {\n this._setConstantAttribute(0, constant);\n return;\n }\n\n // Get a dummy buffer populated with repeated constants\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n\n // Set the buffer on location 0\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location: number | string, constant): void {\n VertexArrayObject.setConstant(this.gl, location, constant);\n }\n\n // Walks the buffers and updates draw parameters\n _updateDrawParams(): DrawParams {\n const drawParams = {\n elementCount: 0,\n indexType: Uint16Array,\n indexOffset: 0,\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n // indexing is autodetected - buffer with target GL.ELEMENT_ARRAY_BUFFER\n // index type is saved for drawElement calls\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n // Post-calculation checks\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams: DrawParams, location): void {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n // Check if instanced (whether buffer or constant)\n const {divisor} = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n // instance attribute\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n // normal attribute\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n // DEPRECATED in v6.x - but not warnings not properly implemented\n\n setElements(elementBuffer = null, accessor = {}) {\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n}\n"],"file":"vertex-array.js"}
|