@luma.gl/webgl 8.5.9 → 8.6.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -1
- package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
- package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/set-device-parameters.js +124 -0
- package/dist/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/adapter/device-helpers/device-features.d.ts +12 -0
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
- package/dist/adapter/device-helpers/device-features.js +123 -0
- package/dist/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/adapter/device-helpers/device-limits.d.ts +51 -0
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
- package/dist/adapter/device-helpers/device-limits.js +90 -0
- package/dist/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/adapter/device-helpers/get-device-info.d.ts +4 -0
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
- package/dist/adapter/device-helpers/get-device-info.js +44 -0
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/adapter/device-helpers/is-old-ie.d.ts +2 -0
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
- package/dist/{esm/features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +111 -0
- package/dist/adapter/webgl-device.d.ts.map +1 -0
- package/dist/adapter/webgl-device.js +208 -0
- package/dist/adapter/webgl-device.js.map +1 -0
- package/dist/adapter/webgl-shader.d.ts +18 -0
- package/dist/adapter/webgl-shader.d.ts.map +1 -0
- package/dist/adapter/webgl-shader.js +82 -0
- package/dist/adapter/webgl-shader.js.map +1 -0
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +5 -0
- package/dist/bundle.js.map +1 -0
- package/dist/classes/accessor.d.ts +28 -0
- package/dist/classes/accessor.d.ts.map +1 -0
- package/dist/classes/accessor.js +112 -0
- package/dist/classes/accessor.js.map +1 -0
- package/dist/classes/accessor.ts.disabled +159 -0
- package/dist/classes/clear.d.ts +17 -0
- package/dist/classes/clear.d.ts.map +1 -0
- package/{src → dist}/classes/clear.js +29 -23
- package/dist/classes/clear.js.map +1 -0
- package/dist/classes/copy-and-blit.d.ts +86 -0
- package/dist/classes/copy-and-blit.d.ts.map +1 -0
- package/dist/classes/copy-and-blit.js +338 -0
- package/dist/classes/copy-and-blit.js.map +1 -0
- package/dist/classes/framebuffer.d.ts +139 -0
- package/dist/classes/framebuffer.d.ts.map +1 -0
- package/dist/classes/framebuffer.js +656 -0
- package/dist/classes/framebuffer.js.map +1 -0
- package/dist/classes/program-configuration.d.ts +24 -0
- package/dist/classes/program-configuration.d.ts.map +1 -0
- package/dist/classes/program-configuration.js +73 -0
- package/dist/classes/program-configuration.js.map +1 -0
- package/dist/classes/program.d.ts +66 -0
- package/dist/classes/program.d.ts.map +1 -0
- package/dist/classes/program.js +379 -0
- package/dist/classes/program.js.map +1 -0
- package/dist/classes/query.d.ts +27 -0
- package/dist/classes/query.d.ts.map +1 -0
- package/dist/classes/query.js +145 -0
- package/dist/classes/query.js.map +1 -0
- package/dist/classes/renderbuffer-formats.d.ts +16 -0
- package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
- package/dist/classes/renderbuffer-formats.js +185 -0
- package/dist/classes/renderbuffer-formats.js.map +1 -0
- package/dist/classes/renderbuffer.d.ts +60 -0
- package/dist/classes/renderbuffer.d.ts.map +1 -0
- package/dist/classes/renderbuffer.js +128 -0
- package/dist/classes/renderbuffer.js.map +1 -0
- package/dist/classes/shader.d.ts +42 -0
- package/dist/classes/shader.d.ts.map +1 -0
- package/dist/classes/shader.js +118 -0
- package/dist/classes/shader.js.map +1 -0
- package/dist/classes/texture-2d.d.ts +9 -0
- package/dist/classes/texture-2d.d.ts.map +1 -0
- package/dist/classes/texture-2d.js +36 -0
- package/dist/classes/texture-2d.js.map +1 -0
- package/dist/classes/texture-3d.d.ts +29 -0
- package/dist/classes/texture-3d.d.ts.map +1 -0
- package/dist/classes/texture-3d.js +76 -0
- package/dist/classes/texture-3d.js.map +1 -0
- package/dist/classes/texture-cube.d.ts +28 -0
- package/dist/classes/texture-cube.d.ts.map +1 -0
- package/dist/classes/texture-cube.js +130 -0
- package/dist/classes/texture-cube.js.map +1 -0
- package/dist/classes/texture-formats.d.ts +37 -0
- package/dist/classes/texture-formats.d.ts.map +1 -0
- package/dist/classes/texture-formats.js +98 -0
- package/dist/classes/texture-formats.js.map +1 -0
- package/dist/classes/texture.d.ts +123 -0
- package/dist/classes/texture.d.ts.map +1 -0
- package/dist/classes/texture.js +786 -0
- package/dist/classes/texture.js.map +1 -0
- package/dist/classes/transform-feedback.d.ts +33 -0
- package/dist/classes/transform-feedback.d.ts.map +1 -0
- package/dist/classes/transform-feedback.js +198 -0
- package/dist/classes/transform-feedback.js.map +1 -0
- package/dist/classes/uniform-buffer-layout.d.ts +17 -0
- package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
- package/dist/classes/uniform-buffer-layout.js +104 -0
- package/dist/classes/uniform-buffer-layout.js.map +1 -0
- package/dist/classes/uniforms.d.ts +37 -0
- package/dist/classes/uniforms.d.ts.map +1 -0
- package/dist/classes/uniforms.js +250 -0
- package/dist/classes/uniforms.js.map +1 -0
- package/dist/classes/vertex-array-object.d.ts +76 -0
- package/dist/classes/vertex-array-object.d.ts.map +1 -0
- package/dist/classes/vertex-array-object.js +261 -0
- package/dist/classes/vertex-array-object.js.map +1 -0
- package/dist/classes/vertex-array.d.ts +75 -0
- package/dist/classes/vertex-array.d.ts.map +1 -0
- package/dist/classes/vertex-array.js +408 -0
- package/dist/classes/vertex-array.js.map +1 -0
- package/dist/classes/webgl-buffer.d.ts +100 -0
- package/dist/classes/webgl-buffer.d.ts.map +1 -0
- package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +100 -73
- package/dist/classes/webgl-buffer.js.map +1 -0
- package/dist/classes/webgl-resource.d.ts +56 -0
- package/dist/classes/webgl-resource.d.ts.map +1 -0
- package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +35 -52
- package/dist/classes/webgl-resource.js.map +1 -0
- package/dist/context/context/context-state.d.ts +18 -0
- package/dist/context/context/context-state.d.ts.map +1 -0
- package/dist/context/context/context-state.js +26 -0
- package/dist/context/context/context-state.js.map +1 -0
- package/dist/context/context/create-context.d.ts +40 -0
- package/dist/context/context/create-context.d.ts.map +1 -0
- package/dist/context/context/create-context.js +37 -0
- package/dist/context/context/create-context.js.map +1 -0
- package/dist/context/context/device-pixels.d.ts +25 -0
- package/dist/context/context/device-pixels.d.ts.map +1 -0
- package/dist/context/context/device-pixels.js +98 -0
- package/dist/context/context/device-pixels.js.map +1 -0
- package/dist/context/context/get-canvas.d.ts +13 -0
- package/dist/context/context/get-canvas.d.ts.map +1 -0
- package/dist/context/context/get-canvas.js +31 -0
- package/dist/context/context/get-canvas.js.map +1 -0
- package/dist/context/context/resize-context.d.ts +20 -0
- package/dist/context/context/resize-context.d.ts.map +1 -0
- package/dist/context/context/resize-context.js +15 -0
- package/dist/context/context/resize-context.js.map +1 -0
- package/dist/context/context/webgl-checks.d.ts +13 -0
- package/dist/context/context/webgl-checks.d.ts.map +1 -0
- package/dist/context/context/webgl-checks.js +34 -0
- package/dist/context/context/webgl-checks.js.map +1 -0
- package/dist/context/parameters/unified-parameter-api.d.ts +31 -0
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
- package/dist/context/parameters/unified-parameter-api.js +65 -0
- package/dist/context/parameters/unified-parameter-api.js.map +1 -0
- package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
- package/dist/context/parameters/webgl-parameter-tables.js +445 -0
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
- package/dist/context/parameters/webgl-parameters.d.ts +144 -0
- package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
- package/dist/context/parameters/webgl-parameters.js +2 -0
- package/dist/context/parameters/webgl-parameters.js.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
- package/dist/context/polyfill/polyfill-context.d.ts +5 -0
- package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
- package/dist/context/polyfill/polyfill-context.js +91 -0
- package/dist/context/polyfill/polyfill-context.js.map +1 -0
- package/dist/context/polyfill/polyfill-table.d.ts +48 -0
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
- package/dist/context/polyfill/polyfill-table.js +160 -0
- package/dist/context/polyfill/polyfill-table.js.map +1 -0
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
- package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
- package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
- package/dist/context/state-tracker/deep-array-equal.js +21 -0
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
- package/dist/context/state-tracker/track-context-state.d.ts +22 -0
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
- package/dist/context/state-tracker/track-context-state.js +169 -0
- package/dist/context/state-tracker/track-context-state.js.map +1 -0
- package/dist/context/state-tracker/with-parameters.d.ts +13 -0
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
- package/dist/context/state-tracker/with-parameters.js +36 -0
- package/dist/context/state-tracker/with-parameters.js.map +1 -0
- package/dist/debug/debug-program-configuration.d.ts +2 -0
- package/dist/debug/debug-program-configuration.d.ts.map +1 -0
- package/dist/debug/debug-program-configuration.js +40 -0
- package/dist/debug/debug-program-configuration.js.map +1 -0
- package/dist/debug/debug-uniforms.d.ts +12 -0
- package/dist/debug/debug-uniforms.d.ts.map +1 -0
- package/dist/debug/debug-uniforms.js +108 -0
- package/dist/debug/debug-uniforms.js.map +1 -0
- package/dist/debug/debug-vertex-array.d.ts +5 -0
- package/dist/debug/debug-vertex-array.d.ts.map +1 -0
- package/dist/debug/debug-vertex-array.js +118 -0
- package/dist/debug/debug-vertex-array.js.map +1 -0
- package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
- package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-features.js +152 -0
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-limits.js +64 -0
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/es5/adapter/device-helpers/get-device-info.js +55 -0
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/es5/{features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/es5/adapter/webgl-device.js +279 -0
- package/dist/es5/adapter/webgl-device.js.map +1 -0
- package/dist/es5/adapter/webgl-shader.js +155 -0
- package/dist/es5/adapter/webgl-shader.js.map +1 -0
- package/dist/es5/bundle.js +2 -4
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/classes/accessor.js +36 -38
- package/dist/es5/classes/accessor.js.map +1 -1
- package/dist/es5/classes/accessor.ts.disabled +159 -0
- package/dist/es5/classes/clear.js +17 -11
- package/dist/es5/classes/clear.js.map +1 -1
- package/dist/es5/classes/copy-and-blit.js +121 -117
- package/dist/es5/classes/copy-and-blit.js.map +1 -1
- package/dist/es5/classes/framebuffer.js +435 -423
- package/dist/es5/classes/framebuffer.js.map +1 -1
- package/dist/es5/classes/program-configuration.js +44 -108
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +108 -85
- package/dist/es5/classes/program.js.map +1 -1
- package/dist/es5/classes/query.js +58 -59
- package/dist/es5/classes/query.js.map +1 -1
- package/dist/es5/classes/renderbuffer-formats.js +79 -52
- package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
- package/dist/es5/classes/renderbuffer.js +129 -100
- package/dist/es5/classes/renderbuffer.js.map +1 -1
- package/dist/es5/classes/shader.js +70 -96
- package/dist/es5/classes/shader.js.map +1 -1
- package/dist/es5/classes/texture-2d.js +25 -21
- package/dist/es5/classes/texture-2d.js.map +1 -1
- package/dist/es5/classes/texture-3d.js +49 -29
- package/dist/es5/classes/texture-3d.js.map +1 -1
- package/dist/es5/classes/texture-cube.js +45 -36
- package/dist/es5/classes/texture-cube.js.map +1 -1
- package/dist/es5/classes/texture-formats.js +35 -33
- package/dist/es5/classes/texture-formats.js.map +1 -1
- package/dist/es5/classes/texture.js +213 -101
- package/dist/es5/classes/texture.js.map +1 -1
- package/dist/es5/classes/transform-feedback.js +37 -34
- package/dist/es5/classes/transform-feedback.js.map +1 -1
- package/dist/es5/classes/uniform-buffer-layout.js +4 -4
- package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/es5/classes/uniforms.js +73 -73
- package/dist/es5/classes/uniforms.js.map +1 -1
- package/dist/es5/classes/vertex-array-object.js +106 -149
- package/dist/es5/classes/vertex-array-object.js.map +1 -1
- package/dist/es5/classes/vertex-array.js +52 -43
- package/dist/es5/classes/vertex-array.js.map +1 -1
- package/dist/es5/classes/{buffer.js → webgl-buffer.js} +120 -111
- package/dist/es5/classes/webgl-buffer.js.map +1 -0
- package/dist/es5/classes/{resource.js → webgl-resource.js} +78 -99
- package/dist/es5/classes/webgl-resource.js.map +1 -0
- package/dist/es5/context/context/context-state.js +31 -0
- package/dist/es5/context/context/context-state.js.map +1 -0
- package/dist/es5/context/context/create-context.js +57 -0
- package/dist/es5/context/context/create-context.js.map +1 -0
- package/dist/es5/context/context/device-pixels.js +115 -0
- package/dist/es5/context/context/device-pixels.js.map +1 -0
- package/dist/es5/context/context/get-canvas.js +40 -0
- package/dist/es5/context/context/get-canvas.js.map +1 -0
- package/dist/es5/context/context/resize-context.js +23 -0
- package/dist/es5/context/context/resize-context.js.map +1 -0
- package/dist/es5/context/context/webgl-checks.js +54 -0
- package/dist/es5/context/context/webgl-checks.js.map +1 -0
- package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
- package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
- package/dist/es5/context/parameters/webgl-parameters.js +6 -0
- package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
- package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
- package/dist/es5/context/polyfill/polyfill-context.js +134 -0
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
- package/dist/es5/context/polyfill/polyfill-table.js +166 -0
- package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
- package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
- package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
- package/dist/es5/context/state-tracker/track-context-state.js +196 -0
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
- package/dist/es5/context/state-tracker/with-parameters.js +44 -0
- package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
- package/dist/es5/debug/debug-program-configuration.js +1 -1
- package/dist/es5/debug/debug-program-configuration.js.map +1 -1
- package/dist/es5/debug/debug-uniforms.js +18 -20
- package/dist/es5/debug/debug-uniforms.js.map +1 -1
- package/dist/es5/debug/debug-vertex-array.js +16 -16
- package/dist/es5/debug/debug-vertex-array.js.map +1 -1
- package/dist/es5/helpers/get-program-bindings.js +274 -0
- package/dist/es5/helpers/get-program-bindings.js.map +1 -0
- package/dist/es5/helpers/program-bindings.js +2 -0
- package/dist/es5/helpers/program-bindings.js.map +1 -0
- package/dist/es5/index.js +159 -99
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +21 -41
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/types/accessor.d.ts +29 -0
- package/dist/es5/types.js +2 -0
- package/dist/es5/types.js.map +1 -0
- package/dist/es5/webgl-utils/attribute-utils.js +4 -4
- package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/es5/webgl-utils/constants-to-keys.js +3 -3
- package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/es5/webgl-utils/format-utils.js +21 -17
- package/dist/es5/webgl-utils/format-utils.js.map +1 -1
- package/dist/es5/webgl-utils/get-error.js.map +1 -1
- package/dist/es5/webgl-utils/index.js +74 -0
- package/dist/es5/webgl-utils/index.js.map +1 -0
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js +72 -0
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
- package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/es5/webgl-utils/texture-utils.js +6 -4
- package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
- package/dist/es5/webgl-utils/typed-array-utils.js +39 -34
- package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
- package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
- package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-features.js +123 -0
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-limits.js +90 -0
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/esm/adapter/device-helpers/get-device-info.js +44 -0
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/esm/adapter/device-helpers/is-old-ie.js +8 -0
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/esm/adapter/webgl-device.js +208 -0
- package/dist/esm/adapter/webgl-device.js.map +1 -0
- package/dist/esm/adapter/webgl-shader.js +82 -0
- package/dist/esm/adapter/webgl-shader.js.map +1 -0
- package/dist/esm/bundle.js +2 -4
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/classes/accessor.js +6 -6
- package/dist/esm/classes/accessor.js.map +1 -1
- package/dist/esm/classes/accessor.ts.disabled +159 -0
- package/dist/esm/classes/clear.js +19 -14
- package/dist/esm/classes/clear.js.map +1 -1
- package/dist/esm/classes/copy-and-blit.js +67 -64
- package/dist/esm/classes/copy-and-blit.js.map +1 -1
- package/dist/esm/classes/framebuffer.js +341 -313
- package/dist/esm/classes/framebuffer.js.map +1 -1
- package/dist/esm/classes/program-configuration.js +25 -104
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +98 -62
- package/dist/esm/classes/program.js.map +1 -1
- package/dist/esm/classes/query.js +20 -16
- package/dist/esm/classes/query.js.map +1 -1
- package/dist/esm/classes/renderbuffer-formats.js +72 -49
- package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
- package/dist/esm/classes/renderbuffer.js +86 -73
- package/dist/esm/classes/renderbuffer.js.map +1 -1
- package/dist/esm/classes/shader.js +47 -67
- package/dist/esm/classes/shader.js.map +1 -1
- package/dist/esm/classes/texture-2d.js +13 -9
- package/dist/esm/classes/texture-2d.js.map +1 -1
- package/dist/esm/classes/texture-3d.js +28 -16
- package/dist/esm/classes/texture-3d.js.map +1 -1
- package/dist/esm/classes/texture-cube.js +45 -31
- package/dist/esm/classes/texture-cube.js.map +1 -1
- package/dist/esm/classes/texture-formats.js +52 -51
- package/dist/esm/classes/texture-formats.js.map +1 -1
- package/dist/esm/classes/texture.js +174 -58
- package/dist/esm/classes/texture.js.map +1 -1
- package/dist/esm/classes/transform-feedback.js +26 -14
- package/dist/esm/classes/transform-feedback.js.map +1 -1
- package/dist/esm/classes/uniform-buffer-layout.js +1 -1
- package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/esm/classes/uniforms.js +111 -113
- package/dist/esm/classes/uniforms.js.map +1 -1
- package/dist/esm/classes/vertex-array-object.js +52 -89
- package/dist/esm/classes/vertex-array-object.js.map +1 -1
- package/dist/esm/classes/vertex-array.js +52 -31
- package/dist/esm/classes/vertex-array.js.map +1 -1
- package/dist/esm/classes/webgl-buffer.js +382 -0
- package/dist/esm/classes/webgl-buffer.js.map +1 -0
- package/dist/esm/classes/webgl-resource.js +212 -0
- package/dist/esm/classes/webgl-resource.js.map +1 -0
- package/dist/esm/context/context/context-state.js +26 -0
- package/dist/esm/context/context/context-state.js.map +1 -0
- package/dist/esm/context/context/create-context.js +37 -0
- package/dist/esm/context/context/create-context.js.map +1 -0
- package/dist/esm/context/context/device-pixels.js +98 -0
- package/dist/esm/context/context/device-pixels.js.map +1 -0
- package/dist/esm/context/context/get-canvas.js +31 -0
- package/dist/esm/context/context/get-canvas.js.map +1 -0
- package/dist/esm/context/context/resize-context.js +15 -0
- package/dist/esm/context/context/resize-context.js.map +1 -0
- package/dist/esm/context/context/webgl-checks.js +34 -0
- package/dist/esm/context/context/webgl-checks.js.map +1 -0
- package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
- package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
- package/dist/esm/context/parameters/webgl-parameters.js +2 -0
- package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
- package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
- package/dist/esm/context/polyfill/polyfill-context.js +91 -0
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
- package/dist/esm/context/polyfill/polyfill-table.js +160 -0
- package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
- package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
- package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
- package/dist/esm/context/state-tracker/track-context-state.js +169 -0
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
- package/dist/esm/context/state-tracker/with-parameters.js +36 -0
- package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
- package/dist/esm/debug/debug-program-configuration.js +4 -4
- package/dist/esm/debug/debug-program-configuration.js.map +1 -1
- package/dist/esm/debug/debug-uniforms.js +9 -9
- package/dist/esm/debug/debug-uniforms.js.map +1 -1
- package/dist/esm/debug/debug-vertex-array.js +18 -16
- package/dist/esm/debug/debug-vertex-array.js.map +1 -1
- package/dist/esm/helpers/get-program-bindings.js +228 -0
- package/dist/esm/helpers/get-program-bindings.js.map +1 -0
- package/dist/esm/helpers/program-bindings.js +2 -0
- package/dist/esm/helpers/program-bindings.js.map +1 -0
- package/dist/esm/index.js +17 -15
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +12 -28
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/accessor.d.ts +29 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/webgl-utils/attribute-utils.js +1 -1
- package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/esm/webgl-utils/constants-to-keys.js +4 -4
- package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/esm/webgl-utils/format-utils.js +16 -15
- package/dist/esm/webgl-utils/format-utils.js.map +1 -1
- package/dist/esm/webgl-utils/get-error.js +1 -1
- package/dist/esm/webgl-utils/get-error.js.map +1 -1
- package/dist/esm/webgl-utils/index.js +5 -0
- package/dist/esm/webgl-utils/index.js.map +1 -0
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
- package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/esm/webgl-utils/texture-utils.js +4 -3
- package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
- package/dist/esm/webgl-utils/typed-array-utils.js +41 -36
- package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
- package/dist/helpers/get-program-bindings.d.ts +8 -0
- package/dist/helpers/get-program-bindings.d.ts.map +1 -0
- package/dist/helpers/get-program-bindings.js +228 -0
- package/dist/helpers/get-program-bindings.js.map +1 -0
- package/dist/helpers/program-bindings.d.ts +41 -0
- package/dist/helpers/program-bindings.d.ts.map +1 -0
- package/dist/helpers/program-bindings.js +2 -0
- package/dist/helpers/program-bindings.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +5 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +33 -0
- package/dist/init.js.map +1 -0
- package/dist/types/accessor.d.ts +29 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/webgl-utils/attribute-utils.d.ts +18 -0
- package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
- package/dist/webgl-utils/attribute-utils.js +182 -0
- package/dist/webgl-utils/attribute-utils.js.map +1 -0
- package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
- package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
- package/dist/webgl-utils/constants-to-keys.js +41 -0
- package/dist/webgl-utils/constants-to-keys.js.map +1 -0
- package/dist/webgl-utils/format-utils.d.ts +3 -0
- package/dist/webgl-utils/format-utils.d.ts.map +1 -0
- package/dist/webgl-utils/format-utils.js +45 -0
- package/dist/webgl-utils/format-utils.js.map +1 -0
- package/dist/webgl-utils/get-error.d.ts +3 -0
- package/dist/webgl-utils/get-error.d.ts.map +1 -0
- package/dist/webgl-utils/get-error.js +41 -0
- package/dist/webgl-utils/get-error.js.map +1 -0
- package/dist/webgl-utils/index.d.ts +5 -0
- package/dist/webgl-utils/index.d.ts.map +1 -0
- package/dist/webgl-utils/index.js +5 -0
- package/dist/webgl-utils/index.js.map +1 -0
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
- package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
- package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
- package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
- package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
- package/dist/webgl-utils/request-animation-frame.js +7 -0
- package/dist/webgl-utils/request-animation-frame.js.map +1 -0
- package/dist/webgl-utils/texture-utils.d.ts +15 -0
- package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
- package/dist/webgl-utils/texture-utils.js +48 -0
- package/dist/webgl-utils/texture-utils.js.map +1 -0
- package/dist/webgl-utils/typed-array-utils.d.ts +43 -0
- package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
- package/{src → dist}/webgl-utils/typed-array-utils.js +45 -27
- package/dist/webgl-utils/typed-array-utils.js.map +1 -0
- package/package.json +9 -9
- package/src/.DS_Store +0 -0
- package/src/adapter/converters/set-device-parameters.ts +182 -0
- package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
- package/src/adapter/device-helpers/device-features.ts +227 -0
- package/src/adapter/device-helpers/device-limits.ts +150 -0
- package/src/adapter/device-helpers/get-device-info.ts +49 -0
- package/src/{features/check-old-ie.js → adapter/device-helpers/is-old-ie.ts} +3 -3
- package/src/adapter/webgl-device.ts +406 -0
- package/src/adapter/webgl-shader.ts +84 -0
- package/src/bundle.ts +4 -0
- package/src/classes/accessor.js +2 -3
- package/src/classes/accessor.ts.disabled +159 -0
- package/src/classes/clear.ts +108 -0
- package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +143 -55
- package/src/classes/{framebuffer.js → framebuffer.ts} +381 -321
- package/src/classes/program-configuration.ts +77 -0
- package/src/classes/{program.js → program.ts} +111 -77
- package/src/classes/{query.js → query.ts} +31 -25
- package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
- package/src/classes/renderbuffer.ts +154 -0
- package/src/classes/shader.ts +129 -0
- package/src/classes/texture-2d.ts +35 -0
- package/src/classes/{texture-3d.js → texture-3d.ts} +48 -18
- package/src/classes/{texture-cube.js → texture-cube.ts} +52 -34
- package/src/classes/{texture-formats.js → texture-formats.ts} +10 -2
- package/src/classes/{texture.js → texture.ts} +223 -57
- package/src/classes/{transform-feedback.js → transform-feedback.ts} +34 -25
- package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
- package/src/classes/{uniforms.js → uniforms.ts} +123 -77
- package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +136 -114
- package/src/classes/{vertex-array.js → vertex-array.ts} +84 -59
- package/src/classes/{buffer.js → webgl-buffer.ts} +126 -50
- package/src/classes/{resource.js → webgl-resource.ts} +55 -46
- package/src/context/context/context-state.ts +39 -0
- package/src/context/context/create-context.ts +83 -0
- package/src/context/context/device-pixels.ts +147 -0
- package/src/context/context/get-canvas.ts +37 -0
- package/src/context/context/resize-context.ts +37 -0
- package/src/context/context/webgl-checks.ts +49 -0
- package/src/context/parameters/unified-parameter-api.ts +128 -0
- package/src/context/parameters/webgl-parameter-tables.ts +625 -0
- package/src/context/parameters/webgl-parameters.ts +197 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
- package/src/context/polyfill/polyfill-context.ts +98 -0
- package/src/context/polyfill/polyfill-table.ts +162 -0
- package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
- package/src/context/state-tracker/deep-array-equal.ts +20 -0
- package/src/context/state-tracker/track-context-state.ts +250 -0
- package/src/context/state-tracker/with-parameters.ts +50 -0
- package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
- package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
- package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +6 -5
- package/src/helpers/get-program-bindings.ts +244 -0
- package/src/helpers/program-bindings.ts +46 -0
- package/src/index.ts +133 -0
- package/src/{init.js → init.ts} +11 -25
- package/src/types/accessor.d.ts +29 -0
- package/src/{types.d.ts → types.ts} +1 -1
- package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
- package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
- package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
- package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
- package/src/webgl-utils/index.ts +12 -0
- package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
- package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
- package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +14 -10
- package/src/webgl-utils/typed-array-utils.ts +137 -0
- package/dist/dist.js +0 -13555
- package/dist/dist.min.js +0 -1
- package/dist/es5/classes/buffer.d.ts +0 -84
- package/dist/es5/classes/buffer.js.map +0 -1
- package/dist/es5/classes/clear.d.ts +0 -11
- package/dist/es5/classes/copy-and-blit.d.ts +0 -101
- package/dist/es5/classes/framebuffer.d.ts +0 -96
- package/dist/es5/classes/program-configuration.d.ts +0 -15
- package/dist/es5/classes/program.d.ts +0 -44
- package/dist/es5/classes/query.d.ts +0 -21
- package/dist/es5/classes/renderbuffer.d.ts +0 -34
- package/dist/es5/classes/resource.d.ts +0 -47
- package/dist/es5/classes/resource.js.map +0 -1
- package/dist/es5/classes/shader.d.ts +0 -29
- package/dist/es5/classes/texture-2d.d.ts +0 -11
- package/dist/es5/classes/texture-3d.d.ts +0 -29
- package/dist/es5/classes/texture-cube.d.ts +0 -23
- package/dist/es5/classes/texture.d.ts +0 -80
- package/dist/es5/classes/transform-feedback.d.ts +0 -16
- package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
- package/dist/es5/classes/uniforms.d.ts +0 -63
- package/dist/es5/classes/vertex-array-object.d.ts +0 -25
- package/dist/es5/classes/vertex-array.d.ts +0 -37
- package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
- package/dist/es5/debug/debug-uniforms.d.ts +0 -11
- package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
- package/dist/es5/features/check-glsl-extension.js +0 -41
- package/dist/es5/features/check-glsl-extension.js.map +0 -1
- package/dist/es5/features/check-old-ie.js.map +0 -1
- package/dist/es5/features/features.js +0 -99
- package/dist/es5/features/features.js.map +0 -1
- package/dist/es5/features/index.js +0 -64
- package/dist/es5/features/index.js.map +0 -1
- package/dist/es5/features/limits.js +0 -64
- package/dist/es5/features/limits.js.map +0 -1
- package/dist/es5/features/webgl-features-table.js +0 -64
- package/dist/es5/features/webgl-features-table.js.map +0 -1
- package/dist/es5/features/webgl-limits-table.js +0 -132
- package/dist/es5/features/webgl-limits-table.js.map +0 -1
- package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
- package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
- package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
- package/dist/es5/glsl-utils/get-shader-name.js +0 -14
- package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
- package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
- package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
- package/dist/es5/glsl-utils/get-shader-version.js +0 -22
- package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
- package/dist/es5/glsl-utils/index.js +0 -48
- package/dist/es5/glsl-utils/index.js.map +0 -1
- package/dist/es5/index.d.ts +0 -71
- package/dist/es5/init.d.ts +0 -12
- package/dist/es5/types.d.ts +0 -8
- package/dist/es5/utils/array-utils-flat.js +0 -51
- package/dist/es5/utils/array-utils-flat.js.map +0 -1
- package/dist/es5/utils/assert.d.ts +0 -1
- package/dist/es5/utils/assert.js +0 -13
- package/dist/es5/utils/assert.js.map +0 -1
- package/dist/es5/utils/check-props.js +0 -51
- package/dist/es5/utils/check-props.js.map +0 -1
- package/dist/es5/utils/format-value.js +0 -57
- package/dist/es5/utils/format-value.js.map +0 -1
- package/dist/es5/utils/is-old-ie.d.ts +0 -1
- package/dist/es5/utils/is-old-ie.js +0 -14
- package/dist/es5/utils/is-old-ie.js.map +0 -1
- package/dist/es5/utils/load-file.js +0 -50
- package/dist/es5/utils/load-file.js.map +0 -1
- package/dist/es5/utils/stub-methods.js +0 -25
- package/dist/es5/utils/stub-methods.js.map +0 -1
- package/dist/es5/utils/utils.d.ts +0 -13
- package/dist/es5/utils/utils.js +0 -36
- package/dist/es5/utils/utils.js.map +0 -1
- package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
- package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
- package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
- package/dist/esm/classes/buffer.d.ts +0 -84
- package/dist/esm/classes/buffer.js.map +0 -1
- package/dist/esm/classes/clear.d.ts +0 -11
- package/dist/esm/classes/copy-and-blit.d.ts +0 -101
- package/dist/esm/classes/framebuffer.d.ts +0 -96
- package/dist/esm/classes/program-configuration.d.ts +0 -15
- package/dist/esm/classes/program.d.ts +0 -44
- package/dist/esm/classes/query.d.ts +0 -21
- package/dist/esm/classes/renderbuffer.d.ts +0 -34
- package/dist/esm/classes/resource.d.ts +0 -47
- package/dist/esm/classes/resource.js.map +0 -1
- package/dist/esm/classes/shader.d.ts +0 -29
- package/dist/esm/classes/texture-2d.d.ts +0 -11
- package/dist/esm/classes/texture-3d.d.ts +0 -29
- package/dist/esm/classes/texture-cube.d.ts +0 -23
- package/dist/esm/classes/texture.d.ts +0 -80
- package/dist/esm/classes/transform-feedback.d.ts +0 -16
- package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
- package/dist/esm/classes/uniforms.d.ts +0 -63
- package/dist/esm/classes/vertex-array-object.d.ts +0 -25
- package/dist/esm/classes/vertex-array.d.ts +0 -37
- package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
- package/dist/esm/debug/debug-uniforms.d.ts +0 -11
- package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
- package/dist/esm/features/check-glsl-extension.js +0 -27
- package/dist/esm/features/check-glsl-extension.js.map +0 -1
- package/dist/esm/features/check-old-ie.js.map +0 -1
- package/dist/esm/features/features.js +0 -66
- package/dist/esm/features/features.js.map +0 -1
- package/dist/esm/features/index.js +0 -5
- package/dist/esm/features/index.js.map +0 -1
- package/dist/esm/features/limits.js +0 -52
- package/dist/esm/features/limits.js.map +0 -1
- package/dist/esm/features/webgl-features-table.js +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-configuration.js +0 -123
- package/src/classes/program.d.ts +0 -44
- package/src/classes/query.d.ts +0 -21
- package/src/classes/renderbuffer.d.ts +0 -34
- package/src/classes/renderbuffer.js +0 -105
- package/src/classes/resource.d.ts +0 -47
- package/src/classes/shader.d.ts +0 -29
- package/src/classes/shader.js +0 -147
- package/src/classes/texture-2d.d.ts +0 -11
- package/src/classes/texture-2d.js +0 -30
- package/src/classes/texture-3d.d.ts +0 -29
- package/src/classes/texture-cube.d.ts +0 -23
- package/src/classes/texture.d.ts +0 -80
- package/src/classes/transform-feedback.d.ts +0 -16
- package/src/classes/uniform-buffer-layout.d.ts +0 -18
- package/src/classes/uniforms.d.ts +0 -63
- package/src/classes/vertex-array-object.d.ts +0 -25
- package/src/classes/vertex-array.d.ts +0 -37
- package/src/debug/debug-program-configuration.d.ts +0 -1
- package/src/debug/debug-uniforms.d.ts +0 -11
- package/src/debug/debug-vertex-array.d.ts +0 -1
- package/src/features/check-glsl-extension.js +0 -34
- package/src/features/features.js +0 -79
- package/src/features/index.js +0 -5
- package/src/features/limits.js +0 -65
- package/src/features/webgl-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,86 +1,309 @@
|
|
|
1
|
+
import {log, assert} from '@luma.gl/api';
|
|
1
2
|
import GL from '@luma.gl/constants';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
3
|
+
import WebGLDevice from '../adapter/webgl-device';
|
|
4
|
+
import {getWebGL2Context, assertWebGL2Context} from '../context/context/webgl-checks';
|
|
5
|
+
import {getKey} from '../webgl-utils/constants-to-keys';
|
|
6
|
+
import Resource, {ResourceProps} from './webgl-resource';
|
|
4
7
|
import Texture2D from './texture-2d';
|
|
5
8
|
import Renderbuffer from './renderbuffer';
|
|
6
9
|
import {clear, clearBuffer} from './clear';
|
|
7
|
-
import {copyToDataUrl} from './copy-and-blit
|
|
8
|
-
|
|
9
|
-
import {getFeatures} from '../features';
|
|
10
|
-
import {getKey} from '../webgl-utils/constants-to-keys';
|
|
11
|
-
import {assert} from '../utils/assert';
|
|
10
|
+
import {copyToDataUrl} from './copy-and-blit';
|
|
12
11
|
|
|
13
12
|
const ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
type TextureAttachment = {
|
|
15
|
+
texture: Texture2D;
|
|
16
|
+
layer?: number; // = 0
|
|
17
|
+
level?: number; // = 0
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
type Attachment = Renderbuffer | Texture2D | TextureAttachment;
|
|
21
|
+
|
|
22
|
+
export type ImmutableFramebufferProps = ResourceProps & {
|
|
23
|
+
attachments?: Record<string, Attachment>;
|
|
24
|
+
readBuffer?: number;
|
|
25
|
+
drawBuffers?: number[];
|
|
26
|
+
check?: boolean;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export type FramebufferProps = ImmutableFramebufferProps & {
|
|
30
|
+
width?: number;
|
|
31
|
+
height?: number;
|
|
32
|
+
color?: boolean;
|
|
33
|
+
depth?: boolean;
|
|
34
|
+
stencil?: boolean;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
type colorBufferFloatOptions = {colorBufferFloat?: boolean; colorBufferHalfFloat?: boolean};
|
|
38
|
+
|
|
39
|
+
export class ImmutableFramebuffer extends Resource<FramebufferProps> {
|
|
40
|
+
constructor(gl: WebGLRenderingContext, props?: FramebufferProps) {
|
|
41
|
+
super(WebGLDevice.attach(gl), props, {} as any);
|
|
42
|
+
this._initialize({
|
|
43
|
+
attachments: props?.attachments || {},
|
|
44
|
+
readBuffer: props?.readBuffer,
|
|
45
|
+
drawBuffers: props?.drawBuffers
|
|
46
|
+
});
|
|
47
|
+
}
|
|
22
48
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
49
|
+
checkStatus(): this {
|
|
50
|
+
const {gl} = this;
|
|
51
|
+
const status = this.getStatus();
|
|
52
|
+
if (status !== gl.FRAMEBUFFER_COMPLETE) {
|
|
53
|
+
throw new Error(_getFrameBufferStatus(status));
|
|
54
|
+
}
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
getStatus(): number {
|
|
59
|
+
const {gl} = this;
|
|
60
|
+
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
|
|
61
|
+
const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
|
|
62
|
+
// @ts-expect-error
|
|
63
|
+
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
64
|
+
return status;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// DEBUG
|
|
68
|
+
|
|
69
|
+
// Note: Will only work when called in an event handler
|
|
70
|
+
show() {
|
|
71
|
+
if (typeof window !== 'undefined') {
|
|
72
|
+
window.open(copyToDataUrl(this), 'luma-debug-texture');
|
|
73
|
+
}
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
log(logLevel = 0, message = '') {
|
|
78
|
+
if (logLevel > log.level || typeof window === 'undefined') {
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
message = message || `Framebuffer ${this.id}`;
|
|
82
|
+
const image = copyToDataUrl(this, {targetMaxHeight: 100});
|
|
83
|
+
// @ts-expect-error probe.gl typings incorrectly require priority...
|
|
84
|
+
log.image({logLevel, message, image})();
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// WEBGL INTERFACE
|
|
89
|
+
bind({target = GL.FRAMEBUFFER} = {}) {
|
|
90
|
+
this.gl.bindFramebuffer(target, this.handle);
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
unbind({target = GL.FRAMEBUFFER} = {}) {
|
|
95
|
+
this.gl.bindFramebuffer(target, null);
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// PRIVATE
|
|
100
|
+
|
|
101
|
+
_initialize(options: {attachments: Record<string, Attachment>; readBuffer?: number; drawBuffers?: number[]}): this {
|
|
102
|
+
const {attachments = {}, readBuffer, drawBuffers} = options;
|
|
103
|
+
|
|
104
|
+
this._attach(attachments);
|
|
105
|
+
|
|
106
|
+
// Multiple render target support, set read buffer and draw buffers
|
|
107
|
+
const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
|
|
108
|
+
if (readBuffer) {
|
|
109
|
+
this._setReadBuffer(readBuffer);
|
|
110
|
+
}
|
|
111
|
+
if (drawBuffers) {
|
|
112
|
+
this._setDrawBuffers(drawBuffers);
|
|
113
|
+
}
|
|
114
|
+
// @ts-expect-error
|
|
115
|
+
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
116
|
+
|
|
117
|
+
return this;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** Attach from a map of attachments */
|
|
121
|
+
_attach(attachments: Record<string, Attachment>) {
|
|
122
|
+
const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
|
|
123
|
+
|
|
124
|
+
// Walk the attachments
|
|
125
|
+
for (const key in attachments) {
|
|
126
|
+
// Ensure key is not undefined
|
|
127
|
+
assert(key !== undefined, 'Misspelled framebuffer binding point?');
|
|
128
|
+
const attachmentPoint = Number(key) as GL;
|
|
129
|
+
const attachment = attachments[attachmentPoint];
|
|
130
|
+
this._attachOne(attachmentPoint, attachment);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// @ts-expect-error
|
|
134
|
+
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/** Attach one attachment */
|
|
138
|
+
_attachOne(attachmentPoint: GL, attachment: Attachment): Renderbuffer | Texture2D {
|
|
139
|
+
if (attachment instanceof Renderbuffer) {
|
|
140
|
+
this._attachRenderbuffer(attachmentPoint, attachment);
|
|
141
|
+
return attachment;
|
|
142
|
+
} else if (Array.isArray(attachment)) {
|
|
143
|
+
const [texture, layer = 0, level = 0] = attachment;
|
|
144
|
+
this._attachTexture(attachmentPoint, texture, layer, level);
|
|
145
|
+
return texture;
|
|
146
|
+
} else if (attachment instanceof Texture2D) {
|
|
147
|
+
this._attachTexture(attachmentPoint, attachment, 0, 0);
|
|
148
|
+
return attachment;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
_attachRenderbuffer(attachment: GL, renderbuffer: Renderbuffer): void {
|
|
153
|
+
this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @param attachment
|
|
158
|
+
* @param texture
|
|
159
|
+
* @param layer = 0 - index into Texture2DArray and Texture3D or face for `TextureCubeMap`
|
|
160
|
+
* @param level = 0 - mipmapLevel (must be 0 in WebGL1)
|
|
161
|
+
*/
|
|
162
|
+
_attachTexture(attachment: GL, texture: Texture2D, layer: number, level: number): void {
|
|
163
|
+
const {gl} = this;
|
|
164
|
+
gl.bindTexture(texture.target, texture.handle);
|
|
165
|
+
|
|
166
|
+
switch (texture.target) {
|
|
167
|
+
case GL.TEXTURE_2D_ARRAY:
|
|
168
|
+
case GL.TEXTURE_3D:
|
|
169
|
+
const gl2 = assertWebGL2Context(gl);
|
|
170
|
+
gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
|
|
171
|
+
break;
|
|
172
|
+
|
|
173
|
+
case GL.TEXTURE_CUBE_MAP:
|
|
174
|
+
// layer must be a cubemap face (or if index, converted to cube map face)
|
|
175
|
+
const face = mapIndexToCubeMapFace(layer);
|
|
176
|
+
gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);
|
|
177
|
+
break;
|
|
178
|
+
|
|
179
|
+
case GL.TEXTURE_2D:
|
|
180
|
+
gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);
|
|
181
|
+
break;
|
|
182
|
+
|
|
183
|
+
default:
|
|
184
|
+
assert(false, 'Illegal texture type');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
gl.bindTexture(texture.target, null);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/** @note Expects framebuffer to be bound */
|
|
191
|
+
_setReadBuffer(readBuffer: number): void {
|
|
192
|
+
const gl2 = getWebGL2Context(this.gl);
|
|
193
|
+
if (gl2) {
|
|
194
|
+
gl2.readBuffer(readBuffer);
|
|
195
|
+
} else {
|
|
196
|
+
// Setting to color attachment 0 is a noop, so allow it in WebGL1
|
|
197
|
+
assert(
|
|
198
|
+
readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK,
|
|
199
|
+
ERR_MULTIPLE_RENDERTARGETS
|
|
31
200
|
);
|
|
32
201
|
}
|
|
202
|
+
}
|
|
33
203
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
204
|
+
/** @note Expects framebuffer to be bound */
|
|
205
|
+
_setDrawBuffers(drawBuffers: number[]) {
|
|
206
|
+
const {gl} = this;
|
|
207
|
+
const gl2 = assertWebGL2Context(gl);
|
|
208
|
+
if (gl2) {
|
|
209
|
+
gl2.drawBuffers(drawBuffers);
|
|
210
|
+
} else {
|
|
211
|
+
// TODO - is this not handled by polyfills?
|
|
212
|
+
const ext = gl.getExtension('WEBGL_draw_buffers');
|
|
213
|
+
if (ext) {
|
|
214
|
+
ext.drawBuffersWEBGL(drawBuffers);
|
|
215
|
+
} else {
|
|
216
|
+
// Setting a single draw buffer to color attachment 0 is a noop, allow in WebGL1
|
|
217
|
+
assert(
|
|
218
|
+
drawBuffers.length === 1 &&
|
|
219
|
+
(drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK),
|
|
220
|
+
ERR_MULTIPLE_RENDERTARGETS
|
|
42
221
|
);
|
|
222
|
+
}
|
|
43
223
|
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// RESOURCE METHODS
|
|
44
227
|
|
|
45
|
-
|
|
228
|
+
_createHandle() {
|
|
229
|
+
return this.gl.createFramebuffer();
|
|
46
230
|
}
|
|
47
231
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
232
|
+
_deleteHandle() {
|
|
233
|
+
this.gl.deleteFramebuffer(this.handle);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
_bindHandle(handle) {
|
|
237
|
+
return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export default class Framebuffer extends ImmutableFramebuffer {
|
|
242
|
+
width = null;
|
|
243
|
+
height = null;
|
|
244
|
+
attachments = {};
|
|
245
|
+
readBuffer = GL.COLOR_ATTACHMENT0;
|
|
246
|
+
drawBuffers = [GL.COLOR_ATTACHMENT0];
|
|
247
|
+
ownResources = [];
|
|
248
|
+
|
|
249
|
+
static readonly FRAMEBUFFER_ATTACHMENT_PARAMETERS = [
|
|
250
|
+
GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, // WebGLRenderbuffer or WebGLTexture
|
|
251
|
+
GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, // GL.RENDERBUFFER, GL.TEXTURE, GL.NONE
|
|
252
|
+
// GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, // GL.TEXTURE_CUBE_MAP_POSITIVE_X, etc.
|
|
253
|
+
// GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, // GLint
|
|
254
|
+
// EXT_sRGB or WebGL2
|
|
255
|
+
GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, // GL.LINEAR, GL.SRBG
|
|
256
|
+
// WebGL2
|
|
257
|
+
// GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, // GLint
|
|
258
|
+
GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE, // GLint
|
|
259
|
+
GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, // GLint
|
|
260
|
+
GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, // GLint
|
|
261
|
+
GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, // GLint
|
|
262
|
+
GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, // GLint
|
|
263
|
+
GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE // GLint
|
|
264
|
+
// GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
|
|
265
|
+
// GL.FLOAT, GL.INT, GL.UNSIGNED_INT, GL.SIGNED_NORMALIZED, OR GL.UNSIGNED_NORMALIZED.
|
|
266
|
+
];
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Check color buffer float support
|
|
270
|
+
* @param options.colorBufferFloat Whether floating point textures can be rendered and read
|
|
271
|
+
* @param options.colorBufferHalfFloat Whether half float textures can be rendered and read
|
|
272
|
+
*/
|
|
273
|
+
static isSupported(gl: WebGLRenderingContext, options: colorBufferFloatOptions): boolean {
|
|
274
|
+
return isFloatColorBufferSupported(gl, options);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* returns the default Framebuffer
|
|
279
|
+
* Creates a Framebuffer object wrapper for the default WebGL framebuffer (target === null)
|
|
280
|
+
*/
|
|
281
|
+
static getDefaultFramebuffer(gl: WebGLRenderingContext): Framebuffer {
|
|
282
|
+
const webglDevice = WebGLDevice.fromContext(gl);
|
|
283
|
+
webglDevice.defaultFramebuffer =
|
|
284
|
+
webglDevice.defaultFramebuffer ||
|
|
53
285
|
new Framebuffer(gl, {
|
|
54
286
|
id: 'default-framebuffer',
|
|
55
287
|
handle: null,
|
|
56
288
|
attachments: {}
|
|
57
289
|
});
|
|
58
290
|
// TODO - can we query for and get a handle to the GL.FRONT renderbuffer?
|
|
59
|
-
return
|
|
291
|
+
return webglDevice.defaultFramebuffer;
|
|
60
292
|
}
|
|
61
293
|
|
|
62
|
-
get MAX_COLOR_ATTACHMENTS() {
|
|
294
|
+
get MAX_COLOR_ATTACHMENTS(): number {
|
|
63
295
|
const gl2 = assertWebGL2Context(this.gl);
|
|
64
296
|
return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);
|
|
65
297
|
}
|
|
66
298
|
|
|
67
|
-
get MAX_DRAW_BUFFERS() {
|
|
299
|
+
get MAX_DRAW_BUFFERS(): number {
|
|
68
300
|
const gl2 = assertWebGL2Context(this.gl);
|
|
69
301
|
return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);
|
|
70
302
|
}
|
|
71
303
|
|
|
72
|
-
constructor(gl,
|
|
73
|
-
super(gl,
|
|
74
|
-
|
|
75
|
-
// Public members
|
|
76
|
-
this.width = null;
|
|
77
|
-
this.height = null;
|
|
78
|
-
this.attachments = {};
|
|
79
|
-
this.readBuffer = GL.COLOR_ATTACHMENT0;
|
|
80
|
-
this.drawBuffers = [GL.COLOR_ATTACHMENT0];
|
|
81
|
-
this.ownResources = [];
|
|
82
|
-
this.initialize(opts);
|
|
83
|
-
|
|
304
|
+
constructor(gl: WebGLRenderingContext, props?: FramebufferProps) {
|
|
305
|
+
super(gl, props);
|
|
306
|
+
this.initialize(props);
|
|
84
307
|
Object.seal(this);
|
|
85
308
|
}
|
|
86
309
|
|
|
@@ -106,17 +329,19 @@ export default class Framebuffer extends Resource {
|
|
|
106
329
|
);
|
|
107
330
|
}
|
|
108
331
|
|
|
109
|
-
initialize(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
332
|
+
// initialize(props?: FramebufferProps): this;
|
|
333
|
+
initialize(props: FramebufferProps) {
|
|
334
|
+
let {attachments = null} = props || {};
|
|
335
|
+
const {
|
|
336
|
+
width = 1,
|
|
337
|
+
height = 1,
|
|
338
|
+
color = true,
|
|
339
|
+
depth = true,
|
|
340
|
+
stencil = false,
|
|
341
|
+
check = true,
|
|
342
|
+
readBuffer = undefined,
|
|
343
|
+
drawBuffers = undefined
|
|
344
|
+
} = props || {};
|
|
120
345
|
assert(width >= 0 && height >= 0, 'Width and height need to be integers');
|
|
121
346
|
|
|
122
347
|
// Store actual width and height for diffing
|
|
@@ -144,7 +369,7 @@ export default class Framebuffer extends Resource {
|
|
|
144
369
|
}
|
|
145
370
|
}
|
|
146
371
|
|
|
147
|
-
delete() {
|
|
372
|
+
delete(): this {
|
|
148
373
|
for (const resource of this.ownResources) {
|
|
149
374
|
resource.delete();
|
|
150
375
|
}
|
|
@@ -152,13 +377,22 @@ export default class Framebuffer extends Resource {
|
|
|
152
377
|
return this;
|
|
153
378
|
}
|
|
154
379
|
|
|
155
|
-
update({
|
|
156
|
-
attachments
|
|
157
|
-
readBuffer,
|
|
158
|
-
drawBuffers
|
|
159
|
-
clearAttachments
|
|
160
|
-
resizeAttachments
|
|
161
|
-
}) {
|
|
380
|
+
update(options: {
|
|
381
|
+
attachments: Record<string, Attachment>,
|
|
382
|
+
readBuffer?: number,
|
|
383
|
+
drawBuffers?,
|
|
384
|
+
clearAttachments?: boolean,
|
|
385
|
+
resizeAttachments?: boolean
|
|
386
|
+
}): this {
|
|
387
|
+
|
|
388
|
+
const {
|
|
389
|
+
attachments = {},
|
|
390
|
+
readBuffer,
|
|
391
|
+
drawBuffers,
|
|
392
|
+
clearAttachments = false,
|
|
393
|
+
resizeAttachments = true
|
|
394
|
+
} = options;
|
|
395
|
+
|
|
162
396
|
this.attach(attachments, {clearAttachments, resizeAttachments});
|
|
163
397
|
|
|
164
398
|
const {gl} = this;
|
|
@@ -166,19 +400,21 @@ export default class Framebuffer extends Resource {
|
|
|
166
400
|
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
|
|
167
401
|
if (readBuffer) {
|
|
168
402
|
this._setReadBuffer(readBuffer);
|
|
403
|
+
this.readBuffer = readBuffer;
|
|
169
404
|
}
|
|
170
405
|
if (drawBuffers) {
|
|
171
406
|
this._setDrawBuffers(drawBuffers);
|
|
407
|
+
this.drawBuffers = drawBuffers;
|
|
172
408
|
}
|
|
173
|
-
// @ts-
|
|
409
|
+
// @ts-expect-error
|
|
174
410
|
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
175
411
|
|
|
176
412
|
return this;
|
|
177
413
|
}
|
|
178
414
|
|
|
179
|
-
|
|
180
|
-
resize(
|
|
181
|
-
let {width, height} =
|
|
415
|
+
/** Attachment resize is expected to be a noop if size is same */
|
|
416
|
+
resize(size?: {width?: number; height?: number}): this {
|
|
417
|
+
let {width, height} = size || {};
|
|
182
418
|
// for default framebuffer, just update the stored size
|
|
183
419
|
if (this.handle === null) {
|
|
184
420
|
assert(width === undefined && height === undefined);
|
|
@@ -205,13 +441,13 @@ export default class Framebuffer extends Resource {
|
|
|
205
441
|
return this;
|
|
206
442
|
}
|
|
207
443
|
|
|
208
|
-
|
|
444
|
+
/** Attach from a map of attachments */
|
|
209
445
|
attach(attachments, {clearAttachments = false, resizeAttachments = true} = {}) {
|
|
210
446
|
const newAttachments = {};
|
|
211
447
|
|
|
212
448
|
// Any current attachments need to be removed, add null values to map
|
|
213
449
|
if (clearAttachments) {
|
|
214
|
-
Object.keys(this.attachments).forEach(key => {
|
|
450
|
+
Object.keys(this.attachments).forEach((key) => {
|
|
215
451
|
newAttachments[key] = null;
|
|
216
452
|
});
|
|
217
453
|
}
|
|
@@ -232,14 +468,9 @@ export default class Framebuffer extends Resource {
|
|
|
232
468
|
let object = descriptor;
|
|
233
469
|
if (!object) {
|
|
234
470
|
this._unattach(attachment);
|
|
235
|
-
} else if (object instanceof Renderbuffer) {
|
|
236
|
-
this._attachRenderbuffer({attachment, renderbuffer: object});
|
|
237
|
-
} else if (Array.isArray(descriptor)) {
|
|
238
|
-
const [texture, layer = 0, level = 0] = descriptor;
|
|
239
|
-
object = texture;
|
|
240
|
-
this._attachTexture({attachment, texture, layer, level});
|
|
241
471
|
} else {
|
|
242
|
-
this.
|
|
472
|
+
object = this._attachOne(attachment, object);
|
|
473
|
+
this.attachments[attachment] = object;
|
|
243
474
|
}
|
|
244
475
|
|
|
245
476
|
// Resize objects
|
|
@@ -248,37 +479,19 @@ export default class Framebuffer extends Resource {
|
|
|
248
479
|
}
|
|
249
480
|
}
|
|
250
481
|
|
|
251
|
-
// @ts-
|
|
482
|
+
// @ts-expect-error
|
|
252
483
|
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
253
484
|
|
|
254
485
|
// Assign to attachments and remove any nulls to get a clean attachment map
|
|
255
486
|
Object.assign(this.attachments, attachments);
|
|
256
487
|
Object.keys(this.attachments)
|
|
257
|
-
.filter(key => !this.attachments[key])
|
|
258
|
-
.forEach(key => {
|
|
488
|
+
.filter((key) => !this.attachments[key])
|
|
489
|
+
.forEach((key) => {
|
|
259
490
|
delete this.attachments[key];
|
|
260
491
|
});
|
|
261
492
|
}
|
|
262
493
|
|
|
263
|
-
|
|
264
|
-
const {gl} = this;
|
|
265
|
-
const status = this.getStatus();
|
|
266
|
-
if (status !== gl.FRAMEBUFFER_COMPLETE) {
|
|
267
|
-
throw new Error(_getFrameBufferStatus(status));
|
|
268
|
-
}
|
|
269
|
-
return this;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
getStatus() {
|
|
273
|
-
const {gl} = this;
|
|
274
|
-
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
|
|
275
|
-
const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
|
|
276
|
-
// @ts-ignore
|
|
277
|
-
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
278
|
-
return status;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
clear(options = {}) {
|
|
494
|
+
clear(options?: {color?: any; depth?: any; stencil?: any; drawBuffers?: any[]}): this {
|
|
282
495
|
const {color, depth, stencil, drawBuffers = []} = options;
|
|
283
496
|
|
|
284
497
|
// Bind framebuffer and delegate to global clear functions
|
|
@@ -292,66 +505,12 @@ export default class Framebuffer extends Resource {
|
|
|
292
505
|
clearBuffer(this.gl, {drawBuffer, value});
|
|
293
506
|
});
|
|
294
507
|
|
|
295
|
-
// @ts-
|
|
508
|
+
// @ts-expect-error
|
|
296
509
|
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
297
510
|
|
|
298
511
|
return this;
|
|
299
512
|
}
|
|
300
513
|
|
|
301
|
-
// NOTE: Slow requires roundtrip to GPU
|
|
302
|
-
// App can provide pixelArray or have it auto allocated by this method
|
|
303
|
-
// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,
|
|
304
|
-
// newly allocated by this method unless provided by app.
|
|
305
|
-
readPixels(opts = {}) {
|
|
306
|
-
log.error(
|
|
307
|
-
'Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)'
|
|
308
|
-
)();
|
|
309
|
-
return null;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// Reads data into provided buffer object asynchronously
|
|
313
|
-
// This function doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.
|
|
314
|
-
readPixelsToBuffer(opts = {}) {
|
|
315
|
-
log.error(
|
|
316
|
-
'Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)'
|
|
317
|
-
)();
|
|
318
|
-
return null;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
// Reads pixels as a dataUrl
|
|
322
|
-
copyToDataUrl(opts = {}) {
|
|
323
|
-
log.error(
|
|
324
|
-
'Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)'
|
|
325
|
-
)();
|
|
326
|
-
return null;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
// Reads pixels into an HTML Image
|
|
330
|
-
copyToImage(opts = {}) {
|
|
331
|
-
log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();
|
|
332
|
-
return null;
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
// copyToFramebuffer({width, height}) {
|
|
336
|
-
// const scaleX = width / this.width;
|
|
337
|
-
// const scaleY = height / this.height;
|
|
338
|
-
// const scale = Math.min(scaleX, scaleY);
|
|
339
|
-
// width = width * scale;
|
|
340
|
-
// height = height * scale;
|
|
341
|
-
// const scaledFramebuffer = new Framebuffer(this.gl, {width, height});
|
|
342
|
-
// this.blit();
|
|
343
|
-
// }
|
|
344
|
-
|
|
345
|
-
// Copy a rectangle from a framebuffer attachment into a texture (at an offset)
|
|
346
|
-
// NOTE: assumes texture has enough storage allocated
|
|
347
|
-
// eslint-disable-next-line complexity
|
|
348
|
-
copyToTexture(opts = {}) {
|
|
349
|
-
log.error(
|
|
350
|
-
'Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})'
|
|
351
|
-
)();
|
|
352
|
-
return null;
|
|
353
|
-
}
|
|
354
|
-
|
|
355
514
|
// WEBGL2 INTERFACE
|
|
356
515
|
|
|
357
516
|
// Copies a rectangle of pixels between framebuffers
|
|
@@ -362,7 +521,8 @@ export default class Framebuffer extends Resource {
|
|
|
362
521
|
}
|
|
363
522
|
|
|
364
523
|
// signals to the GL that it need not preserve all pixels of a specified region of the framebuffer
|
|
365
|
-
invalidate({attachments
|
|
524
|
+
invalidate(options: {attachments: []; x?: number; y?: number; width: number; height: number}) {
|
|
525
|
+
const {attachments = [], x = 0, y = 0, width, height} = options;
|
|
366
526
|
const gl2 = assertWebGL2Context(this.gl);
|
|
367
527
|
const prevHandle = gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, this.handle);
|
|
368
528
|
const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;
|
|
@@ -370,10 +530,10 @@ export default class Framebuffer extends Resource {
|
|
|
370
530
|
gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);
|
|
371
531
|
} else {
|
|
372
532
|
// TODO - why does type checking fail on this line
|
|
373
|
-
// @ts-
|
|
533
|
+
// @ts-expect-error
|
|
374
534
|
gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);
|
|
375
535
|
}
|
|
376
|
-
// @ts-
|
|
536
|
+
// @ts-expect-error
|
|
377
537
|
gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);
|
|
378
538
|
return this;
|
|
379
539
|
}
|
|
@@ -388,7 +548,7 @@ export default class Framebuffer extends Resource {
|
|
|
388
548
|
this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);
|
|
389
549
|
}
|
|
390
550
|
if (keys && value > 1000) {
|
|
391
|
-
// @ts-
|
|
551
|
+
// @ts-expect-error
|
|
392
552
|
value = getKey(this.gl, value);
|
|
393
553
|
}
|
|
394
554
|
return value;
|
|
@@ -397,7 +557,7 @@ export default class Framebuffer extends Resource {
|
|
|
397
557
|
getAttachmentParameters(
|
|
398
558
|
attachment = GL.COLOR_ATTACHMENT0,
|
|
399
559
|
keys,
|
|
400
|
-
// @ts-
|
|
560
|
+
// @ts-expect-error
|
|
401
561
|
parameters = this.constructor.ATTACHMENT_PARAMETERS || []
|
|
402
562
|
) {
|
|
403
563
|
const values = {};
|
|
@@ -408,6 +568,7 @@ export default class Framebuffer extends Resource {
|
|
|
408
568
|
return values;
|
|
409
569
|
}
|
|
410
570
|
|
|
571
|
+
// @ts-expect-error
|
|
411
572
|
getParameters(keys = true) {
|
|
412
573
|
const attachments = Object.keys(this.attachments);
|
|
413
574
|
// if (this === this.gl.luma.defaultFramebuffer) {
|
|
@@ -422,37 +583,6 @@ export default class Framebuffer extends Resource {
|
|
|
422
583
|
return parameters;
|
|
423
584
|
}
|
|
424
585
|
|
|
425
|
-
// DEBUG
|
|
426
|
-
|
|
427
|
-
// Note: Will only work when called in an event handler
|
|
428
|
-
show() {
|
|
429
|
-
if (typeof window !== 'undefined') {
|
|
430
|
-
window.open(copyToDataUrl(this), 'luma-debug-texture');
|
|
431
|
-
}
|
|
432
|
-
return this;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
log(logLevel = 0, message = '') {
|
|
436
|
-
if (logLevel > log.level || typeof window === 'undefined') {
|
|
437
|
-
return this;
|
|
438
|
-
}
|
|
439
|
-
message = message || `Framebuffer ${this.id}`;
|
|
440
|
-
const image = copyToDataUrl(this, {targetMaxHeight: 100});
|
|
441
|
-
log.image({logLevel, message, image}, message)();
|
|
442
|
-
return this;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
// WEBGL INTERFACE
|
|
446
|
-
bind({target = GL.FRAMEBUFFER} = {}) {
|
|
447
|
-
this.gl.bindFramebuffer(target, this.handle);
|
|
448
|
-
return this;
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
unbind({target = GL.FRAMEBUFFER} = {}) {
|
|
452
|
-
this.gl.bindFramebuffer(target, null);
|
|
453
|
-
return this;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
586
|
// PRIVATE METHODS
|
|
457
587
|
|
|
458
588
|
_createDefaultAttachments(color, depth, stencil, width, height) {
|
|
@@ -541,126 +671,36 @@ export default class Framebuffer extends Resource {
|
|
|
541
671
|
delete this.attachments[attachment];
|
|
542
672
|
}
|
|
543
673
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
this.attachments[attachment] = renderbuffer;
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
// layer = 0 - index into Texture2DArray and Texture3D or face for `TextureCubeMap`
|
|
556
|
-
// level = 0 - mipmapLevel (must be 0 in WebGL1)
|
|
557
|
-
_attachTexture({attachment = GL.COLOR_ATTACHMENT0, texture, layer, level}) {
|
|
558
|
-
const {gl} = this;
|
|
559
|
-
gl.bindTexture(texture.target, texture.handle);
|
|
560
|
-
|
|
561
|
-
switch (texture.target) {
|
|
562
|
-
case GL.TEXTURE_2D_ARRAY:
|
|
563
|
-
case GL.TEXTURE_3D:
|
|
564
|
-
const gl2 = assertWebGL2Context(gl);
|
|
565
|
-
gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
|
|
566
|
-
break;
|
|
567
|
-
|
|
568
|
-
case GL.TEXTURE_CUBE_MAP:
|
|
569
|
-
// layer must be a cubemap face (or if index, converted to cube map face)
|
|
570
|
-
const face = mapIndexToCubeMapFace(layer);
|
|
571
|
-
gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);
|
|
572
|
-
break;
|
|
573
|
-
|
|
574
|
-
case GL.TEXTURE_2D:
|
|
575
|
-
gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);
|
|
576
|
-
break;
|
|
577
|
-
|
|
578
|
-
default:
|
|
579
|
-
assert(false, 'Illegal texture type');
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
gl.bindTexture(texture.target, null);
|
|
583
|
-
this.attachments[attachment] = texture;
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
// Expects framebuffer to be bound
|
|
587
|
-
_setReadBuffer(readBuffer) {
|
|
588
|
-
const gl2 = getWebGL2Context(this.gl);
|
|
589
|
-
if (gl2) {
|
|
590
|
-
gl2.readBuffer(readBuffer);
|
|
591
|
-
} else {
|
|
592
|
-
// Setting to color attachment 0 is a noop, so allow it in WebGL1
|
|
593
|
-
assert(
|
|
594
|
-
readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK,
|
|
595
|
-
ERR_MULTIPLE_RENDERTARGETS
|
|
596
|
-
);
|
|
597
|
-
}
|
|
598
|
-
this.readBuffer = readBuffer;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
// Expects framebuffer to be bound
|
|
602
|
-
_setDrawBuffers(drawBuffers) {
|
|
603
|
-
const {gl} = this;
|
|
604
|
-
const gl2 = assertWebGL2Context(gl);
|
|
605
|
-
if (gl2) {
|
|
606
|
-
gl2.drawBuffers(drawBuffers);
|
|
607
|
-
} else {
|
|
608
|
-
// TODO - is this not handled by polyfills?
|
|
609
|
-
const ext = gl.getExtension('WEBGL_draw_buffers');
|
|
610
|
-
if (ext) {
|
|
611
|
-
ext.drawBuffersWEBGL(drawBuffers);
|
|
612
|
-
} else {
|
|
613
|
-
// Setting a single draw buffer to color attachment 0 is a noop, allow in WebGL1
|
|
614
|
-
assert(
|
|
615
|
-
drawBuffers.length === 1 &&
|
|
616
|
-
(drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK),
|
|
617
|
-
ERR_MULTIPLE_RENDERTARGETS
|
|
618
|
-
);
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
this.drawBuffers = drawBuffers;
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
// Attempt to provide workable defaults for WebGL2 symbols under WebGL1
|
|
625
|
-
// null means OK to query
|
|
626
|
-
// TODO - move to webgl1 polyfills
|
|
627
|
-
/* eslint-disable complexity */
|
|
674
|
+
/**
|
|
675
|
+
* Attempt to provide workable defaults for WebGL2 symbols under WebGL1
|
|
676
|
+
* null means OK to query
|
|
677
|
+
* TODO - move to webgl1 polyfills
|
|
678
|
+
* @param pname
|
|
679
|
+
* @returns
|
|
680
|
+
*/
|
|
681
|
+
// eslint-disable-next-line complexity
|
|
628
682
|
_getAttachmentParameterFallback(pname) {
|
|
629
|
-
const
|
|
683
|
+
const webglDevice = WebGLDevice.fromContext(this.gl);
|
|
684
|
+
const features = webglDevice.features;
|
|
630
685
|
|
|
631
686
|
switch (pname) {
|
|
632
687
|
case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: // GLint
|
|
633
|
-
return !
|
|
688
|
+
return !features.has('webgl2') ? 0 : null;
|
|
634
689
|
case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE: // GLint
|
|
635
690
|
case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: // GLint
|
|
636
691
|
case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: // GLint
|
|
637
692
|
case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: // GLint
|
|
638
693
|
case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: // GLint
|
|
639
694
|
case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: // GLint
|
|
640
|
-
return !
|
|
695
|
+
return !features.has('webgl2') ? 8 : null;
|
|
641
696
|
case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: // GLenum
|
|
642
|
-
return !
|
|
697
|
+
return !features.has('webgl2') ? GL.UNSIGNED_INT : null;
|
|
643
698
|
case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
|
|
644
|
-
return !
|
|
699
|
+
return !features.has('webgl2') && !features.has('webgl-color-encoding-srgb') ? GL.LINEAR : null;
|
|
645
700
|
default:
|
|
646
701
|
return null;
|
|
647
702
|
}
|
|
648
703
|
}
|
|
649
|
-
/* eslint-enable complexity */
|
|
650
|
-
|
|
651
|
-
// RESOURCE METHODS
|
|
652
|
-
|
|
653
|
-
_createHandle() {
|
|
654
|
-
return this.gl.createFramebuffer();
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
_deleteHandle() {
|
|
658
|
-
this.gl.deleteFramebuffer(this.handle);
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
_bindHandle(handle) {
|
|
662
|
-
return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
|
|
663
|
-
}
|
|
664
704
|
}
|
|
665
705
|
|
|
666
706
|
// PUBLIC METHODS
|
|
@@ -676,28 +716,48 @@ function mapIndexToCubeMapFace(layer) {
|
|
|
676
716
|
// Get a string describing the framebuffer error if installed
|
|
677
717
|
function _getFrameBufferStatus(status) {
|
|
678
718
|
// Use error mapping if installed
|
|
679
|
-
// @ts-
|
|
719
|
+
// @ts-expect-error
|
|
680
720
|
const STATUS = Framebuffer.STATUS || {};
|
|
681
721
|
return STATUS[status] || `Framebuffer error ${status}`;
|
|
682
722
|
}
|
|
683
723
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
724
|
+
/**
|
|
725
|
+
* Support
|
|
726
|
+
* @param gl
|
|
727
|
+
* @param options.colorBufferFloat Whether floating point textures can be rendered and read
|
|
728
|
+
* @param options.colorBufferHalfFloat Whether half float textures can be rendered and read
|
|
729
|
+
*/
|
|
730
|
+
function isFloatColorBufferSupported(
|
|
731
|
+
gl: WebGLRenderingContext,
|
|
732
|
+
options: {colorBufferFloat?: boolean; colorBufferHalfFloat?: boolean}
|
|
733
|
+
): boolean {
|
|
734
|
+
const {
|
|
735
|
+
colorBufferFloat, // Whether floating point textures can be rendered and read
|
|
736
|
+
colorBufferHalfFloat // Whether half float textures can be rendered and read
|
|
737
|
+
} = options;
|
|
738
|
+
let supported = true;
|
|
739
|
+
|
|
740
|
+
if (colorBufferFloat) {
|
|
741
|
+
supported = Boolean(
|
|
742
|
+
// WebGL 2
|
|
743
|
+
gl.getExtension('EXT_color_buffer_float') ||
|
|
744
|
+
// WebGL 1, not exposed on all platforms
|
|
745
|
+
gl.getExtension('WEBGL_color_buffer_float') ||
|
|
746
|
+
// WebGL 1, implicitly enables float render targets https://www.khronos.org/registry/webgl/extensions/OES_texture_float/
|
|
747
|
+
gl.getExtension('OES_texture_float')
|
|
748
|
+
);
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
if (colorBufferHalfFloat) {
|
|
752
|
+
supported =
|
|
753
|
+
supported &&
|
|
754
|
+
Boolean(
|
|
755
|
+
// WebGL 2
|
|
756
|
+
gl.getExtension('EXT_color_buffer_float') ||
|
|
757
|
+
// WebGL 1
|
|
758
|
+
gl.getExtension('EXT_color_buffer_half_float')
|
|
759
|
+
);
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
return supported;
|
|
763
|
+
}
|