@luma.gl/webgl 8.6.0-alpha.1 → 8.6.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -1
- package/dist/_deprecated/context-api.d.ts +85 -0
- package/dist/_deprecated/context-api.d.ts.map +1 -0
- package/dist/_deprecated/context-api.js +76 -0
- package/dist/_deprecated/context-api.js.map +1 -0
- package/dist/{features/webgl-features-table.d.ts → _deprecated/features.d.ts} +4 -7
- package/dist/_deprecated/features.d.ts.map +1 -0
- package/dist/_deprecated/features.js +111 -0
- package/dist/_deprecated/features.js.map +1 -0
- package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
- package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/set-device-parameters.js +124 -0
- package/dist/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/adapter/device-helpers/device-features.d.ts +12 -0
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
- package/dist/adapter/device-helpers/device-features.js +123 -0
- package/dist/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/adapter/device-helpers/device-limits.d.ts +51 -0
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
- package/dist/adapter/device-helpers/device-limits.js +90 -0
- package/dist/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/adapter/device-helpers/get-device-info.d.ts +4 -0
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
- package/dist/adapter/device-helpers/get-device-info.js +44 -0
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/adapter/device-helpers/is-old-ie.d.ts +2 -0
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
- package/dist/{esm/features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +110 -0
- package/dist/adapter/webgl-device.d.ts.map +1 -0
- package/dist/adapter/webgl-device.js +207 -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/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 +14 -17
- package/dist/classes/program-configuration.d.ts.map +1 -1
- package/dist/classes/program-configuration.js +10 -97
- package/dist/classes/program-configuration.js.map +1 -1
- package/dist/classes/program.d.ts +25 -20
- package/dist/classes/program.d.ts.map +1 -1
- package/dist/classes/program.js +39 -28
- 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/{webgl-shader.d.ts → shader.d.ts} +4 -13
- package/dist/classes/shader.d.ts.map +1 -0
- package/dist/classes/{webgl-shader.js → shader.js} +7 -79
- package/dist/classes/shader.js.map +1 -0
- 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 +7 -6
- package/dist/classes/vertex-array-object.d.ts.map +1 -1
- package/dist/classes/vertex-array-object.js +11 -12
- package/dist/classes/vertex-array-object.js.map +1 -1
- package/dist/classes/vertex-array.d.ts +14 -14
- package/dist/classes/vertex-array.d.ts.map +1 -1
- package/dist/classes/vertex-array.js +3 -4
- 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/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-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/es5/_deprecated/context-api.js +116 -0
- package/dist/es5/_deprecated/context-api.js.map +1 -0
- package/dist/es5/_deprecated/features.js +118 -0
- package/dist/es5/_deprecated/features.js.map +1 -0
- package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
- package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-features.js +152 -0
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-limits.js +64 -0
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/es5/adapter/device-helpers/get-device-info.js +55 -0
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/es5/adapter/device-helpers/is-old-ie.js +16 -0
- 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 +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 +78 -128
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +379 -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/shader.js +195 -0
- package/dist/es5/classes/shader.js.map +1 -0
- 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/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/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 +268 -192
- 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/types/accessor.d.ts +29 -0
- 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/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/esm/_deprecated/context-api.js +76 -0
- package/dist/esm/_deprecated/context-api.js.map +1 -0
- package/dist/esm/_deprecated/features.js +111 -0
- package/dist/esm/_deprecated/features.js.map +1 -0
- package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
- package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-features.js +123 -0
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-limits.js +90 -0
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/esm/adapter/device-helpers/get-device-info.js +44 -0
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/{features/check-old-ie.js → esm/adapter/device-helpers/is-old-ie.js} +3 -3
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/esm/adapter/webgl-device.js +207 -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/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 +10 -97
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +39 -28
- 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/{webgl-shader.js → shader.js} +7 -79
- package/dist/esm/classes/shader.js.map +1 -0
- 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 +11 -12
- package/dist/esm/classes/vertex-array-object.js.map +1 -1
- package/dist/esm/classes/vertex-array.js +3 -4
- 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/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/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 +26 -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/types/accessor.d.ts +29 -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 +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/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/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 +41 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -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/types/accessor.d.ts +29 -0
- 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/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/package.json +5 -6
- package/src/.DS_Store +0 -0
- package/src/_deprecated/context-api.ts +146 -0
- package/src/_deprecated/features.ts +159 -0
- package/src/adapter/converters/set-device-parameters.ts +182 -0
- package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
- package/src/adapter/device-helpers/device-features.ts +227 -0
- package/src/adapter/device-helpers/device-limits.ts +150 -0
- package/src/adapter/device-helpers/get-device-info.ts +49 -0
- package/src/{features/check-old-ie.ts → adapter/device-helpers/is-old-ie.ts} +3 -3
- package/src/adapter/webgl-device.ts +399 -0
- package/src/adapter/webgl-shader.ts +84 -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 +28 -81
- package/src/classes/program.ts +89 -75
- 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/{webgl-shader.ts → shader.ts} +7 -78
- 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 +17 -20
- package/src/classes/vertex-array.ts +16 -11
- package/src/classes/webgl-buffer.ts +7 -5
- package/src/classes/webgl-resource.ts +20 -18
- 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-uniforms.ts +1 -1
- package/src/debug/debug-vertex-array.ts +2 -4
- package/src/helpers/get-program-bindings.ts +244 -0
- package/src/helpers/program-bindings.ts +46 -0
- package/src/index.ts +94 -23
- package/src/init.ts +12 -9
- package/src/types/accessor.d.ts +29 -0
- 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/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/dist/classes/webgl-shader.d.ts.map +0 -1
- package/dist/classes/webgl-shader.js.map +0 -1
- 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/classes/webgl-shader.js +0 -213
- package/dist/es5/classes/webgl-shader.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/classes/webgl-shader.js.map +0 -1
- 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.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
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
import {log, assert} from '@luma.gl/api';
|
|
2
2
|
import GL from '@luma.gl/constants';
|
|
3
3
|
import Buffer from './webgl-buffer';
|
|
4
4
|
import Framebuffer from './framebuffer';
|
|
5
5
|
import Texture from './texture';
|
|
6
|
-
import {assertWebGL2Context
|
|
7
|
-
import {
|
|
6
|
+
import {assertWebGL2Context} from '../context/context/webgl-checks';
|
|
7
|
+
import {withParameters} from '../context/state-tracker/with-parameters';
|
|
8
|
+
import {flipRows, scalePixels} from '../webgl-utils/typed-array-utils';
|
|
8
9
|
import {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';
|
|
9
10
|
import {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';
|
|
10
11
|
import {toFramebuffer} from '../webgl-utils/texture-utils';
|
|
11
|
-
import {assert} from '../utils';
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Copies data from a Framebuffer or a Texture object into ArrayBuffer object.
|
|
15
|
+
* App can provide targetPixelArray or have it auto allocated by this method
|
|
16
|
+
* newly allocated by this method unless provided by app.
|
|
17
|
+
* @note Slow requires roundtrip to GPU
|
|
18
|
+
*
|
|
19
|
+
* @param source
|
|
20
|
+
* @param options
|
|
16
21
|
// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,
|
|
17
|
-
|
|
22
|
+
*/
|
|
18
23
|
export function readPixelsToArray(
|
|
19
24
|
source: Framebuffer | Texture,
|
|
20
25
|
options?: {
|
|
@@ -28,15 +33,8 @@ export function readPixelsToArray(
|
|
|
28
33
|
sourceHeight?: number;
|
|
29
34
|
sourceType?: number;
|
|
30
35
|
}
|
|
31
|
-
): Uint8Array | Uint16Array | Float32Array
|
|
32
|
-
|
|
33
|
-
// NOTE: Slow requires roundtrip to GPU
|
|
34
|
-
// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.
|
|
35
|
-
// App can provide targetPixelArray or have it auto allocated by this method
|
|
36
|
-
// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,
|
|
37
|
-
// newly allocated by this method unless provided by app.
|
|
38
|
-
export function readPixelsToArray(source, options = {}) {
|
|
39
|
-
const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options;
|
|
36
|
+
): Uint8Array | Uint16Array | Float32Array {
|
|
37
|
+
const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options || {};
|
|
40
38
|
let {
|
|
41
39
|
sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer
|
|
42
40
|
target = null,
|
|
@@ -44,7 +42,7 @@ export function readPixelsToArray(source, options = {}) {
|
|
|
44
42
|
sourceWidth,
|
|
45
43
|
sourceHeight,
|
|
46
44
|
sourceType
|
|
47
|
-
} = options;
|
|
45
|
+
} = options || {};
|
|
48
46
|
|
|
49
47
|
const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
|
|
50
48
|
assert(framebuffer);
|
|
@@ -70,7 +68,7 @@ export function readPixelsToArray(source, options = {}) {
|
|
|
70
68
|
|
|
71
69
|
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
|
|
72
70
|
gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);
|
|
73
|
-
// @ts-
|
|
71
|
+
// @ts-expect-error
|
|
74
72
|
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
75
73
|
if (deleteFramebuffer) {
|
|
76
74
|
framebuffer.delete();
|
|
@@ -78,8 +76,12 @@ export function readPixelsToArray(source, options = {}) {
|
|
|
78
76
|
return target;
|
|
79
77
|
}
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Copies data from a Framebuffer or a Texture object into a Buffer object.
|
|
81
|
+
* NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.
|
|
82
|
+
* @param source
|
|
83
|
+
* @param options
|
|
84
|
+
*/
|
|
83
85
|
export function readPixelsToBuffer(
|
|
84
86
|
source: Framebuffer | Texture,
|
|
85
87
|
options?: {
|
|
@@ -93,30 +95,23 @@ export function readPixelsToBuffer(
|
|
|
93
95
|
sourceHeight?: number;
|
|
94
96
|
sourceType?: number;
|
|
95
97
|
}
|
|
96
|
-
): Buffer
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
export function readPixelsToBuffer(
|
|
101
|
-
source,
|
|
102
|
-
{
|
|
103
|
-
sourceX = 0,
|
|
104
|
-
sourceY = 0,
|
|
105
|
-
sourceFormat = GL.RGBA,
|
|
106
|
-
target = null, // A new Buffer object is created when not provided.
|
|
107
|
-
targetByteOffset = 0, // byte offset in buffer object
|
|
98
|
+
): Buffer {
|
|
99
|
+
const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA,
|
|
100
|
+
targetByteOffset = 0
|
|
101
|
+
} = options || {};
|
|
108
102
|
// following parameters are auto deduced if not provided
|
|
103
|
+
let {
|
|
104
|
+
target,
|
|
109
105
|
sourceWidth,
|
|
110
106
|
sourceHeight,
|
|
111
|
-
sourceType
|
|
112
|
-
}
|
|
113
|
-
) {
|
|
107
|
+
sourceType,
|
|
108
|
+
} = options || {}
|
|
114
109
|
const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
|
|
115
110
|
assert(framebuffer);
|
|
116
111
|
sourceWidth = sourceWidth || framebuffer.width;
|
|
117
112
|
sourceHeight = sourceHeight || framebuffer.height;
|
|
118
113
|
|
|
119
|
-
//
|
|
114
|
+
// Asynchronous read (PIXEL_PACK_BUFFER) is WebGL2 only feature
|
|
120
115
|
const gl2 = assertWebGL2Context(framebuffer.gl);
|
|
121
116
|
|
|
122
117
|
// deduce type if not available.
|
|
@@ -127,12 +122,11 @@ export function readPixelsToBuffer(
|
|
|
127
122
|
const components = glFormatToComponents(sourceFormat);
|
|
128
123
|
const byteCount = glTypeToBytes(sourceType);
|
|
129
124
|
const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;
|
|
130
|
-
// @ts-expect-error TODO why is WebGL2 context not compatible
|
|
131
125
|
target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});
|
|
132
126
|
}
|
|
133
127
|
|
|
128
|
+
// @ts-expect-error
|
|
134
129
|
target.bind({target: GL.PIXEL_PACK_BUFFER});
|
|
135
|
-
// @ts-expect-error TODO why is WebGL2 context not compatible
|
|
136
130
|
withParameters(gl2, {framebuffer}, () => {
|
|
137
131
|
gl2.readPixels(
|
|
138
132
|
sourceX,
|
|
@@ -204,6 +198,7 @@ export function copyToImage(
|
|
|
204
198
|
): typeof Image {
|
|
205
199
|
const dataUrl = copyToDataUrl(source, {sourceAttachment: options?.sourceAttachment || GL.COLOR_ATTACHMENT0});
|
|
206
200
|
const targetImage = options?.targetImage || new Image();
|
|
201
|
+
// @ts-expect-error
|
|
207
202
|
targetImage.src = dataUrl;
|
|
208
203
|
// @ts-expect-error
|
|
209
204
|
return targetImage;
|
|
@@ -215,7 +210,7 @@ export function copyToImage(
|
|
|
215
210
|
// eslint-disable-next-line complexity, max-statements
|
|
216
211
|
export function copyToTexture(
|
|
217
212
|
source: Framebuffer | Texture,
|
|
218
|
-
target: Texture,
|
|
213
|
+
target: Texture | GL,
|
|
219
214
|
options?: {
|
|
220
215
|
sourceX?: number;
|
|
221
216
|
sourceY?: number;
|
|
@@ -236,14 +231,14 @@ export function copyToTexture(
|
|
|
236
231
|
// attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer
|
|
237
232
|
targetMipmaplevel = 0,
|
|
238
233
|
targetInternalFormat = GL.RGBA
|
|
239
|
-
} = options;
|
|
234
|
+
} = options || {};
|
|
240
235
|
let {
|
|
241
236
|
targetX,
|
|
242
237
|
targetY,
|
|
243
238
|
targetZ,
|
|
244
239
|
width, // defaults to target width
|
|
245
240
|
height // defaults to target height
|
|
246
|
-
} = options;
|
|
241
|
+
} = options || {};
|
|
247
242
|
|
|
248
243
|
const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
|
|
249
244
|
assert(framebuffer);
|
|
@@ -260,17 +255,20 @@ export function copyToTexture(
|
|
|
260
255
|
// const prevBuffer = gl.readBuffer(attachment);
|
|
261
256
|
assert(target);
|
|
262
257
|
let texture = null;
|
|
258
|
+
let textureTarget: GL;
|
|
263
259
|
if (target instanceof Texture) {
|
|
264
260
|
texture = target;
|
|
265
261
|
width = Number.isFinite(width) ? width : texture.width;
|
|
266
262
|
height = Number.isFinite(height) ? height : texture.height;
|
|
267
263
|
texture.bind(0);
|
|
268
|
-
|
|
264
|
+
textureTarget = texture.target;
|
|
265
|
+
} else {
|
|
266
|
+
textureTarget = target;
|
|
269
267
|
}
|
|
270
268
|
|
|
271
269
|
if (!isSubCopy) {
|
|
272
270
|
gl.copyTexImage2D(
|
|
273
|
-
|
|
271
|
+
textureTarget,
|
|
274
272
|
targetMipmaplevel,
|
|
275
273
|
targetInternalFormat,
|
|
276
274
|
sourceX,
|
|
@@ -280,11 +278,11 @@ export function copyToTexture(
|
|
|
280
278
|
0 /* border must be 0 */
|
|
281
279
|
);
|
|
282
280
|
} else {
|
|
283
|
-
switch (
|
|
281
|
+
switch (textureTarget) {
|
|
284
282
|
case GL.TEXTURE_2D:
|
|
285
283
|
case GL.TEXTURE_CUBE_MAP:
|
|
286
284
|
gl.copyTexSubImage2D(
|
|
287
|
-
|
|
285
|
+
textureTarget,
|
|
288
286
|
targetMipmaplevel,
|
|
289
287
|
targetX,
|
|
290
288
|
targetY,
|
|
@@ -298,7 +296,7 @@ export function copyToTexture(
|
|
|
298
296
|
case GL.TEXTURE_3D:
|
|
299
297
|
const gl2 = assertWebGL2Context(gl);
|
|
300
298
|
gl2.copyTexSubImage3D(
|
|
301
|
-
|
|
299
|
+
textureTarget,
|
|
302
300
|
targetMipmaplevel,
|
|
303
301
|
targetX,
|
|
304
302
|
targetY,
|
|
@@ -315,7 +313,7 @@ export function copyToTexture(
|
|
|
315
313
|
if (texture) {
|
|
316
314
|
texture.unbind();
|
|
317
315
|
}
|
|
318
|
-
// @ts-
|
|
316
|
+
// @ts-expect-error
|
|
319
317
|
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
320
318
|
if (deleteFramebuffer) {
|
|
321
319
|
framebuffer.delete();
|
|
@@ -378,7 +376,6 @@ export function blit(
|
|
|
378
376
|
|
|
379
377
|
assert(srcFramebuffer);
|
|
380
378
|
assert(dstFramebuffer);
|
|
381
|
-
// @ts-ignore
|
|
382
379
|
const {gl, handle, width, height, readBuffer} = dstFramebuffer;
|
|
383
380
|
const gl2 = assertWebGL2Context(gl);
|
|
384
381
|
|
|
@@ -427,9 +424,9 @@ export function blit(
|
|
|
427
424
|
filter
|
|
428
425
|
);
|
|
429
426
|
gl2.readBuffer(readBuffer);
|
|
430
|
-
// @ts-
|
|
427
|
+
// @ts-expect-error
|
|
431
428
|
gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);
|
|
432
|
-
// @ts-
|
|
429
|
+
// @ts-expect-error
|
|
433
430
|
gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);
|
|
434
431
|
if (deleteSrcFramebuffer) {
|
|
435
432
|
srcFramebuffer.delete();
|
|
@@ -438,7 +435,7 @@ export function blit(
|
|
|
438
435
|
dstFramebuffer.delete();
|
|
439
436
|
}
|
|
440
437
|
|
|
441
|
-
return dstFramebuffer;
|
|
438
|
+
// return dstFramebuffer;
|
|
442
439
|
}
|
|
443
440
|
|
|
444
441
|
// Helper methods
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
+
import {log, assert} from '@luma.gl/api';
|
|
1
2
|
import GL from '@luma.gl/constants';
|
|
2
|
-
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';
|
|
3
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
10
|
import {copyToDataUrl} from './copy-and-blit';
|
|
8
11
|
|
|
9
|
-
import {getLumaContextData} from '../context/luma-context-data';
|
|
10
|
-
import {getFeatures} from '../features';
|
|
11
|
-
import {getKey} from '../webgl-utils';
|
|
12
|
-
import {assert} from '../utils';
|
|
13
|
-
|
|
14
12
|
const ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';
|
|
15
13
|
|
|
16
14
|
type TextureAttachment = {
|
|
@@ -40,7 +38,7 @@ type colorBufferFloatOptions = {colorBufferFloat?: boolean; colorBufferHalfFloat
|
|
|
40
38
|
|
|
41
39
|
export class ImmutableFramebuffer extends Resource<FramebufferProps> {
|
|
42
40
|
constructor(gl: WebGLRenderingContext, props?: FramebufferProps) {
|
|
43
|
-
super(gl, props, {} as any);
|
|
41
|
+
super(WebGLDevice.attach(gl), props, {} as any);
|
|
44
42
|
this._initialize({
|
|
45
43
|
attachments: props?.attachments || {},
|
|
46
44
|
readBuffer: props?.readBuffer,
|
|
@@ -61,7 +59,7 @@ export class ImmutableFramebuffer extends Resource<FramebufferProps> {
|
|
|
61
59
|
const {gl} = this;
|
|
62
60
|
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
|
|
63
61
|
const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
|
|
64
|
-
// @ts-
|
|
62
|
+
// @ts-expect-error
|
|
65
63
|
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
66
64
|
return status;
|
|
67
65
|
}
|
|
@@ -82,7 +80,8 @@ export class ImmutableFramebuffer extends Resource<FramebufferProps> {
|
|
|
82
80
|
}
|
|
83
81
|
message = message || `Framebuffer ${this.id}`;
|
|
84
82
|
const image = copyToDataUrl(this, {targetMaxHeight: 100});
|
|
85
|
-
|
|
83
|
+
// @ts-expect-error probe.gl typings incorrectly require priority...
|
|
84
|
+
log.image({logLevel, message, image})();
|
|
86
85
|
return this;
|
|
87
86
|
}
|
|
88
87
|
|
|
@@ -112,7 +111,7 @@ export class ImmutableFramebuffer extends Resource<FramebufferProps> {
|
|
|
112
111
|
if (drawBuffers) {
|
|
113
112
|
this._setDrawBuffers(drawBuffers);
|
|
114
113
|
}
|
|
115
|
-
// @ts-
|
|
114
|
+
// @ts-expect-error
|
|
116
115
|
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
117
116
|
|
|
118
117
|
return this;
|
|
@@ -131,7 +130,7 @@ export class ImmutableFramebuffer extends Resource<FramebufferProps> {
|
|
|
131
130
|
this._attachOne(attachmentPoint, attachment);
|
|
132
131
|
}
|
|
133
132
|
|
|
134
|
-
// @ts-
|
|
133
|
+
// @ts-expect-error
|
|
135
134
|
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
136
135
|
}
|
|
137
136
|
|
|
@@ -280,16 +279,16 @@ export default class Framebuffer extends ImmutableFramebuffer {
|
|
|
280
279
|
* Creates a Framebuffer object wrapper for the default WebGL framebuffer (target === null)
|
|
281
280
|
*/
|
|
282
281
|
static getDefaultFramebuffer(gl: WebGLRenderingContext): Framebuffer {
|
|
283
|
-
const
|
|
284
|
-
|
|
285
|
-
|
|
282
|
+
const webglDevice = WebGLDevice.fromContext(gl);
|
|
283
|
+
webglDevice.defaultFramebuffer =
|
|
284
|
+
webglDevice.defaultFramebuffer ||
|
|
286
285
|
new Framebuffer(gl, {
|
|
287
286
|
id: 'default-framebuffer',
|
|
288
287
|
handle: null,
|
|
289
288
|
attachments: {}
|
|
290
289
|
});
|
|
291
290
|
// TODO - can we query for and get a handle to the GL.FRONT renderbuffer?
|
|
292
|
-
return
|
|
291
|
+
return webglDevice.defaultFramebuffer;
|
|
293
292
|
}
|
|
294
293
|
|
|
295
294
|
get MAX_COLOR_ATTACHMENTS(): number {
|
|
@@ -407,13 +406,13 @@ export default class Framebuffer extends ImmutableFramebuffer {
|
|
|
407
406
|
this._setDrawBuffers(drawBuffers);
|
|
408
407
|
this.drawBuffers = drawBuffers;
|
|
409
408
|
}
|
|
410
|
-
// @ts-
|
|
409
|
+
// @ts-expect-error
|
|
411
410
|
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
412
411
|
|
|
413
412
|
return this;
|
|
414
413
|
}
|
|
415
414
|
|
|
416
|
-
|
|
415
|
+
/** Attachment resize is expected to be a noop if size is same */
|
|
417
416
|
resize(size?: {width?: number; height?: number}): this {
|
|
418
417
|
let {width, height} = size || {};
|
|
419
418
|
// for default framebuffer, just update the stored size
|
|
@@ -442,7 +441,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
|
|
|
442
441
|
return this;
|
|
443
442
|
}
|
|
444
443
|
|
|
445
|
-
|
|
444
|
+
/** Attach from a map of attachments */
|
|
446
445
|
attach(attachments, {clearAttachments = false, resizeAttachments = true} = {}) {
|
|
447
446
|
const newAttachments = {};
|
|
448
447
|
|
|
@@ -480,7 +479,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
|
|
|
480
479
|
}
|
|
481
480
|
}
|
|
482
481
|
|
|
483
|
-
// @ts-
|
|
482
|
+
// @ts-expect-error
|
|
484
483
|
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
485
484
|
|
|
486
485
|
// Assign to attachments and remove any nulls to get a clean attachment map
|
|
@@ -506,7 +505,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
|
|
|
506
505
|
clearBuffer(this.gl, {drawBuffer, value});
|
|
507
506
|
});
|
|
508
507
|
|
|
509
|
-
// @ts-
|
|
508
|
+
// @ts-expect-error
|
|
510
509
|
this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
511
510
|
|
|
512
511
|
return this;
|
|
@@ -531,10 +530,10 @@ export default class Framebuffer extends ImmutableFramebuffer {
|
|
|
531
530
|
gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);
|
|
532
531
|
} else {
|
|
533
532
|
// TODO - why does type checking fail on this line
|
|
534
|
-
// @ts-
|
|
533
|
+
// @ts-expect-error
|
|
535
534
|
gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);
|
|
536
535
|
}
|
|
537
|
-
// @ts-
|
|
536
|
+
// @ts-expect-error
|
|
538
537
|
gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);
|
|
539
538
|
return this;
|
|
540
539
|
}
|
|
@@ -549,7 +548,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
|
|
|
549
548
|
this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);
|
|
550
549
|
}
|
|
551
550
|
if (keys && value > 1000) {
|
|
552
|
-
// @ts-
|
|
551
|
+
// @ts-expect-error
|
|
553
552
|
value = getKey(this.gl, value);
|
|
554
553
|
}
|
|
555
554
|
return value;
|
|
@@ -558,7 +557,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
|
|
|
558
557
|
getAttachmentParameters(
|
|
559
558
|
attachment = GL.COLOR_ATTACHMENT0,
|
|
560
559
|
keys,
|
|
561
|
-
// @ts-
|
|
560
|
+
// @ts-expect-error
|
|
562
561
|
parameters = this.constructor.ATTACHMENT_PARAMETERS || []
|
|
563
562
|
) {
|
|
564
563
|
const values = {};
|
|
@@ -672,32 +671,36 @@ export default class Framebuffer extends ImmutableFramebuffer {
|
|
|
672
671
|
delete this.attachments[attachment];
|
|
673
672
|
}
|
|
674
673
|
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
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
|
|
679
682
|
_getAttachmentParameterFallback(pname) {
|
|
680
|
-
const
|
|
683
|
+
const webglDevice = WebGLDevice.fromContext(this.gl);
|
|
684
|
+
const features = webglDevice.features;
|
|
681
685
|
|
|
682
686
|
switch (pname) {
|
|
683
687
|
case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: // GLint
|
|
684
|
-
return !
|
|
688
|
+
return !features.has('webgl2') ? 0 : null;
|
|
685
689
|
case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE: // GLint
|
|
686
690
|
case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: // GLint
|
|
687
691
|
case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: // GLint
|
|
688
692
|
case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: // GLint
|
|
689
693
|
case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: // GLint
|
|
690
694
|
case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: // GLint
|
|
691
|
-
return !
|
|
695
|
+
return !features.has('webgl2') ? 8 : null;
|
|
692
696
|
case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: // GLenum
|
|
693
|
-
return !
|
|
697
|
+
return !features.has('webgl2') ? GL.UNSIGNED_INT : null;
|
|
694
698
|
case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
|
|
695
|
-
return !
|
|
699
|
+
return !features.has('webgl2') && !features.has('webgl-color-encoding-srgb') ? GL.LINEAR : null;
|
|
696
700
|
default:
|
|
697
701
|
return null;
|
|
698
702
|
}
|
|
699
703
|
}
|
|
700
|
-
/* eslint-enable complexity */
|
|
701
704
|
}
|
|
702
705
|
|
|
703
706
|
// PUBLIC METHODS
|
|
@@ -713,7 +716,7 @@ function mapIndexToCubeMapFace(layer) {
|
|
|
713
716
|
// Get a string describing the framebuffer error if installed
|
|
714
717
|
function _getFrameBufferStatus(status) {
|
|
715
718
|
// Use error mapping if installed
|
|
716
|
-
// @ts-
|
|
719
|
+
// @ts-expect-error
|
|
717
720
|
const STATUS = Framebuffer.STATUS || {};
|
|
718
721
|
return STATUS[status] || `Framebuffer error ${status}`;
|
|
719
722
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// Contains metadata describing attribute configurations for a program's shaders
|
|
2
2
|
// Much of this is automatically extracted from shaders after program linking
|
|
3
|
-
import Accessor from './accessor';
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
3
|
+
// import Accessor from './accessor';
|
|
4
|
+
import type Program from './program';
|
|
5
|
+
import type {AttributeBinding, VaryingBinding} from '../helpers/program-bindings';
|
|
6
|
+
import {getProgramBindings} from '../helpers/get-program-bindings';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* is a mechanism for taking a program object and querying information
|
|
@@ -12,22 +13,32 @@ import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
|
|
|
12
13
|
*/
|
|
13
14
|
export default class ProgramConfiguration {
|
|
14
15
|
id: string;
|
|
15
|
-
attributeInfos = [];
|
|
16
|
-
attributeInfosByName = {};
|
|
16
|
+
attributeInfos: AttributeBinding[] = [];
|
|
17
|
+
attributeInfosByName: Record<string, AttributeBinding> = {};
|
|
17
18
|
// Locations may not be contiguous the case of matrix attributes
|
|
18
19
|
// so keep a separate location->attribute map.
|
|
19
|
-
attributeInfosByLocation = [];
|
|
20
|
-
varyingInfos = [];
|
|
21
|
-
varyingInfosByName = {};
|
|
20
|
+
attributeInfosByLocation: AttributeBinding[] = [];
|
|
21
|
+
varyingInfos: VaryingBinding[] = [];
|
|
22
|
+
varyingInfosByName: Record<string, VaryingBinding> = {};
|
|
22
23
|
|
|
23
|
-
constructor(program) {
|
|
24
|
+
constructor(program: Program) {
|
|
24
25
|
this.id = program.id;
|
|
25
26
|
Object.seal(this);
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
|
|
28
|
+
const bindings = getProgramBindings(program.gl2, program.handle);
|
|
29
|
+
|
|
30
|
+
this.attributeInfos = bindings.attributes;
|
|
31
|
+
for (const attributeInfo of bindings.attributes) {
|
|
32
|
+
this.attributeInfosByName[attributeInfo.name] = attributeInfo;
|
|
33
|
+
this.attributeInfosByLocation[attributeInfo.location] = attributeInfo;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
for (const varyingInfo of bindings.varyings) {
|
|
37
|
+
this.varyingInfosByName[varyingInfo.name] = varyingInfo;
|
|
38
|
+
}
|
|
28
39
|
}
|
|
29
40
|
|
|
30
|
-
getAttributeInfo(locationOrName) {
|
|
41
|
+
getAttributeInfo(locationOrName: number | string): AttributeBinding {
|
|
31
42
|
const location = Number(locationOrName);
|
|
32
43
|
if (Number.isFinite(location)) {
|
|
33
44
|
return this.attributeInfosByLocation[location];
|
|
@@ -36,17 +47,17 @@ import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
|
|
|
36
47
|
}
|
|
37
48
|
|
|
38
49
|
// Resolves an attribute name or index to an index
|
|
39
|
-
getAttributeLocation(locationOrName) {
|
|
50
|
+
getAttributeLocation(locationOrName: number | string): number {
|
|
40
51
|
const attributeInfo = this.getAttributeInfo(locationOrName);
|
|
41
52
|
return attributeInfo ? attributeInfo.location : -1;
|
|
42
53
|
}
|
|
43
54
|
|
|
44
|
-
getAttributeAccessor(locationOrName) {
|
|
55
|
+
getAttributeAccessor(locationOrName: number | string) {
|
|
45
56
|
const attributeInfo = this.getAttributeInfo(locationOrName);
|
|
46
57
|
return attributeInfo ? attributeInfo.accessor : null;
|
|
47
58
|
}
|
|
48
59
|
|
|
49
|
-
getVaryingInfo(locationOrName) {
|
|
60
|
+
getVaryingInfo(locationOrName: number | string): VaryingBinding {
|
|
50
61
|
const location = Number(locationOrName);
|
|
51
62
|
if (Number.isFinite(location)) {
|
|
52
63
|
return this.varyingInfos[location];
|
|
@@ -54,77 +65,13 @@ import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
|
|
|
54
65
|
return this.varyingInfosByName[locationOrName] || null;
|
|
55
66
|
}
|
|
56
67
|
|
|
57
|
-
getVaryingIndex(locationOrName) {
|
|
68
|
+
getVaryingIndex(locationOrName: number | string): number {
|
|
58
69
|
const varying = this.getVaryingInfo(locationOrName);
|
|
59
70
|
return varying ? varying.location : -1;
|
|
60
71
|
}
|
|
61
72
|
|
|
62
|
-
getVaryingAccessor(locationOrName) {
|
|
73
|
+
getVaryingAccessor(locationOrName: number | string) {
|
|
63
74
|
const varying = this.getVaryingInfo(locationOrName);
|
|
64
75
|
return varying ? varying.accessor : null;
|
|
65
76
|
}
|
|
66
|
-
|
|
67
|
-
// PRIVATE METHODS
|
|
68
|
-
|
|
69
|
-
// linkProgram needs to have been called, although linking does not need to have been successful
|
|
70
|
-
_readAttributesFromProgram(program) {
|
|
71
|
-
const {gl} = program;
|
|
72
|
-
const count = gl.getProgramParameter(program.handle, gl.ACTIVE_ATTRIBUTES);
|
|
73
|
-
|
|
74
|
-
for (let index = 0; index < count; index++) {
|
|
75
|
-
const {name, type, size} = gl.getActiveAttrib(program.handle, index);
|
|
76
|
-
const location = gl.getAttribLocation(program.handle, name);
|
|
77
|
-
// Add only user provided attributes, for built-in attributes like
|
|
78
|
-
// `gl_InstanceID` locaiton will be < 0
|
|
79
|
-
if (location >= 0) {
|
|
80
|
-
this._addAttribute(location, name, type, size);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
this.attributeInfos.sort((a, b) => a.location - b.location);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// linkProgram needs to have been called, although linking does not need to have been successful
|
|
88
|
-
_readVaryingsFromProgram(program) {
|
|
89
|
-
const {gl} = program;
|
|
90
|
-
if (!isWebGL2(gl)) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const count = gl.getProgramParameter(program.handle, gl.TRANSFORM_FEEDBACK_VARYINGS);
|
|
95
|
-
for (let location = 0; location < count; location++) {
|
|
96
|
-
const {name, type, size} = gl.getTransformFeedbackVarying(program.handle, location);
|
|
97
|
-
this._addVarying(location, name, type, size);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
this.varyingInfos.sort((a, b) => a.location - b.location);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
_addAttribute(location, name, compositeType, size) {
|
|
104
|
-
const {type, components} = decomposeCompositeGLType(compositeType);
|
|
105
|
-
const accessor = {type, size: size * components};
|
|
106
|
-
this._inferProperties(location, name, accessor);
|
|
107
|
-
|
|
108
|
-
const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values
|
|
109
|
-
this.attributeInfos.push(attributeInfo);
|
|
110
|
-
this.attributeInfosByLocation[location] = attributeInfo; // For quick location based lookup
|
|
111
|
-
this.attributeInfosByName[attributeInfo.name] = attributeInfo; // For quick name based lookup
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// Extract additional attribute metadata from shader names (based on attribute naming conventions)
|
|
115
|
-
_inferProperties(location, name, accessor) {
|
|
116
|
-
if (/instance/i.test(name)) {
|
|
117
|
-
// Any attribute containing the word "instance" will be assumed to be instanced
|
|
118
|
-
accessor.divisor = 1;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
_addVarying(location, name, compositeType, size) {
|
|
123
|
-
const {type, components} = decomposeCompositeGLType(compositeType);
|
|
124
|
-
const accessor = new Accessor({type, size: size * components});
|
|
125
|
-
|
|
126
|
-
const varying = {location, name, accessor}; // Base values
|
|
127
|
-
this.varyingInfos.push(varying);
|
|
128
|
-
this.varyingInfosByName[varying.name] = varying; // For quick name based lookup
|
|
129
|
-
}
|
|
130
77
|
}
|