@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
|
@@ -2,11 +2,54 @@
|
|
|
2
2
|
|
|
3
3
|
import GL from '@luma.gl/constants';
|
|
4
4
|
import {log} from '@luma.gl/gltools';
|
|
5
|
+
import {Matrix4} from '@math.gl/core';
|
|
5
6
|
|
|
6
7
|
import Framebuffer from './framebuffer';
|
|
7
8
|
import Renderbuffer from './renderbuffer';
|
|
8
9
|
import Texture from './texture';
|
|
9
|
-
import {assert} from '../utils
|
|
10
|
+
import {assert} from '../utils';
|
|
11
|
+
|
|
12
|
+
type NumberUniformInfo = {
|
|
13
|
+
type: 'number'
|
|
14
|
+
value: number
|
|
15
|
+
min: number
|
|
16
|
+
max: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type BooleanUniformInfo = {
|
|
20
|
+
type: 'boolean'
|
|
21
|
+
value: boolean
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type ArrayUniformInfo = {
|
|
25
|
+
type: 'array'
|
|
26
|
+
value: Array<any>
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
type ObjectUniformInfo = {
|
|
30
|
+
type: 'object'
|
|
31
|
+
value: Object
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
type UniformInfo = NumberUniformInfo |
|
|
35
|
+
BooleanUniformInfo |
|
|
36
|
+
ArrayUniformInfo |
|
|
37
|
+
ObjectUniformInfo
|
|
38
|
+
|
|
39
|
+
// https://luma.gl/docs/developer-guide/shader-modules#getuniforms
|
|
40
|
+
type UniformsOptions = {
|
|
41
|
+
[uniformName: string]: UniformInfo
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
type Uniform = UniformInfo |
|
|
45
|
+
Buffer | (() => Buffer) | Framebuffer |
|
|
46
|
+
Texture |
|
|
47
|
+
Matrix4 | // TODO: which other math.gl classes?
|
|
48
|
+
number | [number, number] | [number, number, number] | [number, number, number, number]
|
|
49
|
+
|
|
50
|
+
type Uniforms = {
|
|
51
|
+
[uniformName: string]: Uniform
|
|
52
|
+
}
|
|
10
53
|
|
|
11
54
|
const UNIFORM_SETTERS = {
|
|
12
55
|
// WEBGL1
|
|
@@ -136,52 +179,10 @@ const UINT_ARRAY = {};
|
|
|
136
179
|
|
|
137
180
|
const array1 = [0];
|
|
138
181
|
|
|
139
|
-
// Functions to ensure the type of uniform values
|
|
140
|
-
// This is done because uniform*v functions
|
|
141
|
-
// are extremely slow when consuming JS arrays directly.
|
|
142
|
-
function toTypedArray(value, uniformLength, Type, cache) {
|
|
143
|
-
// convert boolean uniforms to Number
|
|
144
|
-
if (uniformLength === 1 && typeof value === 'boolean') {
|
|
145
|
-
value = value ? 1 : 0;
|
|
146
|
-
}
|
|
147
|
-
if (Number.isFinite(value)) {
|
|
148
|
-
array1[0] = value;
|
|
149
|
-
value = array1;
|
|
150
|
-
}
|
|
151
|
-
const length = value.length;
|
|
152
|
-
if (length % uniformLength) {
|
|
153
|
-
log.warn(`Uniform size should be multiples of ${uniformLength}`, value)();
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (value instanceof Type) {
|
|
157
|
-
return value;
|
|
158
|
-
}
|
|
159
|
-
let result = cache[length];
|
|
160
|
-
if (!result) {
|
|
161
|
-
result = new Type(length);
|
|
162
|
-
cache[length] = result;
|
|
163
|
-
}
|
|
164
|
-
for (let i = 0; i < length; i++) {
|
|
165
|
-
result[i] = value[i];
|
|
166
|
-
}
|
|
167
|
-
return result;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
function toFloatArray(value, uniformLength) {
|
|
171
|
-
return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
function toIntArray(value, uniformLength) {
|
|
175
|
-
return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
function toUIntArray(value, uniformLength) {
|
|
179
|
-
return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);
|
|
180
|
-
} // Returns a Magic Uniform Setter
|
|
181
|
-
|
|
182
182
|
// PUBLIC API
|
|
183
183
|
|
|
184
|
-
/**
|
|
184
|
+
/** Returns a Magic Uniform Setter */
|
|
185
|
+
export function getUniformSetter(gl: WebGLRenderingContext, location: number, info: UniformInfo): any {
|
|
185
186
|
const setter = UNIFORM_SETTERS[info.type];
|
|
186
187
|
if (!setter) {
|
|
187
188
|
throw new Error(`Unknown GLSL uniform type ${info.type}`);
|
|
@@ -192,8 +193,7 @@ function toUIntArray(value, uniformLength) {
|
|
|
192
193
|
return setter().bind(null, gl, location);
|
|
193
194
|
}
|
|
194
195
|
|
|
195
|
-
|
|
196
|
-
export function parseUniformName(name) {
|
|
196
|
+
export function parseUniformName(name: string): {name: string; isArray: boolean, length: number} {
|
|
197
197
|
// Shortcut to avoid redundant or bad matches
|
|
198
198
|
if (name[name.length - 1] !== ']') {
|
|
199
199
|
return {
|
|
@@ -212,15 +212,20 @@ export function parseUniformName(name) {
|
|
|
212
212
|
|
|
213
213
|
return {
|
|
214
214
|
name: matches[1],
|
|
215
|
-
length: matches[2] || 1,
|
|
215
|
+
length: Number(matches[2]) || 1,
|
|
216
216
|
isArray: Boolean(matches[2])
|
|
217
217
|
};
|
|
218
|
-
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// To facilitate early detection of e.g. undefined values in JavaScript
|
|
219
221
|
|
|
220
222
|
// Basic checks of uniform values (with or without knowledge of program)
|
|
221
223
|
|
|
222
|
-
/**
|
|
223
|
-
|
|
224
|
+
/**
|
|
225
|
+
* Basic checks of uniform values (with or without knowledge of program)
|
|
226
|
+
* To facilitate early detection of e.g. undefined values in JavaScript
|
|
227
|
+
*/
|
|
228
|
+
export function checkUniformValues(uniforms: object, source?: string, uniformMap?: object): boolean {
|
|
224
229
|
for (const uniformName in uniforms) {
|
|
225
230
|
const value = uniforms[uniformName];
|
|
226
231
|
const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);
|
|
@@ -236,6 +241,28 @@ export function checkUniformValues(uniforms, source, uniformMap) {
|
|
|
236
241
|
return true;
|
|
237
242
|
}
|
|
238
243
|
|
|
244
|
+
/**
|
|
245
|
+
* Creates a copy of the uniform
|
|
246
|
+
*/
|
|
247
|
+
export function copyUniform(uniforms: object, key: string, value: any): void {
|
|
248
|
+
if (Array.isArray(value) || ArrayBuffer.isView(value)) {
|
|
249
|
+
if (uniforms[key]) {
|
|
250
|
+
const dest = uniforms[key];
|
|
251
|
+
// @ts-ignore
|
|
252
|
+
for (let i = 0, len = value.length; i < len; ++i) {
|
|
253
|
+
dest[i] = value[i];
|
|
254
|
+
}
|
|
255
|
+
} else {
|
|
256
|
+
// @ts-ignore
|
|
257
|
+
uniforms[key] = value.slice();
|
|
258
|
+
}
|
|
259
|
+
} else {
|
|
260
|
+
uniforms[key] = value;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// HELPERS
|
|
265
|
+
|
|
239
266
|
// TODO use type information during validation
|
|
240
267
|
function checkUniformValue(value) {
|
|
241
268
|
if (Array.isArray(value) || ArrayBuffer.isView(value)) {
|
|
@@ -257,25 +284,6 @@ function checkUniformValue(value) {
|
|
|
257
284
|
return false;
|
|
258
285
|
}
|
|
259
286
|
|
|
260
|
-
/** @type {types['copyUniform']} */
|
|
261
|
-
export function copyUniform(uniforms, key, value) {
|
|
262
|
-
if (Array.isArray(value) || ArrayBuffer.isView(value)) {
|
|
263
|
-
if (uniforms[key]) {
|
|
264
|
-
const dest = uniforms[key];
|
|
265
|
-
// @ts-ignore
|
|
266
|
-
for (let i = 0, len = value.length; i < len; ++i) {
|
|
267
|
-
dest[i] = value[i];
|
|
268
|
-
}
|
|
269
|
-
} else {
|
|
270
|
-
// @ts-ignore
|
|
271
|
-
uniforms[key] = value.slice();
|
|
272
|
-
}
|
|
273
|
-
} else {
|
|
274
|
-
uniforms[key] = value;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// HELPERS
|
|
279
287
|
|
|
280
288
|
function checkUniformArray(value) {
|
|
281
289
|
// Check that every element in array is a number, and at least 1 element
|
|
@@ -346,3 +354,47 @@ function setVectorUniform(gl, functionName, location, value) {
|
|
|
346
354
|
function setMatrixUniform(gl, functionName, location, value) {
|
|
347
355
|
gl[functionName](location, false, value);
|
|
348
356
|
}
|
|
357
|
+
|
|
358
|
+
// Functions to ensure the type of uniform values
|
|
359
|
+
// This is done because uniform*v functions
|
|
360
|
+
// are extremely slow when consuming JS arrays directly.
|
|
361
|
+
|
|
362
|
+
function toTypedArray(value, uniformLength, Type, cache) {
|
|
363
|
+
// convert boolean uniforms to Number
|
|
364
|
+
if (uniformLength === 1 && typeof value === 'boolean') {
|
|
365
|
+
value = value ? 1 : 0;
|
|
366
|
+
}
|
|
367
|
+
if (Number.isFinite(value)) {
|
|
368
|
+
array1[0] = value;
|
|
369
|
+
value = array1;
|
|
370
|
+
}
|
|
371
|
+
const length = value.length;
|
|
372
|
+
if (length % uniformLength) {
|
|
373
|
+
log.warn(`Uniform size should be multiples of ${uniformLength}`, value)();
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
if (value instanceof Type) {
|
|
377
|
+
return value;
|
|
378
|
+
}
|
|
379
|
+
let result = cache[length];
|
|
380
|
+
if (!result) {
|
|
381
|
+
result = new Type(length);
|
|
382
|
+
cache[length] = result;
|
|
383
|
+
}
|
|
384
|
+
for (let i = 0; i < length; i++) {
|
|
385
|
+
result[i] = value[i];
|
|
386
|
+
}
|
|
387
|
+
return result;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
function toFloatArray(value, uniformLength) {
|
|
391
|
+
return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
function toIntArray(value, uniformLength) {
|
|
395
|
+
return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
function toUIntArray(value, uniformLength) {
|
|
399
|
+
return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);
|
|
400
|
+
}
|
|
@@ -1,18 +1,31 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
|
-
import
|
|
3
|
-
import Buffer from './buffer';
|
|
4
|
-
import {isWebGL2} from '@luma.gl/gltools';
|
|
5
|
-
import {getScratchArray, fillArray} from '../utils/array-utils-flat';
|
|
6
|
-
import {assert} from '../utils/assert';
|
|
2
|
+
import {assertWebGL2Context, isWebGL2} from '@luma.gl/gltools';
|
|
7
3
|
import {getBrowser} from 'probe.gl';
|
|
4
|
+
import Program from './program';
|
|
5
|
+
import WebGLResource, {ResourceProps} from './webgl-resource';
|
|
6
|
+
import Buffer from './webgl-buffer';
|
|
7
|
+
import {getScratchArray, fillArray} from '../utils/array-utils-flat';
|
|
8
|
+
import {assert} from '../utils';
|
|
9
|
+
import {getLumaContextData} from '../context/luma-context-data';
|
|
8
10
|
|
|
9
11
|
const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
/**
|
|
14
|
+
* VertexArrayObject properties
|
|
15
|
+
* @param constantAttributeZero Attribute 0 can not be disable on most desktop OpenGL based browsers
|
|
16
|
+
* and on iOS Safari browser.
|
|
17
|
+
*/
|
|
18
|
+
export type VertexArrayObjectProps = ResourceProps & {
|
|
19
|
+
constantAttributeZero?: boolean;
|
|
20
|
+
program?: Program;
|
|
21
|
+
isDefaultArray?: boolean;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default class VertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
|
|
25
|
+
private static MAX_ATTRIBUTES: number;
|
|
26
|
+
|
|
27
|
+
static isSupported(gl: WebGLRenderingContext, options?: VertexArrayObjectProps): boolean {
|
|
28
|
+
if (options?.constantAttributeZero) {
|
|
16
29
|
return isWebGL2(gl) || getBrowser() === 'Chrome';
|
|
17
30
|
}
|
|
18
31
|
|
|
@@ -20,17 +33,19 @@ export default class VertexArrayObject extends Resource {
|
|
|
20
33
|
return true;
|
|
21
34
|
}
|
|
22
35
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Returns the global (null) vertex array object. Exists even when no extension available.
|
|
38
|
+
* @todo (Tarek): VAOs are now polyfilled. Deprecate this in 9.0
|
|
39
|
+
*/
|
|
40
|
+
static getDefaultArray(gl: WebGLRenderingContext): VertexArrayObject {
|
|
41
|
+
const lumaContextData = getLumaContextData(gl);
|
|
42
|
+
lumaContextData.defaultVertexArray = lumaContextData.defaultVertexArray ||
|
|
43
|
+
new VertexArrayObject(gl, {handle: null, isDefaultArray: true});
|
|
44
|
+
return lumaContextData.defaultVertexArray;
|
|
31
45
|
}
|
|
32
46
|
|
|
33
|
-
|
|
47
|
+
/** Get maximum number of attributes in a vertex array */
|
|
48
|
+
static getMaxAttributes(gl: WebGLRenderingContext): number {
|
|
34
49
|
// TODO - should be cached per context
|
|
35
50
|
// @ts-ignore
|
|
36
51
|
VertexArrayObject.MAX_ATTRIBUTES =
|
|
@@ -40,45 +55,50 @@ export default class VertexArrayObject extends Resource {
|
|
|
40
55
|
return VertexArrayObject.MAX_ATTRIBUTES;
|
|
41
56
|
}
|
|
42
57
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Set an attribute to a constant value
|
|
60
|
+
* @param gl
|
|
61
|
+
* @param location
|
|
62
|
+
* @param array
|
|
63
|
+
*
|
|
64
|
+
* @note Constants are stored globally on the WebGL context, not the VAO
|
|
65
|
+
* so they need to be updated before every render
|
|
66
|
+
* @todo - use known type (in configuration or passed in) to allow non-typed arrays?
|
|
67
|
+
* @todo - remember/cache values to avoid setting them unnecessarily?
|
|
68
|
+
*/
|
|
69
|
+
static setConstant(gl: WebGLRenderingContext, location: any, array: any): void {
|
|
48
70
|
switch (array.constructor) {
|
|
49
71
|
case Float32Array:
|
|
50
72
|
VertexArrayObject._setConstantFloatArray(gl, location, array);
|
|
51
73
|
break;
|
|
52
74
|
case Int32Array:
|
|
53
|
-
VertexArrayObject._setConstantIntArray(gl, location, array);
|
|
75
|
+
VertexArrayObject._setConstantIntArray(assertWebGL2Context(gl), location, array);
|
|
54
76
|
break;
|
|
55
77
|
case Uint32Array:
|
|
56
|
-
VertexArrayObject._setConstantUintArray(gl, location, array);
|
|
78
|
+
VertexArrayObject._setConstantUintArray(assertWebGL2Context(gl), location, array);
|
|
57
79
|
break;
|
|
58
80
|
default:
|
|
59
81
|
assert(false);
|
|
60
82
|
}
|
|
61
83
|
}
|
|
62
84
|
|
|
85
|
+
private buffer: Buffer | null = null;
|
|
86
|
+
private bufferValue = null;
|
|
87
|
+
private isDefaultArray: boolean = false;
|
|
88
|
+
|
|
63
89
|
// Create a VertexArray
|
|
64
|
-
constructor(gl, opts
|
|
90
|
+
constructor(gl: WebGLRenderingContext, opts?: VertexArrayObjectProps) {
|
|
65
91
|
// Use program's id if program but no id is supplied
|
|
66
|
-
|
|
67
|
-
super(gl, Object.assign({}, opts, {id}));
|
|
92
|
+
super(gl, {...opts, id: opts?.id || (opts?.program && opts?.program.id)}, {} as any);
|
|
68
93
|
|
|
69
94
|
this.buffer = null;
|
|
70
95
|
this.bufferValue = null;
|
|
71
|
-
this.isDefaultArray = opts
|
|
72
|
-
|
|
73
|
-
/** @type {WebGL2RenderingContext} */
|
|
74
|
-
this.gl2 = gl;
|
|
75
|
-
|
|
76
|
-
this.initialize(opts);
|
|
96
|
+
this.isDefaultArray = opts?.isDefaultArray || false;
|
|
77
97
|
|
|
78
98
|
Object.seal(this);
|
|
79
99
|
}
|
|
80
100
|
|
|
81
|
-
delete() {
|
|
101
|
+
delete(): this {
|
|
82
102
|
super.delete();
|
|
83
103
|
if (this.buffer) {
|
|
84
104
|
this.buffer.delete();
|
|
@@ -86,19 +106,10 @@ export default class VertexArrayObject extends Resource {
|
|
|
86
106
|
return this;
|
|
87
107
|
}
|
|
88
108
|
|
|
89
|
-
get MAX_ATTRIBUTES() {
|
|
109
|
+
get MAX_ATTRIBUTES(): number {
|
|
90
110
|
return VertexArrayObject.getMaxAttributes(this.gl);
|
|
91
111
|
}
|
|
92
112
|
|
|
93
|
-
initialize(props = {}) {
|
|
94
|
-
return this.setProps(props);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
setProps(props) {
|
|
98
|
-
// TODO: decide which props should be supported
|
|
99
|
-
return this;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
113
|
// Set (bind) an elements buffer, for indexed rendering.
|
|
103
114
|
// Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported
|
|
104
115
|
setElementBuffer(elementBuffer = null, opts = {}) {
|
|
@@ -112,8 +123,8 @@ export default class VertexArrayObject extends Resource {
|
|
|
112
123
|
return this;
|
|
113
124
|
}
|
|
114
125
|
|
|
115
|
-
|
|
116
|
-
setBuffer(location, buffer, accessor) {
|
|
126
|
+
/** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
|
|
127
|
+
setBuffer(location, buffer, accessor): this {
|
|
117
128
|
// Check target
|
|
118
129
|
if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
|
|
119
130
|
return this.setElementBuffer(buffer, accessor);
|
|
@@ -145,11 +156,13 @@ export default class VertexArrayObject extends Resource {
|
|
|
145
156
|
return this;
|
|
146
157
|
}
|
|
147
158
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
159
|
+
/**
|
|
160
|
+
* Enabling an attribute location makes it reference the currently bound buffer
|
|
161
|
+
* Disabling an attribute location makes it reference the global constant value
|
|
162
|
+
* TODO - handle single values for size 1 attributes?
|
|
163
|
+
* TODO - convert classic arrays based on known type?
|
|
164
|
+
*/
|
|
165
|
+
enable(location, enable = true): this {
|
|
153
166
|
// Attribute 0 cannot be disabled in most desktop OpenGL based browsers
|
|
154
167
|
const disablingAttributeZero =
|
|
155
168
|
!enable &&
|
|
@@ -158,21 +171,22 @@ export default class VertexArrayObject extends Resource {
|
|
|
158
171
|
|
|
159
172
|
if (!disablingAttributeZero) {
|
|
160
173
|
location = Number(location);
|
|
161
|
-
this.bind(
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
: this.gl.disableVertexAttribArray(location)
|
|
174
|
+
this.bind(() =>
|
|
175
|
+
enable
|
|
176
|
+
? this.gl.enableVertexAttribArray(location)
|
|
177
|
+
: this.gl.disableVertexAttribArray(location)
|
|
166
178
|
);
|
|
167
179
|
}
|
|
168
180
|
return this;
|
|
169
181
|
}
|
|
170
182
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
183
|
+
/**
|
|
184
|
+
* Provide a means to create a buffer that is equivalent to a constant.
|
|
185
|
+
* NOTE: Desktop OpenGL cannot disable attribute 0.
|
|
186
|
+
* https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-
|
|
187
|
+
* this-has-significant-performance-penalty
|
|
188
|
+
*/
|
|
189
|
+
getConstantBuffer(elementCount: number, value): Buffer {
|
|
176
190
|
// Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)
|
|
177
191
|
|
|
178
192
|
const constantValue = this._normalizeConstantArrayValue(value);
|
|
@@ -200,6 +214,19 @@ export default class VertexArrayObject extends Resource {
|
|
|
200
214
|
return this.buffer;
|
|
201
215
|
}
|
|
202
216
|
|
|
217
|
+
// DEPRECATED
|
|
218
|
+
|
|
219
|
+
/** @deprecated this function has no effect */
|
|
220
|
+
initialize(props?: VertexArrayObjectProps): this {
|
|
221
|
+
return this.setProps(props);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/** @deprecated this function is not implemented */
|
|
225
|
+
setProps(props: VertexArrayObjectProps): this {
|
|
226
|
+
// TODO: decide which props should be supported
|
|
227
|
+
return this;
|
|
228
|
+
}
|
|
229
|
+
|
|
203
230
|
// PRIVATE
|
|
204
231
|
|
|
205
232
|
// TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)
|
|
@@ -211,7 +238,7 @@ export default class VertexArrayObject extends Resource {
|
|
|
211
238
|
return arrayValue;
|
|
212
239
|
}
|
|
213
240
|
|
|
214
|
-
_compareConstantArrayValues(v1, v2) {
|
|
241
|
+
_compareConstantArrayValues(v1, v2): boolean {
|
|
215
242
|
if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {
|
|
216
243
|
return false;
|
|
217
244
|
}
|
|
@@ -223,7 +250,7 @@ export default class VertexArrayObject extends Resource {
|
|
|
223
250
|
return true;
|
|
224
251
|
}
|
|
225
252
|
|
|
226
|
-
static _setConstantFloatArray(gl, location, array) {
|
|
253
|
+
static _setConstantFloatArray(gl: WebGLRenderingContext, location, array): void {
|
|
227
254
|
switch (array.length) {
|
|
228
255
|
case 1:
|
|
229
256
|
gl.vertexAttrib1fv(location, array);
|
|
@@ -242,68 +269,66 @@ export default class VertexArrayObject extends Resource {
|
|
|
242
269
|
}
|
|
243
270
|
}
|
|
244
271
|
|
|
245
|
-
static _setConstantIntArray(gl, location, array) {
|
|
272
|
+
static _setConstantIntArray(gl: WebGL2RenderingContext, location, array) {
|
|
246
273
|
assert(isWebGL2(gl));
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
}
|
|
274
|
+
gl.vertexAttribI4iv(location, array);
|
|
275
|
+
// switch (array.length) {
|
|
276
|
+
// case 1:
|
|
277
|
+
// gl.vertexAttribI1iv(location, array);
|
|
278
|
+
// break;
|
|
279
|
+
// case 2:
|
|
280
|
+
// gl.vertexAttribI2iv(location, array);
|
|
281
|
+
// break;
|
|
282
|
+
// case 3:
|
|
283
|
+
// gl.vertexAttribI3iv(location, array);
|
|
284
|
+
// break;
|
|
285
|
+
// case 4:
|
|
286
|
+
// break;
|
|
287
|
+
// default:
|
|
288
|
+
// assert(false);
|
|
289
|
+
// }
|
|
263
290
|
}
|
|
264
291
|
|
|
265
|
-
static _setConstantUintArray(gl, location, array) {
|
|
292
|
+
static _setConstantUintArray(gl: WebGL2RenderingContext, location, array) {
|
|
266
293
|
assert(isWebGL2(gl));
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
294
|
+
gl.vertexAttribI4uiv(location, array);
|
|
295
|
+
// switch (array.length) {
|
|
296
|
+
// case 1:
|
|
297
|
+
// gl.vertexAttribI1uiv(location, array);
|
|
298
|
+
// break;
|
|
299
|
+
// case 2:
|
|
300
|
+
// gl.vertexAttribI2uiv(location, array);
|
|
301
|
+
// break;
|
|
302
|
+
// case 3:
|
|
303
|
+
// gl.vertexAttribI3uiv(location, array);
|
|
304
|
+
// break;
|
|
305
|
+
// case 4:
|
|
306
|
+
// gl.vertexAttribI4uiv(location, array);
|
|
307
|
+
// break;
|
|
308
|
+
// default:
|
|
309
|
+
// assert(false);
|
|
310
|
+
// }
|
|
283
311
|
}
|
|
284
312
|
|
|
285
313
|
// RESOURCE IMPLEMENTATION
|
|
286
314
|
|
|
287
315
|
_createHandle() {
|
|
288
|
-
|
|
289
|
-
// @ts-ignore
|
|
290
|
-
const gl2 = this.gl;
|
|
291
|
-
return gl2.createVertexArray();
|
|
316
|
+
return this.gl2.createVertexArray();
|
|
292
317
|
}
|
|
293
318
|
|
|
294
|
-
_deleteHandle(
|
|
295
|
-
this.gl2.deleteVertexArray(handle);
|
|
319
|
+
_deleteHandle(): void {
|
|
320
|
+
this.gl2.deleteVertexArray(this.handle);
|
|
296
321
|
// @ts-ignore
|
|
297
322
|
return [this.elements];
|
|
298
323
|
// return [this.elements, ...this.buffers];
|
|
299
324
|
}
|
|
300
325
|
|
|
301
|
-
_bindHandle(handle) {
|
|
326
|
+
_bindHandle(handle): void {
|
|
302
327
|
this.gl2.bindVertexArray(handle);
|
|
303
328
|
}
|
|
304
329
|
|
|
305
330
|
// Generic getter for information about a vertex attribute at a given position
|
|
306
|
-
_getParameter(pname, {location}) {
|
|
331
|
+
_getParameter(pname: number, {location}) {
|
|
307
332
|
assert(Number.isFinite(location));
|
|
308
333
|
return this.bind(() => {
|
|
309
334
|
switch (pname) {
|