@luma.gl/webgl 8.5.8 → 8.6.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/device2.d.ts +52 -0
- package/dist/api/device2.d.ts.map +1 -0
- package/dist/api/device2.js +23 -0
- package/dist/api/device2.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 +27 -0
- package/dist/classes/program-configuration.d.ts.map +1 -0
- package/dist/classes/program-configuration.js +160 -0
- package/dist/classes/program-configuration.js.map +1 -0
- package/dist/classes/program.d.ts +61 -0
- package/dist/classes/program.d.ts.map +1 -0
- package/dist/classes/program.js +370 -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/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 +75 -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/classes/webgl-shader.d.ts +53 -0
- package/dist/classes/webgl-shader.d.ts.map +1 -0
- package/dist/classes/webgl-shader.js +193 -0
- package/dist/classes/webgl-shader.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 +30 -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/device/check-glsl-extension.d.ts +4 -0
- package/dist/device/check-glsl-extension.d.ts.map +1 -0
- package/dist/device/check-glsl-extension.js +22 -0
- package/dist/device/check-glsl-extension.js.map +1 -0
- package/dist/device/device-features.d.ts +12 -0
- package/dist/device/device-features.d.ts.map +1 -0
- package/dist/device/device-features.js +123 -0
- package/dist/device/device-features.js.map +1 -0
- package/dist/device/device-limits.d.ts +51 -0
- package/dist/device/device-limits.d.ts.map +1 -0
- package/dist/device/device-limits.js +90 -0
- package/dist/device/device-limits.js.map +1 -0
- package/dist/device/get-device-info.d.ts +4 -0
- package/dist/device/get-device-info.d.ts.map +1 -0
- package/dist/device/get-device-info.js +44 -0
- package/dist/device/get-device-info.js.map +1 -0
- package/dist/device/webgl-device.d.ts +111 -0
- package/dist/device/webgl-device.d.ts.map +1 -0
- package/dist/device/webgl-device.js +208 -0
- package/dist/device/webgl-device.js.map +1 -0
- package/dist/es5/api/device2.js +42 -0
- package/dist/es5/api/device2.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 +14 -11
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +79 -67
- 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/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 +47 -38
- 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/classes/webgl-shader.js +309 -0
- package/dist/es5/classes/webgl-shader.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/device/check-glsl-extension.js +33 -0
- package/dist/es5/device/check-glsl-extension.js.map +1 -0
- package/dist/es5/device/device-features.js +152 -0
- package/dist/es5/device/device-features.js.map +1 -0
- package/dist/es5/device/device-limits.js +64 -0
- package/dist/es5/device/device-limits.js.map +1 -0
- package/dist/es5/device/get-device-info.js +55 -0
- package/dist/es5/device/get-device-info.js.map +1 -0
- package/dist/es5/device/webgl-device.js +279 -0
- package/dist/es5/device/webgl-device.js.map +1 -0
- package/dist/es5/index.js +140 -96
- 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.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/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
- package/dist/es5/webgl-utils/is-old-ie.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/es5/webgl-utils/webgl-info.ts.disabled +135 -0
- package/dist/esm/api/device2.js +23 -0
- package/dist/esm/api/device2.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 +18 -10
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +71 -44
- 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/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 +50 -29
- 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/classes/webgl-shader.js +193 -0
- package/dist/esm/classes/webgl-shader.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/device/check-glsl-extension.js +22 -0
- package/dist/esm/device/check-glsl-extension.js.map +1 -0
- package/dist/esm/device/device-features.js +123 -0
- package/dist/esm/device/device-features.js.map +1 -0
- package/dist/esm/device/device-limits.js +90 -0
- package/dist/esm/device/device-limits.js.map +1 -0
- package/dist/esm/device/get-device-info.js +44 -0
- package/dist/esm/device/get-device-info.js.map +1 -0
- package/dist/esm/device/webgl-device.js +208 -0
- package/dist/esm/device/webgl-device.js.map +1 -0
- package/dist/esm/index.js +15 -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.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/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
- package/dist/esm/webgl-utils/is-old-ie.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/esm/webgl-utils/webgl-info.ts.disabled +135 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -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.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/is-old-ie.d.ts +2 -0
- package/dist/webgl-utils/is-old-ie.d.ts.map +1 -0
- package/dist/webgl-utils/is-old-ie.js +8 -0
- package/dist/webgl-utils/is-old-ie.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/dist/webgl-utils/webgl-info.ts.disabled +135 -0
- package/package.json +9 -9
- package/src/.DS_Store +0 -0
- package/src/api/device2.ts +71 -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.js → program-configuration.ts} +19 -12
- package/src/classes/{program.js → program.ts} +66 -40
- 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/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} +133 -112
- package/src/classes/{vertex-array.js → vertex-array.ts} +74 -55
- package/src/classes/{buffer.js → webgl-buffer.ts} +126 -50
- package/src/classes/{resource.js → webgl-resource.ts} +55 -46
- package/src/classes/webgl-shader.ts +202 -0
- 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 +127 -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/device/check-glsl-extension.ts +44 -0
- package/src/device/device-features.ts +227 -0
- package/src/device/device-limits.ts +150 -0
- package/src/device/get-device-info.ts +49 -0
- package/src/device/webgl-device.ts +406 -0
- package/src/index.ts +127 -0
- package/src/{init.js → init.ts} +11 -25
- 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/{features/check-old-ie.js → webgl-utils/is-old-ie.ts} +3 -3
- 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/src/webgl-utils/webgl-info.ts.disabled +135 -0
- package/dist/dist.js +0 -13710
- 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/shader.js +0 -221
- package/dist/es5/classes/shader.js.map +0 -1
- 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/shader.js +0 -138
- package/dist/esm/classes/shader.js.map +0 -1
- 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 +0 -71
- 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.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-features-table.js +0 -104
- 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
|
@@ -9,113 +9,62 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
11
|
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
12
14
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
13
15
|
|
|
14
16
|
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
15
17
|
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
18
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
19
|
|
|
20
20
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
21
|
|
|
22
22
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
23
|
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
var _buffer = _interopRequireDefault(require("./buffer"));
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
25
|
|
|
28
|
-
var
|
|
26
|
+
var _api = require("@luma.gl/api");
|
|
29
27
|
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
var _assert = require("../utils/assert");
|
|
33
|
-
|
|
34
|
-
var _probe = require("probe.gl");
|
|
35
|
-
|
|
36
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
28
|
+
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
37
29
|
|
|
38
|
-
|
|
30
|
+
var _env = require("@probe.gl/env");
|
|
39
31
|
|
|
40
|
-
var
|
|
32
|
+
var _webglDevice = _interopRequireDefault(require("../device/webgl-device"));
|
|
41
33
|
|
|
42
|
-
var
|
|
43
|
-
(0, _inherits2.default)(VertexArrayObject, _Resource);
|
|
34
|
+
var _webglChecks = require("../context/context/webgl-checks");
|
|
44
35
|
|
|
45
|
-
|
|
36
|
+
var _webglResource = _interopRequireDefault(require("./webgl-resource"));
|
|
46
37
|
|
|
47
|
-
|
|
48
|
-
key: "isSupported",
|
|
49
|
-
value: function isSupported(gl) {
|
|
50
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
38
|
+
var _webglBuffer = _interopRequireDefault(require("./webgl-buffer"));
|
|
51
39
|
|
|
52
|
-
|
|
53
|
-
return (0, _gltools.isWebGL2)(gl) || (0, _probe.getBrowser)() === 'Chrome';
|
|
54
|
-
}
|
|
40
|
+
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; }
|
|
55
41
|
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
}, {
|
|
59
|
-
key: "getDefaultArray",
|
|
60
|
-
value: function getDefaultArray(gl) {
|
|
61
|
-
gl.luma = gl.luma || {};
|
|
42
|
+
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; }
|
|
62
43
|
|
|
63
|
-
|
|
64
|
-
gl.luma.defaultVertexArray = new VertexArrayObject(gl, {
|
|
65
|
-
handle: null,
|
|
66
|
-
isDefaultArray: true
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return gl.luma.defaultVertexArray;
|
|
71
|
-
}
|
|
72
|
-
}, {
|
|
73
|
-
key: "getMaxAttributes",
|
|
74
|
-
value: function getMaxAttributes(gl) {
|
|
75
|
-
VertexArrayObject.MAX_ATTRIBUTES = VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(34921);
|
|
76
|
-
return VertexArrayObject.MAX_ATTRIBUTES;
|
|
77
|
-
}
|
|
78
|
-
}, {
|
|
79
|
-
key: "setConstant",
|
|
80
|
-
value: function setConstant(gl, location, array) {
|
|
81
|
-
switch (array.constructor) {
|
|
82
|
-
case Float32Array:
|
|
83
|
-
VertexArrayObject._setConstantFloatArray(gl, location, array);
|
|
84
|
-
|
|
85
|
-
break;
|
|
44
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
86
45
|
|
|
87
|
-
|
|
88
|
-
VertexArrayObject._setConstantIntArray(gl, location, array);
|
|
46
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
89
47
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
case Uint32Array:
|
|
93
|
-
VertexArrayObject._setConstantUintArray(gl, location, array);
|
|
48
|
+
var ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
|
|
94
49
|
|
|
95
|
-
|
|
50
|
+
var VertexArrayObject = function (_WebGLResource) {
|
|
51
|
+
(0, _inherits2.default)(VertexArrayObject, _WebGLResource);
|
|
96
52
|
|
|
97
|
-
|
|
98
|
-
(0, _assert.assert)(false);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}]);
|
|
53
|
+
var _super = _createSuper(VertexArrayObject);
|
|
102
54
|
|
|
103
|
-
function VertexArrayObject(gl) {
|
|
55
|
+
function VertexArrayObject(gl, opts) {
|
|
104
56
|
var _this;
|
|
105
57
|
|
|
106
|
-
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
107
58
|
(0, _classCallCheck2.default)(this, VertexArrayObject);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
59
|
+
_this = _super.call(this, _webglDevice.default.attach(gl), _objectSpread(_objectSpread({}, opts), {}, {
|
|
60
|
+
id: (opts === null || opts === void 0 ? void 0 : opts.id) || (opts === null || opts === void 0 ? void 0 : opts.program) && (opts === null || opts === void 0 ? void 0 : opts.program.id)
|
|
61
|
+
}), {});
|
|
62
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "buffer", null);
|
|
63
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "bufferValue", null);
|
|
64
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isDefaultArray", false);
|
|
112
65
|
_this.buffer = null;
|
|
113
66
|
_this.bufferValue = null;
|
|
114
|
-
_this.isDefaultArray = opts.isDefaultArray || false;
|
|
115
|
-
_this.gl2 = gl;
|
|
116
|
-
|
|
117
|
-
_this.initialize(opts);
|
|
118
|
-
|
|
67
|
+
_this.isDefaultArray = (opts === null || opts === void 0 ? void 0 : opts.isDefaultArray) || false;
|
|
119
68
|
Object.seal((0, _assertThisInitialized2.default)(_this));
|
|
120
69
|
return _this;
|
|
121
70
|
}
|
|
@@ -132,15 +81,9 @@ var VertexArrayObject = function (_Resource) {
|
|
|
132
81
|
return this;
|
|
133
82
|
}
|
|
134
83
|
}, {
|
|
135
|
-
key: "
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
return this.setProps(props);
|
|
139
|
-
}
|
|
140
|
-
}, {
|
|
141
|
-
key: "setProps",
|
|
142
|
-
value: function setProps(props) {
|
|
143
|
-
return this;
|
|
84
|
+
key: "MAX_ATTRIBUTES",
|
|
85
|
+
get: function get() {
|
|
86
|
+
return VertexArrayObject.getMaxAttributes(this.gl);
|
|
144
87
|
}
|
|
145
88
|
}, {
|
|
146
89
|
key: "setElementBuffer",
|
|
@@ -149,16 +92,16 @@ var VertexArrayObject = function (_Resource) {
|
|
|
149
92
|
|
|
150
93
|
var elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
151
94
|
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
152
|
-
(0,
|
|
95
|
+
(0, _api.assert)(!elementBuffer || elementBuffer.target === _constants.default.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
|
|
153
96
|
this.bind(function () {
|
|
154
|
-
_this2.gl.bindBuffer(
|
|
97
|
+
_this2.gl.bindBuffer(_constants.default.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
|
|
155
98
|
});
|
|
156
99
|
return this;
|
|
157
100
|
}
|
|
158
101
|
}, {
|
|
159
102
|
key: "setBuffer",
|
|
160
103
|
value: function setBuffer(location, buffer, accessor) {
|
|
161
|
-
if (buffer.target ===
|
|
104
|
+
if (buffer.target === _constants.default.ELEMENT_ARRAY_BUFFER) {
|
|
162
105
|
return this.setElementBuffer(buffer, accessor);
|
|
163
106
|
}
|
|
164
107
|
|
|
@@ -173,10 +116,10 @@ var VertexArrayObject = function (_Resource) {
|
|
|
173
116
|
gl2 = this.gl2;
|
|
174
117
|
location = Number(location);
|
|
175
118
|
this.bind(function () {
|
|
176
|
-
gl.bindBuffer(
|
|
119
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);
|
|
177
120
|
|
|
178
121
|
if (integer) {
|
|
179
|
-
(0,
|
|
122
|
+
(0, _api.assert)((0, _webglChecks.isWebGL2)(gl));
|
|
180
123
|
gl2.vertexAttribIPointer(location, size, type, stride, offset);
|
|
181
124
|
} else {
|
|
182
125
|
gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
|
|
@@ -215,13 +158,13 @@ var VertexArrayObject = function (_Resource) {
|
|
|
215
158
|
var byteLength = constantValue.byteLength * elementCount;
|
|
216
159
|
var length = constantValue.length * elementCount;
|
|
217
160
|
var updateNeeded = !this.buffer;
|
|
218
|
-
this.buffer = this.buffer || new
|
|
161
|
+
this.buffer = this.buffer || new _webglBuffer.default(this.gl, byteLength);
|
|
219
162
|
updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);
|
|
220
163
|
updateNeeded = updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);
|
|
221
164
|
|
|
222
165
|
if (updateNeeded) {
|
|
223
|
-
var typedArray = (0,
|
|
224
|
-
(0,
|
|
166
|
+
var typedArray = (0, _api.getScratchArray)(value.constructor, length);
|
|
167
|
+
(0, _api.fillArray)({
|
|
225
168
|
target: typedArray,
|
|
226
169
|
source: constantValue,
|
|
227
170
|
start: 0,
|
|
@@ -233,6 +176,16 @@ var VertexArrayObject = function (_Resource) {
|
|
|
233
176
|
|
|
234
177
|
return this.buffer;
|
|
235
178
|
}
|
|
179
|
+
}, {
|
|
180
|
+
key: "initialize",
|
|
181
|
+
value: function initialize(props) {
|
|
182
|
+
return this.setProps(props);
|
|
183
|
+
}
|
|
184
|
+
}, {
|
|
185
|
+
key: "setProps",
|
|
186
|
+
value: function setProps(props) {
|
|
187
|
+
return this;
|
|
188
|
+
}
|
|
236
189
|
}, {
|
|
237
190
|
key: "_normalizeConstantArrayValue",
|
|
238
191
|
value: function _normalizeConstantArrayValue(arrayValue) {
|
|
@@ -260,13 +213,12 @@ var VertexArrayObject = function (_Resource) {
|
|
|
260
213
|
}, {
|
|
261
214
|
key: "_createHandle",
|
|
262
215
|
value: function _createHandle() {
|
|
263
|
-
|
|
264
|
-
return gl2.createVertexArray();
|
|
216
|
+
return this.gl2.createVertexArray();
|
|
265
217
|
}
|
|
266
218
|
}, {
|
|
267
219
|
key: "_deleteHandle",
|
|
268
|
-
value: function _deleteHandle(
|
|
269
|
-
this.gl2.deleteVertexArray(handle);
|
|
220
|
+
value: function _deleteHandle() {
|
|
221
|
+
this.gl2.deleteVertexArray(this.handle);
|
|
270
222
|
return [this.elements];
|
|
271
223
|
}
|
|
272
224
|
}, {
|
|
@@ -280,10 +232,10 @@ var VertexArrayObject = function (_Resource) {
|
|
|
280
232
|
var _this4 = this;
|
|
281
233
|
|
|
282
234
|
var location = _ref.location;
|
|
283
|
-
(0,
|
|
235
|
+
(0, _api.assert)(Number.isFinite(location));
|
|
284
236
|
return this.bind(function () {
|
|
285
237
|
switch (pname) {
|
|
286
|
-
case
|
|
238
|
+
case _constants.default.VERTEX_ATTRIB_ARRAY_POINTER:
|
|
287
239
|
return _this4.gl.getVertexAttribOffset(location, pname);
|
|
288
240
|
|
|
289
241
|
default:
|
|
@@ -291,90 +243,95 @@ var VertexArrayObject = function (_Resource) {
|
|
|
291
243
|
}
|
|
292
244
|
});
|
|
293
245
|
}
|
|
294
|
-
}, {
|
|
295
|
-
key: "MAX_ATTRIBUTES",
|
|
296
|
-
get: function get() {
|
|
297
|
-
return VertexArrayObject.getMaxAttributes(this.gl);
|
|
298
|
-
}
|
|
299
246
|
}], [{
|
|
300
|
-
key: "
|
|
301
|
-
value: function
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
break;
|
|
306
|
-
|
|
307
|
-
case 2:
|
|
308
|
-
gl.vertexAttrib2fv(location, array);
|
|
309
|
-
break;
|
|
310
|
-
|
|
311
|
-
case 3:
|
|
312
|
-
gl.vertexAttrib3fv(location, array);
|
|
313
|
-
break;
|
|
247
|
+
key: "isSupported",
|
|
248
|
+
value: function isSupported(gl, options) {
|
|
249
|
+
if (options !== null && options !== void 0 && options.constantAttributeZero) {
|
|
250
|
+
return (0, _webglChecks.isWebGL2)(gl) || (0, _env.getBrowser)() === 'Chrome';
|
|
251
|
+
}
|
|
314
252
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
}, {
|
|
256
|
+
key: "getDefaultArray",
|
|
257
|
+
value: function getDefaultArray(gl) {
|
|
258
|
+
var webglDevice = _webglDevice.default.fromContext(gl);
|
|
318
259
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
260
|
+
webglDevice.defaultVertexArray = webglDevice.defaultVertexArray || new VertexArrayObject(gl, {
|
|
261
|
+
handle: null,
|
|
262
|
+
isDefaultArray: true
|
|
263
|
+
});
|
|
264
|
+
return webglDevice.defaultVertexArray;
|
|
322
265
|
}
|
|
323
266
|
}, {
|
|
324
|
-
key: "
|
|
325
|
-
value: function
|
|
326
|
-
|
|
267
|
+
key: "getMaxAttributes",
|
|
268
|
+
value: function getMaxAttributes(gl) {
|
|
269
|
+
VertexArrayObject.MAX_ATTRIBUTES = VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
|
|
270
|
+
return VertexArrayObject.MAX_ATTRIBUTES;
|
|
271
|
+
}
|
|
272
|
+
}, {
|
|
273
|
+
key: "setConstant",
|
|
274
|
+
value: function setConstant(gl, location, array) {
|
|
275
|
+
switch (array.constructor) {
|
|
276
|
+
case Float32Array:
|
|
277
|
+
VertexArrayObject._setConstantFloatArray(gl, location, array);
|
|
327
278
|
|
|
328
|
-
switch (array.length) {
|
|
329
|
-
case 1:
|
|
330
|
-
gl.vertexAttribI1iv(location, array);
|
|
331
279
|
break;
|
|
332
280
|
|
|
333
|
-
case
|
|
334
|
-
|
|
335
|
-
break;
|
|
281
|
+
case Int32Array:
|
|
282
|
+
VertexArrayObject._setConstantIntArray((0, _webglChecks.assertWebGL2Context)(gl), location, array);
|
|
336
283
|
|
|
337
|
-
case 3:
|
|
338
|
-
gl.vertexAttribI3iv(location, array);
|
|
339
284
|
break;
|
|
340
285
|
|
|
341
|
-
case
|
|
342
|
-
|
|
286
|
+
case Uint32Array:
|
|
287
|
+
VertexArrayObject._setConstantUintArray((0, _webglChecks.assertWebGL2Context)(gl), location, array);
|
|
288
|
+
|
|
343
289
|
break;
|
|
344
290
|
|
|
345
291
|
default:
|
|
346
|
-
(0,
|
|
292
|
+
(0, _api.assert)(false);
|
|
347
293
|
}
|
|
348
294
|
}
|
|
349
295
|
}, {
|
|
350
|
-
key: "
|
|
351
|
-
value: function
|
|
352
|
-
(0, _assert.assert)((0, _gltools.isWebGL2)(gl));
|
|
353
|
-
|
|
296
|
+
key: "_setConstantFloatArray",
|
|
297
|
+
value: function _setConstantFloatArray(gl, location, array) {
|
|
354
298
|
switch (array.length) {
|
|
355
299
|
case 1:
|
|
356
|
-
gl.
|
|
300
|
+
gl.vertexAttrib1fv(location, array);
|
|
357
301
|
break;
|
|
358
302
|
|
|
359
303
|
case 2:
|
|
360
|
-
gl.
|
|
304
|
+
gl.vertexAttrib2fv(location, array);
|
|
361
305
|
break;
|
|
362
306
|
|
|
363
307
|
case 3:
|
|
364
|
-
gl.
|
|
308
|
+
gl.vertexAttrib3fv(location, array);
|
|
365
309
|
break;
|
|
366
310
|
|
|
367
311
|
case 4:
|
|
368
|
-
gl.
|
|
312
|
+
gl.vertexAttrib4fv(location, array);
|
|
369
313
|
break;
|
|
370
314
|
|
|
371
315
|
default:
|
|
372
|
-
(0,
|
|
316
|
+
(0, _api.assert)(false);
|
|
373
317
|
}
|
|
374
318
|
}
|
|
319
|
+
}, {
|
|
320
|
+
key: "_setConstantIntArray",
|
|
321
|
+
value: function _setConstantIntArray(gl, location, array) {
|
|
322
|
+
(0, _api.assert)((0, _webglChecks.isWebGL2)(gl));
|
|
323
|
+
gl.vertexAttribI4iv(location, array);
|
|
324
|
+
}
|
|
325
|
+
}, {
|
|
326
|
+
key: "_setConstantUintArray",
|
|
327
|
+
value: function _setConstantUintArray(gl, location, array) {
|
|
328
|
+
(0, _api.assert)((0, _webglChecks.isWebGL2)(gl));
|
|
329
|
+
gl.vertexAttribI4uiv(location, array);
|
|
330
|
+
}
|
|
375
331
|
}]);
|
|
376
332
|
return VertexArrayObject;
|
|
377
|
-
}(
|
|
333
|
+
}(_webglResource.default);
|
|
378
334
|
|
|
379
335
|
exports.default = VertexArrayObject;
|
|
336
|
+
(0, _defineProperty2.default)(VertexArrayObject, "MAX_ATTRIBUTES", void 0);
|
|
380
337
|
//# sourceMappingURL=vertex-array-object.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/vertex-array-object.js"],"names":["ERR_ELEMENTS","VertexArrayObject","gl","options","constantAttributeZero","luma","defaultVertexArray","handle","isDefaultArray","MAX_ATTRIBUTES","getParameter","location","array","constructor","Float32Array","_setConstantFloatArray","Int32Array","_setConstantIntArray","Uint32Array","_setConstantUintArray","opts","id","program","Object","assign","buffer","bufferValue","gl2","initialize","seal","delete","props","setProps","elementBuffer","target","bind","bindBuffer","accessor","setElementBuffer","size","type","stride","offset","normalized","integer","divisor","Number","vertexAttribIPointer","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","enable","disablingAttributeZero","isSupported","disableVertexAttribArray","elementCount","value","constantValue","_normalizeConstantArrayValue","byteLength","length","updateNeeded","Buffer","reallocate","_compareConstantArrayValues","typedArray","source","start","count","subData","arrayValue","Array","isArray","v1","v2","i","createVertexArray","deleteVertexArray","elements","bindVertexArray","pname","isFinite","getVertexAttribOffset","getVertexAttrib","getMaxAttributes","vertexAttrib1fv","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttribI1iv","vertexAttribI2iv","vertexAttribI3iv","vertexAttribI4iv","vertexAttribI1uiv","vertexAttribI2uiv","vertexAttribI3uiv","vertexAttribI4uiv","Resource"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {getScratchArray, fillArray} from '../utils/array-utils-flat';\nimport {assert} from '../utils/assert';\nimport {getBrowser} from 'probe.gl';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\nexport default class VertexArrayObject extends Resource {\n static isSupported(gl, options = {}) {\n // Attribute 0 can not be disable on most desktop OpenGL based browsers\n // and on iOS Safari browser.\n if (options.constantAttributeZero) {\n return isWebGL2(gl) || getBrowser() === 'Chrome';\n }\n\n // Whether additional objects can be created\n return true;\n }\n\n // Returns the global (null) vertex array object. Exists even when no extension available\n // TODO(Tarek): VAOs are now polyfilled. Deprecate this in 9.0\n static getDefaultArray(gl) {\n gl.luma = gl.luma || {};\n if (!gl.luma.defaultVertexArray) {\n gl.luma.defaultVertexArray = new VertexArrayObject(gl, {handle: null, isDefaultArray: true});\n }\n return gl.luma.defaultVertexArray;\n }\n\n static getMaxAttributes(gl) {\n // TODO - should be cached per context\n // @ts-ignore\n VertexArrayObject.MAX_ATTRIBUTES =\n // @ts-ignore\n VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n // @ts-ignore\n return VertexArrayObject.MAX_ATTRIBUTES;\n }\n\n // Note: Constants are stored globally on the WebGL context, not the VAO\n // So they need to be updated before every render\n // TODO - use known type (in configuration or passed in) to allow non-typed arrays?\n // TODO - remember/cache values to avoid setting them unnecessarily?\n static setConstant(gl, location, array) {\n switch (array.constructor) {\n case Float32Array:\n VertexArrayObject._setConstantFloatArray(gl, location, array);\n break;\n case Int32Array:\n VertexArrayObject._setConstantIntArray(gl, location, array);\n break;\n case Uint32Array:\n VertexArrayObject._setConstantUintArray(gl, location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // Create a VertexArray\n constructor(gl, opts = {}) {\n // Use program's id if program 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.buffer = null;\n this.bufferValue = null;\n this.isDefaultArray = opts.isDefaultArray || false;\n\n /** @type {WebGL2RenderingContext} */\n this.gl2 = gl;\n\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n delete() {\n super.delete();\n if (this.buffer) {\n this.buffer.delete();\n }\n return this;\n }\n\n get MAX_ATTRIBUTES() {\n return VertexArrayObject.getMaxAttributes(this.gl);\n }\n\n initialize(props = {}) {\n return this.setProps(props);\n }\n\n setProps(props) {\n // TODO: decide which props should be supported\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, opts = {}) {\n assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n\n return this;\n }\n\n // Set a location in vertex attributes array to a bufferk, enables the location, sets divisor\n setBuffer(location, buffer, accessor) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl, gl2} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n assert(isWebGL2(gl));\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n\n return this;\n }\n\n // Enabling an attribute location makes it reference the currently bound buffer\n // Disabling an attribute location makes it reference the global constant value\n // TODO - handle single values for size 1 attributes?\n // TODO - convert classic arrays based on known type?\n enable(location, enable = true) {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers\n const disablingAttributeZero =\n !enable &&\n location === 0 &&\n !VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true});\n\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(\n () =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n }\n return this;\n }\n\n // Provide a means to create a buffer that is equivalent to a constant.\n // NOTE: Desktop OpenGL cannot disable attribute 0.\n // https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n // this-has-significant-performance-penalt\n getConstantBuffer(elementCount, value) {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = this._normalizeConstantArrayValue(value);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n\n // Reallocate and update contents if needed\n updateNeeded =\n updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n\n // PRIVATE\n\n // TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n // TODO - handle single values for size 1 attributes?\n _normalizeConstantArrayValue(arrayValue) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n }\n\n _compareConstantArrayValues(v1, v2) {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n }\n\n static _setConstantFloatArray(gl, location, array) {\n switch (array.length) {\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantIntArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1iv(location, array);\n break;\n case 2:\n gl.vertexAttribI2iv(location, array);\n break;\n case 3:\n gl.vertexAttribI3iv(location, array);\n break;\n case 4:\n gl.vertexAttribI4iv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantUintArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1uiv(location, array);\n break;\n case 2:\n gl.vertexAttribI2uiv(location, array);\n break;\n case 3:\n gl.vertexAttribI3uiv(location, array);\n break;\n case 4:\n gl.vertexAttribI4uiv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // RESOURCE IMPLEMENTATION\n\n _createHandle() {\n /** @type {WebGL2RenderingContext} */\n // @ts-ignore\n const gl2 = this.gl;\n return gl2.createVertexArray();\n }\n\n _deleteHandle(handle) {\n this.gl2.deleteVertexArray(handle);\n // @ts-ignore\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n _bindHandle(handle) {\n this.gl2.bindVertexArray(handle);\n }\n\n // Generic getter for information about a vertex attribute at a given position\n _getParameter(pname, {location}) {\n assert(Number.isFinite(location));\n return this.bind(() => {\n switch (pname) {\n case GL.VERTEX_ATTRIB_ARRAY_POINTER:\n return this.gl.getVertexAttribOffset(location, pname);\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n}\n"],"file":"vertex-array-object.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/vertex-array-object.ts"],"names":["ERR_ELEMENTS","VertexArrayObject","gl","opts","WebGLDevice","attach","id","program","buffer","bufferValue","isDefaultArray","Object","seal","delete","getMaxAttributes","elementBuffer","target","GL","ELEMENT_ARRAY_BUFFER","bind","bindBuffer","handle","location","accessor","setElementBuffer","size","type","stride","offset","normalized","integer","divisor","gl2","Number","ARRAY_BUFFER","vertexAttribIPointer","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","enable","disablingAttributeZero","isSupported","constantAttributeZero","disableVertexAttribArray","elementCount","value","constantValue","_normalizeConstantArrayValue","byteLength","length","updateNeeded","Buffer","reallocate","_compareConstantArrayValues","typedArray","constructor","source","start","count","subData","props","setProps","arrayValue","Array","isArray","Float32Array","v1","v2","i","createVertexArray","deleteVertexArray","elements","bindVertexArray","pname","isFinite","VERTEX_ATTRIB_ARRAY_POINTER","getVertexAttribOffset","getVertexAttrib","options","webglDevice","fromContext","defaultVertexArray","MAX_ATTRIBUTES","getParameter","MAX_VERTEX_ATTRIBS","array","_setConstantFloatArray","Int32Array","_setConstantIntArray","Uint32Array","_setConstantUintArray","vertexAttrib1fv","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttribI4iv","vertexAttribI4uiv","WebGLResource"],"mappings":"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","sourcesContent":["import {assert, getScratchArray, fillArray} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getBrowser} from '@probe.gl/env';\nimport WebGLDevice from '../device/webgl-device';\nimport {assertWebGL2Context, isWebGL2} from '../context/context/webgl-checks';\nimport Program from './program';\nimport WebGLResource, {ResourceProps} from './webgl-resource';\nimport Buffer from './webgl-buffer';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\n/**\n * VertexArrayObject properties\n * @param constantAttributeZero Attribute 0 can not be disable on most desktop OpenGL based browsers\n * and on iOS Safari browser.\n */\nexport type VertexArrayObjectProps = ResourceProps & {\n constantAttributeZero?: boolean;\n program?: Program;\n isDefaultArray?: boolean;\n};\n\nexport default class VertexArrayObject extends WebGLResource<VertexArrayObjectProps> {\n private static MAX_ATTRIBUTES: number;\n\n static isSupported(gl: WebGLRenderingContext | WebGL2RenderingContext, options?: VertexArrayObjectProps): boolean {\n if (options?.constantAttributeZero) {\n return isWebGL2(gl) || getBrowser() === 'Chrome';\n }\n\n // Whether additional objects can be created\n return true;\n }\n\n /**\n * Returns the global (null) vertex array object. Exists even when no extension available.\n * @todo (Tarek): VAOs are now polyfilled. Deprecate this in 9.0\n */\n static getDefaultArray(gl: WebGLRenderingContext): VertexArrayObject {\n const webglDevice = WebGLDevice.fromContext(gl);\n webglDevice.defaultVertexArray = webglDevice.defaultVertexArray || \n new VertexArrayObject(gl, {handle: null, isDefaultArray: true});\n return webglDevice.defaultVertexArray;\n }\n\n /** Get maximum number of attributes in a vertex array */\n static getMaxAttributes(gl: WebGLRenderingContext): number {\n // TODO - should be cached per context\n VertexArrayObject.MAX_ATTRIBUTES =\n VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n return VertexArrayObject.MAX_ATTRIBUTES;\n }\n\n /**\n * Set an attribute to a constant value\n * @param gl \n * @param location \n * @param array \n * \n * @note Constants are stored globally on the WebGL context, not the VAO\n * so they need to be updated before every render\n * @todo - use known type (in configuration or passed in) to allow non-typed arrays?\n * @todo - remember/cache values to avoid setting them unnecessarily?\n */\n static setConstant(gl: WebGLRenderingContext, location: any, array: any): void {\n switch (array.constructor) {\n case Float32Array:\n VertexArrayObject._setConstantFloatArray(gl, location, array);\n break;\n case Int32Array:\n VertexArrayObject._setConstantIntArray(assertWebGL2Context(gl), location, array);\n break;\n case Uint32Array:\n VertexArrayObject._setConstantUintArray(assertWebGL2Context(gl), location, array);\n break;\n default:\n assert(false);\n }\n }\n\n private buffer: Buffer | null = null;\n private bufferValue = null;\n private isDefaultArray: boolean = false;\n\n // Create a VertexArray\n constructor(gl: WebGLRenderingContext, opts?: VertexArrayObjectProps) {\n // Use program's id if program but no id is supplied\n super(WebGLDevice.attach(gl), {...opts, id: opts?.id || (opts?.program && opts?.program.id)}, {} as any);\n\n this.buffer = null;\n this.bufferValue = null;\n this.isDefaultArray = opts?.isDefaultArray || false;\n\n Object.seal(this);\n }\n\n delete(): this {\n super.delete();\n if (this.buffer) {\n this.buffer.delete();\n }\n return this;\n }\n\n get MAX_ATTRIBUTES(): number {\n return VertexArrayObject.getMaxAttributes(this.gl);\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, opts = {}) {\n assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n\n return this;\n }\n\n /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */\n setBuffer(location, buffer, accessor): this {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl, gl2} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n assert(isWebGL2(gl));\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n\n return this;\n }\n\n /**\n * Enabling an attribute location makes it reference the currently bound buffer\n * Disabling an attribute location makes it reference the global constant value\n * TODO - handle single values for size 1 attributes?\n * TODO - convert classic arrays based on known type?\n */ \n enable(location, enable = true): this {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers\n const disablingAttributeZero =\n !enable &&\n location === 0 &&\n !VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true});\n\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(() =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n }\n return this;\n }\n\n /**\n * Provide a means to create a buffer that is equivalent to a constant.\n * NOTE: Desktop OpenGL cannot disable attribute 0.\n * https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n * this-has-significant-performance-penalty\n */ \n getConstantBuffer(elementCount: number, value): Buffer {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = this._normalizeConstantArrayValue(value);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n\n // Reallocate and update contents if needed\n updateNeeded =\n updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n\n // DEPRECATED\n\n /** @deprecated this function has no effect */\n initialize(props?: VertexArrayObjectProps): this {\n return this.setProps(props);\n }\n\n /** @deprecated this function is not implemented */\n setProps(props: VertexArrayObjectProps): this {\n // TODO: decide which props should be supported\n return this;\n } \n\n // PRIVATE\n\n // TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n // TODO - handle single values for size 1 attributes?\n _normalizeConstantArrayValue(arrayValue) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n }\n\n _compareConstantArrayValues(v1, v2): boolean {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n }\n\n static _setConstantFloatArray(gl: WebGLRenderingContext, location, array): void {\n switch (array.length) {\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantIntArray(gl: WebGL2RenderingContext, location, array) {\n assert(isWebGL2(gl));\n gl.vertexAttribI4iv(location, array);\n // switch (array.length) {\n // case 1:\n // gl.vertexAttribI1iv(location, array);\n // break;\n // case 2:\n // gl.vertexAttribI2iv(location, array);\n // break;\n // case 3:\n // gl.vertexAttribI3iv(location, array);\n // break;\n // case 4:\n // break;\n // default:\n // assert(false);\n // }\n }\n\n static _setConstantUintArray(gl: WebGL2RenderingContext, location, array) {\n assert(isWebGL2(gl));\n gl.vertexAttribI4uiv(location, array);\n // switch (array.length) {\n // case 1:\n // gl.vertexAttribI1uiv(location, array);\n // break;\n // case 2:\n // gl.vertexAttribI2uiv(location, array);\n // break;\n // case 3:\n // gl.vertexAttribI3uiv(location, array);\n // break;\n // case 4:\n // gl.vertexAttribI4uiv(location, array);\n // break;\n // default:\n // assert(false);\n // }\n }\n\n // RESOURCE IMPLEMENTATION\n\n _createHandle() {\n return this.gl2.createVertexArray();\n }\n\n _deleteHandle(): void {\n this.gl2.deleteVertexArray(this.handle);\n // @ts-expect-error\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n _bindHandle(handle): void {\n this.gl2.bindVertexArray(handle);\n }\n\n // Generic getter for information about a vertex attribute at a given position\n _getParameter(pname: number, {location}) {\n assert(Number.isFinite(location));\n return this.bind(() => {\n switch (pname) {\n case GL.VERTEX_ATTRIB_ARRAY_POINTER:\n return this.gl.getVertexAttribOffset(location, pname);\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n}\n"],"file":"vertex-array-object.js"}
|