@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
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Buffer, BufferProps } from '@luma.gl/api';
|
|
2
|
+
import { AccessorObject } from '../types';
|
|
3
|
+
import Accessor from './accessor';
|
|
4
|
+
/** WebGL Buffer interface */
|
|
5
|
+
export declare type WebGLBufferProps = BufferProps & {
|
|
6
|
+
handle?: WebGLBuffer;
|
|
7
|
+
data?: any;
|
|
8
|
+
byteLength?: number;
|
|
9
|
+
target?: number;
|
|
10
|
+
usage?: number;
|
|
11
|
+
accessor?: AccessorObject;
|
|
12
|
+
/** @deprecated */
|
|
13
|
+
index?: number;
|
|
14
|
+
/** @deprecated */
|
|
15
|
+
offset?: number;
|
|
16
|
+
/** @deprecated */
|
|
17
|
+
size?: number;
|
|
18
|
+
/** @deprecated */
|
|
19
|
+
type?: number;
|
|
20
|
+
};
|
|
21
|
+
/** WebGL Buffer interface */
|
|
22
|
+
export default class WEBGLBuffer extends Buffer {
|
|
23
|
+
readonly gl: WebGLRenderingContext;
|
|
24
|
+
readonly gl2: WebGL2RenderingContext | null;
|
|
25
|
+
readonly handle: WebGLBuffer;
|
|
26
|
+
target: number;
|
|
27
|
+
usage: number;
|
|
28
|
+
byteLength: number;
|
|
29
|
+
bytesUsed: number;
|
|
30
|
+
accessor: Accessor;
|
|
31
|
+
debugData: any;
|
|
32
|
+
constructor(gl: WebGLRenderingContext, props?: BufferProps);
|
|
33
|
+
constructor(gl: WebGLRenderingContext, data: ArrayBufferView | number[]);
|
|
34
|
+
constructor(gl: WebGLRenderingContext, byteLength: number);
|
|
35
|
+
destroy(): void;
|
|
36
|
+
getElementCount(accessor?: Accessor): number;
|
|
37
|
+
getVertexCount(accessor?: Accessor): number;
|
|
38
|
+
initialize(props?: BufferProps): this;
|
|
39
|
+
setProps(props: BufferProps): this;
|
|
40
|
+
setAccessor(accessor: any): this;
|
|
41
|
+
reallocate(byteLength: any): boolean;
|
|
42
|
+
setData(props: any): this;
|
|
43
|
+
subData(props: any): this;
|
|
44
|
+
/**
|
|
45
|
+
* Copies part of the data of another buffer into this buffer
|
|
46
|
+
* @note WEBGL2 ONLY
|
|
47
|
+
*/
|
|
48
|
+
copyData(options: {
|
|
49
|
+
sourceBuffer: any;
|
|
50
|
+
readOffset?: number;
|
|
51
|
+
writeOffset?: number;
|
|
52
|
+
size: any;
|
|
53
|
+
}): this;
|
|
54
|
+
/**
|
|
55
|
+
* Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.
|
|
56
|
+
* @note WEBGL2 ONLY
|
|
57
|
+
*/
|
|
58
|
+
getData(options?: {
|
|
59
|
+
dstData?: any;
|
|
60
|
+
srcByteOffset?: number;
|
|
61
|
+
dstOffset?: number;
|
|
62
|
+
length?: number;
|
|
63
|
+
}): any;
|
|
64
|
+
/**
|
|
65
|
+
* Binds a buffer to a given binding point (target).
|
|
66
|
+
* GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.
|
|
67
|
+
* - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state
|
|
68
|
+
* - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.
|
|
69
|
+
* - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.
|
|
70
|
+
*/
|
|
71
|
+
bind(options?: {
|
|
72
|
+
target?: number;
|
|
73
|
+
index?: any;
|
|
74
|
+
offset?: number;
|
|
75
|
+
size: any;
|
|
76
|
+
}): this;
|
|
77
|
+
unbind(options?: {
|
|
78
|
+
target?: any;
|
|
79
|
+
index?: any;
|
|
80
|
+
}): this;
|
|
81
|
+
getDebugData(): {
|
|
82
|
+
data: any;
|
|
83
|
+
changed: boolean;
|
|
84
|
+
};
|
|
85
|
+
invalidateDebugData(): void;
|
|
86
|
+
_setData(data: any, offset?: number, byteLength?: number): this;
|
|
87
|
+
_setByteLength(byteLength: number, usage?: number): this;
|
|
88
|
+
_getTarget(): number;
|
|
89
|
+
_getAvailableElementCount(srcByteOffset: any): number;
|
|
90
|
+
_inferType(data: any): void;
|
|
91
|
+
getParameter(pname: any): any;
|
|
92
|
+
/** @deprecated Use Buffer.accessor.type */
|
|
93
|
+
get type(): number;
|
|
94
|
+
get bytes(): number;
|
|
95
|
+
setByteLength(byteLength: any): boolean;
|
|
96
|
+
updateAccessor(opts: any): this;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=webgl-buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl-buffer.d.ts","sourceRoot":"","sources":["../../src/classes/webgl-buffer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AACjD,OAAO,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AACxC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAmClC,6BAA6B;AAC7B,oBAAY,gBAAgB,GAAG,WAAW,GAAG;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,6BAA6B;AAC7B,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,MAAM;IAC7C,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IAEd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,QAAQ,CAAC;IAEnB,SAAS,MAAC;gBAEE,EAAE,EAAE,qBAAqB,EAAE,KAAK,CAAC,EAAE,WAAW;gBAC9C,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE;gBAC3D,EAAE,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM;IAqBzD,OAAO,IAAI,IAAI;IAWf,eAAe,CAAC,QAAQ,WAAgB,GAAG,MAAM;IAKjD,cAAc,CAAC,QAAQ,WAAgB,GAAG,MAAM;IAQhD,UAAU,CAAC,KAAK,GAAE,WAAgB,GAAG,IAAI;IA+BzC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAYlC,WAAW,CAAC,QAAQ,KAAA,GAAG,IAAI;IAiB3B,UAAU,CAAC,UAAU,KAAA;IAUrB,OAAO,CAAC,KAAK,KAAA;IASb,OAAO,CAAC,KAAK,KAAA;IAkCb;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE;QAChB,YAAY,EAAE,GAAG,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,GAAG,CAAC;KACX,GAAG,IAAI;IAkBR;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE;QAChB,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,GAAG;IAsCP;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAC,GAAG,IAAI;IAyBhF,MAAM,CAAC,OAAO,CAAC,EAAE;QAAC,MAAM,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAA;KAAC,GAAG,IAAI;IAenD,YAAY,IAAI;QACd,IAAI,EAAE,GAAG,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;KAClB;IAQD,mBAAmB;IAOnB,QAAQ,CAAC,IAAI,KAAA,EAAE,MAAM,GAAE,MAAU,EAAE,UAAU,GAAE,MAAiC,GAAG,IAAI;IAwBvF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,IAAI;IA8B5D,UAAU;IAKV,yBAAyB,CAAC,aAAa,KAAA;IAQvC,UAAU,CAAC,IAAI,KAAA;IAQf,YAAY,CAAC,KAAK,KAAA;IAQlB,2CAA2C;IAC3C,IAAI,IAAI,WAEP;IAED,IAAI,KAAK,WAGR;IAID,aAAa,CAAC,UAAU,KAAA;IAMxB,cAAc,CAAC,IAAI,KAAA;CAKpB"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import GL from '@luma.gl/constants';
|
|
3
|
+
import { getWebGL2Context, assertWebGL2Context, log } from '@luma.gl/gltools';
|
|
4
|
+
import { Buffer } from '@luma.gl/api';
|
|
2
5
|
import Accessor from './accessor';
|
|
3
|
-
import { getGLTypeFromTypedArray, getTypedArrayFromGLType } from '../webgl-utils
|
|
4
|
-
import {
|
|
5
|
-
import { assert } from '../utils/assert';
|
|
6
|
-
import { checkProps } from '../utils/check-props';
|
|
6
|
+
import { getGLTypeFromTypedArray, getTypedArrayFromGLType } from '../webgl-utils';
|
|
7
|
+
import { assert, checkProps } from '../utils';
|
|
7
8
|
const DEBUG_DATA_LENGTH = 10;
|
|
8
9
|
const DEPRECATED_PROPS = {
|
|
9
10
|
offset: 'accessor.offset',
|
|
@@ -26,15 +27,46 @@ const PROP_CHECKS_INITIALIZE = {
|
|
|
26
27
|
const PROP_CHECKS_SET_PROPS = {
|
|
27
28
|
removedProps: DEPRECATED_PROPS
|
|
28
29
|
};
|
|
29
|
-
export default class
|
|
30
|
+
export default class WEBGLBuffer extends Buffer {
|
|
30
31
|
constructor(gl, props = {}) {
|
|
31
32
|
super(gl, props);
|
|
32
|
-
|
|
33
|
-
this
|
|
33
|
+
|
|
34
|
+
_defineProperty(this, "gl", void 0);
|
|
35
|
+
|
|
36
|
+
_defineProperty(this, "gl2", void 0);
|
|
37
|
+
|
|
38
|
+
_defineProperty(this, "handle", void 0);
|
|
39
|
+
|
|
40
|
+
_defineProperty(this, "target", void 0);
|
|
41
|
+
|
|
42
|
+
_defineProperty(this, "usage", void 0);
|
|
43
|
+
|
|
44
|
+
_defineProperty(this, "byteLength", void 0);
|
|
45
|
+
|
|
46
|
+
_defineProperty(this, "bytesUsed", void 0);
|
|
47
|
+
|
|
48
|
+
_defineProperty(this, "accessor", void 0);
|
|
49
|
+
|
|
50
|
+
_defineProperty(this, "debugData", void 0);
|
|
51
|
+
|
|
52
|
+
this.gl = gl;
|
|
53
|
+
this.gl2 = getWebGL2Context(gl);
|
|
54
|
+
const handle = typeof props === 'object' ? props.handle : undefined;
|
|
55
|
+
this.handle = handle || this.gl.createBuffer();
|
|
56
|
+
this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);
|
|
34
57
|
this.initialize(props);
|
|
35
58
|
Object.seal(this);
|
|
36
59
|
}
|
|
37
60
|
|
|
61
|
+
destroy() {
|
|
62
|
+
if (this.handle) {
|
|
63
|
+
this.removeStats();
|
|
64
|
+
this.trackDeallocatedMemory();
|
|
65
|
+
this.gl.deleteBuffer(this.handle);
|
|
66
|
+
this.handle = null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
38
70
|
getElementCount(accessor = this.accessor) {
|
|
39
71
|
return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));
|
|
40
72
|
}
|
|
@@ -57,7 +89,7 @@ export default class Buffer extends Resource {
|
|
|
57
89
|
}
|
|
58
90
|
|
|
59
91
|
props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);
|
|
60
|
-
this.usage = props.usage ||
|
|
92
|
+
this.usage = props.usage || GL.STATIC_DRAW;
|
|
61
93
|
this.debugData = null;
|
|
62
94
|
this.setAccessor(Object.assign({}, props, props.accessor));
|
|
63
95
|
|
|
@@ -116,7 +148,7 @@ export default class Buffer extends Resource {
|
|
|
116
148
|
} = props;
|
|
117
149
|
const byteLength = props.byteLength || props.length;
|
|
118
150
|
assert(data);
|
|
119
|
-
const target = this.gl.webgl2 ?
|
|
151
|
+
const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;
|
|
120
152
|
this.gl.bindBuffer(target, this.handle);
|
|
121
153
|
|
|
122
154
|
if (srcOffset !== 0 || byteLength !== undefined) {
|
|
@@ -134,33 +166,38 @@ export default class Buffer extends Resource {
|
|
|
134
166
|
return this;
|
|
135
167
|
}
|
|
136
168
|
|
|
137
|
-
copyData({
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
169
|
+
copyData(options) {
|
|
170
|
+
const {
|
|
171
|
+
sourceBuffer,
|
|
172
|
+
readOffset = 0,
|
|
173
|
+
writeOffset = 0,
|
|
174
|
+
size
|
|
175
|
+
} = options;
|
|
143
176
|
const {
|
|
144
|
-
gl
|
|
177
|
+
gl,
|
|
178
|
+
gl2
|
|
145
179
|
} = this;
|
|
146
180
|
assertWebGL2Context(gl);
|
|
147
|
-
gl.bindBuffer(
|
|
148
|
-
gl.bindBuffer(
|
|
149
|
-
|
|
150
|
-
gl.bindBuffer(
|
|
151
|
-
gl.bindBuffer(
|
|
181
|
+
gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);
|
|
182
|
+
gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);
|
|
183
|
+
gl2.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);
|
|
184
|
+
gl.bindBuffer(GL.COPY_READ_BUFFER, null);
|
|
185
|
+
gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);
|
|
152
186
|
this.debugData = null;
|
|
153
187
|
return this;
|
|
154
188
|
}
|
|
155
189
|
|
|
156
|
-
getData({
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
190
|
+
getData(options) {
|
|
191
|
+
let {
|
|
192
|
+
dstData = null,
|
|
193
|
+
length = 0
|
|
194
|
+
} = options || {};
|
|
195
|
+
const {
|
|
196
|
+
srcByteOffset = 0,
|
|
197
|
+
dstOffset = 0
|
|
198
|
+
} = options || {};
|
|
162
199
|
assertWebGL2Context(this.gl);
|
|
163
|
-
const ArrayType = getTypedArrayFromGLType(this.accessor.type ||
|
|
200
|
+
const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {
|
|
164
201
|
clamped: false
|
|
165
202
|
});
|
|
166
203
|
|
|
@@ -182,24 +219,26 @@ export default class Buffer extends Resource {
|
|
|
182
219
|
length = length || copyElementCount;
|
|
183
220
|
assert(length <= copyElementCount);
|
|
184
221
|
dstData = dstData || new ArrayType(dstElementCount);
|
|
185
|
-
this.gl.bindBuffer(
|
|
186
|
-
this.
|
|
187
|
-
this.gl.bindBuffer(
|
|
222
|
+
this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
|
|
223
|
+
this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);
|
|
224
|
+
this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
|
|
188
225
|
return dstData;
|
|
189
226
|
}
|
|
190
227
|
|
|
191
|
-
bind({
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
228
|
+
bind(options) {
|
|
229
|
+
const {
|
|
230
|
+
target = this.target,
|
|
231
|
+
index = this.accessor && this.accessor.index,
|
|
232
|
+
offset = 0,
|
|
233
|
+
size
|
|
234
|
+
} = options || {};
|
|
235
|
+
|
|
236
|
+
if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {
|
|
198
237
|
if (size !== undefined) {
|
|
199
|
-
this.
|
|
238
|
+
this.gl2.bindBufferRange(target, index, this.handle, offset, size);
|
|
200
239
|
} else {
|
|
201
240
|
assert(offset === 0);
|
|
202
|
-
this.
|
|
241
|
+
this.gl2.bindBufferBase(target, index, this.handle);
|
|
203
242
|
}
|
|
204
243
|
} else {
|
|
205
244
|
this.gl.bindBuffer(target, this.handle);
|
|
@@ -208,14 +247,15 @@ export default class Buffer extends Resource {
|
|
|
208
247
|
return this;
|
|
209
248
|
}
|
|
210
249
|
|
|
211
|
-
unbind({
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
250
|
+
unbind(options) {
|
|
251
|
+
const {
|
|
252
|
+
target = this.target,
|
|
253
|
+
index = this.accessor && this.accessor.index
|
|
254
|
+
} = options || {};
|
|
255
|
+
const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;
|
|
216
256
|
|
|
217
257
|
if (isIndexedBuffer) {
|
|
218
|
-
this.
|
|
258
|
+
this.gl2.bindBufferBase(target, index, null);
|
|
219
259
|
} else {
|
|
220
260
|
this.gl.bindBuffer(target, null);
|
|
221
261
|
}
|
|
@@ -246,8 +286,7 @@ export default class Buffer extends Resource {
|
|
|
246
286
|
|
|
247
287
|
_setData(data, offset = 0, byteLength = data.byteLength + offset) {
|
|
248
288
|
assert(ArrayBuffer.isView(data));
|
|
249
|
-
|
|
250
|
-
this._trackDeallocatedMemory();
|
|
289
|
+
this.trackDeallocatedMemory();
|
|
251
290
|
|
|
252
291
|
const target = this._getTarget();
|
|
253
292
|
|
|
@@ -257,9 +296,8 @@ export default class Buffer extends Resource {
|
|
|
257
296
|
this.gl.bindBuffer(target, null);
|
|
258
297
|
this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
|
|
259
298
|
this.bytesUsed = byteLength;
|
|
260
|
-
|
|
261
|
-
this.
|
|
262
|
-
|
|
299
|
+
this.byteLength = byteLength;
|
|
300
|
+
this.trackAllocatedMemory(byteLength);
|
|
263
301
|
const type = getGLTypeFromTypedArray(data);
|
|
264
302
|
assert(type);
|
|
265
303
|
this.setAccessor(new Accessor(this.accessor, {
|
|
@@ -270,9 +308,7 @@ export default class Buffer extends Resource {
|
|
|
270
308
|
|
|
271
309
|
_setByteLength(byteLength, usage = this.usage) {
|
|
272
310
|
assert(byteLength >= 0);
|
|
273
|
-
|
|
274
|
-
this._trackDeallocatedMemory();
|
|
275
|
-
|
|
311
|
+
this.trackDeallocatedMemory();
|
|
276
312
|
let data = byteLength;
|
|
277
313
|
|
|
278
314
|
if (byteLength === 0) {
|
|
@@ -287,18 +323,17 @@ export default class Buffer extends Resource {
|
|
|
287
323
|
this.usage = usage;
|
|
288
324
|
this.debugData = null;
|
|
289
325
|
this.bytesUsed = byteLength;
|
|
290
|
-
|
|
291
|
-
this.
|
|
292
|
-
|
|
326
|
+
this.byteLength = byteLength;
|
|
327
|
+
this.trackAllocatedMemory(byteLength);
|
|
293
328
|
return this;
|
|
294
329
|
}
|
|
295
330
|
|
|
296
331
|
_getTarget() {
|
|
297
|
-
return this.gl.webgl2 ?
|
|
332
|
+
return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;
|
|
298
333
|
}
|
|
299
334
|
|
|
300
335
|
_getAvailableElementCount(srcByteOffset) {
|
|
301
|
-
const ArrayType = getTypedArrayFromGLType(this.accessor.type ||
|
|
336
|
+
const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {
|
|
302
337
|
clamped: false
|
|
303
338
|
});
|
|
304
339
|
const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;
|
|
@@ -313,17 +348,7 @@ export default class Buffer extends Resource {
|
|
|
313
348
|
}
|
|
314
349
|
}
|
|
315
350
|
|
|
316
|
-
|
|
317
|
-
return this.gl.createBuffer();
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
_deleteHandle() {
|
|
321
|
-
this.gl.deleteBuffer(this.handle);
|
|
322
|
-
|
|
323
|
-
this._trackDeallocatedMemory();
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
_getParameter(pname) {
|
|
351
|
+
getParameter(pname) {
|
|
327
352
|
this.gl.bindBuffer(this.target, this.handle);
|
|
328
353
|
const value = this.gl.getBufferParameter(this.target, pname);
|
|
329
354
|
this.gl.bindBuffer(this.target, null);
|
|
@@ -331,7 +356,6 @@ export default class Buffer extends Resource {
|
|
|
331
356
|
}
|
|
332
357
|
|
|
333
358
|
get type() {
|
|
334
|
-
log.deprecated('Buffer.type', 'Buffer.accessor.type')();
|
|
335
359
|
return this.accessor.type;
|
|
336
360
|
}
|
|
337
361
|
|
|
@@ -352,4 +376,4 @@ export default class Buffer extends Resource {
|
|
|
352
376
|
}
|
|
353
377
|
|
|
354
378
|
}
|
|
355
|
-
//# sourceMappingURL=buffer.js.map
|
|
379
|
+
//# sourceMappingURL=webgl-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/classes/webgl-buffer.ts"],"names":["GL","getWebGL2Context","assertWebGL2Context","log","Buffer","Accessor","getGLTypeFromTypedArray","getTypedArrayFromGLType","assert","checkProps","DEBUG_DATA_LENGTH","DEPRECATED_PROPS","offset","stride","type","size","divisor","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","WEBGLBuffer","constructor","gl","props","gl2","handle","undefined","createBuffer","target","webgl2","COPY_READ_BUFFER","ARRAY_BUFFER","initialize","Object","seal","destroy","removeStats","trackDeallocatedMemory","deleteBuffer","getElementCount","accessor","Math","round","byteLength","getBytesPerElement","getVertexCount","getBytesPerVertex","ArrayBuffer","isView","data","Number","isFinite","usage","STATIC_DRAW","debugData","setAccessor","assign","_setData","_setByteLength","setProps","buffer","reallocate","bytesUsed","setData","subData","srcOffset","length","COPY_WRITE_BUFFER","bindBuffer","bufferSubData","_inferType","copyData","options","sourceBuffer","readOffset","writeOffset","copyBufferSubData","getData","dstData","srcByteOffset","dstOffset","ArrayType","FLOAT","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","min","copyElementCount","getBufferSubData","bind","index","UNIFORM_BUFFER","TRANSFORM_FEEDBACK_BUFFER","bindBufferRange","bindBufferBase","unbind","isIndexedBuffer","getDebugData","changed","invalidateDebugData","_getTarget","bufferData","slice","trackAllocatedMemory","Float32Array","sourceElementOffset","BYTES_PER_ELEMENT","getParameter","pname","value","getBufferParameter","deprecated","setByteLength","updateAccessor","opts"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {getWebGL2Context, assertWebGL2Context, log} from '@luma.gl/gltools';\nimport {Buffer, BufferProps} from '@luma.gl/api';\nimport {AccessorObject} from '../types';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils';\nimport {assert, checkProps} from '../utils';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\n/** WebGL Buffer interface */\nexport type WebGLBufferProps = BufferProps & {\n handle?: WebGLBuffer;\n data?: any; // ArrayBufferView;\n byteLength?: number;\n target?: number;\n usage?: number;\n accessor?: AccessorObject;\n\n /** @deprecated */\n index?: number;\n /** @deprecated */\n offset?: number;\n /** @deprecated */\n size?: number;\n /** @deprecated */\n type?: number\n}\n\n/** WebGL Buffer interface */\nexport default class WEBGLBuffer extends Buffer {\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext | null;\n readonly handle: WebGLBuffer;\n\n target: number;\n usage: number;\n\n byteLength: number;\n bytesUsed: number;\n\n accessor: Accessor;\n\n debugData;\n\n constructor(gl: WebGLRenderingContext, props?: BufferProps);\n constructor(gl: WebGLRenderingContext, data: ArrayBufferView | number[]);\n constructor(gl: WebGLRenderingContext, byteLength: number);\n\n constructor(gl: WebGLRenderingContext, props = {}) {\n super(gl as any, props);\n\n this.gl = gl;\n this.gl2 = getWebGL2Context(gl);\n const handle = typeof props === 'object' ? (props as BufferProps).handle : undefined;\n this.handle = handle || this.gl.createBuffer();\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n // @ts-expect-error\n this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.trackDeallocatedMemory();\n this.gl.deleteBuffer(this.handle);\n // @ts-expect-error\n this.handle = null;\n }\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor = this.accessor): number {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor = this.accessor): number {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props: BufferProps = {}): this {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n // @ts-expect-error\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.usage = props.usage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props: BufferProps): this {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor): this {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(props) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n const {data, offset = 0, srcOffset = 0} = props;\n const byteLength = props.byteLength || props.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n // @ts-expect-error\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n // @ts-expect-error\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n /**\n * Copies part of the data of another buffer into this buffer \n * @note WEBGL2 ONLY\n */\n copyData(options: {\n sourceBuffer: any;\n readOffset?: number;\n writeOffset?: number;\n size: any;\n }): this {\n const {sourceBuffer, readOffset = 0, writeOffset = 0, size} = options;\n const {gl, gl2} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl2.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n /**\n * Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n * @note WEBGL2 ONLY\n */\n getData(options?: {\n dstData?: any;\n srcByteOffset?: number;\n dstOffset?: number;\n length?: number;\n }): any {\n let {dstData = null, length = 0} = options || {};\n const {srcByteOffset = 0, dstOffset = 0} = options || {};\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind(options?: {target?: number; index?: any; offset?: number; size: any}): this {\n const {\n target = this.target, // target for the bind operation\n // @ts-expect-error\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = options || {};\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl2.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl2.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind(options?: {target?: any; index?: any}): this {\n // @ts-expect-error\n const {target = this.target, index = this.accessor && this.accessor.index} = options || {};\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl2.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData(): {\n data: any;\n changed: boolean;\n } {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset: number = 0, byteLength: number = data.byteLength + offset): this {\n assert(ArrayBuffer.isView(data));\n\n this.trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.usage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n this.trackAllocatedMemory(byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength: number, usage = this.usage): this {\n assert(byteLength >= 0);\n\n this.trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n // @ts-expect-error\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n\n this.trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n // @ts-expect-error\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n /** @deprecated Use Buffer.accessor.type */\n get type() {\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n // DEPRECATIONS - v6.0\n // Deprecated in v6.x, but not warnings not properly implemented\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n // Deprecated in v6.x, but not warnings not properly implemented\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n}\n"],"file":"webgl-buffer.js"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Resource } from '@luma.gl/api';
|
|
2
|
+
export type { ResourceProps } from '@luma.gl/api';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for WebGL object wrappers
|
|
5
|
+
*/
|
|
6
|
+
export default class WebGLResource<Props> extends Resource<Props> {
|
|
7
|
+
id: string;
|
|
8
|
+
readonly gl: WebGLRenderingContext;
|
|
9
|
+
readonly gl2: WebGL2RenderingContext;
|
|
10
|
+
userData: any;
|
|
11
|
+
private _handle;
|
|
12
|
+
private _bound;
|
|
13
|
+
byteLength: number;
|
|
14
|
+
constructor(gl: WebGLRenderingContext, props: Props, defaultProps: Required<Props>);
|
|
15
|
+
toString(): string;
|
|
16
|
+
get handle(): any;
|
|
17
|
+
delete({ deleteChildren }?: {
|
|
18
|
+
deleteChildren?: boolean;
|
|
19
|
+
}): this;
|
|
20
|
+
bind(funcOrHandle?: any): any;
|
|
21
|
+
unbind(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Query a Resource parameter
|
|
24
|
+
*
|
|
25
|
+
* @param name
|
|
26
|
+
* @return param
|
|
27
|
+
*/
|
|
28
|
+
getParameter(pname: number, props?: {}): any;
|
|
29
|
+
getParameters(options?: {
|
|
30
|
+
parameters?: any;
|
|
31
|
+
keys?: any;
|
|
32
|
+
}): {};
|
|
33
|
+
/**
|
|
34
|
+
* Update a Resource setting
|
|
35
|
+
*
|
|
36
|
+
* @todo - cache parameter to avoid issuing WebGL calls?
|
|
37
|
+
*
|
|
38
|
+
* @param {string} pname - parameter (GL constant, value or key)
|
|
39
|
+
* @param {GLint|GLfloat|GLenum} value
|
|
40
|
+
* @return {Resource} returns self to enable chaining
|
|
41
|
+
*/
|
|
42
|
+
setParameter(pname: any, value: any): this;
|
|
43
|
+
setParameters(parameters: any): this;
|
|
44
|
+
stubRemovedMethods(className: any, version: any, methodNames: any): void;
|
|
45
|
+
initialize(props: any): void;
|
|
46
|
+
_createHandle(): void;
|
|
47
|
+
_deleteHandle(): void;
|
|
48
|
+
_bindHandle(handle: any): void;
|
|
49
|
+
_getOptsFromHandle(): void;
|
|
50
|
+
/** @returns {number} */
|
|
51
|
+
_getParameter(pname: any, props: any): void;
|
|
52
|
+
_setParameter(pname: any, value: any): void;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=webgl-resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl-resource.d.ts","sourceRoot":"","sources":["../../src/classes/webgl-resource.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AACtC,YAAY,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAMhD;;GAEG;AACF,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,KAAK,CAAE,SAAQ,QAAQ,CAAC,KAAK,CAAC;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC;IACrC,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,OAAO,CAAM;IAErB,OAAO,CAAC,MAAM,CAAS;IAEvB,UAAU,SAAK;gBAEH,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;IA+BlF,QAAQ,IAAI,MAAM;IAIlB,IAAI,MAAM,QAWT;IAED,MAAM,CAAC,EAAC,cAAsB,EAAC;;KAAK;IAmBpC,IAAI,CAAC,YAAY,MAAc;IAuB/B,MAAM;IAIN;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,KAAK,GAAG,GAAG;IAiC5C,aAAa,CAAC,OAAO,GAAE;QAAC,UAAU,CAAC,MAAC;QAAC,IAAI,CAAC,MAAA;KAAM;IAoChD;;;;;;;;OAQG;IACH,YAAY,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA;IAqCzB,aAAa,CAAC,UAAU,KAAA;IAQxB,kBAAkB,CAAC,SAAS,KAAA,EAAE,OAAO,KAAA,EAAE,WAAW,KAAA;IAKlD,UAAU,CAAC,KAAK,KAAA;IAGhB,aAAa;IAIb,aAAa;IAIb,WAAW,CAAC,MAAM,KAAA;IAIlB,kBAAkB;IAIlB,wBAAwB;IACxB,aAAa,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA;IAI1B,aAAa,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA;CAuC3B"}
|
|
@@ -1,35 +1,47 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
1
2
|
import { isWebGL2, assertWebGLContext } from '@luma.gl/gltools';
|
|
2
|
-
import {
|
|
3
|
-
import { getKey, getKeyValue } from '../webgl-utils
|
|
4
|
-
import { assert } from '../utils
|
|
5
|
-
import { uid } from '../utils/utils';
|
|
6
|
-
import { stubRemovedMethods } from '../utils/stub-methods';
|
|
3
|
+
import { Resource } from '@luma.gl/api';
|
|
4
|
+
import { getKey, getKeyValue } from '../webgl-utils';
|
|
5
|
+
import { uid, assert, stubRemovedMethods } from '../utils';
|
|
7
6
|
const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';
|
|
8
|
-
export default class Resource {
|
|
9
|
-
constructor(gl,
|
|
7
|
+
export default class WebGLResource extends Resource {
|
|
8
|
+
constructor(gl, props, defaultProps) {
|
|
9
|
+
super(gl, props, defaultProps);
|
|
10
|
+
|
|
11
|
+
_defineProperty(this, "id", void 0);
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "gl", void 0);
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "gl2", void 0);
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "userData", void 0);
|
|
18
|
+
|
|
19
|
+
_defineProperty(this, "_handle", void 0);
|
|
20
|
+
|
|
21
|
+
_defineProperty(this, "_bound", false);
|
|
22
|
+
|
|
23
|
+
_defineProperty(this, "byteLength", 0);
|
|
24
|
+
|
|
10
25
|
assertWebGLContext(gl);
|
|
11
26
|
const {
|
|
12
27
|
id,
|
|
13
28
|
userData = {}
|
|
14
|
-
} =
|
|
29
|
+
} = props || {};
|
|
15
30
|
this.gl = gl;
|
|
16
31
|
this.gl2 = gl;
|
|
17
32
|
this.id = id || uid(this.constructor.name);
|
|
18
33
|
this.userData = userData;
|
|
19
|
-
this.
|
|
20
|
-
this._handle = opts.handle;
|
|
34
|
+
this._handle = props === null || props === void 0 ? void 0 : props.handle;
|
|
21
35
|
|
|
22
36
|
if (this._handle === undefined) {
|
|
23
37
|
this._handle = this._createHandle();
|
|
24
38
|
}
|
|
25
39
|
|
|
26
40
|
this.byteLength = 0;
|
|
27
|
-
|
|
28
|
-
this._addStats();
|
|
29
41
|
}
|
|
30
42
|
|
|
31
43
|
toString() {
|
|
32
|
-
return
|
|
44
|
+
return "".concat(this.constructor.name, "(").concat(this.id, ")");
|
|
33
45
|
}
|
|
34
46
|
|
|
35
47
|
get handle() {
|
|
@@ -42,7 +54,7 @@ export default class Resource {
|
|
|
42
54
|
const children = this._handle && this._deleteHandle(this._handle);
|
|
43
55
|
|
|
44
56
|
if (this._handle) {
|
|
45
|
-
this.
|
|
57
|
+
this.removeStats();
|
|
46
58
|
}
|
|
47
59
|
|
|
48
60
|
this._handle = null;
|
|
@@ -82,7 +94,7 @@ export default class Resource {
|
|
|
82
94
|
this.bind(null);
|
|
83
95
|
}
|
|
84
96
|
|
|
85
|
-
getParameter(pname,
|
|
97
|
+
getParameter(pname, props = {}) {
|
|
86
98
|
pname = getKeyValue(this.gl, pname);
|
|
87
99
|
assert(pname);
|
|
88
100
|
const parameters = this.constructor.PARAMETERS || {};
|
|
@@ -100,7 +112,7 @@ export default class Resource {
|
|
|
100
112
|
}
|
|
101
113
|
}
|
|
102
114
|
|
|
103
|
-
return this._getParameter(pname,
|
|
115
|
+
return this._getParameter(pname, props);
|
|
104
116
|
}
|
|
105
117
|
|
|
106
118
|
getParameters(options = {}) {
|
|
@@ -166,7 +178,7 @@ export default class Resource {
|
|
|
166
178
|
return stubRemovedMethods(this, className, version, methodNames);
|
|
167
179
|
}
|
|
168
180
|
|
|
169
|
-
initialize(
|
|
181
|
+
initialize(props) {}
|
|
170
182
|
|
|
171
183
|
_createHandle() {
|
|
172
184
|
throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
|
|
@@ -184,7 +196,7 @@ export default class Resource {
|
|
|
184
196
|
throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
|
|
185
197
|
}
|
|
186
198
|
|
|
187
|
-
_getParameter(pname,
|
|
199
|
+
_getParameter(pname, props) {
|
|
188
200
|
throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
|
|
189
201
|
}
|
|
190
202
|
|
|
@@ -192,38 +204,5 @@ export default class Resource {
|
|
|
192
204
|
throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
|
|
193
205
|
}
|
|
194
206
|
|
|
195
|
-
_context() {
|
|
196
|
-
this.gl.luma = this.gl.luma || {};
|
|
197
|
-
return this.gl.luma;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
_addStats() {
|
|
201
|
-
const name = this.constructor.name;
|
|
202
|
-
const stats = lumaStats.get('Resource Counts');
|
|
203
|
-
stats.get('Resources Created').incrementCount();
|
|
204
|
-
stats.get(`${name}s Created`).incrementCount();
|
|
205
|
-
stats.get(`${name}s Active`).incrementCount();
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
_removeStats() {
|
|
209
|
-
const name = this.constructor.name;
|
|
210
|
-
const stats = lumaStats.get('Resource Counts');
|
|
211
|
-
stats.get(`${name}s Active`).decrementCount();
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
_trackAllocatedMemory(bytes, name = this.constructor.name) {
|
|
215
|
-
const stats = lumaStats.get('Memory Usage');
|
|
216
|
-
stats.get('GPU Memory').addCount(bytes);
|
|
217
|
-
stats.get(`${name} Memory`).addCount(bytes);
|
|
218
|
-
this.byteLength = bytes;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
_trackDeallocatedMemory(name = this.constructor.name) {
|
|
222
|
-
const stats = lumaStats.get('Memory Usage');
|
|
223
|
-
stats.get('GPU Memory').subtractCount(this.byteLength);
|
|
224
|
-
stats.get(`${name} Memory`).subtractCount(this.byteLength);
|
|
225
|
-
this.byteLength = 0;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
207
|
}
|
|
229
|
-
//# sourceMappingURL=resource.js.map
|
|
208
|
+
//# sourceMappingURL=webgl-resource.js.map
|