@luma.gl/webgl 8.6.0-alpha.1 → 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/classes/accessor.js +2 -2
- package/dist/classes/accessor.js.map +1 -1
- package/dist/classes/accessor.ts.disabled +1 -1
- package/dist/classes/clear.d.ts +3 -2
- package/dist/classes/clear.d.ts.map +1 -1
- package/dist/classes/clear.js +7 -4
- package/dist/classes/clear.js.map +1 -1
- package/dist/classes/copy-and-blit.d.ts +18 -1
- package/dist/classes/copy-and-blit.d.ts.map +1 -1
- package/dist/classes/copy-and-blit.js +30 -25
- package/dist/classes/copy-and-blit.js.map +1 -1
- package/dist/classes/framebuffer.d.ts +10 -1
- package/dist/classes/framebuffer.d.ts.map +1 -1
- package/dist/classes/framebuffer.js +15 -15
- package/dist/classes/framebuffer.js.map +1 -1
- package/dist/classes/program-configuration.d.ts +2 -2
- package/dist/classes/program-configuration.d.ts.map +1 -1
- package/dist/classes/program-configuration.js +1 -1
- package/dist/classes/program-configuration.js.map +1 -1
- package/dist/classes/program.d.ts +6 -6
- package/dist/classes/program.d.ts.map +1 -1
- package/dist/classes/program.js +11 -9
- package/dist/classes/program.js.map +1 -1
- package/dist/classes/query.d.ts.map +1 -1
- package/dist/classes/query.js +6 -5
- package/dist/classes/query.js.map +1 -1
- package/dist/classes/renderbuffer-formats.js +1 -1
- package/dist/classes/renderbuffer-formats.js.map +1 -1
- package/dist/classes/renderbuffer.d.ts.map +1 -1
- package/dist/classes/renderbuffer.js +4 -3
- package/dist/classes/renderbuffer.js.map +1 -1
- package/dist/classes/texture-2d.d.ts +4 -3
- package/dist/classes/texture-2d.d.ts.map +1 -1
- package/dist/classes/texture-2d.js +5 -8
- package/dist/classes/texture-2d.js.map +1 -1
- package/dist/classes/texture-3d.d.ts +3 -2
- package/dist/classes/texture-3d.d.ts.map +1 -1
- package/dist/classes/texture-3d.js +15 -6
- package/dist/classes/texture-3d.js.map +1 -1
- package/dist/classes/texture-cube.d.ts +2 -1
- package/dist/classes/texture-cube.d.ts.map +1 -1
- package/dist/classes/texture-cube.js +3 -4
- package/dist/classes/texture-cube.js.map +1 -1
- package/dist/classes/texture-formats.js +1 -1
- package/dist/classes/texture-formats.js.map +1 -1
- package/dist/classes/texture.d.ts +14 -9
- package/dist/classes/texture.d.ts.map +1 -1
- package/dist/classes/texture.js +19 -18
- package/dist/classes/texture.js.map +1 -1
- package/dist/classes/transform-feedback.d.ts.map +1 -1
- package/dist/classes/transform-feedback.js +5 -4
- package/dist/classes/transform-feedback.js.map +1 -1
- package/dist/classes/uniform-buffer-layout.js +1 -1
- package/dist/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/classes/uniforms.d.ts +0 -1
- package/dist/classes/uniforms.d.ts.map +1 -1
- package/dist/classes/uniforms.js +1 -2
- package/dist/classes/uniforms.js.map +1 -1
- package/dist/classes/vertex-array-object.d.ts +1 -1
- package/dist/classes/vertex-array-object.d.ts.map +1 -1
- package/dist/classes/vertex-array-object.js +8 -9
- package/dist/classes/vertex-array-object.js.map +1 -1
- package/dist/classes/vertex-array.d.ts +1 -1
- package/dist/classes/vertex-array.d.ts.map +1 -1
- package/dist/classes/vertex-array.js +1 -2
- package/dist/classes/vertex-array.js.map +1 -1
- package/dist/classes/webgl-buffer.d.ts +2 -0
- package/dist/classes/webgl-buffer.d.ts.map +1 -1
- package/dist/classes/webgl-buffer.js +8 -5
- package/dist/classes/webgl-buffer.js.map +1 -1
- package/dist/classes/webgl-resource.d.ts +6 -4
- package/dist/classes/webgl-resource.d.ts.map +1 -1
- package/dist/classes/webgl-resource.js +12 -8
- package/dist/classes/webgl-resource.js.map +1 -1
- package/dist/classes/webgl-shader.d.ts +3 -1
- package/dist/classes/webgl-shader.d.ts.map +1 -1
- package/dist/classes/webgl-shader.js +7 -4
- package/dist/classes/webgl-shader.js.map +1 -1
- 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-uniforms.js +1 -1
- package/dist/debug/debug-uniforms.js.map +1 -1
- package/dist/debug/debug-vertex-array.js +2 -2
- package/dist/debug/debug-vertex-array.js.map +1 -1
- 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 +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/classes/accessor.js +104 -74
- package/dist/es5/classes/accessor.js.map +1 -1
- package/dist/es5/classes/accessor.ts.disabled +1 -1
- package/dist/es5/classes/clear.js +55 -34
- package/dist/es5/classes/clear.js.map +1 -1
- package/dist/es5/classes/copy-and-blit.js +175 -156
- package/dist/es5/classes/copy-and-blit.js.map +1 -1
- package/dist/es5/classes/framebuffer.js +647 -518
- package/dist/es5/classes/framebuffer.js.map +1 -1
- package/dist/es5/classes/program-configuration.js +138 -121
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +368 -292
- package/dist/es5/classes/program.js.map +1 -1
- package/dist/es5/classes/query.js +172 -107
- package/dist/es5/classes/query.js.map +1 -1
- package/dist/es5/classes/renderbuffer-formats.js +126 -164
- package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
- package/dist/es5/classes/renderbuffer.js +151 -98
- package/dist/es5/classes/renderbuffer.js.map +1 -1
- package/dist/es5/classes/texture-2d.js +44 -17
- package/dist/es5/classes/texture-2d.js.map +1 -1
- package/dist/es5/classes/texture-3d.js +107 -48
- package/dist/es5/classes/texture-3d.js.map +1 -1
- package/dist/es5/classes/texture-cube.js +169 -110
- package/dist/es5/classes/texture-cube.js.map +1 -1
- package/dist/es5/classes/texture-formats.js +42 -71
- package/dist/es5/classes/texture-formats.js.map +1 -1
- package/dist/es5/classes/texture.js +780 -665
- package/dist/es5/classes/texture.js.map +1 -1
- package/dist/es5/classes/transform-feedback.js +206 -150
- package/dist/es5/classes/transform-feedback.js.map +1 -1
- package/dist/es5/classes/uniform-buffer-layout.js +103 -89
- package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/es5/classes/uniforms.js +39 -80
- package/dist/es5/classes/uniforms.js.map +1 -1
- package/dist/es5/classes/vertex-array-object.js +268 -209
- package/dist/es5/classes/vertex-array-object.js.map +1 -1
- package/dist/es5/classes/vertex-array.js +348 -303
- package/dist/es5/classes/vertex-array.js.map +1 -1
- package/dist/es5/classes/webgl-buffer.js +374 -303
- package/dist/es5/classes/webgl-buffer.js.map +1 -1
- package/dist/es5/classes/webgl-resource.js +231 -161
- package/dist/es5/classes/webgl-resource.js.map +1 -1
- package/dist/es5/classes/webgl-shader.js +230 -134
- package/dist/es5/classes/webgl-shader.js.map +1 -1
- 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 +48 -20
- package/dist/es5/debug/debug-program-configuration.js.map +1 -1
- package/dist/es5/debug/debug-uniforms.js +110 -70
- package/dist/es5/debug/debug-uniforms.js.map +1 -1
- package/dist/es5/debug/debug-vertex-array.js +49 -54
- 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 +179 -189
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +18 -14
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/webgl-utils/attribute-utils.js +74 -87
- package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
- package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/es5/webgl-utils/format-utils.js +4 -4
- package/dist/es5/webgl-utils/format-utils.js.map +1 -1
- package/dist/es5/webgl-utils/get-error.js +18 -18
- package/dist/es5/webgl-utils/get-error.js.map +1 -1
- package/dist/es5/webgl-utils/index.js +10 -10
- package/dist/es5/webgl-utils/is-old-ie.js +16 -0
- package/dist/es5/webgl-utils/is-old-ie.js.map +1 -0
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
- package/dist/es5/webgl-utils/texture-utils.js +32 -36
- package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
- package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
- 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/classes/accessor.js +2 -2
- package/dist/esm/classes/accessor.js.map +1 -1
- package/dist/esm/classes/accessor.ts.disabled +1 -1
- package/dist/esm/classes/clear.js +7 -4
- package/dist/esm/classes/clear.js.map +1 -1
- package/dist/esm/classes/copy-and-blit.js +30 -25
- package/dist/esm/classes/copy-and-blit.js.map +1 -1
- package/dist/esm/classes/framebuffer.js +15 -15
- package/dist/esm/classes/framebuffer.js.map +1 -1
- package/dist/esm/classes/program-configuration.js +1 -1
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +11 -9
- package/dist/esm/classes/program.js.map +1 -1
- package/dist/esm/classes/query.js +6 -5
- package/dist/esm/classes/query.js.map +1 -1
- package/dist/esm/classes/renderbuffer-formats.js +1 -1
- package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
- package/dist/esm/classes/renderbuffer.js +4 -3
- package/dist/esm/classes/renderbuffer.js.map +1 -1
- package/dist/esm/classes/texture-2d.js +5 -8
- package/dist/esm/classes/texture-2d.js.map +1 -1
- package/dist/esm/classes/texture-3d.js +15 -6
- package/dist/esm/classes/texture-3d.js.map +1 -1
- package/dist/esm/classes/texture-cube.js +3 -4
- package/dist/esm/classes/texture-cube.js.map +1 -1
- package/dist/esm/classes/texture-formats.js +1 -1
- package/dist/esm/classes/texture-formats.js.map +1 -1
- package/dist/esm/classes/texture.js +19 -18
- package/dist/esm/classes/texture.js.map +1 -1
- package/dist/esm/classes/transform-feedback.js +5 -4
- 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 +1 -2
- package/dist/esm/classes/uniforms.js.map +1 -1
- package/dist/esm/classes/vertex-array-object.js +8 -9
- package/dist/esm/classes/vertex-array-object.js.map +1 -1
- package/dist/esm/classes/vertex-array.js +1 -2
- package/dist/esm/classes/vertex-array.js.map +1 -1
- package/dist/esm/classes/webgl-buffer.js +8 -5
- package/dist/esm/classes/webgl-buffer.js.map +1 -1
- package/dist/esm/classes/webgl-resource.js +12 -8
- package/dist/esm/classes/webgl-resource.js.map +1 -1
- package/dist/esm/classes/webgl-shader.js +7 -4
- package/dist/esm/classes/webgl-shader.js.map +1 -1
- 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-uniforms.js +1 -1
- package/dist/esm/debug/debug-uniforms.js.map +1 -1
- package/dist/esm/debug/debug-vertex-array.js +2 -2
- 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 +22 -20
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +11 -8
- package/dist/esm/init.js.map +1 -1
- 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 +1 -1
- package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/esm/webgl-utils/format-utils.js +1 -1
- package/dist/esm/webgl-utils/format-utils.js.map +1 -1
- 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/texture-utils.js +2 -2
- package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
- package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
- 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 +36 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -20
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +11 -8
- package/dist/init.js.map +1 -1
- package/dist/webgl-utils/attribute-utils.d.ts +1 -1
- package/dist/webgl-utils/attribute-utils.js +1 -1
- package/dist/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/webgl-utils/constants-to-keys.js +1 -1
- package/dist/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/webgl-utils/format-utils.d.ts +2 -2
- package/dist/webgl-utils/format-utils.js +1 -1
- package/dist/webgl-utils/format-utils.js.map +1 -1
- 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/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
- package/dist/webgl-utils/is-old-ie.js.map +1 -0
- package/dist/webgl-utils/texture-utils.d.ts +12 -8
- package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
- package/dist/webgl-utils/texture-utils.js +2 -2
- package/dist/webgl-utils/texture-utils.js.map +1 -1
- package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
- package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
- package/dist/webgl-utils/typed-array-utils.js +22 -18
- package/dist/webgl-utils/typed-array-utils.js.map +1 -1
- package/dist/webgl-utils/webgl-info.ts.disabled +135 -0
- package/package.json +5 -6
- package/src/.DS_Store +0 -0
- package/src/api/device2.ts +71 -0
- package/src/classes/accessor.js +2 -2
- package/src/classes/accessor.ts.disabled +1 -1
- package/src/classes/clear.ts +9 -4
- package/src/classes/copy-and-blit.ts +49 -52
- package/src/classes/framebuffer.ts +38 -35
- package/src/classes/program-configuration.ts +6 -6
- package/src/classes/program.ts +21 -15
- package/src/classes/query.ts +6 -6
- package/src/classes/renderbuffer-formats.ts +1 -1
- package/src/classes/renderbuffer.ts +5 -4
- package/src/classes/texture-2d.ts +6 -11
- package/src/classes/texture-3d.ts +16 -11
- package/src/classes/texture-cube.ts +7 -7
- package/src/classes/texture-formats.ts +1 -1
- package/src/classes/texture.ts +39 -40
- package/src/classes/transform-feedback.ts +14 -13
- package/src/classes/uniform-buffer-layout.ts +1 -1
- package/src/classes/uniforms.ts +4 -10
- package/src/classes/vertex-array-object.ts +10 -14
- package/src/classes/vertex-array.ts +2 -3
- package/src/classes/webgl-buffer.ts +7 -5
- package/src/classes/webgl-resource.ts +20 -18
- package/src/classes/webgl-shader.ts +6 -4
- 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-uniforms.ts +1 -1
- package/src/debug/debug-vertex-array.ts +2 -4
- 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 +76 -22
- package/src/init.ts +12 -9
- package/src/types.ts +1 -1
- package/src/webgl-utils/attribute-utils.ts +1 -1
- package/src/webgl-utils/constants-to-keys.ts +1 -1
- package/src/webgl-utils/format-utils.ts +1 -1
- package/src/{features/check-old-ie.ts → webgl-utils/is-old-ie.ts} +3 -3
- package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
- package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
- package/src/webgl-utils/webgl-info.ts.disabled +135 -0
- package/dist/context/gl-context.d.ts +0 -15
- package/dist/context/gl-context.d.ts.map +0 -1
- package/dist/context/gl-context.js +0 -32
- package/dist/context/gl-context.js.map +0 -1
- package/dist/context/luma-context-data.d.ts +0 -31
- package/dist/context/luma-context-data.d.ts.map +0 -1
- package/dist/context/luma-context-data.js +0 -5
- package/dist/context/luma-context-data.js.map +0 -1
- package/dist/es5/context/gl-context.js +0 -46
- package/dist/es5/context/gl-context.js.map +0 -1
- package/dist/es5/context/luma-context-data.js +0 -12
- package/dist/es5/context/luma-context-data.js.map +0 -1
- package/dist/es5/features/check-glsl-extension.js +0 -40
- package/dist/es5/features/check-glsl-extension.js.map +0 -1
- package/dist/es5/features/check-old-ie.js +0 -15
- package/dist/es5/features/check-old-ie.js.map +0 -1
- package/dist/es5/features/features.js +0 -85
- 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 -72
- package/dist/es5/features/limits.js.map +0 -1
- package/dist/es5/features/webgl-features-table.js +0 -84
- package/dist/es5/features/webgl-features-table.js.map +0 -1
- package/dist/es5/features/webgl-limits-table.js +0 -172
- package/dist/es5/features/webgl-limits-table.js.map +0 -1
- package/dist/es5/utils/array-utils-flat.js +0 -50
- package/dist/es5/utils/array-utils-flat.js.map +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 -50
- 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/index.js +0 -68
- package/dist/es5/utils/index.js.map +0 -1
- package/dist/es5/utils/is-old-ie.js +0 -13
- package/dist/es5/utils/is-old-ie.js.map +0 -1
- package/dist/es5/utils/load-file.js +0 -43
- 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.js +0 -31
- package/dist/es5/utils/utils.js.map +0 -1
- 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/context/gl-context.js +0 -32
- package/dist/esm/context/gl-context.js.map +0 -1
- package/dist/esm/context/luma-context-data.js +0 -5
- package/dist/esm/context/luma-context-data.js.map +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 -67
- 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 -55
- 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 -161
- package/dist/esm/features/webgl-limits-table.js.map +0 -1
- 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.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/index.js +0 -7
- package/dist/esm/utils/index.js.map +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 -16
- package/dist/esm/utils/stub-methods.js.map +0 -1
- package/dist/esm/utils/utils.js +0 -20
- package/dist/esm/utils/utils.js.map +0 -1
- package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
- package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
- package/dist/features/check-glsl-extension.d.ts +0 -2
- package/dist/features/check-glsl-extension.d.ts.map +0 -1
- package/dist/features/check-glsl-extension.js +0 -27
- package/dist/features/check-glsl-extension.js.map +0 -1
- package/dist/features/check-old-ie.d.ts +0 -2
- package/dist/features/check-old-ie.d.ts.map +0 -1
- package/dist/features/check-old-ie.js.map +0 -1
- package/dist/features/features.d.ts +0 -6
- package/dist/features/features.d.ts.map +0 -1
- package/dist/features/features.js +0 -67
- package/dist/features/features.js.map +0 -1
- package/dist/features/index.d.ts +0 -5
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/index.js +0 -5
- package/dist/features/index.js.map +0 -1
- package/dist/features/limits.d.ts +0 -28
- package/dist/features/limits.d.ts.map +0 -1
- package/dist/features/limits.js +0 -55
- package/dist/features/limits.js.map +0 -1
- package/dist/features/webgl-features-table.d.ts +0 -30
- package/dist/features/webgl-features-table.d.ts.map +0 -1
- package/dist/features/webgl-features-table.js +0 -71
- package/dist/features/webgl-features-table.js.map +0 -1
- package/dist/features/webgl-limits-table.d.ts +0 -161
- package/dist/features/webgl-limits-table.d.ts.map +0 -1
- package/dist/features/webgl-limits-table.js +0 -161
- package/dist/features/webgl-limits-table.js.map +0 -1
- package/dist/utils/array-utils-flat.d.ts +0 -9
- package/dist/utils/array-utils-flat.d.ts.map +0 -1
- package/dist/utils/array-utils-flat.js +0 -39
- package/dist/utils/array-utils-flat.js.map +0 -1
- package/dist/utils/assert.d.ts +0 -2
- package/dist/utils/assert.d.ts.map +0 -1
- package/dist/utils/assert.js +0 -6
- package/dist/utils/assert.js.map +0 -1
- package/dist/utils/check-props.d.ts +0 -2
- package/dist/utils/check-props.d.ts.map +0 -1
- package/dist/utils/check-props.js +0 -38
- package/dist/utils/check-props.js.map +0 -1
- package/dist/utils/format-value.d.ts +0 -5
- package/dist/utils/format-value.d.ts.map +0 -1
- package/dist/utils/format-value.js +0 -50
- package/dist/utils/format-value.js.map +0 -1
- package/dist/utils/index.d.ts +0 -7
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -7
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/is-old-ie.d.ts +0 -4
- package/dist/utils/is-old-ie.d.ts.map +0 -1
- package/dist/utils/is-old-ie.js +0 -5
- package/dist/utils/is-old-ie.js.map +0 -1
- package/dist/utils/load-file.d.ts +0 -4
- package/dist/utils/load-file.d.ts.map +0 -1
- package/dist/utils/load-file.js +0 -30
- package/dist/utils/load-file.js.map +0 -1
- package/dist/utils/stub-methods.d.ts +0 -2
- package/dist/utils/stub-methods.d.ts.map +0 -1
- package/dist/utils/stub-methods.js +0 -16
- package/dist/utils/stub-methods.js.map +0 -1
- package/dist/utils/utils.d.ts +0 -15
- package/dist/utils/utils.d.ts.map +0 -1
- package/dist/utils/utils.js +0 -20
- package/dist/utils/utils.js.map +0 -1
- package/src/context/gl-context.ts +0 -31
- package/src/context/luma-context-data.ts +0 -27
- package/src/features/check-glsl-extension.ts +0 -34
- package/src/features/features.ts +0 -80
- package/src/features/index.ts +0 -5
- package/src/features/limits.ts +0 -66
- package/src/features/webgl-features-table.ts +0 -104
- package/src/features/webgl-limits-table.ts +0 -51
- package/src/utils/array-utils-flat.ts +0 -56
- package/src/utils/assert.ts +0 -7
- package/src/utils/check-props.ts +0 -68
- package/src/utils/format-value.ts +0 -37
- package/src/utils/index.ts +0 -6
- package/src/utils/is-old-ie.ts +0 -6
- package/src/utils/load-file.ts +0 -40
- package/src/utils/stub-methods.ts +0 -20
- package/src/utils/utils.ts +0 -35
- package/src/webgl-utils/texture-utils.d.ts +0 -11
- package/src/webgl-utils/typed-array-utils.d.ts +0 -36
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
// WebGL parameter types
|
|
2
|
+
import GL from '@luma.gl/constants';
|
|
3
|
+
|
|
4
|
+
export type TypedArray =
|
|
5
|
+
| Int8Array
|
|
6
|
+
| Uint8Array
|
|
7
|
+
| Int16Array
|
|
8
|
+
| Uint16Array
|
|
9
|
+
| Int32Array
|
|
10
|
+
| Uint32Array
|
|
11
|
+
| Uint8ClampedArray
|
|
12
|
+
| Float32Array
|
|
13
|
+
| Float64Array;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* TypeScript type covering all typed arrays and classic arrays consisting of numbers
|
|
17
|
+
*/
|
|
18
|
+
export type NumberArray = number[] | TypedArray;
|
|
19
|
+
|
|
20
|
+
type Framebuffer = any;
|
|
21
|
+
|
|
22
|
+
type GL_FUNCTION =
|
|
23
|
+
GL.NEVER |
|
|
24
|
+
GL.LESS |
|
|
25
|
+
GL.EQUAL |
|
|
26
|
+
GL.LEQUAL |
|
|
27
|
+
GL.GREATER |
|
|
28
|
+
GL.NOTEQUAL |
|
|
29
|
+
GL.GEQUAL |
|
|
30
|
+
GL.ALWAYS;
|
|
31
|
+
|
|
32
|
+
type GL_BLEND_EQUATION = GL.FUNC_ADD | GL.FUNC_SUBTRACT | GL.FUNC_REVERSE_SUBTRACT | GL.MIN_EXT | GL.MAX_EXT;
|
|
33
|
+
|
|
34
|
+
type GL_BLEND_FUNCTION =
|
|
35
|
+
GL.ZERO |
|
|
36
|
+
GL.ONE |
|
|
37
|
+
GL.SRC_COLOR |
|
|
38
|
+
GL.ONE_MINUS_SRC_COLOR |
|
|
39
|
+
GL.DST_COLOR |
|
|
40
|
+
GL.ONE_MINUS_DST_COLOR |
|
|
41
|
+
GL.SRC_ALPHA |
|
|
42
|
+
GL.ONE_MINUS_SRC_ALPHA |
|
|
43
|
+
GL.DST_ALPHA |
|
|
44
|
+
GL.ONE_MINUS_DST_ALPHA |
|
|
45
|
+
GL.CONSTANT_COLOR |
|
|
46
|
+
GL.ONE_MINUS_CONSTANT_COLOR |
|
|
47
|
+
GL.CONSTANT_ALPHA |
|
|
48
|
+
GL.ONE_MINUS_CONSTANT_ALPHA |
|
|
49
|
+
GL.SRC_ALPHA_SATURATE;
|
|
50
|
+
|
|
51
|
+
type GL_STENCIL_OP =
|
|
52
|
+
GL.KEEP |
|
|
53
|
+
GL.ZERO |
|
|
54
|
+
GL.REPLACE |
|
|
55
|
+
GL.INCR |
|
|
56
|
+
GL.INCR_WRAP |
|
|
57
|
+
GL.DECR |
|
|
58
|
+
GL.DECR_WRAP |
|
|
59
|
+
GL.INVERT;
|
|
60
|
+
|
|
61
|
+
export type GLValueParameters = {
|
|
62
|
+
[GL.BLEND]?: boolean;
|
|
63
|
+
[GL.BLEND_COLOR]?: [number, number, number, number] | NumberArray;
|
|
64
|
+
[GL.BLEND_EQUATION_RGB]?: GL_BLEND_EQUATION;
|
|
65
|
+
[GL.BLEND_EQUATION_ALPHA]?: GL_BLEND_EQUATION;
|
|
66
|
+
[GL.BLEND_SRC_RGB]?: GL_BLEND_FUNCTION;
|
|
67
|
+
[GL.BLEND_DST_RGB]?: GL_BLEND_FUNCTION;
|
|
68
|
+
[GL.BLEND_SRC_ALPHA]?: GL_BLEND_FUNCTION;
|
|
69
|
+
[GL.BLEND_DST_ALPHA]?: GL_BLEND_FUNCTION;
|
|
70
|
+
[GL.COLOR_CLEAR_VALUE]?: [number, number, number, number] | NumberArray;
|
|
71
|
+
[GL.COLOR_WRITEMASK]?: [boolean, boolean, boolean, boolean] | boolean[];
|
|
72
|
+
[GL.CULL_FACE]?: boolean;
|
|
73
|
+
[GL.CULL_FACE_MODE]?: GL.FRONT | GL.BACK | GL.FRONT_AND_BACK;
|
|
74
|
+
[GL.DEPTH_TEST]?: boolean;
|
|
75
|
+
[GL.DEPTH_CLEAR_VALUE]?: number;
|
|
76
|
+
[GL.DEPTH_FUNC]?: GL_FUNCTION;
|
|
77
|
+
[GL.DEPTH_RANGE]?: [number, number] | NumberArray;
|
|
78
|
+
[GL.DEPTH_WRITEMASK]?: boolean;
|
|
79
|
+
[GL.DITHER]?: boolean;
|
|
80
|
+
[GL.FRAGMENT_SHADER_DERIVATIVE_HINT]?: GL.FASTEST | GL.NICEST | GL.DONT_CARE;
|
|
81
|
+
[GL.CURRENT_PROGRAM]?: WebGLProgram | null,
|
|
82
|
+
[GL.FRAMEBUFFER_BINDING]?: WebGLFramebuffer | null;
|
|
83
|
+
[GL.RENDERBUFFER_BINDING]?: WebGLRenderbuffer | null,
|
|
84
|
+
[GL.TRANSFORM_FEEDBACK_BINDING]?: WebGLTransformFeedback | null,
|
|
85
|
+
[GL.VERTEX_ARRAY_BINDING]?: WebGLVertexArrayObject | null,
|
|
86
|
+
[GL.ARRAY_BUFFER_BINDING]?: WebGLBuffer | null,
|
|
87
|
+
[GL.COPY_READ_BUFFER_BINDING]?: WebGLBuffer | null,
|
|
88
|
+
[GL.COPY_WRITE_BUFFER_BINDING]?: WebGLBuffer | null,
|
|
89
|
+
[GL.PIXEL_PACK_BUFFER_BINDING]?: WebGLBuffer | null,
|
|
90
|
+
[GL.PIXEL_UNPACK_BUFFER_BINDING]?: WebGLBuffer | null,
|
|
91
|
+
[GL.TEXTURE_BINDING_2D]?: WebGLTexture | null,
|
|
92
|
+
[GL.TEXTURE_BINDING_2D_ARRAY]?: WebGLTexture | null,
|
|
93
|
+
[GL.TEXTURE_BINDING_3D]?: WebGLTexture | null,
|
|
94
|
+
[GL.TEXTURE_BINDING_CUBE_MAP]?: WebGLTexture | null,
|
|
95
|
+
[GL.FRONT_FACE]?: GL.CW | GL.CCW;
|
|
96
|
+
[GL.GENERATE_MIPMAP_HINT]?: GL.FASTEST | GL.NICEST | GL.DONT_CARE;
|
|
97
|
+
[GL.LINE_WIDTH]?: number;
|
|
98
|
+
[GL.POLYGON_OFFSET_FILL]?: boolean;
|
|
99
|
+
[GL.POLYGON_OFFSET_FACTOR]?: number;
|
|
100
|
+
[GL.POLYGON_OFFSET_UNITS]?: number;
|
|
101
|
+
[GL.SAMPLE_ALPHA_TO_COVERAGE]?: boolean,
|
|
102
|
+
[GL.SAMPLE_COVERAGE]?: boolean,
|
|
103
|
+
[GL.RASTERIZER_DISCARD]?: boolean;
|
|
104
|
+
[GL.SAMPLE_COVERAGE_VALUE]?: number;
|
|
105
|
+
[GL.SAMPLE_COVERAGE_INVERT]?: boolean;
|
|
106
|
+
[GL.SCISSOR_TEST]?: boolean;
|
|
107
|
+
[GL.SCISSOR_BOX]?: [number, number, number, number] | NumberArray;
|
|
108
|
+
[GL.STENCIL_TEST]?: boolean;
|
|
109
|
+
[GL.STENCIL_CLEAR_VALUE]?: number;
|
|
110
|
+
[GL.STENCIL_WRITEMASK]?: number;
|
|
111
|
+
[GL.STENCIL_BACK_WRITEMASK]?: number;
|
|
112
|
+
[GL.STENCIL_FUNC]?: GL_FUNCTION;
|
|
113
|
+
[GL.STENCIL_REF]?: GL_FUNCTION;
|
|
114
|
+
[GL.STENCIL_VALUE_MASK]?: GL_FUNCTION;
|
|
115
|
+
[GL.STENCIL_BACK_FUNC]?: GL_FUNCTION;
|
|
116
|
+
[GL.STENCIL_BACK_REF]?: GL_FUNCTION;
|
|
117
|
+
[GL.STENCIL_BACK_VALUE_MASK]?: GL_FUNCTION;
|
|
118
|
+
[GL.STENCIL_FAIL]?: GL_STENCIL_OP;
|
|
119
|
+
[GL.STENCIL_PASS_DEPTH_FAIL]?: GL_STENCIL_OP;
|
|
120
|
+
[GL.STENCIL_PASS_DEPTH_PASS]?: GL_STENCIL_OP;
|
|
121
|
+
[GL.STENCIL_BACK_FAIL]?: GL_STENCIL_OP;
|
|
122
|
+
[GL.STENCIL_BACK_PASS_DEPTH_FAIL]?: GL_STENCIL_OP;
|
|
123
|
+
[GL.STENCIL_BACK_PASS_DEPTH_PASS]?: GL_STENCIL_OP;
|
|
124
|
+
[GL.VIEWPORT]?: [number, number, number, number] | NumberArray;
|
|
125
|
+
|
|
126
|
+
// WEBGL1 PIXEL PACK/UNPACK MODES
|
|
127
|
+
[GL.PACK_ALIGNMENT]?: number;
|
|
128
|
+
[GL.UNPACK_ALIGNMENT]?: number;
|
|
129
|
+
[GL.UNPACK_FLIP_Y_WEBGL]?: boolean;
|
|
130
|
+
[GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]?: boolean;
|
|
131
|
+
[GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]?: GL.NONE | GL.BROWSER_DEFAULT_WEBGL;
|
|
132
|
+
|
|
133
|
+
// WEBGL2 PIXEL PACK/UNPACK MODES
|
|
134
|
+
// RASTERIZER_DISCARD ...
|
|
135
|
+
[GL.PACK_ROW_LENGTH]?: number;
|
|
136
|
+
[GL.PACK_SKIP_PIXELS]?: number;
|
|
137
|
+
[GL.PACK_SKIP_ROWS]?: number;
|
|
138
|
+
[GL.READ_FRAMEBUFFER_BINDING]?: Framebuffer | null;
|
|
139
|
+
[GL.UNPACK_ROW_LENGTH]?: number;
|
|
140
|
+
[GL.UNPACK_IMAGE_HEIGHT]?: number;
|
|
141
|
+
[GL.UNPACK_SKIP_PIXELS]?: number;
|
|
142
|
+
[GL.UNPACK_SKIP_ROWS]?: number;
|
|
143
|
+
[GL.UNPACK_SKIP_IMAGES]?: number;
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export type GLFunctionStyleParameters = {
|
|
147
|
+
// Function-style setters
|
|
148
|
+
framebuffer?: Framebuffer | null;
|
|
149
|
+
blend?: boolean;
|
|
150
|
+
blendColor?: [number, number, number, number] | NumberArray;
|
|
151
|
+
blendEquation?: GL_BLEND_EQUATION | [GL_BLEND_EQUATION, GL_BLEND_EQUATION];
|
|
152
|
+
blendFunc?:
|
|
153
|
+
[GL_BLEND_FUNCTION, GL_BLEND_FUNCTION] |
|
|
154
|
+
[GL_BLEND_FUNCTION, GL_BLEND_FUNCTION, GL_BLEND_FUNCTION, GL_BLEND_FUNCTION];
|
|
155
|
+
|
|
156
|
+
clearColor?: [number, number, number, number] | NumberArray;
|
|
157
|
+
clearDepth?: number;
|
|
158
|
+
clearStencil?: number;
|
|
159
|
+
|
|
160
|
+
colorMask?: [boolean, boolean, boolean, boolean];
|
|
161
|
+
|
|
162
|
+
cull?: boolean;
|
|
163
|
+
cullFace?: GL.FRONT | GL.BACK | GL.FRONT_AND_BACK;
|
|
164
|
+
|
|
165
|
+
depthTest?: boolean;
|
|
166
|
+
depthFunc?: GL_FUNCTION;
|
|
167
|
+
depthMask?: boolean;
|
|
168
|
+
depthRange?: [number, number] | NumberArray;
|
|
169
|
+
|
|
170
|
+
dither?: boolean;
|
|
171
|
+
|
|
172
|
+
derivativeHint?: GL.FASTEST | GL.NICEST | GL.DONT_CARE;
|
|
173
|
+
|
|
174
|
+
frontFace?: GL.CW | GL.CCW;
|
|
175
|
+
|
|
176
|
+
mipmapHint?: GL.FASTEST | GL.NICEST | GL.DONT_CARE;
|
|
177
|
+
|
|
178
|
+
lineWidth?: number;
|
|
179
|
+
|
|
180
|
+
polygonOffsetFill?: boolean;
|
|
181
|
+
polygonOffset?: [number, number];
|
|
182
|
+
|
|
183
|
+
sampleCoverage?: [number, boolean];
|
|
184
|
+
|
|
185
|
+
scissorTest?: boolean;
|
|
186
|
+
scissor?: [number, number, number, number] | NumberArray;
|
|
187
|
+
|
|
188
|
+
stencilTest?: boolean;
|
|
189
|
+
stencilMask?: number | [number, number];
|
|
190
|
+
stencilFunc?: [GL_FUNCTION, number, number] | [GL_FUNCTION, number, number, GL_FUNCTION, number, number];
|
|
191
|
+
stencilOp?:
|
|
192
|
+
[GL_STENCIL_OP, GL_STENCIL_OP, GL_STENCIL_OP] |
|
|
193
|
+
[GL_STENCIL_OP, GL_STENCIL_OP, GL_STENCIL_OP, GL_STENCIL_OP, GL_STENCIL_OP, GL_STENCIL_OP];
|
|
194
|
+
viewport?: [number, number, number, number] | NumberArray;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
export type GLParameters = GLValueParameters | GLFunctionStyleParameters;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/* eslint-disable no-inline-comments, max-len, camelcase */
|
|
2
|
+
import GL from '@luma.gl/constants';
|
|
3
|
+
import {isWebGL2} from '../context/webgl-checks';
|
|
4
|
+
|
|
5
|
+
const OES_element_index = 'OES_element_index';
|
|
6
|
+
const WEBGL_draw_buffers = 'WEBGL_draw_buffers';
|
|
7
|
+
const EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';
|
|
8
|
+
const EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';
|
|
9
|
+
const EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';
|
|
10
|
+
const WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';
|
|
11
|
+
|
|
12
|
+
const GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;
|
|
13
|
+
const GL_DONT_CARE = 0x1100;
|
|
14
|
+
const GL_GPU_DISJOINT_EXT = 0x8fbb;
|
|
15
|
+
const GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;
|
|
16
|
+
const GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.
|
|
17
|
+
const GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.
|
|
18
|
+
|
|
19
|
+
const getWebGL2ValueOrZero = (gl) => (!isWebGL2(gl) ? 0 : undefined);
|
|
20
|
+
|
|
21
|
+
// if a function returns undefined in this table,
|
|
22
|
+
// the original getParameter will be called, defeating the override
|
|
23
|
+
const WEBGL_PARAMETERS = {
|
|
24
|
+
[GL.READ_BUFFER]: (gl) => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),
|
|
25
|
+
|
|
26
|
+
// WebGL2 context parameters
|
|
27
|
+
[GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: (gl) => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),
|
|
28
|
+
|
|
29
|
+
[GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,
|
|
30
|
+
|
|
31
|
+
[GL.SAMPLES]: getWebGL2ValueOrZero,
|
|
32
|
+
|
|
33
|
+
// WebGL2 extension context parameters
|
|
34
|
+
[GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {
|
|
35
|
+
const ext = isWebGL2(gl)
|
|
36
|
+
? gl.getExtension(EXT_disjoint_timer_query_webgl2)
|
|
37
|
+
: gl.getExtension(EXT_disjoint_timer_query);
|
|
38
|
+
return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
// Extension fixed values
|
|
42
|
+
[GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {
|
|
43
|
+
const ext = gl.getExtension(WEBGL_debug_renderer_info);
|
|
44
|
+
return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
[GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {
|
|
48
|
+
const ext = gl.getExtension(WEBGL_debug_renderer_info);
|
|
49
|
+
return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
// Extension LIMITS
|
|
53
|
+
[GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {
|
|
54
|
+
const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||
|
|
55
|
+
gl.getExtension('EXT_texture_filter_anisotropic');
|
|
56
|
+
return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
// WebGL2 Limits
|
|
60
|
+
[GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,
|
|
61
|
+
[GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,
|
|
62
|
+
[GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,
|
|
63
|
+
[GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {
|
|
64
|
+
if (!isWebGL2(gl)) {
|
|
65
|
+
const ext = gl.getExtension(WEBGL_draw_buffers);
|
|
66
|
+
return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
},
|
|
70
|
+
[GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
|
|
71
|
+
[GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,
|
|
72
|
+
[GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
|
|
73
|
+
[GL.MAX_DRAW_BUFFERS]: (gl) => {
|
|
74
|
+
if (!isWebGL2(gl)) {
|
|
75
|
+
const ext = gl.getExtension(WEBGL_draw_buffers);
|
|
76
|
+
return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
},
|
|
80
|
+
[GL.MAX_ELEMENT_INDEX]:
|
|
81
|
+
// Guess: per webglstats.com 99.6% of webgl2 supports 2147483647
|
|
82
|
+
(gl) => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),
|
|
83
|
+
[GL.MAX_ELEMENTS_INDICES]:
|
|
84
|
+
// Guess: "Reasonably safe" per webglstats.com - could be higher/lower (on some mobile devices)
|
|
85
|
+
(gl) => (gl.getExtension(OES_element_index) ? 16777216 : 65535),
|
|
86
|
+
[GL.MAX_ELEMENTS_VERTICES]:
|
|
87
|
+
// Guess: "Reasonably safe" per webglstats.com - could be higher/lower (on some mobile devices)
|
|
88
|
+
(gl) => 16777216,
|
|
89
|
+
[GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,
|
|
90
|
+
[GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,
|
|
91
|
+
[GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
|
|
92
|
+
[GL.MAX_SAMPLES]: getWebGL2ValueOrZero,
|
|
93
|
+
[GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,
|
|
94
|
+
[GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,
|
|
95
|
+
[GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,
|
|
96
|
+
[GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,
|
|
97
|
+
[GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,
|
|
98
|
+
[GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,
|
|
99
|
+
[GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,
|
|
100
|
+
[GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,
|
|
101
|
+
[GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,
|
|
102
|
+
[GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,
|
|
103
|
+
[GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
|
|
104
|
+
[GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,
|
|
105
|
+
[GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,
|
|
106
|
+
[GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// A "replacement" gl.getParameter that accepts "enums" from extensions and WebGL2
|
|
110
|
+
// and returns reasonably safe defaults
|
|
111
|
+
export function getParameterPolyfill(gl, originalGetParameter, pname) {
|
|
112
|
+
// Return mock limits (usually 0) for WebGL2 constants to ensure these
|
|
113
|
+
// can be queries without error
|
|
114
|
+
const limit = WEBGL_PARAMETERS[pname];
|
|
115
|
+
const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;
|
|
116
|
+
const result = value !== undefined ? value : originalGetParameter(pname);
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// WebGL1/WebGL2 extension polyfill support
|
|
2
|
+
//
|
|
3
|
+
// Provides a function that creates polyfills for WebGL2 functions based
|
|
4
|
+
// on available extensions and installs them on a supplied target (could be
|
|
5
|
+
// the WebGLContext or its prototype, or a separate object).
|
|
6
|
+
//
|
|
7
|
+
// This is intended to be a stand-alone file with minimal dependencies,
|
|
8
|
+
// easy to reuse or repurpose in other projects.
|
|
9
|
+
|
|
10
|
+
import {assert} from '@luma.gl/api';
|
|
11
|
+
import {polyfillVertexArrayObject} from './polyfill-vertex-array-object';
|
|
12
|
+
|
|
13
|
+
import {WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES} from './polyfill-table';
|
|
14
|
+
import {getContextState} from '../context/context-state';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Registers extensions, polyfills or mock functions for extensions in the polyfills list
|
|
18
|
+
*/
|
|
19
|
+
export function polyfillContext(gl: WebGLRenderingContext): WebGL2RenderingContext {
|
|
20
|
+
const contextState = getContextState(gl);
|
|
21
|
+
|
|
22
|
+
if (!contextState._polyfilled) {
|
|
23
|
+
polyfillVertexArrayObject(gl);
|
|
24
|
+
initializeExtensions(gl);
|
|
25
|
+
installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);
|
|
26
|
+
installOverrides(gl, {target: contextState, target2: gl});
|
|
27
|
+
contextState._polyfilled = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Note - only supports a subset of WebGL2
|
|
31
|
+
return gl as WebGL2RenderingContext;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function initializeExtensions(gl: WebGLRenderingContext): void {
|
|
35
|
+
const contextState = getContextState(gl);
|
|
36
|
+
// `getSupportedExtensions` can return null when context is lost.
|
|
37
|
+
const EXTENSIONS = gl.getSupportedExtensions() || [];
|
|
38
|
+
for (const extension of EXTENSIONS) {
|
|
39
|
+
contextState._extensions[extension] = gl.getExtension(extension);
|
|
40
|
+
// TODO - this looks like a mistake?
|
|
41
|
+
contextState[extension] = gl.getExtension(extension);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function installPolyfills(gl: WebGLRenderingContext, polyfills): void {
|
|
46
|
+
const contextState = getContextState(gl);
|
|
47
|
+
for (const extension of Object.getOwnPropertyNames(polyfills)) {
|
|
48
|
+
if (extension !== 'overrides') {
|
|
49
|
+
polyfillExtension(gl, {extension, target: contextState, target2: gl});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Polyfills a single WebGL extension into the `target` object */
|
|
55
|
+
function polyfillExtension(gl: WebGLRenderingContext, {extension, target, target2}): void {
|
|
56
|
+
const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];
|
|
57
|
+
assert(defaults);
|
|
58
|
+
|
|
59
|
+
const {meta = {}} = defaults;
|
|
60
|
+
const {suffix = ''} = meta;
|
|
61
|
+
|
|
62
|
+
const ext = gl.getExtension(extension);
|
|
63
|
+
|
|
64
|
+
for (const key of Object.keys(defaults)) {
|
|
65
|
+
const extKey = `${key}${suffix}`;
|
|
66
|
+
|
|
67
|
+
let polyfill = null;
|
|
68
|
+
if (key === 'meta') {
|
|
69
|
+
// ignore
|
|
70
|
+
} else if (typeof gl[key] === 'function') {
|
|
71
|
+
// WebGL2 implementation is already
|
|
72
|
+
} else if (ext && typeof ext[extKey] === 'function') {
|
|
73
|
+
// pick extension implementation,if available
|
|
74
|
+
polyfill = (...args) => ext[extKey](...args);
|
|
75
|
+
} else if (typeof defaults[key] === 'function') {
|
|
76
|
+
// pick the mock implementation, if no implementation was detected
|
|
77
|
+
polyfill = defaults[key].bind(target);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (polyfill) {
|
|
81
|
+
target[key] = polyfill;
|
|
82
|
+
target2[key] = polyfill;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Install simple overrides (mostly get* functions) */
|
|
88
|
+
function installOverrides(gl, {target, target2}) {
|
|
89
|
+
Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach((key) => {
|
|
90
|
+
if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {
|
|
91
|
+
// install an override, if no implementation was detected
|
|
92
|
+
const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};
|
|
93
|
+
const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);
|
|
94
|
+
target[key] = polyfill;
|
|
95
|
+
target2[key] = polyfill;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import {assert} from '@luma.gl/api';
|
|
2
|
+
import GL from '@luma.gl/constants';
|
|
3
|
+
import {isWebGL2} from '../context/webgl-checks';
|
|
4
|
+
|
|
5
|
+
import {getParameterPolyfill} from './get-parameter-polyfill';
|
|
6
|
+
import {getContextState} from '../context/context-state';
|
|
7
|
+
|
|
8
|
+
const OES_vertex_array_object = 'OES_vertex_array_object';
|
|
9
|
+
const ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';
|
|
10
|
+
const WEBGL_draw_buffers = 'WEBGL_draw_buffers';
|
|
11
|
+
const EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';
|
|
12
|
+
const EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';
|
|
13
|
+
|
|
14
|
+
const ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';
|
|
15
|
+
|
|
16
|
+
// Return object with webgl2 flag and an extension
|
|
17
|
+
function getExtensionData(gl, extension) {
|
|
18
|
+
return {
|
|
19
|
+
webgl2: isWebGL2(gl),
|
|
20
|
+
ext: gl.getExtension(extension)
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// function mapExtensionConstant(gl, constant) {
|
|
25
|
+
// switch (constant) {
|
|
26
|
+
// case ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES: return GL.FRAGMENT_SHADER_DERIVATIVE_HINT;
|
|
27
|
+
// }
|
|
28
|
+
// }
|
|
29
|
+
|
|
30
|
+
export const WEBGL2_CONTEXT_POLYFILLS = {
|
|
31
|
+
// POLYFILL TABLE
|
|
32
|
+
[OES_vertex_array_object]: {
|
|
33
|
+
meta: {suffix: 'OES'},
|
|
34
|
+
// NEW METHODS
|
|
35
|
+
createVertexArray: () => {
|
|
36
|
+
assert(false, ERR_VAO_NOT_SUPPORTED);
|
|
37
|
+
},
|
|
38
|
+
deleteVertexArray: () => {},
|
|
39
|
+
bindVertexArray: () => {},
|
|
40
|
+
isVertexArray: () => false
|
|
41
|
+
},
|
|
42
|
+
[ANGLE_instanced_arrays]: {
|
|
43
|
+
meta: {
|
|
44
|
+
suffix: 'ANGLE'
|
|
45
|
+
// constants: {
|
|
46
|
+
// VERTEX_ATTRIB_ARRAY_DIVISOR: 'VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE'
|
|
47
|
+
// }
|
|
48
|
+
},
|
|
49
|
+
vertexAttribDivisor(location, divisor) {
|
|
50
|
+
// Accept divisor 0 even if instancing is not supported (0 = no instancing)
|
|
51
|
+
assert(divisor === 0, 'WebGL instanced rendering not supported');
|
|
52
|
+
},
|
|
53
|
+
drawElementsInstanced: () => {},
|
|
54
|
+
drawArraysInstanced: () => {}
|
|
55
|
+
},
|
|
56
|
+
[WEBGL_draw_buffers]: {
|
|
57
|
+
meta: {
|
|
58
|
+
suffix: 'WEBGL'
|
|
59
|
+
},
|
|
60
|
+
drawBuffers: () => {
|
|
61
|
+
assert(false);
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
[EXT_disjoint_timer_query]: {
|
|
65
|
+
meta: {suffix: 'EXT'},
|
|
66
|
+
// WebGL1: Polyfills the WebGL2 Query API
|
|
67
|
+
createQuery: () => {
|
|
68
|
+
assert(false);
|
|
69
|
+
},
|
|
70
|
+
deleteQuery: () => {
|
|
71
|
+
assert(false);
|
|
72
|
+
},
|
|
73
|
+
beginQuery: () => {
|
|
74
|
+
assert(false);
|
|
75
|
+
},
|
|
76
|
+
endQuery: () => {},
|
|
77
|
+
getQuery(handle, pname) {
|
|
78
|
+
return this.getQueryObject(handle, pname);
|
|
79
|
+
},
|
|
80
|
+
// The WebGL1 extension uses getQueryObject rather then getQueryParameter
|
|
81
|
+
getQueryParameter(handle, pname) {
|
|
82
|
+
return this.getQueryObject(handle, pname);
|
|
83
|
+
},
|
|
84
|
+
getQueryObject: () => {}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const WEBGL2_CONTEXT_OVERRIDES = {
|
|
89
|
+
// Ensure readBuffer is a no-op
|
|
90
|
+
readBuffer: (gl, originalFunc, attachment) => {
|
|
91
|
+
if (isWebGL2(gl)) {
|
|
92
|
+
originalFunc(attachment);
|
|
93
|
+
} else {
|
|
94
|
+
// assert(attachment !== GL_COLOR_ATTACHMENT0 && attachment !== GL_FRONT);
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
// Override for getVertexAttrib that returns sane values for non-WebGL1 constants
|
|
98
|
+
getVertexAttrib: (gl, originalFunc, location, pname) => {
|
|
99
|
+
// const gl = this; // eslint-disable-line
|
|
100
|
+
const {webgl2, ext} = getExtensionData(gl, ANGLE_instanced_arrays);
|
|
101
|
+
|
|
102
|
+
let result;
|
|
103
|
+
switch (pname) {
|
|
104
|
+
// WebGL1 attributes will never be integer
|
|
105
|
+
case GL.VERTEX_ATTRIB_ARRAY_INTEGER:
|
|
106
|
+
result = !webgl2 ? false : undefined;
|
|
107
|
+
break;
|
|
108
|
+
// if instancing is not available, return 0 meaning divisor has not been set
|
|
109
|
+
case GL.VERTEX_ATTRIB_ARRAY_DIVISOR:
|
|
110
|
+
result = !webgl2 && !ext ? 0 : undefined;
|
|
111
|
+
break;
|
|
112
|
+
default:
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return result !== undefined ? result : originalFunc(location, pname);
|
|
116
|
+
},
|
|
117
|
+
// Handle transform feedback and uniform block queries in WebGL1
|
|
118
|
+
getProgramParameter: (gl, originalFunc, program, pname) => {
|
|
119
|
+
if (!isWebGL2(gl)) {
|
|
120
|
+
switch (pname) {
|
|
121
|
+
case GL.TRANSFORM_FEEDBACK_BUFFER_MODE:
|
|
122
|
+
return GL.SEPARATE_ATTRIBS;
|
|
123
|
+
case GL.TRANSFORM_FEEDBACK_VARYINGS:
|
|
124
|
+
return 0;
|
|
125
|
+
case GL.ACTIVE_UNIFORM_BLOCKS:
|
|
126
|
+
return 0;
|
|
127
|
+
default:
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return originalFunc(program, pname);
|
|
131
|
+
},
|
|
132
|
+
getInternalformatParameter: (gl, originalFunc, target, format, pname) => {
|
|
133
|
+
if (!isWebGL2(gl)) {
|
|
134
|
+
switch (pname) {
|
|
135
|
+
case GL.SAMPLES:
|
|
136
|
+
return new Int32Array([0]);
|
|
137
|
+
default:
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return gl.getInternalformatParameter(target, format, pname);
|
|
141
|
+
},
|
|
142
|
+
getTexParameter(gl, originalFunc, target, pname) {
|
|
143
|
+
switch (pname) {
|
|
144
|
+
case GL.TEXTURE_MAX_ANISOTROPY_EXT:
|
|
145
|
+
const contextState = getContextState(gl);
|
|
146
|
+
const {_extensions} = contextState;
|
|
147
|
+
const ext = _extensions[EXT_texture_filter_anisotropic];
|
|
148
|
+
pname = (ext && ext.TEXTURE_MAX_ANISOTROPY_EXT) || GL.TEXTURE_MAX_ANISOTROPY_EXT;
|
|
149
|
+
break;
|
|
150
|
+
default:
|
|
151
|
+
}
|
|
152
|
+
return originalFunc(target, pname);
|
|
153
|
+
},
|
|
154
|
+
getParameter: getParameterPolyfill,
|
|
155
|
+
hint(gl, originalFunc, pname, value) {
|
|
156
|
+
// TODO - handle GL.FRAGMENT_SHADER_DERIVATIVE_HINT:
|
|
157
|
+
// switch (pname) {
|
|
158
|
+
// case GL.FRAGMENT_SHADER_DERIVATIVE_HINT:
|
|
159
|
+
// }
|
|
160
|
+
return originalFunc(pname, value);
|
|
161
|
+
}
|
|
162
|
+
};
|