@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/classes/framebuffer.ts"],"names":["GL","getWebGL2Context","assertWebGL2Context","log","Resource","Texture2D","Renderbuffer","clear","clearBuffer","copyToDataUrl","getLumaContextData","getFeatures","getKey","assert","ERR_MULTIPLE_RENDERTARGETS","ImmutableFramebuffer","constructor","gl","props","_initialize","attachments","readBuffer","drawBuffers","checkStatus","status","getStatus","FRAMEBUFFER_COMPLETE","Error","_getFrameBufferStatus","prevHandle","bindFramebuffer","FRAMEBUFFER","handle","checkFramebufferStatus","show","window","open","logLevel","message","level","id","image","targetMaxHeight","bind","target","unbind","options","_attach","_setReadBuffer","_setDrawBuffers","key","undefined","attachmentPoint","Number","attachment","_attachOne","_attachRenderbuffer","Array","isArray","texture","layer","_attachTexture","renderbuffer","framebufferRenderbuffer","RENDERBUFFER","bindTexture","TEXTURE_2D_ARRAY","TEXTURE_3D","gl2","framebufferTextureLayer","TEXTURE_CUBE_MAP","face","mapIndexToCubeMapFace","framebufferTexture2D","TEXTURE_2D","COLOR_ATTACHMENT0","BACK","ext","getExtension","drawBuffersWEBGL","length","_createHandle","createFramebuffer","_deleteHandle","deleteFramebuffer","_bindHandle","Framebuffer","isSupported","isFloatColorBufferSupported","getDefaultFramebuffer","lumaContextData","defaultFramebuffer","MAX_COLOR_ATTACHMENTS","getParameter","MAX_DRAW_BUFFERS","initialize","Object","seal","color","depth","DEPTH_ATTACHMENT","DEPTH_STENCIL_ATTACHMENT","stencil","STENCIL_ATTACHMENT","width","height","check","object","resize","_createDefaultAttachments","update","clearAttachments","delete","resource","ownResources","resizeAttachments","attach","size","drawingBufferWidth","drawingBufferHeight","newAttachments","keys","forEach","assign","descriptor","_unattach","filter","value","drawBuffer","blit","opts","error","invalidate","x","y","READ_FRAMEBUFFER","invalidateAll","invalidateFramebuffer","getAttachmentParameter","pname","_getAttachmentParameterFallback","getFramebufferAttachmentParameter","getAttachmentParameters","parameters","ATTACHMENT_PARAMETERS","values","getParameters","attachmentName","defaultAttachments","pixels","format","RGBA","type","UNSIGNED_BYTE","mipmaps","TEXTURE_MIN_FILTER","LINEAR","TEXTURE_MAG_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","push","DEPTH24_STENCIL8","DEPTH_COMPONENT16","oldAttachment","caps","FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER","WEBGL2","FRAMEBUFFER_ATTACHMENT_RED_SIZE","FRAMEBUFFER_ATTACHMENT_GREEN_SIZE","FRAMEBUFFER_ATTACHMENT_BLUE_SIZE","FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE","FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE","FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE","FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE","UNSIGNED_INT","FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING","EXT_sRGB","FRAMEBUFFER_ATTACHMENT_OBJECT_NAME","FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE","TEXTURE_CUBE_MAP_POSITIVE_X","STATUS","colorBufferFloat","colorBufferHalfFloat","supported","Boolean"],"mappings":";AAAA,OAAOA,EAAP,MAAe,oBAAf;AACA,SAAQC,gBAAR,EAA0BC,mBAA1B,EAA+CC,GAA/C,QAAyD,kBAAzD;AACA,OAAOC,QAAP,MAAsC,kBAAtC;AACA,OAAOC,SAAP,MAAsB,cAAtB;AACA,OAAOC,YAAP,MAAyB,gBAAzB;AACA,SAAQC,KAAR,EAAeC,WAAf,QAAiC,SAAjC;AACA,SAAQC,aAAR,QAA4B,iBAA5B;AAEA,SAAQC,kBAAR,QAAiC,8BAAjC;AACA,SAAQC,WAAR,QAA0B,aAA1B;AACA,SAAQC,MAAR,QAAqB,gBAArB;AACA,SAAQC,MAAR,QAAqB,UAArB;AAEA,MAAMC,0BAA0B,GAAG,uCAAnC;AA2BA,OAAO,MAAMC,oBAAN,SAAmCX,QAAnC,CAA8D;AACnEY,EAAAA,WAAW,CAACC,EAAD,EAA4BC,KAA5B,EAAsD;AAC/D,UAAMD,EAAN,EAAUC,KAAV,EAAiB,EAAjB;;AACA,SAAKC,WAAL,CAAiB;AACfC,MAAAA,WAAW,EAAE,CAAAF,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEE,WAAP,KAAsB,EADpB;AAEfC,MAAAA,UAAU,EAAEH,KAAF,aAAEA,KAAF,uBAAEA,KAAK,CAAEG,UAFJ;AAGfC,MAAAA,WAAW,EAAEJ,KAAF,aAAEA,KAAF,uBAAEA,KAAK,CAAEI;AAHL,KAAjB;AAKD;;AAEDC,EAAAA,WAAW,GAAS;AAClB,UAAM;AAACN,MAAAA;AAAD,QAAO,IAAb;AACA,UAAMO,MAAM,GAAG,KAAKC,SAAL,EAAf;;AACA,QAAID,MAAM,KAAKP,EAAE,CAACS,oBAAlB,EAAwC;AACtC,YAAM,IAAIC,KAAJ,CAAUC,qBAAqB,CAACJ,MAAD,CAA/B,CAAN;AACD;;AACD,WAAO,IAAP;AACD;;AAEDC,EAAAA,SAAS,GAAW;AAClB,UAAM;AAACR,MAAAA;AAAD,QAAO,IAAb;AACA,UAAMY,UAAU,GAAGZ,EAAE,CAACa,eAAH,CAAmB9B,EAAE,CAAC+B,WAAtB,EAAmC,KAAKC,MAAxC,CAAnB;AACA,UAAMR,MAAM,GAAGP,EAAE,CAACgB,sBAAH,CAA0BjC,EAAE,CAAC+B,WAA7B,CAAf;AAEAd,IAAAA,EAAE,CAACa,eAAH,CAAmB9B,EAAE,CAAC+B,WAAtB,EAAmCF,UAAU,IAAI,IAAjD;AACA,WAAOL,MAAP;AACD;;AAKDU,EAAAA,IAAI,GAAG;AACL,QAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;AACjCA,MAAAA,MAAM,CAACC,IAAP,CAAY3B,aAAa,CAAC,IAAD,CAAzB,EAAiC,oBAAjC;AACD;;AACD,WAAO,IAAP;AACD;;AAEDN,EAAAA,GAAG,CAACkC,QAAQ,GAAG,CAAZ,EAAeC,OAAO,GAAG,EAAzB,EAA6B;AAC9B,QAAID,QAAQ,GAAGlC,GAAG,CAACoC,KAAf,IAAwB,OAAOJ,MAAP,KAAkB,WAA9C,EAA2D;AACzD,aAAO,IAAP;AACD;;AACDG,IAAAA,OAAO,GAAGA,OAAO,0BAAmB,KAAKE,EAAxB,CAAjB;AACA,UAAMC,KAAK,GAAGhC,aAAa,CAAC,IAAD,EAAO;AAACiC,MAAAA,eAAe,EAAE;AAAlB,KAAP,CAA3B;AACAvC,IAAAA,GAAG,CAACsC,KAAJ,CAAU;AAACJ,MAAAA,QAAD;AAAWC,MAAAA,OAAX;AAAoBG,MAAAA;AAApB,KAAV,EAAsCH,OAAtC;AACA,WAAO,IAAP;AACD;;AAGDK,EAAAA,IAAI,CAAC;AAACC,IAAAA,MAAM,GAAG5C,EAAE,CAAC+B;AAAb,MAA4B,EAA7B,EAAiC;AACnC,SAAKd,EAAL,CAAQa,eAAR,CAAwBc,MAAxB,EAAgC,KAAKZ,MAArC;AACA,WAAO,IAAP;AACD;;AAEDa,EAAAA,MAAM,CAAC;AAACD,IAAAA,MAAM,GAAG5C,EAAE,CAAC+B;AAAb,MAA4B,EAA7B,EAAiC;AACrC,SAAKd,EAAL,CAAQa,eAAR,CAAwBc,MAAxB,EAAgC,IAAhC;AACA,WAAO,IAAP;AACD;;AAIDzB,EAAAA,WAAW,CAAC2B,OAAD,EAAwG;AACjH,UAAM;AAAC1B,MAAAA,WAAW,GAAG,EAAf;AAAmBC,MAAAA,UAAnB;AAA+BC,MAAAA;AAA/B,QAA8CwB,OAApD;;AAEA,SAAKC,OAAL,CAAa3B,WAAb;;AAGA,UAAMS,UAAU,GAAG,KAAKZ,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwC,KAAKC,MAA7C,CAAnB;;AACA,QAAIX,UAAJ,EAAgB;AACd,WAAK2B,cAAL,CAAoB3B,UAApB;AACD;;AACD,QAAIC,WAAJ,EAAiB;AACf,WAAK2B,eAAL,CAAqB3B,WAArB;AACD;;AAED,SAAKL,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwCF,UAAU,IAAI,IAAtD;AAEA,WAAO,IAAP;AACD;;AAGDkB,EAAAA,OAAO,CAAC3B,WAAD,EAA0C;AAC/C,UAAMS,UAAU,GAAG,KAAKZ,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwC,KAAKC,MAA7C,CAAnB;;AAGA,SAAK,MAAMkB,GAAX,IAAkB9B,WAAlB,EAA+B;AAE7BP,MAAAA,MAAM,CAACqC,GAAG,KAAKC,SAAT,EAAoB,uCAApB,CAAN;AACA,YAAMC,eAAe,GAAGC,MAAM,CAACH,GAAD,CAA9B;AACA,YAAMI,UAAU,GAAGlC,WAAW,CAACgC,eAAD,CAA9B;;AACA,WAAKG,UAAL,CAAgBH,eAAhB,EAAiCE,UAAjC;AACD;;AAGD,SAAKrC,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwCF,UAAU,IAAI,IAAtD;AACD;;AAGD0B,EAAAA,UAAU,CAACH,eAAD,EAAsBE,UAAtB,EAAwE;AAChF,QAAIA,UAAU,YAAYhD,YAA1B,EAAwC;AACtC,WAAKkD,mBAAL,CAAyBJ,eAAzB,EAA0CE,UAA1C;;AACA,aAAOA,UAAP;AACD,KAHD,MAGO,IAAIG,KAAK,CAACC,OAAN,CAAcJ,UAAd,CAAJ,EAA+B;AACpC,YAAM,CAACK,OAAD,EAAUC,KAAK,GAAG,CAAlB,EAAqBrB,KAAK,GAAG,CAA7B,IAAkCe,UAAxC;;AACA,WAAKO,cAAL,CAAoBT,eAApB,EAAqCO,OAArC,EAA8CC,KAA9C,EAAqDrB,KAArD;;AACA,aAAOoB,OAAP;AACD,KAJM,MAIA,IAAIL,UAAU,YAAYjD,SAA1B,EAAqC;AAC1C,WAAKwD,cAAL,CAAoBT,eAApB,EAAqCE,UAArC,EAAiD,CAAjD,EAAoD,CAApD;;AACA,aAAOA,UAAP;AACD;AACF;;AAEDE,EAAAA,mBAAmB,CAACF,UAAD,EAAiBQ,YAAjB,EAAmD;AACpE,SAAK7C,EAAL,CAAQ8C,uBAAR,CAAgC/D,EAAE,CAAC+B,WAAnC,EAAgDuB,UAAhD,EAA4DtD,EAAE,CAACgE,YAA/D,EAA6EF,YAAY,CAAC9B,MAA1F;AACD;;AAQD6B,EAAAA,cAAc,CAACP,UAAD,EAAiBK,OAAjB,EAAqCC,KAArC,EAAoDrB,KAApD,EAAyE;AACrF,UAAM;AAACtB,MAAAA;AAAD,QAAO,IAAb;AACAA,IAAAA,EAAE,CAACgD,WAAH,CAAeN,OAAO,CAACf,MAAvB,EAA+Be,OAAO,CAAC3B,MAAvC;;AAEA,YAAQ2B,OAAO,CAACf,MAAhB;AACE,WAAK5C,EAAE,CAACkE,gBAAR;AACA,WAAKlE,EAAE,CAACmE,UAAR;AACE,cAAMC,GAAG,GAAGlE,mBAAmB,CAACe,EAAD,CAA/B;AACAmD,QAAAA,GAAG,CAACC,uBAAJ,CAA4BrE,EAAE,CAAC+B,WAA/B,EAA4CuB,UAA5C,EAAwDK,OAAO,CAACf,MAAhE,EAAwEL,KAAxE,EAA+EqB,KAA/E;AACA;;AAEF,WAAK5D,EAAE,CAACsE,gBAAR;AAEE,cAAMC,IAAI,GAAGC,qBAAqB,CAACZ,KAAD,CAAlC;AACA3C,QAAAA,EAAE,CAACwD,oBAAH,CAAwBzE,EAAE,CAAC+B,WAA3B,EAAwCuB,UAAxC,EAAoDiB,IAApD,EAA0DZ,OAAO,CAAC3B,MAAlE,EAA0EO,KAA1E;AACA;;AAEF,WAAKvC,EAAE,CAAC0E,UAAR;AACEzD,QAAAA,EAAE,CAACwD,oBAAH,CAAwBzE,EAAE,CAAC+B,WAA3B,EAAwCuB,UAAxC,EAAoDtD,EAAE,CAAC0E,UAAvD,EAAmEf,OAAO,CAAC3B,MAA3E,EAAmFO,KAAnF;AACA;;AAEF;AACE1B,QAAAA,MAAM,CAAC,KAAD,EAAQ,sBAAR,CAAN;AAlBJ;;AAqBAI,IAAAA,EAAE,CAACgD,WAAH,CAAeN,OAAO,CAACf,MAAvB,EAA+B,IAA/B;AACD;;AAGDI,EAAAA,cAAc,CAAC3B,UAAD,EAA2B;AACvC,UAAM+C,GAAG,GAAGnE,gBAAgB,CAAC,KAAKgB,EAAN,CAA5B;;AACA,QAAImD,GAAJ,EAAS;AACPA,MAAAA,GAAG,CAAC/C,UAAJ,CAAeA,UAAf;AACD,KAFD,MAEO;AAELR,MAAAA,MAAM,CACJQ,UAAU,KAAKrB,EAAE,CAAC2E,iBAAlB,IAAuCtD,UAAU,KAAKrB,EAAE,CAAC4E,IADrD,EAEJ9D,0BAFI,CAAN;AAID;AACF;;AAGDmC,EAAAA,eAAe,CAAC3B,WAAD,EAAwB;AACrC,UAAM;AAACL,MAAAA;AAAD,QAAO,IAAb;AACA,UAAMmD,GAAG,GAAGlE,mBAAmB,CAACe,EAAD,CAA/B;;AACA,QAAImD,GAAJ,EAAS;AACPA,MAAAA,GAAG,CAAC9C,WAAJ,CAAgBA,WAAhB;AACD,KAFD,MAEO;AAEL,YAAMuD,GAAG,GAAG5D,EAAE,CAAC6D,YAAH,CAAgB,oBAAhB,CAAZ;;AACA,UAAID,GAAJ,EAAS;AACPA,QAAAA,GAAG,CAACE,gBAAJ,CAAqBzD,WAArB;AACD,OAFD,MAEO;AAELT,QAAAA,MAAM,CACJS,WAAW,CAAC0D,MAAZ,KAAuB,CAAvB,KACG1D,WAAW,CAAC,CAAD,CAAX,KAAmBtB,EAAE,CAAC2E,iBAAtB,IAA2CrD,WAAW,CAAC,CAAD,CAAX,KAAmBtB,EAAE,CAAC4E,IADpE,CADI,EAGJ9D,0BAHI,CAAN;AAKD;AACF;AACF;;AAIDmE,EAAAA,aAAa,GAAG;AACd,WAAO,KAAKhE,EAAL,CAAQiE,iBAAR,EAAP;AACD;;AAEDC,EAAAA,aAAa,GAAG;AACd,SAAKlE,EAAL,CAAQmE,iBAAR,CAA0B,KAAKpD,MAA/B;AACD;;AAEDqD,EAAAA,WAAW,CAACrD,MAAD,EAAS;AAClB,WAAO,KAAKf,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwCC,MAAxC,CAAP;AACD;;AAtMkE;AAyMrE,eAAe,MAAMsD,WAAN,SAA0BvE,oBAA1B,CAA+C;AAgC1C,SAAXwE,WAAW,CAACtE,EAAD,EAA4B6B,OAA5B,EAAuE;AACvF,WAAO0C,2BAA2B,CAACvE,EAAD,EAAK6B,OAAL,CAAlC;AACD;;AAM2B,SAArB2C,qBAAqB,CAACxE,EAAD,EAAyC;AACnE,UAAMyE,eAAe,GAAGhF,kBAAkB,CAACO,EAAD,CAA1C;AACAyE,IAAAA,eAAe,CAACC,kBAAhB,GACED,eAAe,CAACC,kBAAhB,IACA,IAAIL,WAAJ,CAAgBrE,EAAhB,EAAoB;AAClBuB,MAAAA,EAAE,EAAE,qBADc;AAElBR,MAAAA,MAAM,EAAE,IAFU;AAGlBZ,MAAAA,WAAW,EAAE;AAHK,KAApB,CAFF;AAQA,WAAOsE,eAAe,CAACC,kBAAvB;AACD;;AAEwB,MAArBC,qBAAqB,GAAW;AAClC,UAAMxB,GAAG,GAAGlE,mBAAmB,CAAC,KAAKe,EAAN,CAA/B;AACA,WAAOmD,GAAG,CAACyB,YAAJ,CAAiBzB,GAAG,CAACwB,qBAArB,CAAP;AACD;;AAEmB,MAAhBE,gBAAgB,GAAW;AAC7B,UAAM1B,GAAG,GAAGlE,mBAAmB,CAAC,KAAKe,EAAN,CAA/B;AACA,WAAOmD,GAAG,CAACyB,YAAJ,CAAiBzB,GAAG,CAAC0B,gBAArB,CAAP;AACD;;AAED9E,EAAAA,WAAW,CAACC,EAAD,EAA4BC,KAA5B,EAAsD;AAC/D,UAAMD,EAAN,EAAUC,KAAV;;AAD+D,mCA9DzD,IA8DyD;;AAAA,oCA7DxD,IA6DwD;;AAAA,yCA5DnD,EA4DmD;;AAAA,wCA3DpDlB,EAAE,CAAC2E,iBA2DiD;;AAAA,yCA1DnD,CAAC3E,EAAE,CAAC2E,iBAAJ,CA0DmD;;AAAA,0CAzDlD,EAyDkD;;AAE/D,SAAKoB,UAAL,CAAgB7E,KAAhB;AACA8E,IAAAA,MAAM,CAACC,IAAP,CAAY,IAAZ;AACD;;AAEQ,MAALC,KAAK,GAAG;AACV,WAAO,KAAK9E,WAAL,CAAiBpB,EAAE,CAAC2E,iBAApB,KAA0C,IAAjD;AACD;;AAEU,MAAPhB,OAAO,GAAG;AACZ,WAAO,KAAKvC,WAAL,CAAiBpB,EAAE,CAAC2E,iBAApB,KAA0C,IAAjD;AACD;;AAEQ,MAALwB,KAAK,GAAG;AACV,WACE,KAAK/E,WAAL,CAAiBpB,EAAE,CAACoG,gBAApB,KAAyC,KAAKhF,WAAL,CAAiBpB,EAAE,CAACqG,wBAApB,CAAzC,IAA0F,IAD5F;AAGD;;AAEU,MAAPC,OAAO,GAAG;AACZ,WACE,KAAKlF,WAAL,CAAiBpB,EAAE,CAACuG,kBAApB,KACA,KAAKnF,WAAL,CAAiBpB,EAAE,CAACqG,wBAApB,CADA,IAEA,IAHF;AAKD;;AAGDN,EAAAA,UAAU,CAAC7E,KAAD,EAA0B;AAClC,QAAI;AAACE,MAAAA,WAAW,GAAG;AAAf,QAAuBF,KAAK,IAAI,EAApC;AACA,UAAM;AACJsF,MAAAA,KAAK,GAAG,CADJ;AAEJC,MAAAA,MAAM,GAAG,CAFL;AAGJP,MAAAA,KAAK,GAAG,IAHJ;AAIJC,MAAAA,KAAK,GAAG,IAJJ;AAKJG,MAAAA,OAAO,GAAG,KALN;AAMJI,MAAAA,KAAK,GAAG,IANJ;AAOJrF,MAAAA,UAAU,GAAG8B,SAPT;AAQJ7B,MAAAA,WAAW,GAAG6B;AARV,QASFjC,KAAK,IAAI,EATb;AAUAL,IAAAA,MAAM,CAAC2F,KAAK,IAAI,CAAT,IAAcC,MAAM,IAAI,CAAzB,EAA4B,sCAA5B,CAAN;AAGA,SAAKD,KAAL,GAAaA,KAAb;AACA,SAAKC,MAAL,GAAcA,MAAd;;AAIA,QAAIrF,WAAJ,EAAiB;AACf,WAAK,MAAMkC,UAAX,IAAyBlC,WAAzB,EAAsC;AACpC,cAAMwB,MAAM,GAAGxB,WAAW,CAACkC,UAAD,CAA1B;AACA,cAAMqD,MAAM,GAAGlD,KAAK,CAACC,OAAN,CAAcd,MAAd,IAAwBA,MAAM,CAAC,CAAD,CAA9B,GAAoCA,MAAnD;AACA+D,QAAAA,MAAM,CAACC,MAAP,CAAc;AAACJ,UAAAA,KAAD;AAAQC,UAAAA;AAAR,SAAd;AACD;AACF,KAND,MAMO;AAELrF,MAAAA,WAAW,GAAG,KAAKyF,yBAAL,CAA+BX,KAA/B,EAAsCC,KAAtC,EAA6CG,OAA7C,EAAsDE,KAAtD,EAA6DC,MAA7D,CAAd;AACD;;AAED,SAAKK,MAAL,CAAY;AAACC,MAAAA,gBAAgB,EAAE,IAAnB;AAAyB3F,MAAAA,WAAzB;AAAsCC,MAAAA,UAAtC;AAAkDC,MAAAA;AAAlD,KAAZ;;AAGA,QAAIF,WAAW,IAAIsF,KAAnB,EAA0B;AACxB,WAAKnF,WAAL;AACD;AACF;;AAEDyF,EAAAA,MAAM,GAAS;AACb,SAAK,MAAMC,QAAX,IAAuB,KAAKC,YAA5B,EAA0C;AACxCD,MAAAA,QAAQ,CAACD,MAAT;AACD;;AACD,UAAMA,MAAN;AACA,WAAO,IAAP;AACD;;AAEDF,EAAAA,MAAM,CAAChE,OAAD,EAMG;AAEP,UAAM;AACJ1B,MAAAA,WAAW,GAAG,EADV;AAEJC,MAAAA,UAFI;AAGJC,MAAAA,WAHI;AAIJyF,MAAAA,gBAAgB,GAAG,KAJf;AAKJI,MAAAA,iBAAiB,GAAG;AALhB,QAMFrE,OANJ;AAQA,SAAKsE,MAAL,CAAYhG,WAAZ,EAAyB;AAAC2F,MAAAA,gBAAD;AAAmBI,MAAAA;AAAnB,KAAzB;AAEA,UAAM;AAAClG,MAAAA;AAAD,QAAO,IAAb;AAEA,UAAMY,UAAU,GAAGZ,EAAE,CAACa,eAAH,CAAmB9B,EAAE,CAAC+B,WAAtB,EAAmC,KAAKC,MAAxC,CAAnB;;AACA,QAAIX,UAAJ,EAAgB;AACd,WAAK2B,cAAL,CAAoB3B,UAApB;;AACA,WAAKA,UAAL,GAAkBA,UAAlB;AACD;;AACD,QAAIC,WAAJ,EAAiB;AACf,WAAK2B,eAAL,CAAqB3B,WAArB;;AACA,WAAKA,WAAL,GAAmBA,WAAnB;AACD;;AAEDL,IAAAA,EAAE,CAACa,eAAH,CAAmB9B,EAAE,CAAC+B,WAAtB,EAAmCF,UAAU,IAAI,IAAjD;AAEA,WAAO,IAAP;AACD;;AAGD+E,EAAAA,MAAM,CAACS,IAAD,EAAiD;AACrD,QAAI;AAACb,MAAAA,KAAD;AAAQC,MAAAA;AAAR,QAAkBY,IAAI,IAAI,EAA9B;;AAEA,QAAI,KAAKrF,MAAL,KAAgB,IAApB,EAA0B;AACxBnB,MAAAA,MAAM,CAAC2F,KAAK,KAAKrD,SAAV,IAAuBsD,MAAM,KAAKtD,SAAnC,CAAN;AACA,WAAKqD,KAAL,GAAa,KAAKvF,EAAL,CAAQqG,kBAArB;AACA,WAAKb,MAAL,GAAc,KAAKxF,EAAL,CAAQsG,mBAAtB;AACA,aAAO,IAAP;AACD;;AAED,QAAIf,KAAK,KAAKrD,SAAd,EAAyB;AACvBqD,MAAAA,KAAK,GAAG,KAAKvF,EAAL,CAAQqG,kBAAhB;AACD;;AACD,QAAIb,MAAM,KAAKtD,SAAf,EAA0B;AACxBsD,MAAAA,MAAM,GAAG,KAAKxF,EAAL,CAAQsG,mBAAjB;AACD;;AAED,QAAIf,KAAK,KAAK,KAAKA,KAAf,IAAwBC,MAAM,KAAK,KAAKA,MAA5C,EAAoD;AAClDtG,MAAAA,GAAG,CAACA,GAAJ,CAAQ,CAAR,iCAAmC,KAAKqC,EAAxC,iBAAiDgE,KAAjD,cAA0DC,MAA1D;AACD;;AACD,SAAK,MAAMrD,eAAX,IAA8B,KAAKhC,WAAnC,EAAgD;AAC9C,WAAKA,WAAL,CAAiBgC,eAAjB,EAAkCwD,MAAlC,CAAyC;AAACJ,QAAAA,KAAD;AAAQC,QAAAA;AAAR,OAAzC;AACD;;AACD,SAAKD,KAAL,GAAaA,KAAb;AACA,SAAKC,MAAL,GAAcA,MAAd;AACA,WAAO,IAAP;AACD;;AAGDW,EAAAA,MAAM,CAAChG,WAAD,EAAc;AAAC2F,IAAAA,gBAAgB,GAAG,KAApB;AAA2BI,IAAAA,iBAAiB,GAAG;AAA/C,MAAuD,EAArE,EAAyE;AAC7E,UAAMK,cAAc,GAAG,EAAvB;;AAGA,QAAIT,gBAAJ,EAAsB;AACpBf,MAAAA,MAAM,CAACyB,IAAP,CAAY,KAAKrG,WAAjB,EAA8BsG,OAA9B,CAAuCxE,GAAD,IAAS;AAC7CsE,QAAAA,cAAc,CAACtE,GAAD,CAAd,GAAsB,IAAtB;AACD,OAFD;AAGD;;AAGD8C,IAAAA,MAAM,CAAC2B,MAAP,CAAcH,cAAd,EAA8BpG,WAA9B;AAEA,UAAMS,UAAU,GAAG,KAAKZ,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwC,KAAKC,MAA7C,CAAnB;;AAGA,SAAK,MAAMkB,GAAX,IAAkBsE,cAAlB,EAAkC;AAEhC3G,MAAAA,MAAM,CAACqC,GAAG,KAAKC,SAAT,EAAoB,uCAApB,CAAN;AAEA,YAAMG,UAAU,GAAGD,MAAM,CAACH,GAAD,CAAzB;AAEA,YAAM0E,UAAU,GAAGJ,cAAc,CAAClE,UAAD,CAAjC;AACA,UAAIqD,MAAM,GAAGiB,UAAb;;AACA,UAAI,CAACjB,MAAL,EAAa;AACX,aAAKkB,SAAL,CAAevE,UAAf;AACD,OAFD,MAEO;AACLqD,QAAAA,MAAM,GAAG,KAAKpD,UAAL,CAAgBD,UAAhB,EAA4BqD,MAA5B,CAAT;AACA,aAAKvF,WAAL,CAAiBkC,UAAjB,IAA+BqD,MAA/B;AACD;;AAGD,UAAIQ,iBAAiB,IAAIR,MAAzB,EAAiC;AAC/BA,QAAAA,MAAM,CAACC,MAAP,CAAc;AAACJ,UAAAA,KAAK,EAAE,KAAKA,KAAb;AAAoBC,UAAAA,MAAM,EAAE,KAAKA;AAAjC,SAAd;AACD;AACF;;AAGD,SAAKxF,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwCF,UAAU,IAAI,IAAtD;AAGAmE,IAAAA,MAAM,CAAC2B,MAAP,CAAc,KAAKvG,WAAnB,EAAgCA,WAAhC;AACA4E,IAAAA,MAAM,CAACyB,IAAP,CAAY,KAAKrG,WAAjB,EACG0G,MADH,CACW5E,GAAD,IAAS,CAAC,KAAK9B,WAAL,CAAiB8B,GAAjB,CADpB,EAEGwE,OAFH,CAEYxE,GAAD,IAAS;AAChB,aAAO,KAAK9B,WAAL,CAAiB8B,GAAjB,CAAP;AACD,KAJH;AAKD;;AAED3C,EAAAA,KAAK,CAACuC,OAAD,EAAiF;AACpF,UAAM;AAACoD,MAAAA,KAAD;AAAQC,MAAAA,KAAR;AAAeG,MAAAA,OAAf;AAAwBhF,MAAAA,WAAW,GAAG;AAAtC,QAA4CwB,OAAlD;AAGA,UAAMjB,UAAU,GAAG,KAAKZ,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwC,KAAKC,MAA7C,CAAnB;;AAEA,QAAIkE,KAAK,IAAIC,KAAT,IAAkBG,OAAtB,EAA+B;AAC7B/F,MAAAA,KAAK,CAAC,KAAKU,EAAN,EAAU;AAACiF,QAAAA,KAAD;AAAQC,QAAAA,KAAR;AAAeG,QAAAA;AAAf,OAAV,CAAL;AACD;;AAEDhF,IAAAA,WAAW,CAACoG,OAAZ,CAAoB,CAACK,KAAD,EAAQC,UAAR,KAAuB;AACzCxH,MAAAA,WAAW,CAAC,KAAKS,EAAN,EAAU;AAAC+G,QAAAA,UAAD;AAAaD,QAAAA;AAAb,OAAV,CAAX;AACD,KAFD;AAKA,SAAK9G,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwCF,UAAU,IAAI,IAAtD;AAEA,WAAO,IAAP;AACD;;AAMDoG,EAAAA,IAAI,CAACC,IAAI,GAAG,EAAR,EAAY;AACd/H,IAAAA,GAAG,CAACgI,KAAJ,CAAU,gFAAV;AACA,WAAO,IAAP;AACD;;AAGDC,EAAAA,UAAU,CAACtF,OAAD,EAAoF;AAC5F,UAAM;AAAC1B,MAAAA,WAAW,GAAG,EAAf;AAAmBiH,MAAAA,CAAC,GAAG,CAAvB;AAA0BC,MAAAA,CAAC,GAAG,CAA9B;AAAiC9B,MAAAA,KAAjC;AAAwCC,MAAAA;AAAxC,QAAkD3D,OAAxD;AACA,UAAMsB,GAAG,GAAGlE,mBAAmB,CAAC,KAAKe,EAAN,CAA/B;AACA,UAAMY,UAAU,GAAGuC,GAAG,CAACtC,eAAJ,CAAoB9B,EAAE,CAACuI,gBAAvB,EAAyC,KAAKvG,MAA9C,CAAnB;AACA,UAAMwG,aAAa,GAAGH,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,CAAjB,IAAsB9B,KAAK,KAAKrD,SAAhC,IAA6CsD,MAAM,KAAKtD,SAA9E;;AACA,QAAIqF,aAAJ,EAAmB;AACjBpE,MAAAA,GAAG,CAACqE,qBAAJ,CAA0BzI,EAAE,CAACuI,gBAA7B,EAA+CnH,WAA/C;AACD,KAFD,MAEO;AAGLgD,MAAAA,GAAG,CAACqE,qBAAJ,CAA0BzI,EAAE,CAACuI,gBAA7B,EAA+CnH,WAA/C,EAA4DiH,CAA5D,EAA+DC,CAA/D,EAAkE9B,KAAlE,EAAyEC,MAAzE;AACD;;AAEDrC,IAAAA,GAAG,CAACtC,eAAJ,CAAoB9B,EAAE,CAACuI,gBAAvB,EAAyC1G,UAAzC;AACA,WAAO,IAAP;AACD;;AAID6G,EAAAA,sBAAsB,CAACpF,UAAD,EAAaqF,KAAb,EAAoBlB,IAApB,EAA0B;AAC9C,QAAIM,KAAK,GAAG,KAAKa,+BAAL,CAAqCD,KAArC,CAAZ;;AACA,QAAIZ,KAAK,KAAK,IAAd,EAAoB;AAClB,WAAK9G,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwC,KAAKC,MAA7C;AACA+F,MAAAA,KAAK,GAAG,KAAK9G,EAAL,CAAQ4H,iCAAR,CAA0C7I,EAAE,CAAC+B,WAA7C,EAA0DuB,UAA1D,EAAsEqF,KAAtE,CAAR;AACA,WAAK1H,EAAL,CAAQa,eAAR,CAAwB9B,EAAE,CAAC+B,WAA3B,EAAwC,IAAxC;AACD;;AACD,QAAI0F,IAAI,IAAIM,KAAK,GAAG,IAApB,EAA0B;AAExBA,MAAAA,KAAK,GAAGnH,MAAM,CAAC,KAAKK,EAAN,EAAU8G,KAAV,CAAd;AACD;;AACD,WAAOA,KAAP;AACD;;AAEDe,EAAAA,uBAAuB,CACrBxF,UAAU,GAAGtD,EAAE,CAAC2E,iBADK,EAErB8C,IAFqB,EAIrBsB,UAAU,GAAG,KAAK/H,WAAL,CAAiBgI,qBAAjB,IAA0C,EAJlC,EAKrB;AACA,UAAMC,MAAM,GAAG,EAAf;;AACA,SAAK,MAAMN,KAAX,IAAoBI,UAApB,EAAgC;AAC9B,YAAM7F,GAAG,GAAGuE,IAAI,GAAG7G,MAAM,CAAC,KAAKK,EAAN,EAAU0H,KAAV,CAAT,GAA4BA,KAA5C;AACAM,MAAAA,MAAM,CAAC/F,GAAD,CAAN,GAAc,KAAKwF,sBAAL,CAA4BpF,UAA5B,EAAwCqF,KAAxC,EAA+ClB,IAA/C,CAAd;AACD;;AACD,WAAOwB,MAAP;AACD;;AAGDC,EAAAA,aAAa,CAACzB,IAAI,GAAG,IAAR,EAAc;AACzB,UAAMrG,WAAW,GAAG4E,MAAM,CAACyB,IAAP,CAAY,KAAKrG,WAAjB,CAApB;AAIA,UAAM2H,UAAU,GAAG,EAAnB;;AACA,SAAK,MAAMI,cAAX,IAA6B/H,WAA7B,EAA0C;AACxC,YAAMkC,UAAU,GAAGD,MAAM,CAAC8F,cAAD,CAAzB;AACA,YAAMjG,GAAG,GAAGuE,IAAI,GAAG7G,MAAM,CAAC,KAAKK,EAAN,EAAUqC,UAAV,CAAT,GAAiCA,UAAjD;AACAyF,MAAAA,UAAU,CAAC7F,GAAD,CAAV,GAAkB,KAAK4F,uBAAL,CAA6BxF,UAA7B,EAAyCmE,IAAzC,CAAlB;AACD;;AACD,WAAOsB,UAAP;AACD;;AAIDlC,EAAAA,yBAAyB,CAACX,KAAD,EAAQC,KAAR,EAAeG,OAAf,EAAwBE,KAAxB,EAA+BC,MAA/B,EAAuC;AAC9D,QAAI2C,kBAAkB,GAAG,IAAzB;;AAGA,QAAIlD,KAAJ,EAAW;AACTkD,MAAAA,kBAAkB,GAAGA,kBAAkB,IAAI,EAA3C;AACAA,MAAAA,kBAAkB,CAACpJ,EAAE,CAAC2E,iBAAJ,CAAlB,GAA2C,IAAItE,SAAJ,CAAc,KAAKY,EAAnB,EAAuB;AAChEuB,QAAAA,EAAE,YAAK,KAAKA,EAAV,YAD8D;AAEhE6G,QAAAA,MAAM,EAAE,IAFwD;AAGhEC,QAAAA,MAAM,EAAEtJ,EAAE,CAACuJ,IAHqD;AAIhEC,QAAAA,IAAI,EAAExJ,EAAE,CAACyJ,aAJuD;AAKhEjD,QAAAA,KALgE;AAMhEC,QAAAA,MANgE;AAUhEiD,QAAAA,OAAO,EAAE,KAVuD;AAchEX,QAAAA,UAAU,EAAE;AACV,WAAC/I,EAAE,CAAC2J,kBAAJ,GAAyB3J,EAAE,CAAC4J,MADlB;AAEV,WAAC5J,EAAE,CAAC6J,kBAAJ,GAAyB7J,EAAE,CAAC4J,MAFlB;AAGV,WAAC5J,EAAE,CAAC8J,cAAJ,GAAqB9J,EAAE,CAAC+J,aAHd;AAIV,WAAC/J,EAAE,CAACgK,cAAJ,GAAqBhK,EAAE,CAAC+J;AAJd;AAdoD,OAAvB,CAA3C;AAsBA,WAAK7C,YAAL,CAAkB+C,IAAlB,CAAuBb,kBAAkB,CAACpJ,EAAE,CAAC2E,iBAAJ,CAAzC;AACD;;AAED,QAAIwB,KAAK,IAAIG,OAAb,EAAsB;AAEpB8C,MAAAA,kBAAkB,GAAGA,kBAAkB,IAAI,EAA3C;AACAA,MAAAA,kBAAkB,CAACpJ,EAAE,CAACqG,wBAAJ,CAAlB,GAAkD,IAAI/F,YAAJ,CAAiB,KAAKW,EAAtB,EAA0B;AAC1EuB,QAAAA,EAAE,YAAK,KAAKA,EAAV,mBADwE;AAE1E8G,QAAAA,MAAM,EAAEtJ,EAAE,CAACkK,gBAF+D;AAG1E1D,QAAAA,KAH0E;AAI1EC,QAAAA,MAAM,EAAE;AAJkE,OAA1B,CAAlD;AAOA,WAAKS,YAAL,CAAkB+C,IAAlB,CAAuBb,kBAAkB,CAACpJ,EAAE,CAACqG,wBAAJ,CAAzC;AAWD,KArBD,MAqBO,IAAIF,KAAJ,EAAW;AAEhBiD,MAAAA,kBAAkB,GAAGA,kBAAkB,IAAI,EAA3C;AACAA,MAAAA,kBAAkB,CAACpJ,EAAE,CAACoG,gBAAJ,CAAlB,GAA0C,IAAI9F,YAAJ,CAAiB,KAAKW,EAAtB,EAA0B;AAClEuB,QAAAA,EAAE,YAAK,KAAKA,EAAV,WADgE;AAElE8G,QAAAA,MAAM,EAAEtJ,EAAE,CAACmK,iBAFuD;AAGlE3D,QAAAA,KAHkE;AAIlEC,QAAAA;AAJkE,OAA1B,CAA1C;AAOA,WAAKS,YAAL,CAAkB+C,IAAlB,CAAuBb,kBAAkB,CAACpJ,EAAE,CAACoG,gBAAJ,CAAzC;AACD,KAXM,MAWA,IAAIE,OAAJ,EAAa;AAElBzF,MAAAA,MAAM,CAAC,KAAD,CAAN;AACD;;AAED,WAAOuI,kBAAP;AACD;;AAEDvB,EAAAA,SAAS,CAACvE,UAAD,EAAa;AACpB,UAAM8G,aAAa,GAAG,KAAKhJ,WAAL,CAAiBkC,UAAjB,CAAtB;;AACA,QAAI,CAAC8G,aAAL,EAAoB;AAClB;AACD;;AACD,QAAIA,aAAa,YAAY9J,YAA7B,EAA2C;AAEzC,WAAKW,EAAL,CAAQ8C,uBAAR,CAAgC/D,EAAE,CAAC+B,WAAnC,EAAgDuB,UAAhD,EAA4DtD,EAAE,CAACgE,YAA/D,EAA6E,IAA7E;AACD,KAHD,MAGO;AAEL,WAAK/C,EAAL,CAAQwD,oBAAR,CAA6BzE,EAAE,CAAC+B,WAAhC,EAA6CuB,UAA7C,EAAyDtD,EAAE,CAAC0E,UAA5D,EAAwE,IAAxE,EAA8E,CAA9E;AACD;;AACD,WAAO,KAAKtD,WAAL,CAAiBkC,UAAjB,CAAP;AACD;;AAMDsF,EAAAA,+BAA+B,CAACD,KAAD,EAAQ;AACrC,UAAM0B,IAAI,GAAG1J,WAAW,CAAC,KAAKM,EAAN,CAAxB;;AAEA,YAAQ0H,KAAR;AACE,WAAK3I,EAAE,CAACsK,oCAAR;AACE,eAAO,CAACD,IAAI,CAACE,MAAN,GAAe,CAAf,GAAmB,IAA1B;;AACF,WAAKvK,EAAE,CAACwK,+BAAR;AACA,WAAKxK,EAAE,CAACyK,iCAAR;AACA,WAAKzK,EAAE,CAAC0K,gCAAR;AACA,WAAK1K,EAAE,CAAC2K,iCAAR;AACA,WAAK3K,EAAE,CAAC4K,iCAAR;AACA,WAAK5K,EAAE,CAAC6K,mCAAR;AACE,eAAO,CAACR,IAAI,CAACE,MAAN,GAAe,CAAf,GAAmB,IAA1B;;AACF,WAAKvK,EAAE,CAAC8K,qCAAR;AACE,eAAO,CAACT,IAAI,CAACE,MAAN,GAAevK,EAAE,CAAC+K,YAAlB,GAAiC,IAAxC;;AACF,WAAK/K,EAAE,CAACgL,qCAAR;AACE,eAAO,CAACX,IAAI,CAACE,MAAN,IAAgB,CAACF,IAAI,CAACY,QAAtB,GAAiCjL,EAAE,CAAC4J,MAApC,GAA6C,IAApD;;AACF;AACE,eAAO,IAAP;AAfJ;AAiBD;;AAzc2D;;gBAAzCtE,W,uCAQiC,CAClDtF,EAAE,CAACkL,kCAD+C,EAElDlL,EAAE,CAACmL,kCAF+C,EAMlDnL,EAAE,CAACgL,qCAN+C,EASlDhL,EAAE,CAACwK,+BAT+C,EAUlDxK,EAAE,CAACyK,iCAV+C,EAWlDzK,EAAE,CAAC0K,gCAX+C,EAYlD1K,EAAE,CAAC2K,iCAZ+C,EAalD3K,EAAE,CAAC4K,iCAb+C,EAclD5K,EAAE,CAAC6K,mCAd+C,C;;AAwctD,SAASrG,qBAAT,CAA+BZ,KAA/B,EAAsC;AAGpC,SAAOA,KAAK,GAAG5D,EAAE,CAACoL,2BAAX,GAAyCxH,KAAK,GAAG5D,EAAE,CAACoL,2BAApD,GAAkFxH,KAAzF;AACD;;AAID,SAAShC,qBAAT,CAA+BJ,MAA/B,EAAuC;AAGrC,QAAM6J,MAAM,GAAG/F,WAAW,CAAC+F,MAAZ,IAAsB,EAArC;AACA,SAAOA,MAAM,CAAC7J,MAAD,CAAN,gCAAuCA,MAAvC,CAAP;AACD;;AAQD,SAASgE,2BAAT,CACEvE,EADF,EAEE6B,OAFF,EAGW;AACT,QAAM;AACJwI,IAAAA,gBADI;AAEJC,IAAAA;AAFI,MAGFzI,OAHJ;AAIA,MAAI0I,SAAS,GAAG,IAAhB;;AAEA,MAAIF,gBAAJ,EAAsB;AACpBE,IAAAA,SAAS,GAAGC,OAAO,CAEjBxK,EAAE,CAAC6D,YAAH,CAAgB,wBAAhB,KAEE7D,EAAE,CAAC6D,YAAH,CAAgB,0BAAhB,CAFF,IAIE7D,EAAE,CAAC6D,YAAH,CAAgB,mBAAhB,CANe,CAAnB;AAQD;;AAED,MAAIyG,oBAAJ,EAA0B;AACxBC,IAAAA,SAAS,GACPA,SAAS,IACTC,OAAO,CAELxK,EAAE,CAAC6D,YAAH,CAAgB,wBAAhB,KAEE7D,EAAE,CAAC6D,YAAH,CAAgB,6BAAhB,CAJG,CAFT;AAQD;;AAED,SAAO0G,SAAP;AACD","sourcesContent":["import GL from '@luma.gl/constants';\nimport {getWebGL2Context, assertWebGL2Context, log} from '@luma.gl/gltools';\nimport Resource, {ResourceProps} from './webgl-resource';\nimport Texture2D from './texture-2d';\nimport Renderbuffer from './renderbuffer';\nimport {clear, clearBuffer} from './clear';\nimport {copyToDataUrl} from './copy-and-blit';\n\nimport {getLumaContextData} from '../context/luma-context-data';\nimport {getFeatures} from '../features';\nimport {getKey} from '../webgl-utils';\nimport {assert} from '../utils';\n\nconst ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';\n\ntype TextureAttachment = {\n texture: Texture2D;\n layer?: number; // = 0\n level?: number; // = 0\n};\n\ntype Attachment = Renderbuffer | Texture2D | TextureAttachment;\n\nexport type ImmutableFramebufferProps = ResourceProps & {\n attachments?: Record<string, Attachment>;\n readBuffer?: number;\n drawBuffers?: number[];\n check?: boolean;\n};\n\nexport type FramebufferProps = ImmutableFramebufferProps & {\n width?: number;\n height?: number;\n color?: boolean;\n depth?: boolean;\n stencil?: boolean;\n};\n\ntype colorBufferFloatOptions = {colorBufferFloat?: boolean; colorBufferHalfFloat?: boolean};\n\nexport class ImmutableFramebuffer extends Resource<FramebufferProps> {\n constructor(gl: WebGLRenderingContext, props?: FramebufferProps) {\n super(gl, props, {} as any);\n this._initialize({\n attachments: props?.attachments || {},\n readBuffer: props?.readBuffer,\n drawBuffers: props?.drawBuffers\n });\n }\n\n checkStatus(): this {\n const {gl} = this;\n const status = this.getStatus();\n if (status !== gl.FRAMEBUFFER_COMPLETE) {\n throw new Error(_getFrameBufferStatus(status));\n }\n return this;\n }\n\n getStatus(): number {\n const {gl} = this;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n return status;\n }\n\n // DEBUG\n\n // Note: Will only work when called in an event handler\n show() {\n if (typeof window !== 'undefined') {\n window.open(copyToDataUrl(this), 'luma-debug-texture');\n }\n return this;\n }\n\n log(logLevel = 0, message = '') {\n if (logLevel > log.level || typeof window === 'undefined') {\n return this;\n }\n message = message || `Framebuffer ${this.id}`;\n const image = copyToDataUrl(this, {targetMaxHeight: 100});\n log.image({logLevel, message, image}, message)();\n return this;\n }\n\n // WEBGL INTERFACE\n bind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, this.handle);\n return this;\n }\n\n unbind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, null);\n return this;\n }\n\n // PRIVATE\n\n _initialize(options: {attachments: Record<string, Attachment>; readBuffer?: number; drawBuffers?: number[]}): this {\n const {attachments = {}, readBuffer, drawBuffers} = options;\n\n this._attach(attachments);\n\n // Multiple render target support, set read buffer and draw buffers\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n if (readBuffer) {\n this._setReadBuffer(readBuffer);\n }\n if (drawBuffers) {\n this._setDrawBuffers(drawBuffers);\n }\n // @ts-ignore\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n /** Attach from a map of attachments */\n _attach(attachments: Record<string, Attachment>) {\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n // Walk the attachments\n for (const key in attachments) {\n // Ensure key is not undefined\n assert(key !== undefined, 'Misspelled framebuffer binding point?');\n const attachmentPoint = Number(key) as GL;\n const attachment = attachments[attachmentPoint];\n this._attachOne(attachmentPoint, attachment);\n }\n\n // @ts-ignore\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n }\n\n /** Attach one attachment */\n _attachOne(attachmentPoint: GL, attachment: Attachment): Renderbuffer | Texture2D {\n if (attachment instanceof Renderbuffer) {\n this._attachRenderbuffer(attachmentPoint, attachment);\n return attachment;\n } else if (Array.isArray(attachment)) {\n const [texture, layer = 0, level = 0] = attachment;\n this._attachTexture(attachmentPoint, texture, layer, level);\n return texture;\n } else if (attachment instanceof Texture2D) {\n this._attachTexture(attachmentPoint, attachment, 0, 0);\n return attachment;\n }\n }\n\n _attachRenderbuffer(attachment: GL, renderbuffer: Renderbuffer): void {\n this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);\n }\n\n /**\n * @param attachment \n * @param texture \n * @param layer = 0 - index into Texture2DArray and Texture3D or face for `TextureCubeMap`\n * @param level = 0 - mipmapLevel (must be 0 in WebGL1)\n */\n _attachTexture(attachment: GL, texture: Texture2D, layer: number, level: number): void {\n const {gl} = this;\n gl.bindTexture(texture.target, texture.handle);\n\n switch (texture.target) {\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);\n break;\n\n case GL.TEXTURE_CUBE_MAP:\n // layer must be a cubemap face (or if index, converted to cube map face)\n const face = mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);\n break;\n\n case GL.TEXTURE_2D:\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);\n break;\n\n default:\n assert(false, 'Illegal texture type');\n }\n\n gl.bindTexture(texture.target, null);\n }\n\n /** @note Expects framebuffer to be bound */\n _setReadBuffer(readBuffer: number): void {\n const gl2 = getWebGL2Context(this.gl);\n if (gl2) {\n gl2.readBuffer(readBuffer);\n } else {\n // Setting to color attachment 0 is a noop, so allow it in WebGL1\n assert(\n readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK,\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n }\n\n /** @note Expects framebuffer to be bound */\n _setDrawBuffers(drawBuffers: number[]) {\n const {gl} = this;\n const gl2 = assertWebGL2Context(gl);\n if (gl2) {\n gl2.drawBuffers(drawBuffers);\n } else {\n // TODO - is this not handled by polyfills?\n const ext = gl.getExtension('WEBGL_draw_buffers');\n if (ext) {\n ext.drawBuffersWEBGL(drawBuffers);\n } else {\n // Setting a single draw buffer to color attachment 0 is a noop, allow in WebGL1\n assert(\n drawBuffers.length === 1 &&\n (drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK),\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createFramebuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteFramebuffer(this.handle);\n }\n\n _bindHandle(handle) {\n return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n }\n}\n\nexport default class Framebuffer extends ImmutableFramebuffer {\n width = null;\n height = null;\n attachments = {};\n readBuffer = GL.COLOR_ATTACHMENT0;\n drawBuffers = [GL.COLOR_ATTACHMENT0];\n ownResources = [];\n\n static readonly FRAMEBUFFER_ATTACHMENT_PARAMETERS = [\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, // WebGLRenderbuffer or WebGLTexture\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, // GL.RENDERBUFFER, GL.TEXTURE, GL.NONE\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, // GL.TEXTURE_CUBE_MAP_POSITIVE_X, etc.\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, // GLint\n // EXT_sRGB or WebGL2\n GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, // GL.LINEAR, GL.SRBG\n // WebGL2\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE // GLint\n // GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE\n // GL.FLOAT, GL.INT, GL.UNSIGNED_INT, GL.SIGNED_NORMALIZED, OR GL.UNSIGNED_NORMALIZED.\n ];\n\n /**\n * Check color buffer float support\n * @param options.colorBufferFloat Whether floating point textures can be rendered and read\n * @param options.colorBufferHalfFloat Whether half float textures can be rendered and read\n */\n static isSupported(gl: WebGLRenderingContext, options: colorBufferFloatOptions): boolean {\n return isFloatColorBufferSupported(gl, options);\n }\n\n /**\n * returns the default Framebuffer\n * Creates a Framebuffer object wrapper for the default WebGL framebuffer (target === null)\n */\n static getDefaultFramebuffer(gl: WebGLRenderingContext): Framebuffer {\n const lumaContextData = getLumaContextData(gl);\n lumaContextData.defaultFramebuffer =\n lumaContextData.defaultFramebuffer ||\n new Framebuffer(gl, {\n id: 'default-framebuffer',\n handle: null,\n attachments: {}\n });\n // TODO - can we query for and get a handle to the GL.FRONT renderbuffer?\n return lumaContextData.defaultFramebuffer;\n }\n\n get MAX_COLOR_ATTACHMENTS(): number {\n const gl2 = assertWebGL2Context(this.gl);\n return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);\n }\n\n get MAX_DRAW_BUFFERS(): number {\n const gl2 = assertWebGL2Context(this.gl);\n return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);\n }\n\n constructor(gl: WebGLRenderingContext, props?: FramebufferProps) {\n super(gl, props);\n this.initialize(props);\n Object.seal(this);\n }\n\n get color() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get texture() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get depth() {\n return (\n this.attachments[GL.DEPTH_ATTACHMENT] || this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] || null\n );\n }\n\n get stencil() {\n return (\n this.attachments[GL.STENCIL_ATTACHMENT] ||\n this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] ||\n null\n );\n }\n\n // initialize(props?: FramebufferProps): this;\n initialize(props: FramebufferProps) {\n let {attachments = null} = props || {};\n const {\n width = 1,\n height = 1,\n color = true,\n depth = true,\n stencil = false,\n check = true,\n readBuffer = undefined,\n drawBuffers = undefined\n } = props || {};\n assert(width >= 0 && height >= 0, 'Width and height need to be integers');\n\n // Store actual width and height for diffing\n this.width = width;\n this.height = height;\n\n // Resize any provided attachments - note that resize only resizes if needed\n // Note: A framebuffer has no separate size, it is defined by its attachments (which must agree)\n if (attachments) {\n for (const attachment in attachments) {\n const target = attachments[attachment];\n const object = Array.isArray(target) ? target[0] : target;\n object.resize({width, height});\n }\n } else {\n // Create any requested default attachments\n attachments = this._createDefaultAttachments(color, depth, stencil, width, height);\n }\n\n this.update({clearAttachments: true, attachments, readBuffer, drawBuffers});\n\n // Checks that framebuffer was properly set up, if not, throws an explanatory error\n if (attachments && check) {\n this.checkStatus();\n }\n }\n\n delete(): this {\n for (const resource of this.ownResources) {\n resource.delete();\n }\n super.delete();\n return this;\n }\n\n update(options: {\n attachments: Record<string, Attachment>,\n readBuffer?: number,\n drawBuffers?,\n clearAttachments?: boolean,\n resizeAttachments?: boolean\n }): this {\n\n const {\n attachments = {},\n readBuffer,\n drawBuffers,\n clearAttachments = false,\n resizeAttachments = true\n } = options;\n\n this.attach(attachments, {clearAttachments, resizeAttachments});\n\n const {gl} = this;\n // Multiple render target support, set read buffer and draw buffers\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n if (readBuffer) {\n this._setReadBuffer(readBuffer);\n this.readBuffer = readBuffer;\n }\n if (drawBuffers) {\n this._setDrawBuffers(drawBuffers);\n this.drawBuffers = drawBuffers;\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // Attachment resize is expected to be a noop if size is same\n resize(size?: {width?: number; height?: number}): this {\n let {width, height} = size || {};\n // for default framebuffer, just update the stored size\n if (this.handle === null) {\n assert(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n\n if (width === undefined) {\n width = this.gl.drawingBufferWidth;\n }\n if (height === undefined) {\n height = this.gl.drawingBufferHeight;\n }\n\n if (width !== this.width && height !== this.height) {\n log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();\n }\n for (const attachmentPoint in this.attachments) {\n this.attachments[attachmentPoint].resize({width, height});\n }\n this.width = width;\n this.height = height;\n return this;\n }\n\n // Attach from a map of attachments\n attach(attachments, {clearAttachments = false, resizeAttachments = true} = {}) {\n const newAttachments = {};\n\n // Any current attachments need to be removed, add null values to map\n if (clearAttachments) {\n Object.keys(this.attachments).forEach((key) => {\n newAttachments[key] = null;\n });\n }\n\n // Overlay the new attachments\n Object.assign(newAttachments, attachments);\n\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n // Walk the attachments\n for (const key in newAttachments) {\n // Ensure key is not undefined\n assert(key !== undefined, 'Misspelled framebuffer binding point?');\n\n const attachment = Number(key);\n\n const descriptor = newAttachments[attachment];\n let object = descriptor;\n if (!object) {\n this._unattach(attachment);\n } else {\n object = this._attachOne(attachment, object);\n this.attachments[attachment] = object;\n }\n\n // Resize objects\n if (resizeAttachments && object) {\n object.resize({width: this.width, height: this.height});\n }\n }\n\n // @ts-ignore\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n // Assign to attachments and remove any nulls to get a clean attachment map\n Object.assign(this.attachments, attachments);\n Object.keys(this.attachments)\n .filter((key) => !this.attachments[key])\n .forEach((key) => {\n delete this.attachments[key];\n });\n }\n\n clear(options?: {color?: any; depth?: any; stencil?: any; drawBuffers?: any[]}): this {\n const {color, depth, stencil, drawBuffers = []} = options;\n\n // Bind framebuffer and delegate to global clear functions\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n if (color || depth || stencil) {\n clear(this.gl, {color, depth, stencil});\n }\n\n drawBuffers.forEach((value, drawBuffer) => {\n clearBuffer(this.gl, {drawBuffer, value});\n });\n\n // @ts-ignore\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // WEBGL2 INTERFACE\n\n // Copies a rectangle of pixels between framebuffers\n // eslint-disable-next-line complexity\n blit(opts = {}) {\n log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();\n return null;\n }\n\n // signals to the GL that it need not preserve all pixels of a specified region of the framebuffer\n invalidate(options: {attachments: []; x?: number; y?: number; width: number; height: number}) {\n const {attachments = [], x = 0, y = 0, width, height} = options;\n const gl2 = assertWebGL2Context(this.gl);\n const prevHandle = gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, this.handle);\n const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;\n if (invalidateAll) {\n gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);\n } else {\n // TODO - why does type checking fail on this line\n // @ts-ignore\n gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);\n }\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);\n return this;\n }\n\n // Return the value for `pname` of the specified attachment.\n // The type returned is the type of the requested pname\n getAttachmentParameter(attachment, pname, keys) {\n let value = this._getAttachmentParameterFallback(pname);\n if (value === null) {\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n value = this.gl.getFramebufferAttachmentParameter(GL.FRAMEBUFFER, attachment, pname);\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);\n }\n if (keys && value > 1000) {\n // @ts-ignore\n value = getKey(this.gl, value);\n }\n return value;\n }\n\n getAttachmentParameters(\n attachment = GL.COLOR_ATTACHMENT0,\n keys,\n // @ts-ignore\n parameters = this.constructor.ATTACHMENT_PARAMETERS || []\n ) {\n const values = {};\n for (const pname of parameters) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getAttachmentParameter(attachment, pname, keys);\n }\n return values;\n }\n\n // @ts-expect-error\n getParameters(keys = true) {\n const attachments = Object.keys(this.attachments);\n // if (this === this.gl.luma.defaultFramebuffer) {\n // attachments = [GL.COLOR_ATTACHMENT0, GL.DEPTH_STENCIL_ATTACHMENT];\n // }\n const parameters = {};\n for (const attachmentName of attachments) {\n const attachment = Number(attachmentName);\n const key = keys ? getKey(this.gl, attachment) : attachment;\n parameters[key] = this.getAttachmentParameters(attachment, keys);\n }\n return parameters;\n }\n\n // PRIVATE METHODS\n\n _createDefaultAttachments(color, depth, stencil, width, height) {\n let defaultAttachments = null;\n\n // Add a color buffer if requested and not supplied\n if (color) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.COLOR_ATTACHMENT0] = new Texture2D(this.gl, {\n id: `${this.id}-color0`,\n pixels: null, // reserves texture memory, but texels are undefined\n format: GL.RGBA,\n type: GL.UNSIGNED_BYTE,\n width,\n height,\n // Note: Mipmapping can be disabled by texture resource when we resize the texture\n // to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant\n // behavior we always disable mipmaps.\n mipmaps: false,\n // Set MIN and MAG filtering parameters so mipmaps are not used in sampling.\n // Use LINEAR so subpixel algos like fxaa work.\n // Set WRAP modes that support NPOT textures too.\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n }\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.COLOR_ATTACHMENT0]);\n }\n\n if (depth && stencil) {\n // TODO - handle separate stencil\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth-stencil`,\n format: GL.DEPTH24_STENCIL8,\n width,\n height: 111\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT]);\n // TODO - optional texture\n // new Texture2D(this.gl, {\n // id: `${this.id}-depth-stencil`,\n // format: GL.DEPTH24_STENCIL8,\n // dataFormat: GL.DEPTH_STENCIL,\n // type: GL.UNSIGNED_INT_24_8,\n // width,\n // height,\n // mipmaps: false\n // });\n } else if (depth) {\n // Add a depth buffer if requested and not supplied\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth`,\n format: GL.DEPTH_COMPONENT16,\n width,\n height\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_ATTACHMENT]);\n } else if (stencil) {\n // TODO - handle separate stencil\n assert(false);\n }\n\n return defaultAttachments;\n }\n\n _unattach(attachment) {\n const oldAttachment = this.attachments[attachment];\n if (!oldAttachment) {\n return;\n }\n if (oldAttachment instanceof Renderbuffer) {\n // render buffer\n this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, null);\n } else {\n // Must be a texture attachment\n this.gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, null, 0);\n }\n delete this.attachments[attachment];\n }\n\n // Attempt to provide workable defaults for WebGL2 symbols under WebGL1\n // null means OK to query\n // TODO - move to webgl1 polyfills\n /* eslint-disable complexity */\n _getAttachmentParameterFallback(pname) {\n const caps = getFeatures(this.gl);\n\n switch (pname) {\n case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: // GLint\n return !caps.WEBGL2 ? 0 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: // GLint\n return !caps.WEBGL2 ? 8 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: // GLenum\n return !caps.WEBGL2 ? GL.UNSIGNED_INT : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:\n return !caps.WEBGL2 && !caps.EXT_sRGB ? GL.LINEAR : null;\n default:\n return null;\n }\n }\n /* eslint-enable complexity */\n}\n\n// PUBLIC METHODS\n\n// Map an index to a cube map face constant\nfunction mapIndexToCubeMapFace(layer) {\n // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)\n // if smaller assume layer is index, otherwise assume it is already a cube map face constant\n return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;\n}\n\n// Helper METHODS\n// Get a string describing the framebuffer error if installed\nfunction _getFrameBufferStatus(status) {\n // Use error mapping if installed\n // @ts-ignore\n const STATUS = Framebuffer.STATUS || {};\n return STATUS[status] || `Framebuffer error ${status}`;\n}\n\n/**\n * Support\n * @param gl\n * @param options.colorBufferFloat Whether floating point textures can be rendered and read\n * @param options.colorBufferHalfFloat Whether half float textures can be rendered and read\n */\nfunction isFloatColorBufferSupported(\n gl: WebGLRenderingContext,\n options: {colorBufferFloat?: boolean; colorBufferHalfFloat?: boolean}\n): boolean {\n const {\n colorBufferFloat, // Whether floating point textures can be rendered and read\n colorBufferHalfFloat // Whether half float textures can be rendered and read\n } = options;\n let supported = true;\n\n if (colorBufferFloat) {\n supported = Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1, not exposed on all platforms\n gl.getExtension('WEBGL_color_buffer_float') ||\n // WebGL 1, implicitly enables float render targets https://www.khronos.org/registry/webgl/extensions/OES_texture_float/\n gl.getExtension('OES_texture_float')\n );\n }\n\n if (colorBufferHalfFloat) {\n supported =\n supported &&\n Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1\n gl.getExtension('EXT_color_buffer_half_float')\n );\n }\n\n return supported;\n}\n"],"file":"framebuffer.js"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* is a mechanism for taking a program object and querying information
|
|
3
|
+
* about it, so as to be able to interface and interact with it.
|
|
4
|
+
* For example, if there is a uniform, you may need to query its
|
|
5
|
+
* location so that you can set its value.
|
|
6
|
+
*/
|
|
7
|
+
export default class ProgramConfiguration {
|
|
8
|
+
id: string;
|
|
9
|
+
attributeInfos: any[];
|
|
10
|
+
attributeInfosByName: {};
|
|
11
|
+
attributeInfosByLocation: any[];
|
|
12
|
+
varyingInfos: any[];
|
|
13
|
+
varyingInfosByName: {};
|
|
14
|
+
constructor(program: any);
|
|
15
|
+
getAttributeInfo(locationOrName: any): any;
|
|
16
|
+
getAttributeLocation(locationOrName: any): any;
|
|
17
|
+
getAttributeAccessor(locationOrName: any): any;
|
|
18
|
+
getVaryingInfo(locationOrName: any): any;
|
|
19
|
+
getVaryingIndex(locationOrName: any): any;
|
|
20
|
+
getVaryingAccessor(locationOrName: any): any;
|
|
21
|
+
_readAttributesFromProgram(program: any): void;
|
|
22
|
+
_readVaryingsFromProgram(program: any): void;
|
|
23
|
+
_addAttribute(location: any, name: any, compositeType: any, size: any): void;
|
|
24
|
+
_inferProperties(location: any, name: any, accessor: any): void;
|
|
25
|
+
_addVarying(location: any, name: any, compositeType: any, size: any): void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=program-configuration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-configuration.d.ts","sourceRoot":"","sources":["../../src/classes/program-configuration.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACF,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,QAAM;IACpB,oBAAoB,KAAM;IAG1B,wBAAwB,QAAM;IAC9B,YAAY,QAAM;IAClB,kBAAkB,KAAM;gBAEZ,OAAO,KAAA;IAOnB,gBAAgB,CAAC,cAAc,KAAA;IAS/B,oBAAoB,CAAC,cAAc,KAAA;IAKnC,oBAAoB,CAAC,cAAc,KAAA;IAKnC,cAAc,CAAC,cAAc,KAAA;IAQ7B,eAAe,CAAC,cAAc,KAAA;IAK9B,kBAAkB,CAAC,cAAc,KAAA;IAQjC,0BAA0B,CAAC,OAAO,KAAA;IAkBlC,wBAAwB,CAAC,OAAO,KAAA;IAehC,aAAa,CAAC,QAAQ,KAAA,EAAE,IAAI,KAAA,EAAE,aAAa,KAAA,EAAE,IAAI,KAAA;IAYjD,gBAAgB,CAAC,QAAQ,KAAA,EAAE,IAAI,KAAA,EAAE,QAAQ,KAAA;IAOzC,WAAW,CAAC,QAAQ,KAAA,EAAE,IAAI,KAAA,EAAE,aAAa,KAAA,EAAE,IAAI,KAAA;CAQhD"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import Accessor from './accessor';
|
|
3
|
+
import { isWebGL2 } from '@luma.gl/gltools';
|
|
4
|
+
import { decomposeCompositeGLType } from '../webgl-utils/attribute-utils';
|
|
5
|
+
export default class ProgramConfiguration {
|
|
6
|
+
constructor(program) {
|
|
7
|
+
_defineProperty(this, "id", void 0);
|
|
8
|
+
|
|
9
|
+
_defineProperty(this, "attributeInfos", []);
|
|
10
|
+
|
|
11
|
+
_defineProperty(this, "attributeInfosByName", {});
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "attributeInfosByLocation", []);
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "varyingInfos", []);
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "varyingInfosByName", {});
|
|
18
|
+
|
|
19
|
+
this.id = program.id;
|
|
20
|
+
Object.seal(this);
|
|
21
|
+
|
|
22
|
+
this._readAttributesFromProgram(program);
|
|
23
|
+
|
|
24
|
+
this._readVaryingsFromProgram(program);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getAttributeInfo(locationOrName) {
|
|
28
|
+
const location = Number(locationOrName);
|
|
29
|
+
|
|
30
|
+
if (Number.isFinite(location)) {
|
|
31
|
+
return this.attributeInfosByLocation[location];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return this.attributeInfosByName[locationOrName] || null;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
getAttributeLocation(locationOrName) {
|
|
38
|
+
const attributeInfo = this.getAttributeInfo(locationOrName);
|
|
39
|
+
return attributeInfo ? attributeInfo.location : -1;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
getAttributeAccessor(locationOrName) {
|
|
43
|
+
const attributeInfo = this.getAttributeInfo(locationOrName);
|
|
44
|
+
return attributeInfo ? attributeInfo.accessor : null;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
getVaryingInfo(locationOrName) {
|
|
48
|
+
const location = Number(locationOrName);
|
|
49
|
+
|
|
50
|
+
if (Number.isFinite(location)) {
|
|
51
|
+
return this.varyingInfos[location];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return this.varyingInfosByName[locationOrName] || null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
getVaryingIndex(locationOrName) {
|
|
58
|
+
const varying = this.getVaryingInfo(locationOrName);
|
|
59
|
+
return varying ? varying.location : -1;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
getVaryingAccessor(locationOrName) {
|
|
63
|
+
const varying = this.getVaryingInfo(locationOrName);
|
|
64
|
+
return varying ? varying.accessor : null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
_readAttributesFromProgram(program) {
|
|
68
|
+
const {
|
|
69
|
+
gl
|
|
70
|
+
} = program;
|
|
71
|
+
const count = gl.getProgramParameter(program.handle, gl.ACTIVE_ATTRIBUTES);
|
|
72
|
+
|
|
73
|
+
for (let index = 0; index < count; index++) {
|
|
74
|
+
const {
|
|
75
|
+
name,
|
|
76
|
+
type,
|
|
77
|
+
size
|
|
78
|
+
} = gl.getActiveAttrib(program.handle, index);
|
|
79
|
+
const location = gl.getAttribLocation(program.handle, name);
|
|
80
|
+
|
|
81
|
+
if (location >= 0) {
|
|
82
|
+
this._addAttribute(location, name, type, size);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
this.attributeInfos.sort((a, b) => a.location - b.location);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
_readVaryingsFromProgram(program) {
|
|
90
|
+
const {
|
|
91
|
+
gl
|
|
92
|
+
} = program;
|
|
93
|
+
|
|
94
|
+
if (!isWebGL2(gl)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const count = gl.getProgramParameter(program.handle, gl.TRANSFORM_FEEDBACK_VARYINGS);
|
|
99
|
+
|
|
100
|
+
for (let location = 0; location < count; location++) {
|
|
101
|
+
const {
|
|
102
|
+
name,
|
|
103
|
+
type,
|
|
104
|
+
size
|
|
105
|
+
} = gl.getTransformFeedbackVarying(program.handle, location);
|
|
106
|
+
|
|
107
|
+
this._addVarying(location, name, type, size);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
this.varyingInfos.sort((a, b) => a.location - b.location);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
_addAttribute(location, name, compositeType, size) {
|
|
114
|
+
const {
|
|
115
|
+
type,
|
|
116
|
+
components
|
|
117
|
+
} = decomposeCompositeGLType(compositeType);
|
|
118
|
+
const accessor = {
|
|
119
|
+
type,
|
|
120
|
+
size: size * components
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
this._inferProperties(location, name, accessor);
|
|
124
|
+
|
|
125
|
+
const attributeInfo = {
|
|
126
|
+
location,
|
|
127
|
+
name,
|
|
128
|
+
accessor: new Accessor(accessor)
|
|
129
|
+
};
|
|
130
|
+
this.attributeInfos.push(attributeInfo);
|
|
131
|
+
this.attributeInfosByLocation[location] = attributeInfo;
|
|
132
|
+
this.attributeInfosByName[attributeInfo.name] = attributeInfo;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
_inferProperties(location, name, accessor) {
|
|
136
|
+
if (/instance/i.test(name)) {
|
|
137
|
+
accessor.divisor = 1;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
_addVarying(location, name, compositeType, size) {
|
|
142
|
+
const {
|
|
143
|
+
type,
|
|
144
|
+
components
|
|
145
|
+
} = decomposeCompositeGLType(compositeType);
|
|
146
|
+
const accessor = new Accessor({
|
|
147
|
+
type,
|
|
148
|
+
size: size * components
|
|
149
|
+
});
|
|
150
|
+
const varying = {
|
|
151
|
+
location,
|
|
152
|
+
name,
|
|
153
|
+
accessor
|
|
154
|
+
};
|
|
155
|
+
this.varyingInfos.push(varying);
|
|
156
|
+
this.varyingInfosByName[varying.name] = varying;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=program-configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/classes/program-configuration.ts"],"names":["Accessor","isWebGL2","decomposeCompositeGLType","ProgramConfiguration","constructor","program","id","Object","seal","_readAttributesFromProgram","_readVaryingsFromProgram","getAttributeInfo","locationOrName","location","Number","isFinite","attributeInfosByLocation","attributeInfosByName","getAttributeLocation","attributeInfo","getAttributeAccessor","accessor","getVaryingInfo","varyingInfos","varyingInfosByName","getVaryingIndex","varying","getVaryingAccessor","gl","count","getProgramParameter","handle","ACTIVE_ATTRIBUTES","index","name","type","size","getActiveAttrib","getAttribLocation","_addAttribute","attributeInfos","sort","a","b","TRANSFORM_FEEDBACK_VARYINGS","getTransformFeedbackVarying","_addVarying","compositeType","components","_inferProperties","push","test","divisor"],"mappings":"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","sourcesContent":["// Contains metadata describing attribute configurations for a program's shaders\n// Much of this is automatically extracted from shaders after program linking\nimport Accessor from './accessor';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';\n\n/**\n * is a mechanism for taking a program object and querying information\n * about it, so as to be able to interface and interact with it.\n * For example, if there is a uniform, you may need to query its\n * location so that you can set its value.\n */\n export default class ProgramConfiguration {\n id: string;\n attributeInfos = [];\n attributeInfosByName = {};\n // Locations may not be contiguous the case of matrix attributes\n // so keep a separate location->attribute map.\n attributeInfosByLocation = [];\n varyingInfos = [];\n varyingInfosByName = {};\n\n constructor(program) {\n this.id = program.id;\n Object.seal(this);\n this._readAttributesFromProgram(program);\n this._readVaryingsFromProgram(program);\n }\n\n getAttributeInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return this.attributeInfosByLocation[location];\n }\n return this.attributeInfosByName[locationOrName] || null;\n }\n\n // Resolves an attribute name or index to an index\n getAttributeLocation(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.location : -1;\n }\n\n getAttributeAccessor(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.accessor : null;\n }\n\n getVaryingInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return this.varyingInfos[location];\n }\n return this.varyingInfosByName[locationOrName] || null;\n }\n\n getVaryingIndex(locationOrName) {\n const varying = this.getVaryingInfo(locationOrName);\n return varying ? varying.location : -1;\n }\n\n getVaryingAccessor(locationOrName) {\n const varying = this.getVaryingInfo(locationOrName);\n return varying ? varying.accessor : null;\n }\n\n // PRIVATE METHODS\n\n // linkProgram needs to have been called, although linking does not need to have been successful\n _readAttributesFromProgram(program) {\n const {gl} = program;\n const count = gl.getProgramParameter(program.handle, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const {name, type, size} = gl.getActiveAttrib(program.handle, index);\n const location = gl.getAttribLocation(program.handle, name);\n // Add only user provided attributes, for built-in attributes like\n // `gl_InstanceID` locaiton will be < 0\n if (location >= 0) {\n this._addAttribute(location, name, type, size);\n }\n }\n\n this.attributeInfos.sort((a, b) => a.location - b.location);\n }\n\n // linkProgram needs to have been called, although linking does not need to have been successful\n _readVaryingsFromProgram(program) {\n const {gl} = program;\n if (!isWebGL2(gl)) {\n return;\n }\n\n const count = gl.getProgramParameter(program.handle, gl.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const {name, type, size} = gl.getTransformFeedbackVarying(program.handle, location);\n this._addVarying(location, name, type, size);\n }\n\n this.varyingInfos.sort((a, b) => a.location - b.location);\n }\n\n _addAttribute(location, name, compositeType, size) {\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = {type, size: size * components};\n this._inferProperties(location, name, accessor);\n\n const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values\n this.attributeInfos.push(attributeInfo);\n this.attributeInfosByLocation[location] = attributeInfo; // For quick location based lookup\n this.attributeInfosByName[attributeInfo.name] = attributeInfo; // For quick name based lookup\n }\n\n // Extract additional attribute metadata from shader names (based on attribute naming conventions)\n _inferProperties(location, name, accessor) {\n if (/instance/i.test(name)) {\n // Any attribute containing the word \"instance\" will be assumed to be instanced\n accessor.divisor = 1;\n }\n }\n\n _addVarying(location, name, compositeType, size) {\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = new Accessor({type, size: size * components});\n\n const varying = {location, name, accessor}; // Base values\n this.varyingInfos.push(varying);\n this.varyingInfosByName[varying.name] = varying; // For quick name based lookup\n }\n}\n"],"file":"program-configuration.js"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import WebGLResource, { ResourceProps } from './webgl-resource';
|
|
2
|
+
import ProgramConfiguration from './program-configuration';
|
|
3
|
+
export declare type ProgramProps = ResourceProps & {
|
|
4
|
+
hash?: any;
|
|
5
|
+
vs?: any;
|
|
6
|
+
fs?: any;
|
|
7
|
+
varyings?: any;
|
|
8
|
+
bufferMode?: number;
|
|
9
|
+
};
|
|
10
|
+
export declare type ProgramDrawOptions = {
|
|
11
|
+
logPriority?: any;
|
|
12
|
+
drawMode?: any;
|
|
13
|
+
vertexCount: any;
|
|
14
|
+
offset?: number;
|
|
15
|
+
start?: any;
|
|
16
|
+
end?: any;
|
|
17
|
+
isIndexed?: boolean;
|
|
18
|
+
indexType?: any;
|
|
19
|
+
instanceCount?: number;
|
|
20
|
+
isInstanced?: boolean;
|
|
21
|
+
vertexArray?: any;
|
|
22
|
+
transformFeedback?: any;
|
|
23
|
+
framebuffer?: any;
|
|
24
|
+
parameters?: {};
|
|
25
|
+
uniforms?: any;
|
|
26
|
+
samplers?: any;
|
|
27
|
+
};
|
|
28
|
+
export default class Program extends WebGLResource<ProgramProps> {
|
|
29
|
+
configuration: ProgramConfiguration;
|
|
30
|
+
_isCached: boolean;
|
|
31
|
+
_textureIndexCounter: number;
|
|
32
|
+
hash: string;
|
|
33
|
+
vs: any;
|
|
34
|
+
fs: any;
|
|
35
|
+
uniforms: {};
|
|
36
|
+
_textureUniforms: {};
|
|
37
|
+
varyings: {};
|
|
38
|
+
_uniformCount: number;
|
|
39
|
+
_uniformSetters: {};
|
|
40
|
+
constructor(gl: WebGLRenderingContext, props?: ProgramProps);
|
|
41
|
+
initialize(props?: ProgramProps): this;
|
|
42
|
+
delete(options?: {}): this;
|
|
43
|
+
setProps(props: any): this;
|
|
44
|
+
draw(options: ProgramDrawOptions): boolean;
|
|
45
|
+
setUniforms(uniforms?: {}): this;
|
|
46
|
+
_areTexturesRenderable(): boolean;
|
|
47
|
+
_bindTextures(): void;
|
|
48
|
+
_createHandle(): WebGLProgram;
|
|
49
|
+
_deleteHandle(): void;
|
|
50
|
+
_getOptionsFromHandle(handle: any): {};
|
|
51
|
+
_getParameter(pname: any): any;
|
|
52
|
+
_setId(id: any): void;
|
|
53
|
+
_getName(): any;
|
|
54
|
+
_compileAndLink(): void;
|
|
55
|
+
_readUniformLocationsFromLinkedProgram(): void;
|
|
56
|
+
getActiveUniforms(uniformIndices: any, pname: any): any;
|
|
57
|
+
getUniformBlockIndex(blockName: any): number;
|
|
58
|
+
getActiveUniformBlockParameter(blockIndex: any, pname: any): any;
|
|
59
|
+
uniformBlockBinding(blockIndex: any, blockBinding: any): void;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/classes/program.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,EAAE,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAK9D,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAY3D,oBAAY,YAAY,GAAG,aAAa,GAAG;IACzC,IAAI,CAAC,MAAC;IACN,EAAE,CAAC,MAAC;IACJ,EAAE,CAAC,MAAC;IACJ,QAAQ,CAAC,MAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAA;AAED,oBAAY,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,WAAW,EAAE,GAAG,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,UAAU,CAAC,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC9D,aAAa,EAAE,oBAAoB,CAAC;IAEpC,SAAS,UAAS;IAClB,oBAAoB,SAAK;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,MAAC;IACH,EAAE,MAAC;IACH,QAAQ,EAAE,EAAE,CAAC;IACb,gBAAgB,EAAE,EAAE,CAAC;IACrB,QAAQ,EAAE,EAAE,CAAC;IACb,aAAa,SAAK;IAClB,eAAe,EAAE,EAAE,CAAC;gBAER,EAAE,EAAE,qBAAqB,EAAE,KAAK,GAAE,YAAiB;IAW/D,UAAU,CAAC,KAAK,GAAE,YAAiB;IAgCnC,MAAM,CAAC,OAAO,KAAK;IAQnB,QAAQ,CAAC,KAAK,KAAA;IASd,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO;IA6F1C,WAAW,CAAC,QAAQ,KAAK;IA0DzB,sBAAsB;IActB,aAAa;IASb,aAAa;IAIb,aAAa;IAKb,qBAAqB,CAAC,MAAM,KAAA;IAoB5B,aAAa,CAAC,KAAK,KAAA;IAMnB,MAAM,CAAC,EAAE,KAAA;IAQT,QAAQ;IAOR,eAAe;IA0Bf,sCAAsC;IA0BtC,iBAAiB,CAAC,cAAc,KAAA,EAAE,KAAK,KAAA;IAKvC,oBAAoB,CAAC,SAAS,KAAA;IAO9B,8BAA8B,CAAC,UAAU,KAAA,EAAE,KAAK,KAAA;IAKhD,mBAAmB,CAAC,UAAU,KAAA,EAAE,YAAY,KAAA;CAG7C"}
|