@luma.gl/webgl 8.5.7 → 8.6.0-alpha.1
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/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +5 -0
- package/dist/bundle.js.map +1 -0
- package/dist/classes/accessor.d.ts +28 -0
- package/dist/classes/accessor.d.ts.map +1 -0
- package/dist/classes/accessor.js +112 -0
- package/dist/classes/accessor.js.map +1 -0
- package/dist/classes/accessor.ts.disabled +159 -0
- package/dist/classes/clear.d.ts +16 -0
- package/dist/classes/clear.d.ts.map +1 -0
- package/dist/classes/clear.js +102 -0
- package/dist/classes/clear.js.map +1 -0
- package/dist/classes/copy-and-blit.d.ts +69 -0
- package/dist/classes/copy-and-blit.d.ts.map +1 -0
- package/dist/classes/copy-and-blit.js +333 -0
- package/dist/classes/copy-and-blit.js.map +1 -0
- package/dist/classes/framebuffer.d.ts +130 -0
- package/dist/classes/framebuffer.d.ts.map +1 -0
- package/dist/classes/framebuffer.js +656 -0
- package/dist/classes/framebuffer.js.map +1 -0
- package/dist/classes/program-configuration.d.ts +27 -0
- package/dist/classes/program-configuration.d.ts.map +1 -0
- package/dist/classes/program-configuration.js +160 -0
- package/dist/classes/program-configuration.js.map +1 -0
- package/dist/classes/program.d.ts +61 -0
- package/dist/classes/program.d.ts.map +1 -0
- package/dist/classes/program.js +368 -0
- package/dist/classes/program.js.map +1 -0
- package/dist/classes/query.d.ts +27 -0
- package/dist/classes/query.d.ts.map +1 -0
- package/dist/classes/query.js +144 -0
- package/dist/classes/query.js.map +1 -0
- package/dist/classes/renderbuffer-formats.d.ts +16 -0
- package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
- package/dist/classes/renderbuffer-formats.js +185 -0
- package/dist/classes/renderbuffer-formats.js.map +1 -0
- package/dist/classes/renderbuffer.d.ts +60 -0
- package/dist/classes/renderbuffer.d.ts.map +1 -0
- package/dist/classes/renderbuffer.js +127 -0
- package/dist/classes/renderbuffer.js.map +1 -0
- package/dist/classes/texture-2d.d.ts +8 -0
- package/dist/classes/texture-2d.d.ts.map +1 -0
- package/dist/classes/texture-2d.js +39 -0
- package/dist/classes/texture-2d.js.map +1 -0
- package/dist/classes/texture-3d.d.ts +28 -0
- package/dist/classes/texture-3d.d.ts.map +1 -0
- package/dist/classes/texture-3d.js +67 -0
- package/dist/classes/texture-3d.js.map +1 -0
- package/dist/classes/texture-cube.d.ts +27 -0
- package/dist/classes/texture-cube.d.ts.map +1 -0
- package/dist/classes/texture-cube.js +131 -0
- package/dist/classes/texture-cube.js.map +1 -0
- package/dist/classes/texture-formats.d.ts +37 -0
- package/dist/classes/texture-formats.d.ts.map +1 -0
- package/dist/classes/texture-formats.js +98 -0
- package/dist/classes/texture-formats.js.map +1 -0
- package/dist/classes/texture.d.ts +118 -0
- package/dist/classes/texture.d.ts.map +1 -0
- package/dist/classes/texture.js +785 -0
- package/dist/classes/texture.js.map +1 -0
- package/dist/classes/transform-feedback.d.ts +33 -0
- package/dist/classes/transform-feedback.d.ts.map +1 -0
- package/dist/classes/transform-feedback.js +197 -0
- package/dist/classes/transform-feedback.js.map +1 -0
- package/dist/classes/uniform-buffer-layout.d.ts +17 -0
- package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
- package/dist/classes/uniform-buffer-layout.js +104 -0
- package/dist/classes/uniform-buffer-layout.js.map +1 -0
- package/dist/classes/uniforms.d.ts +38 -0
- package/dist/classes/uniforms.d.ts.map +1 -0
- package/dist/classes/uniforms.js +251 -0
- package/dist/classes/uniforms.js.map +1 -0
- package/dist/classes/vertex-array-object.d.ts +75 -0
- package/dist/classes/vertex-array-object.d.ts.map +1 -0
- package/dist/classes/vertex-array-object.js +262 -0
- package/dist/classes/vertex-array-object.js.map +1 -0
- package/dist/classes/vertex-array.d.ts +75 -0
- package/dist/classes/vertex-array.d.ts.map +1 -0
- package/dist/classes/vertex-array.js +409 -0
- package/dist/classes/vertex-array.js.map +1 -0
- package/dist/classes/webgl-buffer.d.ts +98 -0
- package/dist/classes/webgl-buffer.d.ts.map +1 -0
- package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +97 -73
- package/dist/classes/webgl-buffer.js.map +1 -0
- package/dist/classes/webgl-resource.d.ts +54 -0
- package/dist/classes/webgl-resource.d.ts.map +1 -0
- package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +31 -52
- package/dist/classes/webgl-resource.js.map +1 -0
- package/dist/classes/webgl-shader.d.ts +51 -0
- package/dist/classes/webgl-shader.d.ts.map +1 -0
- package/dist/classes/webgl-shader.js +190 -0
- package/dist/classes/webgl-shader.js.map +1 -0
- package/dist/context/gl-context.d.ts +15 -0
- package/dist/context/gl-context.d.ts.map +1 -0
- package/dist/context/gl-context.js +32 -0
- package/dist/context/gl-context.js.map +1 -0
- package/dist/context/luma-context-data.d.ts +31 -0
- package/dist/context/luma-context-data.d.ts.map +1 -0
- package/dist/context/luma-context-data.js +5 -0
- package/dist/context/luma-context-data.js.map +1 -0
- package/dist/debug/debug-program-configuration.d.ts +2 -0
- package/dist/debug/debug-program-configuration.d.ts.map +1 -0
- package/dist/debug/debug-program-configuration.js +40 -0
- package/dist/debug/debug-program-configuration.js.map +1 -0
- package/dist/debug/debug-uniforms.d.ts +12 -0
- package/dist/debug/debug-uniforms.d.ts.map +1 -0
- package/dist/debug/debug-uniforms.js +108 -0
- package/dist/debug/debug-uniforms.js.map +1 -0
- package/dist/debug/debug-vertex-array.d.ts +5 -0
- package/dist/debug/debug-vertex-array.d.ts.map +1 -0
- package/dist/debug/debug-vertex-array.js +118 -0
- package/dist/debug/debug-vertex-array.js.map +1 -0
- package/dist/es5/bundle.js +3 -5
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/classes/accessor.js +76 -108
- package/dist/es5/classes/accessor.js.map +1 -1
- package/dist/es5/classes/accessor.ts.disabled +159 -0
- package/dist/es5/classes/clear.js +33 -48
- package/dist/es5/classes/clear.js.map +1 -1
- package/dist/es5/classes/copy-and-blit.js +177 -192
- package/dist/es5/classes/copy-and-blit.js.map +1 -1
- package/dist/es5/classes/framebuffer.js +538 -655
- package/dist/es5/classes/framebuffer.js.map +1 -1
- package/dist/es5/classes/program-configuration.js +127 -141
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +294 -358
- package/dist/es5/classes/program.js.map +1 -1
- package/dist/es5/classes/query.js +115 -181
- package/dist/es5/classes/query.js.map +1 -1
- package/dist/es5/classes/renderbuffer-formats.js +186 -121
- package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
- package/dist/es5/classes/renderbuffer.js +104 -128
- package/dist/es5/classes/renderbuffer.js.map +1 -1
- package/dist/es5/classes/texture-2d.js +16 -39
- package/dist/es5/classes/texture-2d.js.map +1 -1
- package/dist/es5/classes/texture-3d.js +50 -89
- package/dist/es5/classes/texture-3d.js.map +1 -1
- package/dist/es5/classes/texture-cube.js +112 -162
- package/dist/es5/classes/texture-cube.js.map +1 -1
- package/dist/es5/classes/texture-formats.js +73 -42
- package/dist/es5/classes/texture-formats.js.map +1 -1
- package/dist/es5/classes/texture.js +670 -673
- package/dist/es5/classes/texture.js.map +1 -1
- package/dist/es5/classes/transform-feedback.js +150 -203
- package/dist/es5/classes/transform-feedback.js.map +1 -1
- package/dist/es5/classes/uniform-buffer-layout.js +89 -103
- package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/es5/classes/uniforms.js +134 -93
- package/dist/es5/classes/uniforms.js.map +1 -1
- package/dist/es5/classes/vertex-array-object.js +204 -306
- package/dist/es5/classes/vertex-array-object.js.map +1 -1
- package/dist/es5/classes/vertex-array.js +317 -353
- package/dist/es5/classes/vertex-array.js.map +1 -1
- package/dist/es5/classes/webgl-buffer.js +391 -0
- package/dist/es5/classes/webgl-buffer.js.map +1 -0
- package/dist/es5/classes/webgl-resource.js +217 -0
- package/dist/es5/classes/webgl-resource.js.map +1 -0
- package/dist/es5/classes/webgl-shader.js +213 -0
- package/dist/es5/classes/webgl-shader.js.map +1 -0
- package/dist/es5/context/gl-context.js +46 -0
- package/dist/es5/context/gl-context.js.map +1 -0
- package/dist/es5/context/luma-context-data.js +12 -0
- package/dist/es5/context/luma-context-data.js.map +1 -0
- package/dist/es5/debug/debug-program-configuration.js +20 -48
- package/dist/es5/debug/debug-program-configuration.js.map +1 -1
- package/dist/es5/debug/debug-uniforms.js +72 -114
- package/dist/es5/debug/debug-uniforms.js.map +1 -1
- package/dist/es5/debug/debug-vertex-array.js +56 -51
- package/dist/es5/debug/debug-vertex-array.js.map +1 -1
- package/dist/es5/features/check-glsl-extension.js +9 -10
- package/dist/es5/features/check-glsl-extension.js.map +1 -1
- package/dist/es5/features/check-old-ie.js +5 -6
- package/dist/es5/features/check-old-ie.js.map +1 -1
- package/dist/es5/features/features.js +23 -37
- package/dist/es5/features/features.js.map +1 -1
- package/dist/es5/features/index.js +8 -8
- package/dist/es5/features/index.js.map +1 -1
- package/dist/es5/features/limits.js +36 -28
- package/dist/es5/features/limits.js.map +1 -1
- package/dist/es5/features/webgl-features-table.js +35 -15
- package/dist/es5/features/webgl-features-table.js.map +1 -1
- package/dist/es5/features/webgl-limits-table.js +160 -120
- package/dist/es5/features/webgl-limits-table.js.map +1 -1
- package/dist/es5/index.js +144 -90
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +12 -36
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/types.js +2 -0
- package/dist/es5/types.js.map +1 -0
- package/dist/es5/utils/array-utils-flat.js +13 -14
- package/dist/es5/utils/array-utils-flat.js.map +1 -1
- package/dist/es5/utils/assert.js +1 -1
- package/dist/es5/utils/assert.js.map +1 -1
- package/dist/es5/utils/check-props.js +20 -21
- package/dist/es5/utils/check-props.js.map +1 -1
- package/dist/es5/utils/format-value.js +14 -14
- package/dist/es5/utils/format-value.js.map +1 -1
- package/dist/es5/utils/index.js +68 -0
- package/dist/es5/utils/index.js.map +1 -0
- package/dist/es5/utils/is-old-ie.js +2 -3
- package/dist/es5/utils/is-old-ie.js.map +1 -1
- package/dist/es5/utils/load-file.js +11 -18
- package/dist/es5/utils/load-file.js.map +1 -1
- package/dist/es5/utils/stub-methods.js +4 -4
- package/dist/es5/utils/stub-methods.js.map +1 -1
- package/dist/es5/utils/utils.js +5 -10
- package/dist/es5/utils/utils.js.map +1 -1
- package/dist/es5/webgl-utils/attribute-utils.js +87 -74
- 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 +21 -17
- 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 +74 -0
- package/dist/es5/webgl-utils/index.js.map +1 -0
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js +44 -0
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
- package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/es5/webgl-utils/texture-utils.js +35 -29
- package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
- package/dist/es5/webgl-utils/typed-array-utils.js +51 -47
- package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
- package/dist/esm/bundle.js +2 -4
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/classes/accessor.js +7 -7
- package/dist/esm/classes/accessor.js.map +1 -1
- package/dist/esm/classes/accessor.ts.disabled +159 -0
- package/dist/esm/classes/clear.js +15 -13
- package/dist/esm/classes/clear.js.map +1 -1
- package/dist/esm/classes/copy-and-blit.js +41 -43
- package/dist/esm/classes/copy-and-blit.js.map +1 -1
- package/dist/esm/classes/framebuffer.js +336 -308
- package/dist/esm/classes/framebuffer.js.map +1 -1
- package/dist/esm/classes/program-configuration.js +17 -9
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +69 -44
- package/dist/esm/classes/program.js.map +1 -1
- package/dist/esm/classes/query.js +17 -14
- package/dist/esm/classes/query.js.map +1 -1
- package/dist/esm/classes/renderbuffer-formats.js +72 -49
- package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
- package/dist/esm/classes/renderbuffer.js +84 -72
- package/dist/esm/classes/renderbuffer.js.map +1 -1
- package/dist/esm/classes/texture-2d.js +10 -3
- package/dist/esm/classes/texture-2d.js.map +1 -1
- package/dist/esm/classes/texture-3d.js +14 -11
- package/dist/esm/classes/texture-3d.js.map +1 -1
- package/dist/esm/classes/texture-cube.js +43 -28
- package/dist/esm/classes/texture-cube.js.map +1 -1
- package/dist/esm/classes/texture-formats.js +51 -50
- package/dist/esm/classes/texture-formats.js.map +1 -1
- package/dist/esm/classes/texture.js +164 -49
- package/dist/esm/classes/texture.js.map +1 -1
- package/dist/esm/classes/transform-feedback.js +24 -13
- package/dist/esm/classes/transform-feedback.js.map +1 -1
- package/dist/esm/classes/uniform-buffer-layout.js +1 -1
- package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/esm/classes/uniforms.js +111 -112
- package/dist/esm/classes/uniforms.js.map +1 -1
- package/dist/esm/classes/vertex-array-object.js +52 -88
- package/dist/esm/classes/vertex-array-object.js.map +1 -1
- package/dist/esm/classes/vertex-array.js +50 -28
- package/dist/esm/classes/vertex-array.js.map +1 -1
- package/dist/esm/classes/webgl-buffer.js +379 -0
- package/dist/esm/classes/webgl-buffer.js.map +1 -0
- package/dist/esm/classes/webgl-resource.js +208 -0
- package/dist/esm/classes/webgl-resource.js.map +1 -0
- package/dist/esm/classes/webgl-shader.js +190 -0
- package/dist/esm/classes/webgl-shader.js.map +1 -0
- package/dist/esm/context/gl-context.js +32 -0
- package/dist/esm/context/gl-context.js.map +1 -0
- package/dist/esm/context/luma-context-data.js +5 -0
- package/dist/esm/context/luma-context-data.js.map +1 -0
- package/dist/esm/debug/debug-program-configuration.js +4 -4
- package/dist/esm/debug/debug-program-configuration.js.map +1 -1
- package/dist/esm/debug/debug-uniforms.js +9 -9
- package/dist/esm/debug/debug-uniforms.js.map +1 -1
- package/dist/esm/debug/debug-vertex-array.js +19 -17
- package/dist/esm/debug/debug-vertex-array.js.map +1 -1
- package/dist/esm/features/check-glsl-extension.js +4 -4
- package/dist/esm/features/check-glsl-extension.js.map +1 -1
- package/dist/esm/features/check-old-ie.js.map +1 -1
- package/dist/esm/features/features.js +14 -13
- package/dist/esm/features/features.js.map +1 -1
- package/dist/esm/features/index.js.map +1 -1
- package/dist/esm/features/limits.js +25 -22
- package/dist/esm/features/limits.js.map +1 -1
- package/dist/esm/features/webgl-features-table.js +6 -6
- package/dist/esm/features/webgl-features-table.js.map +1 -1
- package/dist/esm/features/webgl-limits-table.js +43 -42
- package/dist/esm/features/webgl-limits-table.js.map +1 -1
- package/dist/esm/index.js +13 -15
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +4 -23
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/array-utils-flat.js.map +1 -1
- package/dist/esm/utils/assert.js +1 -1
- package/dist/esm/utils/assert.js.map +1 -1
- package/dist/esm/utils/check-props.js +4 -4
- package/dist/esm/utils/check-props.js.map +1 -1
- package/dist/esm/utils/format-value.js +4 -4
- package/dist/esm/utils/format-value.js.map +1 -1
- package/dist/esm/utils/index.js +7 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/is-old-ie.js +1 -1
- package/dist/esm/utils/is-old-ie.js.map +1 -1
- package/dist/esm/utils/load-file.js +2 -2
- package/dist/esm/utils/load-file.js.map +1 -1
- package/dist/esm/utils/stub-methods.js +2 -3
- package/dist/esm/utils/stub-methods.js.map +1 -1
- package/dist/esm/utils/utils.js +1 -3
- package/dist/esm/utils/utils.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 +4 -4
- package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/esm/webgl-utils/format-utils.js +16 -15
- package/dist/esm/webgl-utils/format-utils.js.map +1 -1
- package/dist/esm/webgl-utils/get-error.js +1 -1
- package/dist/esm/webgl-utils/get-error.js.map +1 -1
- package/dist/esm/webgl-utils/index.js +5 -0
- package/dist/esm/webgl-utils/index.js.map +1 -0
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
- package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/esm/webgl-utils/texture-utils.js +4 -3
- package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
- package/dist/esm/webgl-utils/typed-array-utils.js +19 -18
- package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
- package/dist/features/check-glsl-extension.d.ts +2 -0
- package/dist/features/check-glsl-extension.d.ts.map +1 -0
- package/dist/features/check-glsl-extension.js +27 -0
- package/dist/features/check-glsl-extension.js.map +1 -0
- package/dist/features/check-old-ie.d.ts +2 -0
- package/dist/features/check-old-ie.d.ts.map +1 -0
- package/dist/features/check-old-ie.js +8 -0
- package/dist/features/check-old-ie.js.map +1 -0
- package/dist/features/features.d.ts +6 -0
- package/dist/features/features.d.ts.map +1 -0
- package/dist/features/features.js +67 -0
- package/dist/features/features.js.map +1 -0
- package/dist/features/index.d.ts +5 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +5 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/limits.d.ts +28 -0
- package/dist/features/limits.d.ts.map +1 -0
- package/dist/features/limits.js +55 -0
- package/dist/features/limits.js.map +1 -0
- package/dist/features/webgl-features-table.d.ts +30 -0
- package/dist/features/webgl-features-table.d.ts.map +1 -0
- package/dist/features/webgl-features-table.js +71 -0
- package/dist/features/webgl-features-table.js.map +1 -0
- package/dist/features/webgl-limits-table.d.ts +161 -0
- package/dist/features/webgl-limits-table.d.ts.map +1 -0
- package/dist/features/webgl-limits-table.js +161 -0
- package/dist/features/webgl-limits-table.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +5 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +30 -0
- package/dist/init.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/array-utils-flat.d.ts +9 -0
- package/dist/utils/array-utils-flat.d.ts.map +1 -0
- package/dist/utils/array-utils-flat.js +39 -0
- package/dist/utils/array-utils-flat.js.map +1 -0
- package/dist/utils/assert.d.ts +2 -0
- package/dist/utils/assert.d.ts.map +1 -0
- package/dist/utils/assert.js +6 -0
- package/dist/utils/assert.js.map +1 -0
- package/dist/utils/check-props.d.ts +2 -0
- package/dist/utils/check-props.d.ts.map +1 -0
- package/dist/utils/check-props.js +38 -0
- package/dist/utils/check-props.js.map +1 -0
- package/dist/utils/format-value.d.ts +5 -0
- package/dist/utils/format-value.d.ts.map +1 -0
- package/dist/utils/format-value.js +50 -0
- package/dist/utils/format-value.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/is-old-ie.d.ts +4 -0
- package/dist/utils/is-old-ie.d.ts.map +1 -0
- package/dist/utils/is-old-ie.js +5 -0
- package/dist/utils/is-old-ie.js.map +1 -0
- package/dist/utils/load-file.d.ts +4 -0
- package/dist/utils/load-file.d.ts.map +1 -0
- package/dist/utils/load-file.js +30 -0
- package/dist/utils/load-file.js.map +1 -0
- package/dist/utils/stub-methods.d.ts +2 -0
- package/dist/utils/stub-methods.d.ts.map +1 -0
- package/dist/utils/stub-methods.js +16 -0
- package/dist/utils/stub-methods.js.map +1 -0
- package/dist/utils/utils.d.ts +15 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +20 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/webgl-utils/attribute-utils.d.ts +18 -0
- package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
- package/dist/webgl-utils/attribute-utils.js +182 -0
- package/dist/webgl-utils/attribute-utils.js.map +1 -0
- package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
- package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
- package/dist/webgl-utils/constants-to-keys.js +41 -0
- package/dist/webgl-utils/constants-to-keys.js.map +1 -0
- package/dist/webgl-utils/format-utils.d.ts +3 -0
- package/dist/webgl-utils/format-utils.d.ts.map +1 -0
- package/dist/webgl-utils/format-utils.js +45 -0
- package/dist/webgl-utils/format-utils.js.map +1 -0
- package/dist/webgl-utils/get-error.d.ts +3 -0
- package/dist/webgl-utils/get-error.d.ts.map +1 -0
- package/dist/webgl-utils/get-error.js +41 -0
- package/dist/webgl-utils/get-error.js.map +1 -0
- package/dist/webgl-utils/index.d.ts +5 -0
- package/dist/webgl-utils/index.d.ts.map +1 -0
- package/dist/webgl-utils/index.js +5 -0
- package/dist/webgl-utils/index.js.map +1 -0
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
- package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
- package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
- package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
- package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
- package/dist/webgl-utils/request-animation-frame.js +7 -0
- package/dist/webgl-utils/request-animation-frame.js.map +1 -0
- package/dist/webgl-utils/texture-utils.d.ts +11 -0
- package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
- package/dist/webgl-utils/texture-utils.js +48 -0
- package/dist/webgl-utils/texture-utils.js.map +1 -0
- package/dist/webgl-utils/typed-array-utils.d.ts +36 -0
- package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
- package/dist/webgl-utils/typed-array-utils.js +108 -0
- package/dist/webgl-utils/typed-array-utils.js.map +1 -0
- package/package.json +9 -8
- package/src/bundle.ts +4 -0
- package/src/classes/accessor.js +3 -4
- package/src/classes/accessor.ts.disabled +159 -0
- package/src/classes/{clear.js → clear.ts} +13 -9
- package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +113 -22
- package/src/classes/{framebuffer.js → framebuffer.ts} +355 -298
- package/src/classes/{program-configuration.js → program-configuration.ts} +18 -11
- package/src/classes/{program.js → program.ts} +56 -36
- package/src/classes/{query.js → query.ts} +28 -22
- package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
- package/src/classes/renderbuffer.ts +153 -0
- package/src/classes/{texture-2d.js → texture-2d.ts} +15 -5
- package/src/classes/{texture-3d.js → texture-3d.ts} +35 -10
- package/src/classes/{texture-cube.js → texture-cube.ts} +46 -28
- package/src/classes/{texture-formats.js → texture-formats.ts} +9 -1
- package/src/classes/{texture.js → texture.ts} +204 -37
- package/src/classes/{transform-feedback.js → transform-feedback.ts} +22 -14
- package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
- package/src/classes/{uniforms.js → uniforms.ts} +122 -70
- package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +132 -107
- package/src/classes/{vertex-array.js → vertex-array.ts} +74 -54
- package/src/classes/{buffer.js → webgl-buffer.ts} +125 -51
- package/src/classes/{resource.js → webgl-resource.ts} +43 -36
- package/src/classes/webgl-shader.ts +200 -0
- package/src/context/gl-context.ts +31 -0
- package/src/context/luma-context-data.ts +27 -0
- package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
- package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
- package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +7 -4
- package/src/features/{check-glsl-extension.js → check-glsl-extension.ts} +1 -1
- package/src/features/{check-old-ie.js → check-old-ie.ts} +0 -0
- package/src/features/{features.js → features.ts} +14 -13
- package/src/features/{index.js → index.ts} +0 -0
- package/src/features/{limits.js → limits.ts} +18 -17
- package/src/features/{webgl-features-table.js → webgl-features-table.ts} +0 -0
- package/src/features/{webgl-limits-table.js → webgl-limits-table.ts} +0 -0
- package/{dist/es5/index.d.ts → src/index.ts} +18 -16
- package/src/{init.js → init.ts} +1 -18
- package/{dist/es5/types.d.ts → src/types.ts} +0 -0
- package/src/utils/{array-utils-flat.js → array-utils-flat.ts} +0 -0
- package/src/utils/{assert.js → assert.ts} +1 -1
- package/src/utils/{check-props.js → check-props.ts} +0 -0
- package/src/utils/{format-value.js → format-value.ts} +2 -2
- package/src/utils/index.ts +6 -0
- package/src/utils/{is-old-ie.js → is-old-ie.ts} +1 -1
- package/src/utils/{load-file.js → load-file.ts} +3 -2
- package/src/utils/{stub-methods.js → stub-methods.ts} +1 -1
- package/src/utils/utils.ts +35 -0
- package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
- package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
- package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
- package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
- package/src/webgl-utils/index.ts +12 -0
- package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
- package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
- package/src/webgl-utils/texture-utils.js +2 -1
- package/dist/dist.js +0 -13555
- package/dist/dist.min.js +0 -1
- package/dist/es5/classes/buffer.d.ts +0 -84
- package/dist/es5/classes/buffer.js +0 -453
- package/dist/es5/classes/buffer.js.map +0 -1
- package/dist/es5/classes/clear.d.ts +0 -11
- package/dist/es5/classes/copy-and-blit.d.ts +0 -101
- package/dist/es5/classes/framebuffer.d.ts +0 -96
- package/dist/es5/classes/program-configuration.d.ts +0 -15
- package/dist/es5/classes/program.d.ts +0 -44
- package/dist/es5/classes/query.d.ts +0 -21
- package/dist/es5/classes/renderbuffer.d.ts +0 -34
- package/dist/es5/classes/resource.d.ts +0 -47
- package/dist/es5/classes/resource.js +0 -308
- package/dist/es5/classes/resource.js.map +0 -1
- package/dist/es5/classes/shader.d.ts +0 -29
- package/dist/es5/classes/shader.js +0 -221
- package/dist/es5/classes/shader.js.map +0 -1
- package/dist/es5/classes/texture-2d.d.ts +0 -11
- package/dist/es5/classes/texture-3d.d.ts +0 -29
- package/dist/es5/classes/texture-cube.d.ts +0 -23
- package/dist/es5/classes/texture.d.ts +0 -80
- package/dist/es5/classes/transform-feedback.d.ts +0 -16
- package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
- package/dist/es5/classes/uniforms.d.ts +0 -63
- package/dist/es5/classes/vertex-array-object.d.ts +0 -25
- package/dist/es5/classes/vertex-array.d.ts +0 -37
- package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
- package/dist/es5/debug/debug-uniforms.d.ts +0 -11
- package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
- package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
- package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
- package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
- package/dist/es5/glsl-utils/get-shader-name.js +0 -14
- package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
- package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
- package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
- package/dist/es5/glsl-utils/get-shader-version.js +0 -22
- package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
- package/dist/es5/glsl-utils/index.js +0 -48
- package/dist/es5/glsl-utils/index.js.map +0 -1
- package/dist/es5/init.d.ts +0 -12
- package/dist/es5/utils/assert.d.ts +0 -1
- package/dist/es5/utils/is-old-ie.d.ts +0 -1
- package/dist/es5/utils/utils.d.ts +0 -13
- package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
- package/dist/esm/classes/buffer.d.ts +0 -84
- package/dist/esm/classes/buffer.js.map +0 -1
- package/dist/esm/classes/clear.d.ts +0 -11
- package/dist/esm/classes/copy-and-blit.d.ts +0 -101
- package/dist/esm/classes/framebuffer.d.ts +0 -96
- package/dist/esm/classes/program-configuration.d.ts +0 -15
- package/dist/esm/classes/program.d.ts +0 -44
- package/dist/esm/classes/query.d.ts +0 -21
- package/dist/esm/classes/renderbuffer.d.ts +0 -34
- package/dist/esm/classes/resource.d.ts +0 -47
- package/dist/esm/classes/resource.js.map +0 -1
- package/dist/esm/classes/shader.d.ts +0 -29
- package/dist/esm/classes/shader.js +0 -138
- package/dist/esm/classes/shader.js.map +0 -1
- package/dist/esm/classes/texture-2d.d.ts +0 -11
- package/dist/esm/classes/texture-3d.d.ts +0 -29
- package/dist/esm/classes/texture-cube.d.ts +0 -23
- package/dist/esm/classes/texture.d.ts +0 -80
- package/dist/esm/classes/transform-feedback.d.ts +0 -16
- package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
- package/dist/esm/classes/uniforms.d.ts +0 -63
- package/dist/esm/classes/vertex-array-object.d.ts +0 -25
- package/dist/esm/classes/vertex-array.d.ts +0 -37
- package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
- package/dist/esm/debug/debug-uniforms.d.ts +0 -11
- package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
- package/dist/esm/glsl-utils/format-glsl-error.d.ts +0 -16
- package/dist/esm/glsl-utils/format-glsl-error.js +0 -93
- package/dist/esm/glsl-utils/format-glsl-error.js.map +0 -1
- package/dist/esm/glsl-utils/get-shader-name.js +0 -6
- package/dist/esm/glsl-utils/get-shader-name.js.map +0 -1
- package/dist/esm/glsl-utils/get-shader-type-name.js +0 -15
- package/dist/esm/glsl-utils/get-shader-type-name.js.map +0 -1
- package/dist/esm/glsl-utils/get-shader-version.js +0 -15
- package/dist/esm/glsl-utils/get-shader-version.js.map +0 -1
- package/dist/esm/glsl-utils/index.js +0 -5
- package/dist/esm/glsl-utils/index.js.map +0 -1
- package/dist/esm/index.d.ts +0 -71
- package/dist/esm/init.d.ts +0 -12
- package/dist/esm/types.d.ts +0 -8
- package/dist/esm/utils/assert.d.ts +0 -1
- package/dist/esm/utils/is-old-ie.d.ts +0 -1
- package/dist/esm/utils/utils.d.ts +0 -13
- package/dist/esm/webgl-utils/request-animation-frame.d.ts +0 -3
- package/src/bundle.js +0 -8
- package/src/classes/buffer.d.ts +0 -84
- package/src/classes/clear.d.ts +0 -11
- package/src/classes/copy-and-blit.d.ts +0 -101
- package/src/classes/framebuffer.d.ts +0 -96
- package/src/classes/program-configuration.d.ts +0 -15
- package/src/classes/program.d.ts +0 -44
- package/src/classes/query.d.ts +0 -21
- package/src/classes/renderbuffer.d.ts +0 -34
- package/src/classes/renderbuffer.js +0 -105
- package/src/classes/resource.d.ts +0 -47
- package/src/classes/shader.d.ts +0 -29
- package/src/classes/shader.js +0 -147
- package/src/classes/texture-2d.d.ts +0 -11
- package/src/classes/texture-3d.d.ts +0 -29
- package/src/classes/texture-cube.d.ts +0 -23
- package/src/classes/texture.d.ts +0 -80
- package/src/classes/transform-feedback.d.ts +0 -16
- package/src/classes/uniform-buffer-layout.d.ts +0 -18
- package/src/classes/uniforms.d.ts +0 -63
- package/src/classes/vertex-array-object.d.ts +0 -25
- package/src/classes/vertex-array.d.ts +0 -37
- package/src/debug/debug-program-configuration.d.ts +0 -1
- package/src/debug/debug-uniforms.d.ts +0 -11
- package/src/debug/debug-vertex-array.d.ts +0 -1
- package/src/glsl-utils/format-glsl-error.d.ts +0 -16
- package/src/glsl-utils/format-glsl-error.js +0 -107
- package/src/glsl-utils/get-shader-name.js +0 -7
- package/src/glsl-utils/get-shader-type-name.js +0 -13
- package/src/glsl-utils/get-shader-version.js +0 -12
- package/src/glsl-utils/index.js +0 -8
- package/src/index.d.ts +0 -71
- package/src/index.js +0 -70
- package/src/init.d.ts +0 -12
- package/src/types.d.ts +0 -8
- package/src/utils/assert.d.ts +0 -1
- package/src/utils/is-old-ie.d.ts +0 -1
- package/src/utils/utils.d.ts +0 -13
- package/src/utils/utils.js +0 -36
- package/src/webgl-utils/request-animation-frame.d.ts +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/clear.
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/clear.ts"],"names":["assertWebGL2Context","withParameters","assert","GL_DEPTH_BUFFER_BIT","GL_STENCIL_BUFFER_BIT","GL_COLOR_BUFFER_BIT","GL_COLOR","GL_DEPTH","GL_STENCIL","GL_DEPTH_STENCIL","ERR_ARGUMENTS","clear","gl","options","framebuffer","color","depth","stencil","parameters","clearFlags","clearColor","clearDepth","clearStencil","clearBuffer","buffer","drawBuffer","value","constructor","Int32Array","clearBufferiv","Uint32Array","clearBufferuiv","Float32Array","clearBufferfv","clearBufferfi"],"mappings":"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","sourcesContent":["import {assertWebGL2Context, withParameters} from '@luma.gl/gltools';\nimport {assert} from '../utils';\nimport Framebuffer from './framebuffer';\n\n// Should collapse during minification\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\n\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\n\n// Should disappear if asserts are removed\nconst ERR_ARGUMENTS = 'clear: bad arguments';\n\n/** Optionally clears depth, color and stencil buffers */\nexport function clear(\n gl: WebGLRenderingContext,\n options?: {framebuffer?: Framebuffer; color?: any; depth?: any; stencil?: any}\n): void {\n const {framebuffer = null, color = null, depth = null, stencil = null} = options || {};\n const parameters: any = {};\n\n if (framebuffer) {\n parameters.framebuffer = framebuffer;\n }\n\n let clearFlags = 0;\n\n if (color) {\n clearFlags |= GL_COLOR_BUFFER_BIT;\n if (color !== true) {\n parameters.clearColor = color;\n }\n }\n\n if (depth) {\n clearFlags |= GL_DEPTH_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearDepth = depth;\n }\n }\n\n if (stencil) {\n clearFlags |= GL_STENCIL_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearStencil = depth;\n }\n }\n\n assert(clearFlags !== 0, ERR_ARGUMENTS);\n\n // Temporarily set any clear \"colors\" and call clear\n withParameters(gl, parameters, () => {\n gl.clear(clearFlags);\n });\n}\n\n/** WebGL2 - clear a specific drawing buffer */\nexport function clearBuffer(\n gl: any,\n options?: {framebuffer?: Framebuffer; buffer?: any; drawBuffer?: any; value?: any}\n) {\n assertWebGL2Context(gl);\n\n const {framebuffer = null, buffer = GL_COLOR, drawBuffer = 0, value = [0, 0, 0, 0]} = options || {};\n withParameters(gl, {framebuffer}, () => {\n // Method selection per OpenGL ES 3 docs\n switch (buffer) {\n case GL_COLOR:\n switch (value.constructor) {\n case Int32Array:\n gl.clearBufferiv(buffer, drawBuffer, value);\n break;\n case Uint32Array:\n gl.clearBufferuiv(buffer, drawBuffer, value);\n break;\n case Float32Array:\n default:\n gl.clearBufferfv(buffer, drawBuffer, value);\n }\n break;\n\n case GL_DEPTH:\n gl.clearBufferfv(GL_DEPTH, 0, [value]);\n break;\n\n case GL_STENCIL:\n gl.clearBufferiv(GL_STENCIL, 0, [value]);\n break;\n\n case GL_DEPTH_STENCIL:\n const [depth, stencil] = value;\n gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n break;\n\n default:\n assert(false, ERR_ARGUMENTS);\n }\n });\n}\n"],"file":"clear.js"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import
|
|
1
|
+
import GL from '@luma.gl/constants';
|
|
2
|
+
import Buffer from './webgl-buffer';
|
|
2
3
|
import Framebuffer from './framebuffer';
|
|
3
4
|
import Texture from './texture';
|
|
4
5
|
import { assertWebGL2Context, withParameters, log } from '@luma.gl/gltools';
|
|
5
|
-
import { flipRows, scalePixels } from '../webgl-utils
|
|
6
|
+
import { flipRows, scalePixels } from '../webgl-utils';
|
|
6
7
|
import { getTypedArrayFromGLType, getGLTypeFromTypedArray } from '../webgl-utils/typed-array-utils';
|
|
7
8
|
import { glFormatToComponents, glTypeToBytes } from '../webgl-utils/format-utils';
|
|
8
9
|
import { toFramebuffer } from '../webgl-utils/texture-utils';
|
|
9
|
-
import { assert } from '../utils
|
|
10
|
+
import { assert } from '../utils';
|
|
10
11
|
export function readPixelsToArray(source, options = {}) {
|
|
11
12
|
const {
|
|
12
13
|
sourceX = 0,
|
|
13
14
|
sourceY = 0,
|
|
14
|
-
sourceFormat =
|
|
15
|
+
sourceFormat = GL.RGBA
|
|
15
16
|
} = options;
|
|
16
17
|
let {
|
|
17
|
-
sourceAttachment =
|
|
18
|
+
sourceAttachment = GL.COLOR_ATTACHMENT0,
|
|
18
19
|
target = null,
|
|
19
20
|
sourceWidth,
|
|
20
21
|
sourceHeight,
|
|
@@ -33,17 +34,17 @@ export function readPixelsToArray(source, options = {}) {
|
|
|
33
34
|
sourceWidth = sourceWidth || framebuffer.width;
|
|
34
35
|
sourceHeight = sourceHeight || framebuffer.height;
|
|
35
36
|
|
|
36
|
-
if (sourceAttachment ===
|
|
37
|
-
sourceAttachment =
|
|
37
|
+
if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {
|
|
38
|
+
sourceAttachment = GL.FRONT;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
assert(attachments[sourceAttachment]);
|
|
41
42
|
sourceType = sourceType || attachments[sourceAttachment].type;
|
|
42
43
|
target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);
|
|
43
44
|
sourceType = sourceType || getGLTypeFromTypedArray(target);
|
|
44
|
-
const prevHandle = gl.bindFramebuffer(
|
|
45
|
+
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
|
|
45
46
|
gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);
|
|
46
|
-
gl.bindFramebuffer(
|
|
47
|
+
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
47
48
|
|
|
48
49
|
if (deleteFramebuffer) {
|
|
49
50
|
framebuffer.delete();
|
|
@@ -54,7 +55,7 @@ export function readPixelsToArray(source, options = {}) {
|
|
|
54
55
|
export function readPixelsToBuffer(source, {
|
|
55
56
|
sourceX = 0,
|
|
56
57
|
sourceY = 0,
|
|
57
|
-
sourceFormat =
|
|
58
|
+
sourceFormat = GL.RGBA,
|
|
58
59
|
target = null,
|
|
59
60
|
targetByteOffset = 0,
|
|
60
61
|
sourceWidth,
|
|
@@ -69,7 +70,7 @@ export function readPixelsToBuffer(source, {
|
|
|
69
70
|
sourceWidth = sourceWidth || framebuffer.width;
|
|
70
71
|
sourceHeight = sourceHeight || framebuffer.height;
|
|
71
72
|
const gl2 = assertWebGL2Context(framebuffer.gl);
|
|
72
|
-
sourceType = sourceType || (target ? target.type :
|
|
73
|
+
sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);
|
|
73
74
|
|
|
74
75
|
if (!target) {
|
|
75
76
|
const components = glFormatToComponents(sourceFormat);
|
|
@@ -85,7 +86,7 @@ export function readPixelsToBuffer(source, {
|
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
target.bind({
|
|
88
|
-
target:
|
|
89
|
+
target: GL.PIXEL_PACK_BUFFER
|
|
89
90
|
});
|
|
90
91
|
withParameters(gl2, {
|
|
91
92
|
framebuffer
|
|
@@ -93,7 +94,7 @@ export function readPixelsToBuffer(source, {
|
|
|
93
94
|
gl2.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, targetByteOffset);
|
|
94
95
|
});
|
|
95
96
|
target.unbind({
|
|
96
|
-
target:
|
|
97
|
+
target: GL.PIXEL_PACK_BUFFER
|
|
97
98
|
});
|
|
98
99
|
|
|
99
100
|
if (deleteFramebuffer) {
|
|
@@ -103,7 +104,7 @@ export function readPixelsToBuffer(source, {
|
|
|
103
104
|
return target;
|
|
104
105
|
}
|
|
105
106
|
export function copyToDataUrl(source, {
|
|
106
|
-
sourceAttachment =
|
|
107
|
+
sourceAttachment = GL.COLOR_ATTACHMENT0,
|
|
107
108
|
targetMaxHeight = Number.MAX_SAFE_INTEGER
|
|
108
109
|
} = {}) {
|
|
109
110
|
let data = readPixelsToArray(source, {
|
|
@@ -140,23 +141,20 @@ export function copyToDataUrl(source, {
|
|
|
140
141
|
context.putImageData(imageData, 0, 0);
|
|
141
142
|
return canvas.toDataURL();
|
|
142
143
|
}
|
|
143
|
-
export function copyToImage(source, {
|
|
144
|
-
sourceAttachment = 36064,
|
|
145
|
-
targetImage = null
|
|
146
|
-
} = {}) {
|
|
144
|
+
export function copyToImage(source, options) {
|
|
147
145
|
const dataUrl = copyToDataUrl(source, {
|
|
148
|
-
sourceAttachment
|
|
146
|
+
sourceAttachment: (options === null || options === void 0 ? void 0 : options.sourceAttachment) || GL.COLOR_ATTACHMENT0
|
|
149
147
|
});
|
|
150
|
-
targetImage = targetImage || new Image();
|
|
148
|
+
const targetImage = (options === null || options === void 0 ? void 0 : options.targetImage) || new Image();
|
|
151
149
|
targetImage.src = dataUrl;
|
|
152
150
|
return targetImage;
|
|
153
151
|
}
|
|
154
|
-
export function copyToTexture(source, target, options
|
|
152
|
+
export function copyToTexture(source, target, options) {
|
|
155
153
|
const {
|
|
156
154
|
sourceX = 0,
|
|
157
155
|
sourceY = 0,
|
|
158
156
|
targetMipmaplevel = 0,
|
|
159
|
-
targetInternalFormat =
|
|
157
|
+
targetInternalFormat = GL.RGBA
|
|
160
158
|
} = options;
|
|
161
159
|
let {
|
|
162
160
|
targetX,
|
|
@@ -178,7 +176,7 @@ export function copyToTexture(source, target, options = {}) {
|
|
|
178
176
|
targetX = targetX || 0;
|
|
179
177
|
targetY = targetY || 0;
|
|
180
178
|
targetZ = targetZ || 0;
|
|
181
|
-
const prevHandle = gl.bindFramebuffer(
|
|
179
|
+
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
|
|
182
180
|
assert(target);
|
|
183
181
|
let texture = null;
|
|
184
182
|
|
|
@@ -194,13 +192,13 @@ export function copyToTexture(source, target, options = {}) {
|
|
|
194
192
|
gl.copyTexImage2D(target, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);
|
|
195
193
|
} else {
|
|
196
194
|
switch (target) {
|
|
197
|
-
case
|
|
198
|
-
case
|
|
195
|
+
case GL.TEXTURE_2D:
|
|
196
|
+
case GL.TEXTURE_CUBE_MAP:
|
|
199
197
|
gl.copyTexSubImage2D(target, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);
|
|
200
198
|
break;
|
|
201
199
|
|
|
202
|
-
case
|
|
203
|
-
case
|
|
200
|
+
case GL.TEXTURE_2D_ARRAY:
|
|
201
|
+
case GL.TEXTURE_3D:
|
|
204
202
|
const gl2 = assertWebGL2Context(gl);
|
|
205
203
|
gl2.copyTexSubImage3D(target, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);
|
|
206
204
|
break;
|
|
@@ -213,7 +211,7 @@ export function copyToTexture(source, target, options = {}) {
|
|
|
213
211
|
texture.unbind();
|
|
214
212
|
}
|
|
215
213
|
|
|
216
|
-
gl.bindFramebuffer(
|
|
214
|
+
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
217
215
|
|
|
218
216
|
if (deleteFramebuffer) {
|
|
219
217
|
framebuffer.delete();
|
|
@@ -221,7 +219,7 @@ export function copyToTexture(source, target, options = {}) {
|
|
|
221
219
|
|
|
222
220
|
return texture;
|
|
223
221
|
}
|
|
224
|
-
export function blit(source, target, options
|
|
222
|
+
export function blit(source, target, options) {
|
|
225
223
|
const {
|
|
226
224
|
sourceX0 = 0,
|
|
227
225
|
sourceY0 = 0,
|
|
@@ -230,14 +228,14 @@ export function blit(source, target, options = {}) {
|
|
|
230
228
|
color = true,
|
|
231
229
|
depth = false,
|
|
232
230
|
stencil = false,
|
|
233
|
-
filter =
|
|
231
|
+
filter = GL.NEAREST
|
|
234
232
|
} = options;
|
|
235
233
|
let {
|
|
236
234
|
sourceX1,
|
|
237
235
|
sourceY1,
|
|
238
236
|
targetX1,
|
|
239
237
|
targetY1,
|
|
240
|
-
sourceAttachment =
|
|
238
|
+
sourceAttachment = GL.COLOR_ATTACHMENT0,
|
|
241
239
|
mask = 0
|
|
242
240
|
} = options;
|
|
243
241
|
const {
|
|
@@ -259,25 +257,25 @@ export function blit(source, target, options = {}) {
|
|
|
259
257
|
} = dstFramebuffer;
|
|
260
258
|
const gl2 = assertWebGL2Context(gl);
|
|
261
259
|
|
|
262
|
-
if (!srcFramebuffer.handle && sourceAttachment ===
|
|
263
|
-
sourceAttachment =
|
|
260
|
+
if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {
|
|
261
|
+
sourceAttachment = GL.FRONT;
|
|
264
262
|
}
|
|
265
263
|
|
|
266
264
|
if (color) {
|
|
267
|
-
mask |=
|
|
265
|
+
mask |= GL.COLOR_BUFFER_BIT;
|
|
268
266
|
}
|
|
269
267
|
|
|
270
268
|
if (depth) {
|
|
271
|
-
mask |=
|
|
269
|
+
mask |= GL.DEPTH_BUFFER_BIT;
|
|
272
270
|
}
|
|
273
271
|
|
|
274
272
|
if (stencil) {
|
|
275
|
-
mask |=
|
|
273
|
+
mask |= GL.STENCIL_BUFFER_BIT;
|
|
276
274
|
}
|
|
277
275
|
|
|
278
276
|
if (deleteSrcFramebuffer || deleteDstFramebuffer) {
|
|
279
|
-
if (mask & (
|
|
280
|
-
mask =
|
|
277
|
+
if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {
|
|
278
|
+
mask = GL.COLOR_BUFFER_BIT;
|
|
281
279
|
log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();
|
|
282
280
|
}
|
|
283
281
|
}
|
|
@@ -287,13 +285,13 @@ export function blit(source, target, options = {}) {
|
|
|
287
285
|
sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;
|
|
288
286
|
targetX1 = targetX1 === undefined ? width : targetX1;
|
|
289
287
|
targetY1 = targetY1 === undefined ? height : targetY1;
|
|
290
|
-
const prevDrawHandle = gl.bindFramebuffer(
|
|
291
|
-
const prevReadHandle = gl.bindFramebuffer(
|
|
288
|
+
const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);
|
|
289
|
+
const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);
|
|
292
290
|
gl2.readBuffer(sourceAttachment);
|
|
293
291
|
gl2.blitFramebuffer(sourceX0, sourceY0, sourceX1, sourceY1, targetX0, targetY0, targetX1, targetY1, mask, filter);
|
|
294
292
|
gl2.readBuffer(readBuffer);
|
|
295
|
-
gl2.bindFramebuffer(
|
|
296
|
-
gl2.bindFramebuffer(
|
|
293
|
+
gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);
|
|
294
|
+
gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);
|
|
297
295
|
|
|
298
296
|
if (deleteSrcFramebuffer) {
|
|
299
297
|
srcFramebuffer.delete();
|
|
@@ -325,7 +323,7 @@ function getPixelArray(pixelArray, type, format, width, height) {
|
|
|
325
323
|
return pixelArray;
|
|
326
324
|
}
|
|
327
325
|
|
|
328
|
-
type = type ||
|
|
326
|
+
type = type || GL.UNSIGNED_BYTE;
|
|
329
327
|
const ArrayType = getTypedArrayFromGLType(type, {
|
|
330
328
|
clamped: false
|
|
331
329
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/copy-and-blit.js"],"names":["Buffer","Framebuffer","Texture","assertWebGL2Context","withParameters","log","flipRows","scalePixels","getTypedArrayFromGLType","getGLTypeFromTypedArray","glFormatToComponents","glTypeToBytes","toFramebuffer","assert","readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","sourceAttachment","target","sourceWidth","sourceHeight","sourceType","framebuffer","deleteFramebuffer","getFramebuffer","gl","handle","attachments","width","height","type","getPixelArray","prevHandle","bindFramebuffer","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","components","byteCount","byteLength","accessor","size","bind","unbind","copyToDataUrl","targetMaxHeight","Number","MAX_SAFE_INTEGER","data","canvas","document","createElement","context","getContext","imageData","createImageData","set","putImageData","toDataURL","copyToImage","targetImage","dataUrl","Image","src","copyToTexture","targetMipmaplevel","targetInternalFormat","targetX","targetY","targetZ","isSubCopy","texture","isFinite","copyTexImage2D","copyTexSubImage2D","copyTexSubImage3D","blit","sourceX0","sourceY0","targetX0","targetY0","color","depth","stencil","filter","sourceX1","sourceY1","targetX1","targetY1","mask","srcFramebuffer","deleteSrcFramebuffer","dstFramebuffer","deleteDstFramebuffer","readBuffer","warn","undefined","prevDrawHandle","prevReadHandle","blitFramebuffer","pixelArray","format","ArrayType","clamped"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {flipRows, scalePixels} from '../webgl-utils/typed-array-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\nimport {assert} from '../utils/assert';\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(source, options = {}) {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options;\n let {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n target = null, // A new Buffer object is created when not provided.\n targetByteOffset = 0, // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n }\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n const gl2 = assertWebGL2Context(framebuffer.gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n withParameters(gl2, {framebuffer}, () => {\n gl2.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetImage = null\n } = {}\n) {\n const dataUrl = copyToDataUrl(source, {sourceAttachment});\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\n\n// Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(source, target, options = {}) {\n const {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA\n } = options;\n let {\n targetX,\n targetY,\n targetZ,\n width, // defaults to target width\n height // defaults to target height\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n target,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (target) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.copyTexSubImage3D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n// NOTE: WEBLG2 only\n// Copies a rectangle of pixels between Framebuffer or Texture objects\n// eslint-disable-next-line max-statements, complexity\nexport function blit(source, target, options = {}) {\n const {\n sourceX0 = 0,\n sourceY0 = 0,\n targetX0 = 0,\n targetY0 = 0,\n color = true,\n depth = false,\n stencil = false,\n filter = GL.NEAREST\n } = options;\n\n let {\n sourceX1,\n sourceY1,\n targetX1,\n targetY1,\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n mask = 0\n } = options;\n\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} = getFramebuffer(\n source\n );\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} = getFramebuffer(\n target\n );\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n // @ts-ignore\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n const gl2 = assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl2.readBuffer(readBuffer);\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n // @ts-ignore\n gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n"],"file":"copy-and-blit.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/copy-and-blit.ts"],"names":["GL","Buffer","Framebuffer","Texture","assertWebGL2Context","withParameters","log","flipRows","scalePixels","getTypedArrayFromGLType","getGLTypeFromTypedArray","glFormatToComponents","glTypeToBytes","toFramebuffer","assert","readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","RGBA","sourceAttachment","COLOR_ATTACHMENT0","target","sourceWidth","sourceHeight","sourceType","framebuffer","deleteFramebuffer","getFramebuffer","gl","handle","attachments","width","height","FRONT","type","getPixelArray","prevHandle","bindFramebuffer","FRAMEBUFFER","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","UNSIGNED_BYTE","components","byteCount","byteLength","accessor","size","bind","PIXEL_PACK_BUFFER","unbind","copyToDataUrl","targetMaxHeight","Number","MAX_SAFE_INTEGER","data","canvas","document","createElement","context","getContext","imageData","createImageData","set","putImageData","toDataURL","copyToImage","dataUrl","targetImage","Image","src","copyToTexture","targetMipmaplevel","targetInternalFormat","targetX","targetY","targetZ","isSubCopy","texture","isFinite","copyTexImage2D","TEXTURE_2D","TEXTURE_CUBE_MAP","copyTexSubImage2D","TEXTURE_2D_ARRAY","TEXTURE_3D","copyTexSubImage3D","blit","sourceX0","sourceY0","targetX0","targetY0","color","depth","stencil","filter","NEAREST","sourceX1","sourceY1","targetX1","targetY1","mask","srcFramebuffer","deleteSrcFramebuffer","dstFramebuffer","deleteDstFramebuffer","readBuffer","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","warn","undefined","prevDrawHandle","DRAW_FRAMEBUFFER","prevReadHandle","READ_FRAMEBUFFER","blitFramebuffer","pixelArray","format","ArrayType","clamped"],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport GL from '@luma.gl/constants';\nimport Buffer from './webgl-buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {flipRows, scalePixels} from '../webgl-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\nimport {assert} from '../utils';\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n sourceAttachment?: number;\n target?: Uint8Array | Uint16Array | Float32Array;\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n): Uint8Array | Uint16Array | Float32Array;\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(source, options = {}) {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options;\n let {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n target?: Buffer; // A new Buffer object is created when not provided.\n targetByteOffset?: number; // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n): Buffer;\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n target = null, // A new Buffer object is created when not provided.\n targetByteOffset = 0, // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n }\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n const gl2 = assertWebGL2Context(framebuffer.gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n // @ts-expect-error TODO why is WebGL2 context not compatible\n target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n // @ts-expect-error TODO why is WebGL2 context not compatible\n withParameters(gl2, {framebuffer}, () => {\n gl2.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n options?: {\n sourceAttachment?: number; // TODO - support gl.readBuffer\n targetMaxHeight?: number;\n }\n): string;\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source: Framebuffer | Texture,\n options?: {\n sourceAttachment?: number; // TODO - support gl.readBuffer\n targetImage?: typeof Image;\n }\n): typeof Image {\n const dataUrl = copyToDataUrl(source, {sourceAttachment: options?.sourceAttachment || GL.COLOR_ATTACHMENT0});\n const targetImage = options?.targetImage || new Image();\n targetImage.src = dataUrl;\n // @ts-expect-error\n return targetImage;\n}\n\n/**\n * Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n */\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(\n source: Framebuffer | Texture,\n target: Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n\n targetX?: number;\n targetY?: number;\n targetZ?: number;\n targetMipmaplevel?: number;\n targetInternalFormat?: number;\n\n width?: number; // defaults to target width\n height?: number; // defaults to target height\n }\n): Texture {\n const {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA\n } = options;\n let {\n targetX,\n targetY,\n targetZ,\n width, // defaults to target width\n height // defaults to target height\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n target,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (target) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.copyTexSubImage3D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n/**\n * Copies a rectangle of pixels between Framebuffer or Texture objects\n * @note NOTE: WEBLG2 only\n * @param source\n * @param target\n * @param options\n */\n// eslint-disable-next-line max-statements, complexity\nexport function blit(\n source,\n target,\n options: {\n sourceAttachment?: number;\n sourceX0?: number;\n sourceY0?: number;\n sourceX1?: number;\n sourceY1?: number;\n targetX0?: number;\n targetY0?: number;\n targetX1?: number;\n targetY1?: number;\n color?: boolean;\n depth?: boolean;\n stencil?: boolean;\n mask?: number;\n filter?: number;\n }\n): void {\n const {\n sourceX0 = 0,\n sourceY0 = 0,\n targetX0 = 0,\n targetY0 = 0,\n color = true,\n depth = false,\n stencil = false,\n filter = GL.NEAREST\n } = options;\n\n let {\n sourceX1,\n sourceY1,\n targetX1,\n targetY1,\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n mask = 0\n } = options;\n\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} =\n getFramebuffer(source);\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} =\n getFramebuffer(target);\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n // @ts-ignore\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n const gl2 = assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl2.readBuffer(readBuffer);\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n // @ts-ignore\n gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n"],"file":"copy-and-blit.js"}
|