@luma.gl/webgl 8.5.10 → 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
|
@@ -4,17 +4,24 @@ import Accessor from './accessor';
|
|
|
4
4
|
import {isWebGL2} from '@luma.gl/gltools';
|
|
5
5
|
import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* is a mechanism for taking a program object and querying information
|
|
9
|
+
* about it, so as to be able to interface and interact with it.
|
|
10
|
+
* For example, if there is a uniform, you may need to query its
|
|
11
|
+
* location so that you can set its value.
|
|
12
|
+
*/
|
|
13
|
+
export default class ProgramConfiguration {
|
|
14
|
+
id: string;
|
|
15
|
+
attributeInfos = [];
|
|
16
|
+
attributeInfosByName = {};
|
|
17
|
+
// Locations may not be contiguous the case of matrix attributes
|
|
18
|
+
// so keep a separate location->attribute map.
|
|
19
|
+
attributeInfosByLocation = [];
|
|
20
|
+
varyingInfos = [];
|
|
21
|
+
varyingInfosByName = {};
|
|
22
|
+
|
|
8
23
|
constructor(program) {
|
|
9
24
|
this.id = program.id;
|
|
10
|
-
this.attributeInfos = [];
|
|
11
|
-
this.attributeInfosByName = {};
|
|
12
|
-
|
|
13
|
-
// Locations may not be contiguous the case of matrix attributes
|
|
14
|
-
// so keep a separate location->attribute map.
|
|
15
|
-
this.attributeInfosByLocation = [];
|
|
16
|
-
this.varyingInfos = [];
|
|
17
|
-
this.varyingInfosByName = {};
|
|
18
25
|
Object.seal(this);
|
|
19
26
|
this._readAttributesFromProgram(program);
|
|
20
27
|
this._readVaryingsFromProgram(program);
|
|
@@ -48,12 +55,12 @@ export default class ProgramConfiguration {
|
|
|
48
55
|
}
|
|
49
56
|
|
|
50
57
|
getVaryingIndex(locationOrName) {
|
|
51
|
-
const varying = this.getVaryingInfo();
|
|
58
|
+
const varying = this.getVaryingInfo(locationOrName);
|
|
52
59
|
return varying ? varying.location : -1;
|
|
53
60
|
}
|
|
54
61
|
|
|
55
62
|
getVaryingAccessor(locationOrName) {
|
|
56
|
-
const varying = this.getVaryingInfo();
|
|
63
|
+
const varying = this.getVaryingInfo(locationOrName);
|
|
57
64
|
return varying ? varying.accessor : null;
|
|
58
65
|
}
|
|
59
66
|
|
|
@@ -1,51 +1,66 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import WebGLResource, {ResourceProps} from './webgl-resource';
|
|
4
4
|
import Texture from './texture';
|
|
5
5
|
import Framebuffer from './framebuffer';
|
|
6
6
|
import {parseUniformName, getUniformSetter} from './uniforms';
|
|
7
|
-
import {VertexShader, FragmentShader} from './shader';
|
|
7
|
+
import {VertexShader, FragmentShader} from './webgl-shader';
|
|
8
8
|
import ProgramConfiguration from './program-configuration';
|
|
9
9
|
import {copyUniform, checkUniformValues} from './uniforms';
|
|
10
10
|
|
|
11
11
|
import {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';
|
|
12
|
-
import {getKey} from '../webgl-utils
|
|
12
|
+
import {getKey} from '../webgl-utils';
|
|
13
13
|
import {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';
|
|
14
|
-
import {assert} from '../utils
|
|
15
|
-
import {uid} from '../utils/utils';
|
|
14
|
+
import {uid, assert} from '../utils';
|
|
16
15
|
|
|
17
16
|
const LOG_PROGRAM_PERF_PRIORITY = 4;
|
|
18
17
|
|
|
19
18
|
const GL_SEPARATE_ATTRIBS = 0x8c8d;
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
'getUniformCount',
|
|
29
|
-
'getUniformInfo',
|
|
30
|
-
'getUniformLocation',
|
|
31
|
-
'getUniformValue',
|
|
32
|
-
|
|
33
|
-
'getVarying',
|
|
34
|
-
'getFragDataLocation',
|
|
35
|
-
'getAttachedShaders',
|
|
36
|
-
'getAttributeCount',
|
|
37
|
-
'getAttributeLocation',
|
|
38
|
-
'getAttributeInfo'
|
|
39
|
-
];
|
|
40
|
-
|
|
41
|
-
export default class Program extends Resource {
|
|
42
|
-
constructor(gl, props = {}) {
|
|
43
|
-
super(gl, props);
|
|
20
|
+
export type ProgramProps = ResourceProps & {
|
|
21
|
+
hash?;
|
|
22
|
+
vs?;
|
|
23
|
+
fs?;
|
|
24
|
+
varyings?;
|
|
25
|
+
bufferMode?: number;
|
|
26
|
+
}
|
|
44
27
|
|
|
45
|
-
|
|
28
|
+
export type ProgramDrawOptions = {
|
|
29
|
+
logPriority?: any;
|
|
30
|
+
drawMode?: any;
|
|
31
|
+
vertexCount: any;
|
|
32
|
+
offset?: number;
|
|
33
|
+
start?: any;
|
|
34
|
+
end?: any;
|
|
35
|
+
isIndexed?: boolean;
|
|
36
|
+
indexType?: any;
|
|
37
|
+
instanceCount?: number;
|
|
38
|
+
isInstanced?: boolean;
|
|
39
|
+
vertexArray?: any;
|
|
40
|
+
transformFeedback?: any;
|
|
41
|
+
framebuffer?: any;
|
|
42
|
+
parameters?: {};
|
|
43
|
+
uniforms?: any;
|
|
44
|
+
samplers?: any;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default class Program extends WebGLResource<ProgramProps> {
|
|
48
|
+
configuration: ProgramConfiguration;
|
|
49
|
+
// Experimental flag to avoid deleting Program object while it is cached
|
|
50
|
+
_isCached = false;
|
|
51
|
+
_textureIndexCounter = 0;
|
|
52
|
+
hash: string;; // Used by ProgramManager
|
|
53
|
+
vs;
|
|
54
|
+
fs;
|
|
55
|
+
uniforms: {};
|
|
56
|
+
_textureUniforms: {};
|
|
57
|
+
varyings: {};
|
|
58
|
+
_uniformCount = 0;
|
|
59
|
+
_uniformSetters: {};
|
|
60
|
+
|
|
61
|
+
constructor(gl: WebGLRenderingContext, props: ProgramProps = {}) {
|
|
62
|
+
super(gl, props, {} as any);
|
|
46
63
|
|
|
47
|
-
// Experimental flag to avoid deleting Program object while it is cached
|
|
48
|
-
this._isCached = false;
|
|
49
64
|
|
|
50
65
|
this.initialize(props);
|
|
51
66
|
|
|
@@ -54,7 +69,7 @@ export default class Program extends Resource {
|
|
|
54
69
|
this._setId(props.id);
|
|
55
70
|
}
|
|
56
71
|
|
|
57
|
-
initialize(props = {}) {
|
|
72
|
+
initialize(props: ProgramProps = {}) {
|
|
58
73
|
const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS} = props;
|
|
59
74
|
|
|
60
75
|
this.hash = hash || ''; // Used by ProgramManager
|
|
@@ -103,7 +118,8 @@ export default class Program extends Resource {
|
|
|
103
118
|
|
|
104
119
|
// A good thing about the WebGL API is that there are so many ways to draw things ;)
|
|
105
120
|
// This function unifies those ways into a single call using common parameters with sane defaults
|
|
106
|
-
draw({
|
|
121
|
+
draw(options: ProgramDrawOptions): boolean {
|
|
122
|
+
const {
|
|
107
123
|
logPriority, // Probe log priority, enables Model to do more integrated logging
|
|
108
124
|
|
|
109
125
|
drawMode = GL.TRIANGLES,
|
|
@@ -119,13 +135,15 @@ export default class Program extends Resource {
|
|
|
119
135
|
vertexArray = null,
|
|
120
136
|
transformFeedback,
|
|
121
137
|
framebuffer,
|
|
122
|
-
parameters = {},
|
|
123
138
|
|
|
124
139
|
// Deprecated
|
|
125
140
|
uniforms,
|
|
126
141
|
samplers
|
|
127
|
-
}
|
|
128
|
-
|
|
142
|
+
} = options;
|
|
143
|
+
|
|
144
|
+
let {parameters = {}} = options;
|
|
145
|
+
|
|
146
|
+
if (uniforms || samplers) {
|
|
129
147
|
// DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)
|
|
130
148
|
log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();
|
|
131
149
|
this.setUniforms(uniforms || {});
|
|
@@ -358,10 +376,12 @@ export default class Program extends Resource {
|
|
|
358
376
|
const info = this.gl.getActiveUniform(this.handle, i);
|
|
359
377
|
const {name} = parseUniformName(info.name);
|
|
360
378
|
let location = gl.getUniformLocation(this.handle, name);
|
|
379
|
+
// @ts-expect-error
|
|
361
380
|
this._uniformSetters[name] = getUniformSetter(gl, location, info);
|
|
362
381
|
if (info.size > 1) {
|
|
363
382
|
for (let l = 0; l < info.size; l++) {
|
|
364
383
|
location = gl.getUniformLocation(this.handle, `${name}[${l}]`);
|
|
384
|
+
// @ts-expect-error
|
|
365
385
|
this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info);
|
|
366
386
|
}
|
|
367
387
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// WebGL2 Query (also handles disjoint timer extensions)
|
|
2
|
-
import Resource from './resource';
|
|
3
|
-
import {FEATURES, hasFeatures} from '../features';
|
|
4
2
|
import {isWebGL2} from '@luma.gl/gltools';
|
|
5
|
-
import {
|
|
3
|
+
import WebGLResource, {ResourceProps} from './webgl-resource';
|
|
4
|
+
import {FEATURES, hasFeatures} from '../features';
|
|
5
|
+
import {assert} from '../utils';
|
|
6
6
|
|
|
7
7
|
const GL_QUERY_RESULT = 0x8866; // Returns a GLuint containing the query result.
|
|
8
8
|
const GL_QUERY_RESULT_AVAILABLE = 0x8867; // whether query result is available.
|
|
@@ -14,17 +14,23 @@ const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88; // #primitives written
|
|
|
14
14
|
const GL_ANY_SAMPLES_PASSED = 0x8c2f; // Occlusion query (if drawing passed depth test)
|
|
15
15
|
const GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a; // Occlusion query less accurate/faster version
|
|
16
16
|
|
|
17
|
-
export
|
|
17
|
+
export type QueryProps = ResourceProps & {
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Asynchronous queries for different kinds of information
|
|
22
|
+
*/
|
|
23
|
+
export default class Query extends WebGLResource<QueryProps> {
|
|
18
24
|
// Returns true if Query is supported by the WebGL implementation
|
|
19
25
|
// Can also check whether timestamp queries are available.
|
|
20
|
-
static isSupported(gl,
|
|
26
|
+
static isSupported(gl: WebGLRenderingContext, options: string[] = []): boolean {
|
|
21
27
|
const webgl2 = isWebGL2(gl);
|
|
22
28
|
|
|
23
29
|
// Initial value
|
|
24
30
|
const hasTimerQuery = hasFeatures(gl, FEATURES.TIMER_QUERY);
|
|
25
31
|
let supported = webgl2 || hasTimerQuery;
|
|
26
32
|
|
|
27
|
-
for (const key of
|
|
33
|
+
for (const key of options) {
|
|
28
34
|
switch (key) {
|
|
29
35
|
case 'queries':
|
|
30
36
|
supported = supported && webgl2;
|
|
@@ -40,13 +46,13 @@ export default class Query extends Resource {
|
|
|
40
46
|
return supported;
|
|
41
47
|
}
|
|
42
48
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
target = null;
|
|
50
|
+
_queryPending = false;
|
|
51
|
+
_pollingPromise = null;
|
|
46
52
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
// Create a query class
|
|
54
|
+
constructor(gl: WebGLRenderingContext, opts: QueryProps = {}) {
|
|
55
|
+
super(gl, opts, {} as any);
|
|
50
56
|
|
|
51
57
|
Object.seal(this);
|
|
52
58
|
}
|
|
@@ -54,17 +60,17 @@ export default class Query extends Resource {
|
|
|
54
60
|
// Shortcut for timer query (dependent on extension in both WebGL1 and 2)
|
|
55
61
|
// Measures GPU time delta between this call and a matching `end` call in the
|
|
56
62
|
// GPU instruction stream.
|
|
57
|
-
beginTimeElapsedQuery() {
|
|
63
|
+
beginTimeElapsedQuery(): this {
|
|
58
64
|
return this.begin(GL_TIME_ELAPSED_EXT);
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
// Shortcut for occlusion queries
|
|
62
|
-
beginOcclusionQuery({conservative
|
|
63
|
-
return this.begin(conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);
|
|
68
|
+
beginOcclusionQuery(options?: {conservative?: boolean}): this {
|
|
69
|
+
return this.begin(options?.conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
// Shortcut for transformFeedbackQuery
|
|
67
|
-
beginTransformFeedbackQuery() {
|
|
73
|
+
beginTransformFeedbackQuery(): this {
|
|
68
74
|
return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
|
|
69
75
|
}
|
|
70
76
|
|
|
@@ -73,7 +79,7 @@ export default class Query extends Resource {
|
|
|
73
79
|
// calling `begin()` on another query. While there can be multiple
|
|
74
80
|
// outstanding queries representing disjoint `begin()`/`end()` intervals.
|
|
75
81
|
// It is not possible to interleave or overlap `begin` and `end` calls.
|
|
76
|
-
begin(target) {
|
|
82
|
+
begin(target: number): this {
|
|
77
83
|
// Don't start a new query if one is already active.
|
|
78
84
|
if (this._queryPending) {
|
|
79
85
|
return this;
|
|
@@ -86,7 +92,7 @@ export default class Query extends Resource {
|
|
|
86
92
|
}
|
|
87
93
|
|
|
88
94
|
// ends the current query
|
|
89
|
-
end() {
|
|
95
|
+
end(): this {
|
|
90
96
|
// Can't end a new query if the last one hasn't been resolved.
|
|
91
97
|
if (this._queryPending) {
|
|
92
98
|
return this;
|
|
@@ -101,7 +107,7 @@ export default class Query extends Resource {
|
|
|
101
107
|
}
|
|
102
108
|
|
|
103
109
|
// Returns true if the query result is available
|
|
104
|
-
isResultAvailable() {
|
|
110
|
+
isResultAvailable(): boolean {
|
|
105
111
|
if (!this._queryPending) {
|
|
106
112
|
return false;
|
|
107
113
|
}
|
|
@@ -114,12 +120,12 @@ export default class Query extends Resource {
|
|
|
114
120
|
}
|
|
115
121
|
|
|
116
122
|
// Timing query is disjoint, i.e. results are invalid
|
|
117
|
-
isTimerDisjoint() {
|
|
123
|
+
isTimerDisjoint(): boolean {
|
|
118
124
|
return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);
|
|
119
125
|
}
|
|
120
126
|
|
|
121
127
|
// Returns query result.
|
|
122
|
-
getResult() {
|
|
128
|
+
getResult(): any {
|
|
123
129
|
return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);
|
|
124
130
|
}
|
|
125
131
|
|
|
@@ -129,7 +135,7 @@ export default class Query extends Resource {
|
|
|
129
135
|
}
|
|
130
136
|
|
|
131
137
|
// Polls the query
|
|
132
|
-
createPoll(limit = Number.POSITIVE_INFINITY) {
|
|
138
|
+
createPoll(limit: number = Number.POSITIVE_INFINITY): Promise<any> {
|
|
133
139
|
if (this._pollingPromise) {
|
|
134
140
|
return this._pollingPromise;
|
|
135
141
|
}
|
|
@@ -1,14 +1,40 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
|
+
import {isWebGL2} from '@luma.gl/gltools';
|
|
3
|
+
|
|
4
|
+
export function isRenderbufferFormatSupported(gl: WebGLRenderingContext, format: GL): boolean {
|
|
5
|
+
const info = RENDERBUFFER_FORMATS[format];
|
|
6
|
+
// Unknown format
|
|
7
|
+
if (!info) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
if (info.ext) {
|
|
11
|
+
return Boolean(gl.getExtension(info.ext));
|
|
12
|
+
}
|
|
13
|
+
if (info.gl2) {
|
|
14
|
+
return isWebGL2(gl);
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function getRenderbufferFormatBytesPerPixel(format: GL): number {
|
|
20
|
+
return RENDERBUFFER_FORMATS[format].bpp;
|
|
21
|
+
}
|
|
2
22
|
|
|
3
23
|
// Define local extension strings to optimize minification
|
|
4
|
-
// const SRGB = 'EXT_sRGB';
|
|
5
|
-
// const EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';
|
|
6
24
|
const EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';
|
|
7
|
-
// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';
|
|
8
25
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
26
|
+
/**
|
|
27
|
+
* @param bpp "bytes per pixel", used for memory usage calculations.
|
|
28
|
+
* @param gl2 requires WebGL2
|
|
29
|
+
* @param ext requires extension
|
|
30
|
+
*/
|
|
31
|
+
type RenderbufferFormat = {
|
|
32
|
+
bpp: number;
|
|
33
|
+
gl2?: boolean;
|
|
34
|
+
ext?: string;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const RENDERBUFFER_FORMATS: Record<string, RenderbufferFormat> = {
|
|
12
38
|
[GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.
|
|
13
39
|
[GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},
|
|
14
40
|
[GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},
|
|
@@ -52,13 +78,15 @@ export default {
|
|
|
52
78
|
[GL.RGBA32UI]: {gl2: true, bpp: 16},
|
|
53
79
|
|
|
54
80
|
// When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension
|
|
55
|
-
[GL.R16F]: {
|
|
56
|
-
[GL.RG16F]: {
|
|
57
|
-
[GL.RGBA16F]: {
|
|
58
|
-
[GL.R32F]: {
|
|
59
|
-
[GL.RG32F]: {
|
|
81
|
+
[GL.R16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 2},
|
|
82
|
+
[GL.RG16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4},
|
|
83
|
+
[GL.RGBA16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 8},
|
|
84
|
+
[GL.R32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4},
|
|
85
|
+
[GL.RG32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 8},
|
|
60
86
|
// TODO - can't get WEBGL_color_buffer_float to work on renderbuffers
|
|
61
|
-
[GL.RGBA32F]: {
|
|
62
|
-
// [GL.RGBA32F]: {
|
|
63
|
-
[GL.R11F_G11F_B10F]: {
|
|
87
|
+
[GL.RGBA32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 16},
|
|
88
|
+
// [GL.RGBA32F]: {ext: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},
|
|
89
|
+
[GL.R11F_G11F_B10F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4}
|
|
64
90
|
};
|
|
91
|
+
|
|
92
|
+
export default RENDERBUFFER_FORMATS;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/* eslint-disable no-inline-comments */
|
|
2
|
+
import GL from '@luma.gl/constants';
|
|
3
|
+
import WebGLResource, {ResourceProps} from './webgl-resource';
|
|
4
|
+
import {isRenderbufferFormatSupported, getRenderbufferFormatBytesPerPixel} from './renderbuffer-formats';
|
|
5
|
+
import {isWebGL2} from '@luma.gl/gltools';
|
|
6
|
+
import {assert} from '../utils';
|
|
7
|
+
|
|
8
|
+
export type RenderbufferProps = ResourceProps & {
|
|
9
|
+
format: number;
|
|
10
|
+
width?: number;
|
|
11
|
+
height?: number;
|
|
12
|
+
samples?: number;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
|
|
16
|
+
id: undefined,
|
|
17
|
+
handle: undefined,
|
|
18
|
+
userData: undefined,
|
|
19
|
+
format: 0,
|
|
20
|
+
width: 1,
|
|
21
|
+
height: 1,
|
|
22
|
+
samples: 0
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Renderbuffers are GPU objects that contain images.
|
|
27
|
+
* In contrast to Textures they are optimized for use as render targets, with Framebuffers.
|
|
28
|
+
* while Textures may not be, and are the logical choice when
|
|
29
|
+
* you do not need to sample (i.e. in a post-pass shader)
|
|
30
|
+
* from the produced image. If you need to resample
|
|
31
|
+
* (such as when reading depth back in a second shader pass),
|
|
32
|
+
* use Textures instead.
|
|
33
|
+
* Renderbuffer objects also natively accommodate Multisampling (MSAA).
|
|
34
|
+
*/
|
|
35
|
+
export class ImmutableRenderbuffer extends WebGLResource<RenderbufferProps> {
|
|
36
|
+
static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
|
|
37
|
+
return !options.format || isRenderbufferFormatSupported(gl, options.format);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
constructor(gl: WebGLRenderingContext, props: RenderbufferProps) {
|
|
41
|
+
super(gl, props, DEFAULT_RENDERBUFFER_PROPS);
|
|
42
|
+
this._initialize(this.props);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// PRIVATE METHODS
|
|
46
|
+
|
|
47
|
+
/** Creates and initializes a renderbuffer object's data store */
|
|
48
|
+
protected _initialize(props: Required<RenderbufferProps>) {
|
|
49
|
+
const {format, width, height, samples} = props;
|
|
50
|
+
assert(format, 'Needs format');
|
|
51
|
+
|
|
52
|
+
this.trackDeallocatedMemory();
|
|
53
|
+
|
|
54
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
|
|
55
|
+
|
|
56
|
+
if (samples !== 0 && isWebGL2(this.gl)) {
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);
|
|
59
|
+
} else {
|
|
60
|
+
this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
|
|
64
|
+
|
|
65
|
+
this.trackAllocatedMemory(
|
|
66
|
+
width * height * (samples || 1) * getRenderbufferFormatBytesPerPixel(format)
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// RESOURECE IMPLEMENTATION
|
|
73
|
+
|
|
74
|
+
_createHandle() {
|
|
75
|
+
return this.gl.createRenderbuffer();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
_deleteHandle(): void {
|
|
79
|
+
this.gl.deleteRenderbuffer(this.handle);
|
|
80
|
+
this.trackDeallocatedMemory();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
_bindHandle(handle): void {
|
|
84
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Renderbuffers are GPU objects that contain images.
|
|
91
|
+
* In contrast to Textures they are optimized for use as render targets, with Framebuffers.
|
|
92
|
+
* while Textures may not be, and are the logical choice when
|
|
93
|
+
* you do not need to sample (i.e. in a post-pass shader)
|
|
94
|
+
* from the produced image. If you need to resample
|
|
95
|
+
* (such as when reading depth back in a second shader pass),
|
|
96
|
+
* use Textures instead.
|
|
97
|
+
* Renderbuffer objects also natively accommodate Multisampling (MSAA).
|
|
98
|
+
*/
|
|
99
|
+
export default class Renderbuffer extends ImmutableRenderbuffer {
|
|
100
|
+
get width(): number { return this.props.width; }
|
|
101
|
+
get height(): number { return this.props.height; }
|
|
102
|
+
get format(): number { return this.props.format; }
|
|
103
|
+
get samples(): number { return this.props.samples; }
|
|
104
|
+
|
|
105
|
+
static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
|
|
106
|
+
return ImmutableRenderbuffer.isSupported(gl, options);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
static getSamplesForFormat(gl: WebGL2RenderingContext, options: {format: number}): number{
|
|
110
|
+
// Polyfilled to return [0] under WebGL1
|
|
111
|
+
return gl.getInternalformatParameter(GL.RENDERBUFFER, options.format, GL.SAMPLES);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
constructor(gl: WebGLRenderingContext, props?: RenderbufferProps) {
|
|
115
|
+
super(gl, props);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
resize(size: {width: number, height: number}): this {
|
|
119
|
+
// Don't resize if width/height haven't changed
|
|
120
|
+
if (size.width !== this.width || size.height !== this.height) {
|
|
121
|
+
return this.initialize({...size, format: this.format, samples: this.samples});
|
|
122
|
+
}
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** Creates and initializes a renderbuffer object's data store */
|
|
127
|
+
initialize(props: RenderbufferProps): this {
|
|
128
|
+
Object.assign(this.props, props);
|
|
129
|
+
this._initialize(this.props);
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// PRIVATE
|
|
134
|
+
|
|
135
|
+
_syncHandle(handle) {
|
|
136
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
|
|
137
|
+
Object.assign(this.props, {
|
|
138
|
+
format: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_INTERNAL_FORMAT),
|
|
139
|
+
width: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_WIDTH),
|
|
140
|
+
height: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_HEIGHT),
|
|
141
|
+
samples: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_SAMPLES)
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// @param {Boolean} opt.autobind=true - method call will bind/unbind object
|
|
146
|
+
// @returns {GLenum|GLint} - depends on pname
|
|
147
|
+
_getParameter(pname) {
|
|
148
|
+
this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
|
|
149
|
+
const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);
|
|
150
|
+
// this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
|
|
151
|
+
return value;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
2
|
import {assertWebGLContext} from '@luma.gl/gltools';
|
|
3
|
-
import Texture from './texture';
|
|
3
|
+
import Texture, {TextureProps} from './texture';
|
|
4
4
|
import {loadImage} from '../utils/load-file';
|
|
5
5
|
|
|
6
|
+
|
|
7
|
+
export type Texture2DProps = TextureProps & {
|
|
8
|
+
};
|
|
9
|
+
|
|
6
10
|
export default class Texture2D extends Texture {
|
|
7
|
-
static isSupported(gl, opts) {
|
|
11
|
+
static isSupported(gl: WebGLRenderingContext, opts?: object): boolean {
|
|
12
|
+
// @ts-expect-error
|
|
8
13
|
return Texture.isSupported(gl, opts);
|
|
9
14
|
}
|
|
10
15
|
|
|
11
|
-
constructor(gl, props
|
|
12
|
-
|
|
16
|
+
constructor(gl: WebGLRenderingContext, props?: Texture2DProps | Promise<Texture2DProps>) {
|
|
17
|
+
assertWebGLContext(gl);
|
|
13
18
|
|
|
14
19
|
// Signature: new Texture2D(gl, url | Promise)
|
|
15
20
|
if (props instanceof Promise || typeof props === 'string') {
|
|
@@ -17,7 +22,8 @@ export default class Texture2D extends Texture {
|
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
// Signature: new Texture2D(gl, {data: url})
|
|
20
|
-
if (typeof props
|
|
25
|
+
if (typeof props?.data === 'string') {
|
|
26
|
+
// @ts-expect-error
|
|
21
27
|
props = Object.assign({}, props, {data: loadImage(props.data)});
|
|
22
28
|
}
|
|
23
29
|
|
|
@@ -27,4 +33,8 @@ export default class Texture2D extends Texture {
|
|
|
27
33
|
|
|
28
34
|
Object.seal(this);
|
|
29
35
|
}
|
|
36
|
+
|
|
37
|
+
get [Symbol.toStringTag](): string {
|
|
38
|
+
return 'Texture2D';
|
|
39
|
+
}
|
|
30
40
|
}
|
|
@@ -1,24 +1,49 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
2
|
import {isWebGL2, assertWebGL2Context, withParameters} from '@luma.gl/gltools';
|
|
3
|
-
import Texture from './texture';
|
|
3
|
+
import Texture, {TextureProps} from './texture';
|
|
4
4
|
import {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';
|
|
5
|
-
import Buffer from './buffer';
|
|
5
|
+
import Buffer from './webgl-buffer';
|
|
6
6
|
|
|
7
|
+
export type Texture3DProps = TextureProps & {
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
type SetImageDataOptions = {
|
|
11
|
+
level?: number;
|
|
12
|
+
dataFormat?: any;
|
|
13
|
+
width: any;
|
|
14
|
+
height: any;
|
|
15
|
+
depth?: number;
|
|
16
|
+
border?: number;
|
|
17
|
+
format: any;
|
|
18
|
+
type?: any;
|
|
19
|
+
offset?: number;
|
|
20
|
+
data: any;
|
|
21
|
+
parameters?: {};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Textures that have 3 dimensions: width, height, and depth.
|
|
26
|
+
* They are accessed by 3-dimensional texture coordinates.
|
|
27
|
+
*/
|
|
7
28
|
export default class Texture3D extends Texture {
|
|
8
|
-
static isSupported(gl) {
|
|
29
|
+
static isSupported(gl: WebGLRenderingContext): boolean {
|
|
9
30
|
return isWebGL2(gl);
|
|
10
31
|
}
|
|
11
32
|
|
|
12
|
-
constructor(gl, props = {}) {
|
|
33
|
+
constructor(gl: WebGL2RenderingContext, props: Texture3DProps = {}) {
|
|
34
|
+
super(gl as WebGLRenderingContext, props);
|
|
13
35
|
assertWebGL2Context(gl);
|
|
14
36
|
props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});
|
|
15
|
-
super(gl, props);
|
|
16
37
|
this.initialize(props);
|
|
17
38
|
|
|
18
39
|
Object.seal(this);
|
|
19
40
|
}
|
|
20
41
|
|
|
21
|
-
|
|
42
|
+
get [Symbol.toStringTag](): string {
|
|
43
|
+
return 'Texture3D';
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Image 3D copies from Typed Array or WebGLBuffer */
|
|
22
47
|
setImageData({
|
|
23
48
|
level = 0,
|
|
24
49
|
dataFormat = GL.RGBA,
|
|
@@ -31,8 +56,8 @@ export default class Texture3D extends Texture {
|
|
|
31
56
|
offset = 0,
|
|
32
57
|
data,
|
|
33
58
|
parameters = {}
|
|
34
|
-
}) {
|
|
35
|
-
this.
|
|
59
|
+
}: SetImageDataOptions) {
|
|
60
|
+
this.trackDeallocatedMemory('Texture');
|
|
36
61
|
|
|
37
62
|
this.gl.bindTexture(this.target, this.handle);
|
|
38
63
|
|
|
@@ -72,7 +97,7 @@ export default class Texture3D extends Texture {
|
|
|
72
97
|
});
|
|
73
98
|
|
|
74
99
|
if (data && data.byteLength) {
|
|
75
|
-
this.
|
|
100
|
+
this.trackAllocatedMemory(data.byteLength, 'Texture');
|
|
76
101
|
} else {
|
|
77
102
|
// NOTE(Tarek): Default to RGBA bytes
|
|
78
103
|
// @ts-ignore
|
|
@@ -80,7 +105,7 @@ export default class Texture3D extends Texture {
|
|
|
80
105
|
// @ts-ignore
|
|
81
106
|
const channelSize = TYPE_SIZES[this.type] || 1;
|
|
82
107
|
|
|
83
|
-
this.
|
|
108
|
+
this.trackAllocatedMemory(
|
|
84
109
|
this.width * this.height * this.depth * channels * channelSize,
|
|
85
110
|
'Texture'
|
|
86
111
|
);
|