@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
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
// Contains metadata describing attribute configurations for a program's shaders
|
|
2
2
|
// Much of this is automatically extracted from shaders after program linking
|
|
3
3
|
import Accessor from './accessor';
|
|
4
|
-
import {isWebGL2} from '
|
|
4
|
+
import {isWebGL2} from '../context/context/webgl-checks';
|
|
5
5
|
import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* is a mechanism for taking a program object and querying information
|
|
9
|
+
* about it, so as to be able to interface and interact with it.
|
|
10
|
+
* For example, if there is a uniform, you may need to query its
|
|
11
|
+
* location so that you can set its value.
|
|
12
|
+
*/
|
|
13
|
+
export default class ProgramConfiguration {
|
|
14
|
+
id: string;
|
|
15
|
+
attributeInfos: any[] = [];
|
|
16
|
+
attributeInfosByName: Record<string, any> = {};
|
|
17
|
+
// Locations may not be contiguous the case of matrix attributes
|
|
18
|
+
// so keep a separate location->attribute map.
|
|
19
|
+
attributeInfosByLocation: any[] = [];
|
|
20
|
+
varyingInfos: any[] = [];
|
|
21
|
+
varyingInfosByName: Record<string, any> = {};
|
|
22
|
+
|
|
8
23
|
constructor(program) {
|
|
9
24
|
this.id = program.id;
|
|
10
|
-
this.attributeInfos = [];
|
|
11
|
-
this.attributeInfosByName = {};
|
|
12
|
-
|
|
13
|
-
// Locations may not be contiguous the case of matrix attributes
|
|
14
|
-
// so keep a separate location->attribute map.
|
|
15
|
-
this.attributeInfosByLocation = [];
|
|
16
|
-
this.varyingInfos = [];
|
|
17
|
-
this.varyingInfosByName = {};
|
|
18
25
|
Object.seal(this);
|
|
19
26
|
this._readAttributesFromProgram(program);
|
|
20
27
|
this._readVaryingsFromProgram(program);
|
|
@@ -48,12 +55,12 @@ export default class ProgramConfiguration {
|
|
|
48
55
|
}
|
|
49
56
|
|
|
50
57
|
getVaryingIndex(locationOrName) {
|
|
51
|
-
const varying = this.getVaryingInfo();
|
|
58
|
+
const varying = this.getVaryingInfo(locationOrName);
|
|
52
59
|
return varying ? varying.location : -1;
|
|
53
60
|
}
|
|
54
61
|
|
|
55
62
|
getVaryingAccessor(locationOrName) {
|
|
56
|
-
const varying = this.getVaryingInfo();
|
|
63
|
+
const varying = this.getVaryingInfo(locationOrName);
|
|
57
64
|
return varying ? varying.accessor : null;
|
|
58
65
|
}
|
|
59
66
|
|
|
@@ -1,51 +1,67 @@
|
|
|
1
|
+
import {log, assert, uid} from '@luma.gl/api';
|
|
1
2
|
import GL from '@luma.gl/constants';
|
|
2
|
-
|
|
3
|
-
import
|
|
3
|
+
import WebGLDevice from '../device/webgl-device';
|
|
4
|
+
import WebGLResource, {ResourceProps} from './webgl-resource';
|
|
4
5
|
import Texture from './texture';
|
|
5
6
|
import Framebuffer from './framebuffer';
|
|
6
7
|
import {parseUniformName, getUniformSetter} from './uniforms';
|
|
7
|
-
import {VertexShader, FragmentShader} from './shader';
|
|
8
|
+
import {VertexShader, FragmentShader} from './webgl-shader';
|
|
8
9
|
import ProgramConfiguration from './program-configuration';
|
|
9
10
|
import {copyUniform, checkUniformValues} from './uniforms';
|
|
10
11
|
|
|
11
|
-
import {isWebGL2, assertWebGL2Context
|
|
12
|
+
import {isWebGL2, assertWebGL2Context} from '../context/context/webgl-checks';
|
|
13
|
+
import {withParameters} from '../context/state-tracker/with-parameters';
|
|
12
14
|
import {getKey} from '../webgl-utils/constants-to-keys';
|
|
13
15
|
import {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';
|
|
14
|
-
import {assert} from '../utils/assert';
|
|
15
|
-
import {uid} from '../utils/utils';
|
|
16
16
|
|
|
17
17
|
const LOG_PROGRAM_PERF_PRIORITY = 4;
|
|
18
18
|
|
|
19
19
|
const GL_SEPARATE_ATTRIBS = 0x8c8d;
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
'getUniformCount',
|
|
29
|
-
'getUniformInfo',
|
|
30
|
-
'getUniformLocation',
|
|
31
|
-
'getUniformValue',
|
|
32
|
-
|
|
33
|
-
'getVarying',
|
|
34
|
-
'getFragDataLocation',
|
|
35
|
-
'getAttachedShaders',
|
|
36
|
-
'getAttributeCount',
|
|
37
|
-
'getAttributeLocation',
|
|
38
|
-
'getAttributeInfo'
|
|
39
|
-
];
|
|
40
|
-
|
|
41
|
-
export default class Program extends Resource {
|
|
42
|
-
constructor(gl, props = {}) {
|
|
43
|
-
super(gl, props);
|
|
21
|
+
export type ProgramProps = ResourceProps & {
|
|
22
|
+
hash?;
|
|
23
|
+
vs?;
|
|
24
|
+
fs?;
|
|
25
|
+
varyings?;
|
|
26
|
+
bufferMode?: number;
|
|
27
|
+
}
|
|
44
28
|
|
|
45
|
-
|
|
29
|
+
export type ProgramDrawOptions = {
|
|
30
|
+
logPriority?: any;
|
|
31
|
+
drawMode?: any;
|
|
32
|
+
vertexCount: any;
|
|
33
|
+
offset?: number;
|
|
34
|
+
start?: any;
|
|
35
|
+
end?: any;
|
|
36
|
+
isIndexed?: boolean;
|
|
37
|
+
indexType?: any;
|
|
38
|
+
instanceCount?: number;
|
|
39
|
+
isInstanced?: boolean;
|
|
40
|
+
vertexArray?: any;
|
|
41
|
+
transformFeedback?: any;
|
|
42
|
+
framebuffer?: any;
|
|
43
|
+
parameters?: {};
|
|
44
|
+
uniforms?: any;
|
|
45
|
+
samplers?: any;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export default class Program extends WebGLResource<ProgramProps> {
|
|
49
|
+
configuration: ProgramConfiguration;
|
|
50
|
+
// Experimental flag to avoid deleting Program object while it is cached
|
|
51
|
+
hash: string;; // Used by ProgramManager
|
|
52
|
+
vs;
|
|
53
|
+
fs;
|
|
54
|
+
uniforms: Record<string, any>;
|
|
55
|
+
varyings: Record<string, any>;
|
|
56
|
+
_textureUniforms: Record<string, any>;
|
|
57
|
+
_isCached: boolean = false;
|
|
58
|
+
_textureIndexCounter: number = 0;
|
|
59
|
+
_uniformCount: number = 0;
|
|
60
|
+
_uniformSetters: Record<string, Function>;
|
|
61
|
+
|
|
62
|
+
constructor(gl: WebGLRenderingContext, props: ProgramProps = {}) {
|
|
63
|
+
super(WebGLDevice.attach(gl), props, {} as any);
|
|
46
64
|
|
|
47
|
-
// Experimental flag to avoid deleting Program object while it is cached
|
|
48
|
-
this._isCached = false;
|
|
49
65
|
|
|
50
66
|
this.initialize(props);
|
|
51
67
|
|
|
@@ -54,7 +70,7 @@ export default class Program extends Resource {
|
|
|
54
70
|
this._setId(props.id);
|
|
55
71
|
}
|
|
56
72
|
|
|
57
|
-
initialize(props = {}) {
|
|
73
|
+
initialize(props: ProgramProps = {}) {
|
|
58
74
|
const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS} = props;
|
|
59
75
|
|
|
60
76
|
this.hash = hash || ''; // Used by ProgramManager
|
|
@@ -103,7 +119,8 @@ export default class Program extends Resource {
|
|
|
103
119
|
|
|
104
120
|
// A good thing about the WebGL API is that there are so many ways to draw things ;)
|
|
105
121
|
// This function unifies those ways into a single call using common parameters with sane defaults
|
|
106
|
-
draw({
|
|
122
|
+
draw(options: ProgramDrawOptions): boolean {
|
|
123
|
+
const {
|
|
107
124
|
logPriority, // Probe log priority, enables Model to do more integrated logging
|
|
108
125
|
|
|
109
126
|
drawMode = GL.TRIANGLES,
|
|
@@ -119,13 +136,15 @@ export default class Program extends Resource {
|
|
|
119
136
|
vertexArray = null,
|
|
120
137
|
transformFeedback,
|
|
121
138
|
framebuffer,
|
|
122
|
-
parameters = {},
|
|
123
139
|
|
|
124
140
|
// Deprecated
|
|
125
141
|
uniforms,
|
|
126
142
|
samplers
|
|
127
|
-
}
|
|
128
|
-
|
|
143
|
+
} = options;
|
|
144
|
+
|
|
145
|
+
let {parameters = {}} = options;
|
|
146
|
+
|
|
147
|
+
if (uniforms || samplers) {
|
|
129
148
|
// DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)
|
|
130
149
|
log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();
|
|
131
150
|
this.setUniforms(uniforms || {});
|
|
@@ -216,12 +235,15 @@ export default class Program extends Resource {
|
|
|
216
235
|
|
|
217
236
|
if (textureUpdate) {
|
|
218
237
|
// eslint-disable-next-line max-depth
|
|
238
|
+
// @ts-expect-error
|
|
219
239
|
if (uniformSetter.textureIndex === undefined) {
|
|
240
|
+
// @ts-expect-error
|
|
220
241
|
uniformSetter.textureIndex = this._textureIndexCounter++;
|
|
221
242
|
}
|
|
222
243
|
|
|
223
244
|
// Bind texture to index
|
|
224
245
|
const texture = value;
|
|
246
|
+
// @ts-expect-error
|
|
225
247
|
const {textureIndex} = uniformSetter;
|
|
226
248
|
|
|
227
249
|
texture.bind(textureIndex);
|
|
@@ -229,6 +251,7 @@ export default class Program extends Resource {
|
|
|
229
251
|
|
|
230
252
|
this._textureUniforms[uniformName] = texture;
|
|
231
253
|
} else {
|
|
254
|
+
// @ts-expect-error
|
|
232
255
|
value = uniformSetter.textureIndex;
|
|
233
256
|
}
|
|
234
257
|
} else if (this._textureUniforms[uniformName]) {
|
|
@@ -267,6 +290,7 @@ export default class Program extends Resource {
|
|
|
267
290
|
// Note: This is currently done before every draw call
|
|
268
291
|
_bindTextures() {
|
|
269
292
|
for (const uniformName in this._textureUniforms) {
|
|
293
|
+
// @ts-expect-error
|
|
270
294
|
const textureIndex = this._uniformSetters[uniformName].textureIndex;
|
|
271
295
|
this._textureUniforms[uniformName].bind(textureIndex);
|
|
272
296
|
}
|
|
@@ -290,11 +314,11 @@ export default class Program extends Resource {
|
|
|
290
314
|
const type = this.gl.getShaderParameter(this.handle, GL.SHADER_TYPE);
|
|
291
315
|
switch (type) {
|
|
292
316
|
case GL.VERTEX_SHADER:
|
|
293
|
-
// @ts-
|
|
317
|
+
// @ts-expect-error
|
|
294
318
|
opts.vs = new VertexShader({handle: shaderHandle});
|
|
295
319
|
break;
|
|
296
320
|
case GL.FRAGMENT_SHADER:
|
|
297
|
-
// @ts-
|
|
321
|
+
// @ts-expect-error
|
|
298
322
|
opts.fs = new FragmentShader({handle: shaderHandle});
|
|
299
323
|
break;
|
|
300
324
|
default:
|
|
@@ -333,7 +357,7 @@ export default class Program extends Resource {
|
|
|
333
357
|
log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();
|
|
334
358
|
|
|
335
359
|
// Avoid checking program linking error in production
|
|
336
|
-
// @ts-
|
|
360
|
+
// @ts-expect-error
|
|
337
361
|
if (gl.debug || log.level > 0) {
|
|
338
362
|
const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
|
|
339
363
|
if (!linked) {
|
|
@@ -358,10 +382,12 @@ export default class Program extends Resource {
|
|
|
358
382
|
const info = this.gl.getActiveUniform(this.handle, i);
|
|
359
383
|
const {name} = parseUniformName(info.name);
|
|
360
384
|
let location = gl.getUniformLocation(this.handle, name);
|
|
385
|
+
// @ts-expect-error
|
|
361
386
|
this._uniformSetters[name] = getUniformSetter(gl, location, info);
|
|
362
387
|
if (info.size > 1) {
|
|
363
388
|
for (let l = 0; l < info.size; l++) {
|
|
364
389
|
location = gl.getUniformLocation(this.handle, `${name}[${l}]`);
|
|
390
|
+
// @ts-expect-error
|
|
365
391
|
this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info);
|
|
366
392
|
}
|
|
367
393
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// WebGL2 Query (also handles disjoint timer extensions)
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {isWebGL2} from '
|
|
5
|
-
import {
|
|
2
|
+
import {assert} from '@luma.gl/api';
|
|
3
|
+
import WebGLDevice from '../device/webgl-device';
|
|
4
|
+
import {isWebGL2} from '../context/context/webgl-checks';
|
|
5
|
+
import WebGLResource, {ResourceProps} from './webgl-resource';
|
|
6
6
|
|
|
7
7
|
const GL_QUERY_RESULT = 0x8866; // Returns a GLuint containing the query result.
|
|
8
8
|
const GL_QUERY_RESULT_AVAILABLE = 0x8867; // whether query result is available.
|
|
@@ -14,17 +14,24 @@ const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88; // #primitives written
|
|
|
14
14
|
const GL_ANY_SAMPLES_PASSED = 0x8c2f; // Occlusion query (if drawing passed depth test)
|
|
15
15
|
const GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a; // Occlusion query less accurate/faster version
|
|
16
16
|
|
|
17
|
-
export
|
|
17
|
+
export type QueryProps = ResourceProps & {
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Asynchronous queries for different kinds of information
|
|
22
|
+
*/
|
|
23
|
+
export default class Query extends WebGLResource<QueryProps> {
|
|
18
24
|
// Returns true if Query is supported by the WebGL implementation
|
|
19
25
|
// Can also check whether timestamp queries are available.
|
|
20
|
-
static isSupported(gl,
|
|
26
|
+
static isSupported(gl: WebGLRenderingContext, options: string[] = []): boolean {
|
|
21
27
|
const webgl2 = isWebGL2(gl);
|
|
22
28
|
|
|
23
29
|
// Initial value
|
|
24
|
-
const
|
|
30
|
+
const webglDevice = WebGLDevice.fromContext(gl);
|
|
31
|
+
const hasTimerQuery = webglDevice.features.has('webgl-timer-query');
|
|
25
32
|
let supported = webgl2 || hasTimerQuery;
|
|
26
33
|
|
|
27
|
-
for (const key of
|
|
34
|
+
for (const key of options) {
|
|
28
35
|
switch (key) {
|
|
29
36
|
case 'queries':
|
|
30
37
|
supported = supported && webgl2;
|
|
@@ -40,31 +47,30 @@ export default class Query extends Resource {
|
|
|
40
47
|
return supported;
|
|
41
48
|
}
|
|
42
49
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.target = null;
|
|
48
|
-
this._queryPending = false;
|
|
49
|
-
this._pollingPromise = null;
|
|
50
|
+
target = null;
|
|
51
|
+
_queryPending = false;
|
|
52
|
+
_pollingPromise = null;
|
|
50
53
|
|
|
54
|
+
// Create a query class
|
|
55
|
+
constructor(gl: WebGLRenderingContext, opts: QueryProps = {}) {
|
|
56
|
+
super(WebGLDevice.attach(gl), opts, {} as any);
|
|
51
57
|
Object.seal(this);
|
|
52
58
|
}
|
|
53
59
|
|
|
54
60
|
// Shortcut for timer query (dependent on extension in both WebGL1 and 2)
|
|
55
61
|
// Measures GPU time delta between this call and a matching `end` call in the
|
|
56
62
|
// GPU instruction stream.
|
|
57
|
-
beginTimeElapsedQuery() {
|
|
63
|
+
beginTimeElapsedQuery(): this {
|
|
58
64
|
return this.begin(GL_TIME_ELAPSED_EXT);
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
// Shortcut for occlusion queries
|
|
62
|
-
beginOcclusionQuery({conservative
|
|
63
|
-
return this.begin(conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);
|
|
68
|
+
beginOcclusionQuery(options?: {conservative?: boolean}): this {
|
|
69
|
+
return this.begin(options?.conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
// Shortcut for transformFeedbackQuery
|
|
67
|
-
beginTransformFeedbackQuery() {
|
|
73
|
+
beginTransformFeedbackQuery(): this {
|
|
68
74
|
return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
|
|
69
75
|
}
|
|
70
76
|
|
|
@@ -73,7 +79,7 @@ export default class Query extends Resource {
|
|
|
73
79
|
// calling `begin()` on another query. While there can be multiple
|
|
74
80
|
// outstanding queries representing disjoint `begin()`/`end()` intervals.
|
|
75
81
|
// It is not possible to interleave or overlap `begin` and `end` calls.
|
|
76
|
-
begin(target) {
|
|
82
|
+
begin(target: number): this {
|
|
77
83
|
// Don't start a new query if one is already active.
|
|
78
84
|
if (this._queryPending) {
|
|
79
85
|
return this;
|
|
@@ -86,7 +92,7 @@ export default class Query extends Resource {
|
|
|
86
92
|
}
|
|
87
93
|
|
|
88
94
|
// ends the current query
|
|
89
|
-
end() {
|
|
95
|
+
end(): this {
|
|
90
96
|
// Can't end a new query if the last one hasn't been resolved.
|
|
91
97
|
if (this._queryPending) {
|
|
92
98
|
return this;
|
|
@@ -101,7 +107,7 @@ export default class Query extends Resource {
|
|
|
101
107
|
}
|
|
102
108
|
|
|
103
109
|
// Returns true if the query result is available
|
|
104
|
-
isResultAvailable() {
|
|
110
|
+
isResultAvailable(): boolean {
|
|
105
111
|
if (!this._queryPending) {
|
|
106
112
|
return false;
|
|
107
113
|
}
|
|
@@ -114,12 +120,12 @@ export default class Query extends Resource {
|
|
|
114
120
|
}
|
|
115
121
|
|
|
116
122
|
// Timing query is disjoint, i.e. results are invalid
|
|
117
|
-
isTimerDisjoint() {
|
|
123
|
+
isTimerDisjoint(): boolean {
|
|
118
124
|
return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);
|
|
119
125
|
}
|
|
120
126
|
|
|
121
127
|
// Returns query result.
|
|
122
|
-
getResult() {
|
|
128
|
+
getResult(): any {
|
|
123
129
|
return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);
|
|
124
130
|
}
|
|
125
131
|
|
|
@@ -129,7 +135,7 @@ export default class Query extends Resource {
|
|
|
129
135
|
}
|
|
130
136
|
|
|
131
137
|
// Polls the query
|
|
132
|
-
createPoll(limit = Number.POSITIVE_INFINITY) {
|
|
138
|
+
createPoll(limit: number = Number.POSITIVE_INFINITY): Promise<any> {
|
|
133
139
|
if (this._pollingPromise) {
|
|
134
140
|
return this._pollingPromise;
|
|
135
141
|
}
|
|
@@ -1,14 +1,40 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
|
+
import {isWebGL2} from '../context/context/webgl-checks';
|
|
3
|
+
|
|
4
|
+
export function isRenderbufferFormatSupported(gl: WebGLRenderingContext, format: GL): boolean {
|
|
5
|
+
const info = RENDERBUFFER_FORMATS[format];
|
|
6
|
+
// Unknown format
|
|
7
|
+
if (!info) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
if (info.ext) {
|
|
11
|
+
return Boolean(gl.getExtension(info.ext));
|
|
12
|
+
}
|
|
13
|
+
if (info.gl2) {
|
|
14
|
+
return isWebGL2(gl);
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function getRenderbufferFormatBytesPerPixel(format: GL): number {
|
|
20
|
+
return RENDERBUFFER_FORMATS[format].bpp;
|
|
21
|
+
}
|
|
2
22
|
|
|
3
23
|
// Define local extension strings to optimize minification
|
|
4
|
-
// const SRGB = 'EXT_sRGB';
|
|
5
|
-
// const EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';
|
|
6
24
|
const EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';
|
|
7
|
-
// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';
|
|
8
25
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
26
|
+
/**
|
|
27
|
+
* @param bpp "bytes per pixel", used for memory usage calculations.
|
|
28
|
+
* @param gl2 requires WebGL2
|
|
29
|
+
* @param ext requires extension
|
|
30
|
+
*/
|
|
31
|
+
type RenderbufferFormat = {
|
|
32
|
+
bpp: number;
|
|
33
|
+
gl2?: boolean;
|
|
34
|
+
ext?: string;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const RENDERBUFFER_FORMATS: Record<string, RenderbufferFormat> = {
|
|
12
38
|
[GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.
|
|
13
39
|
[GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},
|
|
14
40
|
[GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},
|
|
@@ -52,13 +78,15 @@ export default {
|
|
|
52
78
|
[GL.RGBA32UI]: {gl2: true, bpp: 16},
|
|
53
79
|
|
|
54
80
|
// When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension
|
|
55
|
-
[GL.R16F]: {
|
|
56
|
-
[GL.RG16F]: {
|
|
57
|
-
[GL.RGBA16F]: {
|
|
58
|
-
[GL.R32F]: {
|
|
59
|
-
[GL.RG32F]: {
|
|
81
|
+
[GL.R16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 2},
|
|
82
|
+
[GL.RG16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4},
|
|
83
|
+
[GL.RGBA16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 8},
|
|
84
|
+
[GL.R32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4},
|
|
85
|
+
[GL.RG32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 8},
|
|
60
86
|
// TODO - can't get WEBGL_color_buffer_float to work on renderbuffers
|
|
61
|
-
[GL.RGBA32F]: {
|
|
62
|
-
// [GL.RGBA32F]: {
|
|
63
|
-
[GL.R11F_G11F_B10F]: {
|
|
87
|
+
[GL.RGBA32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 16},
|
|
88
|
+
// [GL.RGBA32F]: {ext: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},
|
|
89
|
+
[GL.R11F_G11F_B10F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4}
|
|
64
90
|
};
|
|
91
|
+
|
|
92
|
+
export default RENDERBUFFER_FORMATS;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/* eslint-disable no-inline-comments */
|
|
2
|
+
import {assert} from '@luma.gl/api';
|
|
3
|
+
import GL from '@luma.gl/constants';
|
|
4
|
+
import WebGLDevice from '../device/webgl-device';
|
|
5
|
+
import WebGLResource, {ResourceProps} from './webgl-resource';
|
|
6
|
+
import {isRenderbufferFormatSupported, getRenderbufferFormatBytesPerPixel} from './renderbuffer-formats';
|
|
7
|
+
import {isWebGL2} from '../context/context/webgl-checks';
|
|
8
|
+
|
|
9
|
+
export type RenderbufferProps = ResourceProps & {
|
|
10
|
+
format: number;
|
|
11
|
+
width?: number;
|
|
12
|
+
height?: number;
|
|
13
|
+
samples?: number;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
|
|
17
|
+
id: undefined,
|
|
18
|
+
handle: undefined,
|
|
19
|
+
userData: undefined,
|
|
20
|
+
format: 0,
|
|
21
|
+
width: 1,
|
|
22
|
+
height: 1,
|
|
23
|
+
samples: 0
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Renderbuffers are GPU objects that contain images.
|
|
28
|
+
* In contrast to Textures they are optimized for use as render targets, with Framebuffers.
|
|
29
|
+
* while Textures may not be, and are the logical choice when
|
|
30
|
+
* you do not need to sample (i.e. in a post-pass shader)
|
|
31
|
+
* from the produced image. If you need to resample
|
|
32
|
+
* (such as when reading depth back in a second shader pass),
|
|
33
|
+
* use Textures instead.
|
|
34
|
+
* Renderbuffer objects also natively accommodate Multisampling (MSAA).
|
|
35
|
+
*/
|
|
36
|
+
export class ImmutableRenderbuffer extends WebGLResource<RenderbufferProps> {
|
|
37
|
+
static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
|
|
38
|
+
return !options.format || isRenderbufferFormatSupported(gl, options.format);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
constructor(gl: WebGLRenderingContext, props: RenderbufferProps) {
|
|
42
|
+
super(WebGLDevice.attach(gl), props, DEFAULT_RENDERBUFFER_PROPS);
|
|
43
|
+
this._initialize(this.props);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// PRIVATE METHODS
|
|
47
|
+
|
|
48
|
+
/** Creates and initializes a renderbuffer object's data store */
|
|
49
|
+
protected _initialize(props: Required<RenderbufferProps>) {
|
|
50
|
+
const {format, width, height, samples} = props;
|
|
51
|
+
assert(format, 'Needs format');
|
|
52
|
+
|
|
53
|
+
this.trackDeallocatedMemory();
|
|
54
|
+
|
|
55
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
|
|
56
|
+
|
|
57
|
+
if (samples !== 0 && isWebGL2(this.gl)) {
|
|
58
|
+
// @ts-expect-error
|
|
59
|
+
this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);
|
|
60
|
+
} else {
|
|
61
|
+
this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
|
|
65
|
+
|
|
66
|
+
this.trackAllocatedMemory(
|
|
67
|
+
width * height * (samples || 1) * getRenderbufferFormatBytesPerPixel(format)
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// RESOURECE IMPLEMENTATION
|
|
74
|
+
|
|
75
|
+
_createHandle() {
|
|
76
|
+
return this.gl.createRenderbuffer();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
_deleteHandle(): void {
|
|
80
|
+
this.gl.deleteRenderbuffer(this.handle);
|
|
81
|
+
this.trackDeallocatedMemory();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
_bindHandle(handle): void {
|
|
85
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Renderbuffers are GPU objects that contain images.
|
|
92
|
+
* In contrast to Textures they are optimized for use as render targets, with Framebuffers.
|
|
93
|
+
* while Textures may not be, and are the logical choice when
|
|
94
|
+
* you do not need to sample (i.e. in a post-pass shader)
|
|
95
|
+
* from the produced image. If you need to resample
|
|
96
|
+
* (such as when reading depth back in a second shader pass),
|
|
97
|
+
* use Textures instead.
|
|
98
|
+
* Renderbuffer objects also natively accommodate Multisampling (MSAA).
|
|
99
|
+
*/
|
|
100
|
+
export default class Renderbuffer extends ImmutableRenderbuffer {
|
|
101
|
+
get width(): number { return this.props.width; }
|
|
102
|
+
get height(): number { return this.props.height; }
|
|
103
|
+
get format(): number { return this.props.format; }
|
|
104
|
+
get samples(): number { return this.props.samples; }
|
|
105
|
+
|
|
106
|
+
static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
|
|
107
|
+
return ImmutableRenderbuffer.isSupported(gl, options);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
static getSamplesForFormat(gl: WebGL2RenderingContext, options: {format: number}): number{
|
|
111
|
+
// Polyfilled to return [0] under WebGL1
|
|
112
|
+
return gl.getInternalformatParameter(GL.RENDERBUFFER, options.format, GL.SAMPLES);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
constructor(gl: WebGLRenderingContext, props?: RenderbufferProps) {
|
|
116
|
+
super(gl, props);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
resize(size: {width: number, height: number}): this {
|
|
120
|
+
// Don't resize if width/height haven't changed
|
|
121
|
+
if (size.width !== this.width || size.height !== this.height) {
|
|
122
|
+
return this.initialize({...size, format: this.format, samples: this.samples});
|
|
123
|
+
}
|
|
124
|
+
return this;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/** Creates and initializes a renderbuffer object's data store */
|
|
128
|
+
initialize(props: RenderbufferProps): this {
|
|
129
|
+
Object.assign(this.props, props);
|
|
130
|
+
this._initialize(this.props);
|
|
131
|
+
return this;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// PRIVATE
|
|
135
|
+
|
|
136
|
+
_syncHandle(handle) {
|
|
137
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
|
|
138
|
+
Object.assign(this.props, {
|
|
139
|
+
format: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_INTERNAL_FORMAT),
|
|
140
|
+
width: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_WIDTH),
|
|
141
|
+
height: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_HEIGHT),
|
|
142
|
+
samples: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_SAMPLES)
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// @param {Boolean} opt.autobind=true - method call will bind/unbind object
|
|
147
|
+
// @returns {GLenum|GLint} - depends on pname
|
|
148
|
+
_getParameter(pname) {
|
|
149
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
|
|
150
|
+
const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);
|
|
151
|
+
// this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
|
|
152
|
+
return value;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {Device, loadImage} from '@luma.gl/api';
|
|
2
|
+
import GL from '@luma.gl/constants';
|
|
3
|
+
import Texture, {TextureProps, TextureSupportOptions} from './texture';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export type Texture2DProps = TextureProps & {
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export default class Texture2D extends Texture {
|
|
10
|
+
static isSupported(device: Device | WebGLRenderingContext, opts?: TextureSupportOptions): boolean {
|
|
11
|
+
return Texture.isSupported(device, opts);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
constructor(device: Device | WebGLRenderingContext, props?: Texture2DProps | Promise<Texture2DProps>) {
|
|
15
|
+
// Signature: new Texture2D(gl, url | Promise)
|
|
16
|
+
if (props instanceof Promise || typeof props === 'string') {
|
|
17
|
+
props = {data: props};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Signature: new Texture2D(gl, {data: url})
|
|
21
|
+
if (typeof props?.data === 'string') {
|
|
22
|
+
props = Object.assign({}, props, {data: loadImage(props.data)});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
super(device, Object.assign({}, props, {target: GL.TEXTURE_2D}));
|
|
26
|
+
|
|
27
|
+
this.initialize(props);
|
|
28
|
+
|
|
29
|
+
Object.seal(this);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get [Symbol.toStringTag](): string {
|
|
33
|
+
return 'Texture2D';
|
|
34
|
+
}
|
|
35
|
+
}
|