@luma.gl/webgl 8.6.0-alpha.3 → 9.0.0-alpha.2
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/README.md +3 -67
- package/dist/adapter/converters/device-parameters.d.ts +17 -0
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
- package/dist/{esm/adapter/converters/set-device-parameters.js → adapter/converters/device-parameters.js} +36 -5
- package/dist/adapter/converters/device-parameters.js.map +1 -0
- package/dist/{classes → adapter/converters}/renderbuffer-formats.d.ts +0 -0
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -0
- package/dist/{esm/classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/adapter/converters/sampler-parameters.d.ts +19 -0
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/sampler-parameters.js +208 -0
- package/dist/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/adapter/converters/texture-formats.d.ts +93 -0
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -0
- package/dist/adapter/converters/texture-formats.js +954 -0
- package/dist/adapter/converters/texture-formats.js.map +1 -0
- package/dist/adapter/converters/vertex-formats.d.ts +4 -0
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -0
- package/dist/adapter/converters/vertex-formats.js +35 -0
- package/dist/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/adapter/device-helpers/device-features.d.ts +3 -6
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +27 -48
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +1 -0
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +1 -0
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +11 -0
- package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/attribute-utils.js +81 -0
- package/dist/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +55 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.js +306 -0
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.d.ts +0 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/adapter/helpers/set-uniform.d.ts +4 -0
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -0
- package/dist/adapter/helpers/set-uniform.js +115 -0
- package/dist/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/adapter/helpers/uniforms.d.ts +26 -0
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -0
- package/dist/adapter/helpers/uniforms.js +99 -0
- package/dist/adapter/helpers/uniforms.js.map +1 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +5 -0
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
- package/dist/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +40 -0
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -0
- package/dist/{esm/classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +38 -72
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/{classes → adapter/objects}/webgl-resource.d.ts +15 -14
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -0
- package/dist/{esm/classes → adapter/objects}/webgl-resource.js +7 -3
- package/dist/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +27 -0
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -0
- package/dist/adapter/objects/webgl-vertex-array-object.js +84 -0
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/adapter/resources/webgl-buffer.d.ts +27 -0
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-buffer.js +164 -0
- package/dist/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts +25 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.js +65 -0
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts +18 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.js +53 -0
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.d.ts +1 -0
- package/dist/adapter/resources/webgl-external-texture.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{es5/helpers/program-bindings.js.map → adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +40 -0
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-framebuffer.js +265 -0
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts +11 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.js +19 -0
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.js +400 -0
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/webgl-sampler.d.ts +20 -0
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-sampler.js +50 -0
- package/dist/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/adapter/{webgl-shader.d.ts → resources/webgl-shader.d.ts} +3 -6
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -0
- package/dist/adapter/{webgl-shader.js → resources/webgl-shader.js} +13 -20
- package/dist/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/adapter/resources/webgl-texture.d.ts +193 -0
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -0
- package/dist/{esm/classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
- package/dist/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +36 -0
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -0
- package/dist/adapter/webgl-canvas-context.js +54 -0
- package/dist/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +58 -77
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +185 -113
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +32 -0
- package/dist/classic/accessor.d.ts.map +1 -0
- package/dist/{classes → classic}/accessor.js +33 -1
- package/dist/classic/accessor.js.map +1 -0
- package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
- package/dist/classic/buffer.d.ts.map +1 -0
- package/dist/{esm/classes/webgl-buffer.js → classic/buffer.js} +53 -51
- package/dist/classic/buffer.js.map +1 -0
- package/dist/{webgl-utils → classic}/typed-array-utils.d.ts +3 -2
- package/dist/classic/typed-array-utils.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → classic}/typed-array-utils.js +0 -0
- package/dist/classic/typed-array-utils.js.map +1 -0
- package/dist/context/context/context-state.d.ts.map +1 -1
- package/dist/context/context/context-state.js +1 -1
- package/dist/context/context/context-state.js.map +1 -1
- package/dist/context/context/create-context.d.ts +1 -0
- package/dist/context/context/create-context.d.ts.map +1 -1
- package/dist/context/context/create-context.js +12 -0
- package/dist/context/context/create-context.js.map +1 -1
- package/dist/context/context/device-pixels.d.ts +1 -1
- package/dist/context/context/device-pixels.d.ts.map +1 -1
- package/dist/context/context/device-pixels.js.map +1 -1
- package/dist/context/debug/spector.d.ts +18 -0
- package/dist/context/debug/spector.d.ts.map +1 -0
- package/dist/context/debug/spector.js +76 -0
- package/dist/context/debug/spector.js.map +1 -0
- package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
- package/dist/context/debug/webgl-developer-tools.js +121 -0
- package/dist/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/context/parameters/unified-parameter-api.d.ts +3 -2
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +4 -4
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +4 -3
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +25 -11
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +37 -5
- package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
- package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/es5/adapter/converters/sampler-parameters.js +226 -0
- package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/es5/adapter/converters/texture-formats.js +1031 -0
- package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
- package/dist/es5/adapter/converters/vertex-formats.js +45 -0
- package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/es5/adapter/device-helpers/device-features.js +46 -54
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
- package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +184 -87
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/es5/adapter/helpers/set-uniform.js +125 -0
- package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/es5/adapter/helpers/uniforms.js +112 -0
- package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
- package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
- package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
- package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
- package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +345 -0
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +25 -45
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +505 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
- package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +12 -18
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +336 -260
- package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/es5/adapter/webgl-canvas-context.js +97 -0
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/es5/adapter/webgl-device.js +255 -135
- package/dist/es5/adapter/webgl-device.js.map +1 -1
- package/dist/es5/{classes → classic}/accessor.js +25 -1
- package/dist/es5/classic/accessor.js.map +1 -0
- package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +74 -66
- package/dist/es5/classic/buffer.js.map +1 -0
- package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
- package/dist/es5/classic/typed-array-utils.js.map +1 -0
- package/dist/es5/context/context/context-state.js +1 -1
- package/dist/es5/context/context/context-state.js.map +1 -1
- package/dist/es5/context/context/create-context.js +12 -0
- package/dist/es5/context/context/create-context.js.map +1 -1
- package/dist/es5/context/context/device-pixels.js.map +1 -1
- package/dist/es5/context/debug/spector.js +133 -0
- package/dist/es5/context/debug/spector.js.map +1 -0
- package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
- package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/es5/context/parameters/unified-parameter-api.js +7 -5
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-context.js +4 -3
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/es5/context/state-tracker/track-context-state.js +26 -11
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/index.js +66 -238
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +1 -41
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
- package/dist/es5/types/webgl.js.map +1 -0
- package/dist/{adapter/converters/set-device-parameters.js → esm/adapter/converters/device-parameters.js} +36 -5
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
- package/dist/{classes → esm/adapter/converters}/renderbuffer-formats.js +1 -1
- package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
- package/dist/esm/adapter/converters/sampler-parameters.js +208 -0
- package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/esm/adapter/converters/texture-formats.js +954 -0
- package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
- package/dist/esm/adapter/converters/vertex-formats.js +35 -0
- package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/esm/adapter/device-helpers/device-features.js +27 -48
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
- package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js +306 -0
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
- package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/esm/adapter/helpers/set-uniform.js +115 -0
- package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/esm/adapter/helpers/uniforms.js +99 -0
- package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
- package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
- package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
- package/dist/{classes → esm/adapter/objects}/webgl-resource.js +7 -3
- package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
- package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
- package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
- package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +265 -0
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js +19 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +400 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
- package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/esm/adapter/{webgl-shader.js → resources/webgl-shader.js} +13 -20
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/{classes/texture.js → esm/adapter/resources/webgl-texture.js} +274 -229
- package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/esm/adapter/webgl-canvas-context.js +54 -0
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/esm/adapter/webgl-device.js +185 -113
- package/dist/esm/adapter/webgl-device.js.map +1 -1
- package/dist/esm/{classes → classic}/accessor.js +33 -1
- package/dist/esm/classic/accessor.js.map +1 -0
- package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +53 -51
- package/dist/esm/classic/buffer.js.map +1 -0
- package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
- package/dist/esm/classic/typed-array-utils.js.map +1 -0
- package/dist/esm/context/context/context-state.js +1 -1
- package/dist/esm/context/context/context-state.js.map +1 -1
- package/dist/esm/context/context/create-context.js +12 -0
- package/dist/esm/context/context/create-context.js.map +1 -1
- package/dist/esm/context/context/device-pixels.js.map +1 -1
- package/dist/esm/context/debug/spector.js +76 -0
- package/dist/esm/context/debug/spector.js.map +1 -0
- package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
- package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/esm/context/parameters/unified-parameter-api.js +4 -4
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-context.js +4 -3
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
- package/dist/esm/context/state-tracker/track-context-state.js +25 -11
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/index.js +19 -29
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +2 -31
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/webgl.js +2 -0
- package/dist/esm/types/webgl.js.map +1 -0
- package/dist/index.d.ts +22 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -29
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -4
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +2 -31
- package/dist/init.js.map +1 -1
- package/dist/types/webgl.d.ts +144 -0
- package/dist/types/webgl.d.ts.map +1 -0
- package/dist/types/webgl.js +2 -0
- package/dist/types/webgl.js.map +1 -0
- package/package.json +5 -5
- package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +52 -9
- package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
- package/src/adapter/converters/sampler-parameters.ts +175 -0
- package/src/adapter/converters/texture-formats.ts +633 -0
- package/src/adapter/converters/vertex-formats.ts +22 -0
- package/src/adapter/device-helpers/device-features.ts +46 -123
- package/src/adapter/device-helpers/device-limits.ts +5 -2
- package/src/adapter/device-helpers/get-device-info.ts +8 -8
- package/src/adapter/helpers/attribute-utils.ts +61 -0
- package/src/adapter/helpers/get-shader-layout.ts +388 -0
- package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
- package/src/adapter/helpers/set-uniform.ts +87 -0
- package/src/adapter/helpers/uniforms.ts +110 -0
- package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
- package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
- package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
- package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
- package/src/adapter/resources/webgl-buffer.ts +219 -0
- package/src/adapter/resources/webgl-command-buffer.ts +94 -0
- package/src/adapter/resources/webgl-command-encoder.ts +58 -0
- package/src/adapter/resources/webgl-external-texture.ts +92 -0
- package/src/adapter/resources/webgl-framebuffer.ts +279 -0
- package/src/adapter/resources/webgl-render-pass.ts +23 -0
- package/src/adapter/resources/webgl-render-pipeline.ts +413 -0
- package/src/adapter/resources/webgl-sampler.ts +54 -0
- package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +14 -20
- package/src/adapter/resources/webgl-texture.ts +1023 -0
- package/src/adapter/webgl-canvas-context.ts +74 -0
- package/src/adapter/webgl-device.ts +229 -285
- package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +50 -36
- package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +69 -77
- package/src/{webgl-utils → classic}/typed-array-utils.ts +3 -1
- package/src/context/context/context-state.ts +4 -2
- package/src/context/context/create-context.ts +28 -1
- package/src/context/context/device-pixels.ts +9 -4
- package/src/context/debug/spector.ts +92 -0
- package/src/context/debug/webgl-developer-tools.ts +162 -0
- package/src/context/parameters/unified-parameter-api.ts +6 -4
- package/src/context/parameters/webgl-parameter-tables.ts +38 -36
- package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
- package/src/context/polyfill/polyfill-context.ts +4 -3
- package/src/context/state-tracker/deep-array-equal.ts +1 -1
- package/src/context/state-tracker/track-context-state.ts +27 -20
- package/src/index.ts +33 -91
- package/src/init.ts +2 -46
- package/src/types/webgl.ts +283 -0
- package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
- package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
- package/dist/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
- package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
- package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
- package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/adapter/webgl-shader.d.ts.map +0 -1
- package/dist/adapter/webgl-shader.js.map +0 -1
- package/dist/classes/accessor.d.ts +0 -28
- package/dist/classes/accessor.d.ts.map +0 -1
- package/dist/classes/accessor.js.map +0 -1
- package/dist/classes/accessor.ts.disabled +0 -159
- package/dist/classes/clear.d.ts +0 -17
- package/dist/classes/clear.d.ts.map +0 -1
- package/dist/classes/clear.js +0 -105
- package/dist/classes/clear.js.map +0 -1
- package/dist/classes/copy-and-blit.d.ts +0 -86
- package/dist/classes/copy-and-blit.d.ts.map +0 -1
- package/dist/classes/copy-and-blit.js +0 -338
- package/dist/classes/copy-and-blit.js.map +0 -1
- package/dist/classes/framebuffer.d.ts +0 -139
- package/dist/classes/framebuffer.d.ts.map +0 -1
- package/dist/classes/framebuffer.js +0 -656
- package/dist/classes/framebuffer.js.map +0 -1
- package/dist/classes/program-configuration.d.ts +0 -24
- package/dist/classes/program-configuration.d.ts.map +0 -1
- package/dist/classes/program-configuration.js +0 -73
- package/dist/classes/program-configuration.js.map +0 -1
- package/dist/classes/program.d.ts +0 -66
- package/dist/classes/program.d.ts.map +0 -1
- package/dist/classes/program.js +0 -379
- package/dist/classes/program.js.map +0 -1
- package/dist/classes/query.d.ts +0 -27
- package/dist/classes/query.d.ts.map +0 -1
- package/dist/classes/query.js +0 -145
- package/dist/classes/query.js.map +0 -1
- package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
- package/dist/classes/renderbuffer-formats.js.map +0 -1
- package/dist/classes/renderbuffer.d.ts +0 -60
- package/dist/classes/renderbuffer.d.ts.map +0 -1
- package/dist/classes/renderbuffer.js.map +0 -1
- package/dist/classes/shader.d.ts +0 -42
- package/dist/classes/shader.d.ts.map +0 -1
- package/dist/classes/shader.js +0 -118
- package/dist/classes/shader.js.map +0 -1
- package/dist/classes/texture-2d.d.ts +0 -9
- package/dist/classes/texture-2d.d.ts.map +0 -1
- package/dist/classes/texture-2d.js +0 -36
- package/dist/classes/texture-2d.js.map +0 -1
- package/dist/classes/texture-3d.d.ts +0 -29
- package/dist/classes/texture-3d.d.ts.map +0 -1
- package/dist/classes/texture-3d.js +0 -76
- package/dist/classes/texture-3d.js.map +0 -1
- package/dist/classes/texture-cube.d.ts +0 -28
- package/dist/classes/texture-cube.d.ts.map +0 -1
- package/dist/classes/texture-cube.js +0 -130
- package/dist/classes/texture-cube.js.map +0 -1
- package/dist/classes/texture-formats.d.ts +0 -37
- package/dist/classes/texture-formats.d.ts.map +0 -1
- package/dist/classes/texture-formats.js +0 -98
- package/dist/classes/texture-formats.js.map +0 -1
- package/dist/classes/texture.d.ts +0 -123
- package/dist/classes/texture.d.ts.map +0 -1
- package/dist/classes/texture.js.map +0 -1
- package/dist/classes/transform-feedback.d.ts +0 -33
- package/dist/classes/transform-feedback.d.ts.map +0 -1
- package/dist/classes/transform-feedback.js +0 -198
- package/dist/classes/transform-feedback.js.map +0 -1
- package/dist/classes/uniform-buffer-layout.d.ts +0 -17
- package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
- package/dist/classes/uniform-buffer-layout.js +0 -104
- package/dist/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/classes/uniforms.d.ts +0 -37
- package/dist/classes/uniforms.d.ts.map +0 -1
- package/dist/classes/uniforms.js +0 -250
- package/dist/classes/uniforms.js.map +0 -1
- package/dist/classes/vertex-array-object.d.ts +0 -76
- package/dist/classes/vertex-array-object.d.ts.map +0 -1
- package/dist/classes/vertex-array-object.js +0 -261
- package/dist/classes/vertex-array-object.js.map +0 -1
- package/dist/classes/vertex-array.d.ts +0 -75
- package/dist/classes/vertex-array.d.ts.map +0 -1
- package/dist/classes/vertex-array.js +0 -408
- package/dist/classes/vertex-array.js.map +0 -1
- package/dist/classes/webgl-buffer.d.ts.map +0 -1
- package/dist/classes/webgl-buffer.js.map +0 -1
- package/dist/classes/webgl-resource.d.ts.map +0 -1
- package/dist/classes/webgl-resource.js.map +0 -1
- package/dist/context/context/get-canvas.d.ts +0 -13
- package/dist/context/context/get-canvas.d.ts.map +0 -1
- package/dist/context/context/get-canvas.js +0 -31
- package/dist/context/context/get-canvas.js.map +0 -1
- package/dist/context/context/resize-context.d.ts +0 -20
- package/dist/context/context/resize-context.d.ts.map +0 -1
- package/dist/context/context/resize-context.js +0 -15
- package/dist/context/context/resize-context.js.map +0 -1
- package/dist/context/parameters/webgl-parameters.d.ts +0 -144
- package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
- package/dist/context/parameters/webgl-parameters.js +0 -2
- package/dist/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/debug/debug-program-configuration.d.ts +0 -2
- package/dist/debug/debug-program-configuration.d.ts.map +0 -1
- package/dist/debug/debug-program-configuration.js +0 -40
- package/dist/debug/debug-program-configuration.js.map +0 -1
- package/dist/debug/debug-uniforms.d.ts +0 -12
- package/dist/debug/debug-uniforms.d.ts.map +0 -1
- package/dist/debug/debug-uniforms.js +0 -108
- package/dist/debug/debug-uniforms.js.map +0 -1
- package/dist/debug/debug-vertex-array.d.ts +0 -5
- package/dist/debug/debug-vertex-array.d.ts.map +0 -1
- package/dist/debug/debug-vertex-array.js +0 -118
- package/dist/debug/debug-vertex-array.js.map +0 -1
- package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
- package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/es5/adapter/webgl-shader.js.map +0 -1
- package/dist/es5/classes/accessor.d.ts +0 -28
- package/dist/es5/classes/accessor.js.map +0 -1
- package/dist/es5/classes/accessor.ts.disabled +0 -159
- package/dist/es5/classes/clear.js +0 -135
- package/dist/es5/classes/clear.js.map +0 -1
- package/dist/es5/classes/copy-and-blit.js +0 -382
- package/dist/es5/classes/copy-and-blit.js.map +0 -1
- package/dist/es5/classes/framebuffer.js +0 -807
- package/dist/es5/classes/framebuffer.js.map +0 -1
- package/dist/es5/classes/program-configuration.js +0 -119
- package/dist/es5/classes/program-configuration.js.map +0 -1
- package/dist/es5/classes/program.js +0 -471
- package/dist/es5/classes/program.js.map +0 -1
- package/dist/es5/classes/query.js +0 -222
- package/dist/es5/classes/query.js.map +0 -1
- package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
- package/dist/es5/classes/renderbuffer.js.map +0 -1
- package/dist/es5/classes/shader.js +0 -195
- package/dist/es5/classes/shader.js.map +0 -1
- package/dist/es5/classes/texture-2d.js.map +0 -1
- package/dist/es5/classes/texture-3d.js +0 -142
- package/dist/es5/classes/texture-3d.js.map +0 -1
- package/dist/es5/classes/texture-cube.js +0 -202
- package/dist/es5/classes/texture-cube.js.map +0 -1
- package/dist/es5/classes/texture-formats.js +0 -87
- package/dist/es5/classes/texture-formats.js.map +0 -1
- package/dist/es5/classes/texture.js.map +0 -1
- package/dist/es5/classes/transform-feedback.js +0 -267
- package/dist/es5/classes/transform-feedback.js.map +0 -1
- package/dist/es5/classes/uniform-buffer-layout.js +0 -130
- package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/es5/classes/uniforms.js +0 -232
- package/dist/es5/classes/uniforms.js.map +0 -1
- package/dist/es5/classes/vertex-array-object.js +0 -337
- package/dist/es5/classes/vertex-array-object.js.map +0 -1
- package/dist/es5/classes/vertex-array.js +0 -465
- package/dist/es5/classes/vertex-array.js.map +0 -1
- package/dist/es5/classes/webgl-buffer.js.map +0 -1
- package/dist/es5/classes/webgl-resource.js.map +0 -1
- package/dist/es5/context/context/get-canvas.js +0 -40
- package/dist/es5/context/context/get-canvas.js.map +0 -1
- package/dist/es5/context/context/resize-context.js +0 -23
- package/dist/es5/context/context/resize-context.js.map +0 -1
- package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/es5/debug/debug-program-configuration.js +0 -76
- package/dist/es5/debug/debug-program-configuration.js.map +0 -1
- package/dist/es5/debug/debug-uniforms.js +0 -156
- package/dist/es5/debug/debug-uniforms.js.map +0 -1
- package/dist/es5/debug/debug-vertex-array.js +0 -126
- package/dist/es5/debug/debug-vertex-array.js.map +0 -1
- package/dist/es5/helpers/get-program-bindings.js.map +0 -1
- package/dist/es5/helpers/program-bindings.js +0 -2
- package/dist/es5/types/accessor.d.ts +0 -29
- package/dist/es5/webgl-utils/attribute-utils.js +0 -186
- package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/es5/webgl-utils/format-utils.js +0 -58
- package/dist/es5/webgl-utils/format-utils.js.map +0 -1
- package/dist/es5/webgl-utils/get-error.js +0 -49
- package/dist/es5/webgl-utils/get-error.js.map +0 -1
- package/dist/es5/webgl-utils/index.js +0 -74
- package/dist/es5/webgl-utils/index.js.map +0 -1
- package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
- package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/es5/webgl-utils/texture-utils.js +0 -61
- package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
- package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
- package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
- package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
- package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
- package/dist/esm/adapter/webgl-shader.js.map +0 -1
- package/dist/esm/classes/accessor.d.ts +0 -28
- package/dist/esm/classes/accessor.js.map +0 -1
- package/dist/esm/classes/clear.js +0 -105
- package/dist/esm/classes/clear.js.map +0 -1
- package/dist/esm/classes/copy-and-blit.js +0 -338
- package/dist/esm/classes/copy-and-blit.js.map +0 -1
- package/dist/esm/classes/framebuffer.js +0 -656
- package/dist/esm/classes/framebuffer.js.map +0 -1
- package/dist/esm/classes/program-configuration.js +0 -73
- package/dist/esm/classes/program-configuration.js.map +0 -1
- package/dist/esm/classes/program.js +0 -379
- package/dist/esm/classes/program.js.map +0 -1
- package/dist/esm/classes/query.js +0 -145
- package/dist/esm/classes/query.js.map +0 -1
- package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
- package/dist/esm/classes/renderbuffer.js.map +0 -1
- package/dist/esm/classes/shader.js +0 -118
- package/dist/esm/classes/shader.js.map +0 -1
- package/dist/esm/classes/texture-2d.js +0 -36
- package/dist/esm/classes/texture-2d.js.map +0 -1
- package/dist/esm/classes/texture-3d.js +0 -76
- package/dist/esm/classes/texture-3d.js.map +0 -1
- package/dist/esm/classes/texture-cube.js +0 -130
- package/dist/esm/classes/texture-cube.js.map +0 -1
- package/dist/esm/classes/texture-formats.js +0 -98
- package/dist/esm/classes/texture-formats.js.map +0 -1
- package/dist/esm/classes/texture.js.map +0 -1
- package/dist/esm/classes/transform-feedback.js +0 -198
- package/dist/esm/classes/transform-feedback.js.map +0 -1
- package/dist/esm/classes/uniform-buffer-layout.js +0 -104
- package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
- package/dist/esm/classes/uniforms.js +0 -250
- package/dist/esm/classes/uniforms.js.map +0 -1
- package/dist/esm/classes/vertex-array-object.js +0 -261
- package/dist/esm/classes/vertex-array-object.js.map +0 -1
- package/dist/esm/classes/vertex-array.js +0 -408
- package/dist/esm/classes/vertex-array.js.map +0 -1
- package/dist/esm/classes/webgl-buffer.js.map +0 -1
- package/dist/esm/classes/webgl-resource.js.map +0 -1
- package/dist/esm/context/context/get-canvas.js +0 -31
- package/dist/esm/context/context/get-canvas.js.map +0 -1
- package/dist/esm/context/context/resize-context.js +0 -15
- package/dist/esm/context/context/resize-context.js.map +0 -1
- package/dist/esm/context/parameters/webgl-parameters.js +0 -2
- package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
- package/dist/esm/debug/debug-program-configuration.js +0 -40
- package/dist/esm/debug/debug-program-configuration.js.map +0 -1
- package/dist/esm/debug/debug-uniforms.js +0 -108
- package/dist/esm/debug/debug-uniforms.js.map +0 -1
- package/dist/esm/debug/debug-vertex-array.js +0 -118
- package/dist/esm/debug/debug-vertex-array.js.map +0 -1
- package/dist/esm/helpers/get-program-bindings.js +0 -228
- package/dist/esm/helpers/get-program-bindings.js.map +0 -1
- package/dist/esm/helpers/program-bindings.js +0 -2
- package/dist/esm/types/accessor.d.ts +0 -29
- package/dist/esm/webgl-utils/attribute-utils.js +0 -182
- package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/esm/webgl-utils/format-utils.js +0 -45
- package/dist/esm/webgl-utils/format-utils.js.map +0 -1
- package/dist/esm/webgl-utils/get-error.js +0 -41
- package/dist/esm/webgl-utils/get-error.js.map +0 -1
- package/dist/esm/webgl-utils/index.js +0 -5
- package/dist/esm/webgl-utils/index.js.map +0 -1
- package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
- package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/esm/webgl-utils/texture-utils.js +0 -48
- package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
- package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
- package/dist/helpers/get-program-bindings.d.ts +0 -8
- package/dist/helpers/get-program-bindings.d.ts.map +0 -1
- package/dist/helpers/get-program-bindings.js +0 -228
- package/dist/helpers/get-program-bindings.js.map +0 -1
- package/dist/helpers/program-bindings.d.ts +0 -41
- package/dist/helpers/program-bindings.d.ts.map +0 -1
- package/dist/helpers/program-bindings.js +0 -2
- package/dist/types/accessor.d.ts +0 -29
- package/dist/webgl-utils/attribute-utils.d.ts +0 -18
- package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
- package/dist/webgl-utils/attribute-utils.js +0 -182
- package/dist/webgl-utils/attribute-utils.js.map +0 -1
- package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
- package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
- package/dist/webgl-utils/constants-to-keys.js.map +0 -1
- package/dist/webgl-utils/format-utils.d.ts +0 -3
- package/dist/webgl-utils/format-utils.d.ts.map +0 -1
- package/dist/webgl-utils/format-utils.js +0 -45
- package/dist/webgl-utils/format-utils.js.map +0 -1
- package/dist/webgl-utils/get-error.d.ts +0 -3
- package/dist/webgl-utils/get-error.d.ts.map +0 -1
- package/dist/webgl-utils/get-error.js +0 -41
- package/dist/webgl-utils/get-error.js.map +0 -1
- package/dist/webgl-utils/index.d.ts +0 -5
- package/dist/webgl-utils/index.d.ts.map +0 -1
- package/dist/webgl-utils/index.js +0 -5
- package/dist/webgl-utils/index.js.map +0 -1
- package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
- package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
- package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
- package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
- package/dist/webgl-utils/request-animation-frame.js +0 -7
- package/dist/webgl-utils/request-animation-frame.js.map +0 -1
- package/dist/webgl-utils/texture-utils.d.ts +0 -15
- package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
- package/dist/webgl-utils/texture-utils.js +0 -48
- package/dist/webgl-utils/texture-utils.js.map +0 -1
- package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
- package/dist/webgl-utils/typed-array-utils.js.map +0 -1
- package/src/.DS_Store +0 -0
- package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
- package/src/classes/accessor.d.ts +0 -28
- package/src/classes/accessor.js +0 -129
- package/src/classes/accessor.ts.disabled +0 -159
- package/src/classes/clear.ts +0 -108
- package/src/classes/copy-and-blit.ts +0 -460
- package/src/classes/framebuffer.ts +0 -763
- package/src/classes/program-configuration.ts +0 -77
- package/src/classes/program.ts +0 -431
- package/src/classes/query.ts +0 -171
- package/src/classes/renderbuffer.ts +0 -154
- package/src/classes/shader.ts +0 -129
- package/src/classes/texture-2d.ts +0 -35
- package/src/classes/texture-3d.ts +0 -123
- package/src/classes/texture-cube.ts +0 -162
- package/src/classes/texture-formats.ts +0 -171
- package/src/classes/texture.ts +0 -965
- package/src/classes/transform-feedback.ts +0 -191
- package/src/classes/uniform-buffer-layout.ts +0 -113
- package/src/classes/uniforms.ts +0 -394
- package/src/classes/vertex-array-object.ts +0 -339
- package/src/classes/vertex-array.ts +0 -484
- package/src/context/context/get-canvas.ts +0 -37
- package/src/context/context/resize-context.ts +0 -37
- package/src/context/parameters/webgl-parameters.ts +0 -197
- package/src/debug/debug-program-configuration.ts +0 -32
- package/src/debug/debug-uniforms.ts +0 -100
- package/src/debug/debug-vertex-array.ts +0 -123
- package/src/helpers/get-program-bindings.ts +0 -244
- package/src/helpers/program-bindings.ts +0 -46
- package/src/types/accessor.d.ts +0 -29
- package/src/webgl-utils/attribute-utils.ts +0 -171
- package/src/webgl-utils/format-utils.ts +0 -43
- package/src/webgl-utils/get-error.ts +0 -56
- package/src/webgl-utils/index.ts +0 -12
- package/src/webgl-utils/request-animation-frame.ts +0 -14
- package/src/webgl-utils/texture-utils.ts +0 -60
|
@@ -1,471 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
|
|
16
|
-
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
17
|
-
|
|
18
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
|
|
20
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
-
|
|
22
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
-
|
|
24
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
-
|
|
26
|
-
var _api = require("@luma.gl/api");
|
|
27
|
-
|
|
28
|
-
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
29
|
-
|
|
30
|
-
var _webglDevice = _interopRequireDefault(require("../adapter/webgl-device"));
|
|
31
|
-
|
|
32
|
-
var _webglResource = _interopRequireDefault(require("./webgl-resource"));
|
|
33
|
-
|
|
34
|
-
var _texture = _interopRequireDefault(require("./texture"));
|
|
35
|
-
|
|
36
|
-
var _framebuffer = _interopRequireDefault(require("./framebuffer"));
|
|
37
|
-
|
|
38
|
-
var _uniforms = require("./uniforms");
|
|
39
|
-
|
|
40
|
-
var _programConfiguration = _interopRequireDefault(require("./program-configuration"));
|
|
41
|
-
|
|
42
|
-
var _webglChecks = require("../context/context/webgl-checks");
|
|
43
|
-
|
|
44
|
-
var _withParameters = require("../context/state-tracker/with-parameters");
|
|
45
|
-
|
|
46
|
-
var _constantsToKeys = require("../webgl-utils/constants-to-keys");
|
|
47
|
-
|
|
48
|
-
var _attributeUtils = require("../webgl-utils/attribute-utils");
|
|
49
|
-
|
|
50
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
51
|
-
|
|
52
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
53
|
-
|
|
54
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
55
|
-
|
|
56
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
57
|
-
|
|
58
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
59
|
-
|
|
60
|
-
var LOG_PROGRAM_PERF_PRIORITY = 4;
|
|
61
|
-
var GL_SEPARATE_ATTRIBS = 0x8c8d;
|
|
62
|
-
|
|
63
|
-
var Program = function (_WebGLResource) {
|
|
64
|
-
(0, _inherits2.default)(Program, _WebGLResource);
|
|
65
|
-
|
|
66
|
-
var _super = _createSuper(Program);
|
|
67
|
-
|
|
68
|
-
function Program(device) {
|
|
69
|
-
var _this;
|
|
70
|
-
|
|
71
|
-
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
72
|
-
(0, _classCallCheck2.default)(this, Program);
|
|
73
|
-
_this = _super.call(this, _webglDevice.default.attach(device), props, {});
|
|
74
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "configuration", void 0);
|
|
75
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hash", void 0);
|
|
76
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "vs", void 0);
|
|
77
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fs", void 0);
|
|
78
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "uniforms", void 0);
|
|
79
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "varyings", void 0);
|
|
80
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_textureUniforms", void 0);
|
|
81
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_isCached", false);
|
|
82
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_textureIndexCounter", 0);
|
|
83
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_uniformCount", 0);
|
|
84
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_uniformSetters", void 0);
|
|
85
|
-
|
|
86
|
-
_this.initialize(props);
|
|
87
|
-
|
|
88
|
-
Object.seal((0, _assertThisInitialized2.default)(_this));
|
|
89
|
-
|
|
90
|
-
_this._setId(props.id);
|
|
91
|
-
|
|
92
|
-
return _this;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
(0, _createClass2.default)(Program, [{
|
|
96
|
-
key: "destroy",
|
|
97
|
-
value: function destroy() {
|
|
98
|
-
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
99
|
-
|
|
100
|
-
if (this._isCached) {
|
|
101
|
-
return this;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return (0, _get2.default)((0, _getPrototypeOf2.default)(Program.prototype), "delete", this).call(this, options);
|
|
105
|
-
}
|
|
106
|
-
}, {
|
|
107
|
-
key: "delete",
|
|
108
|
-
value: function _delete() {
|
|
109
|
-
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
110
|
-
|
|
111
|
-
if (this._isCached) {
|
|
112
|
-
return this;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return (0, _get2.default)((0, _getPrototypeOf2.default)(Program.prototype), "delete", this).call(this, options);
|
|
116
|
-
}
|
|
117
|
-
}, {
|
|
118
|
-
key: "initialize",
|
|
119
|
-
value: function initialize() {
|
|
120
|
-
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
121
|
-
var hash = props.hash,
|
|
122
|
-
vs = props.vs,
|
|
123
|
-
fs = props.fs,
|
|
124
|
-
varyings = props.varyings,
|
|
125
|
-
_props$bufferMode = props.bufferMode,
|
|
126
|
-
bufferMode = _props$bufferMode === void 0 ? GL_SEPARATE_ATTRIBS : _props$bufferMode;
|
|
127
|
-
this.hash = hash || '';
|
|
128
|
-
this.vs = typeof vs === 'string' ? this.device.createShader({
|
|
129
|
-
id: "".concat(props.id, "-vs"),
|
|
130
|
-
source: vs,
|
|
131
|
-
stage: 'vertex'
|
|
132
|
-
}) : (0, _api.cast)(vs);
|
|
133
|
-
this.fs = typeof fs === 'string' ? this.device.createShader({
|
|
134
|
-
id: "".concat(props.id, "-fs"),
|
|
135
|
-
source: fs,
|
|
136
|
-
stage: 'fragment'
|
|
137
|
-
}) : (0, _api.cast)(fs);
|
|
138
|
-
(0, _api.assert)(this.vs.stage === 'vertex');
|
|
139
|
-
(0, _api.assert)(this.fs.stage === 'fragment');
|
|
140
|
-
this.uniforms = {};
|
|
141
|
-
this._textureUniforms = {};
|
|
142
|
-
|
|
143
|
-
if (varyings && varyings.length > 0) {
|
|
144
|
-
(0, _webglChecks.assertWebGL2Context)(this.gl);
|
|
145
|
-
this.varyings = varyings;
|
|
146
|
-
this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
this._compileAndLink();
|
|
150
|
-
|
|
151
|
-
this._readUniformLocationsFromLinkedProgram();
|
|
152
|
-
|
|
153
|
-
this.configuration = new _programConfiguration.default(this);
|
|
154
|
-
return this.setProps(props);
|
|
155
|
-
}
|
|
156
|
-
}, {
|
|
157
|
-
key: "setProps",
|
|
158
|
-
value: function setProps(props) {
|
|
159
|
-
if ('uniforms' in props) {
|
|
160
|
-
this.setUniforms(props.uniforms);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
return this;
|
|
164
|
-
}
|
|
165
|
-
}, {
|
|
166
|
-
key: "draw",
|
|
167
|
-
value: function draw(options) {
|
|
168
|
-
var _this2 = this;
|
|
169
|
-
|
|
170
|
-
var logPriority = options.logPriority,
|
|
171
|
-
_options$drawMode = options.drawMode,
|
|
172
|
-
drawMode = _options$drawMode === void 0 ? _constants.default.TRIANGLES : _options$drawMode,
|
|
173
|
-
vertexCount = options.vertexCount,
|
|
174
|
-
_options$offset = options.offset,
|
|
175
|
-
offset = _options$offset === void 0 ? 0 : _options$offset,
|
|
176
|
-
start = options.start,
|
|
177
|
-
end = options.end,
|
|
178
|
-
_options$isIndexed = options.isIndexed,
|
|
179
|
-
isIndexed = _options$isIndexed === void 0 ? false : _options$isIndexed,
|
|
180
|
-
_options$indexType = options.indexType,
|
|
181
|
-
indexType = _options$indexType === void 0 ? _constants.default.UNSIGNED_SHORT : _options$indexType,
|
|
182
|
-
_options$instanceCoun = options.instanceCount,
|
|
183
|
-
instanceCount = _options$instanceCoun === void 0 ? 0 : _options$instanceCoun,
|
|
184
|
-
_options$isInstanced = options.isInstanced,
|
|
185
|
-
isInstanced = _options$isInstanced === void 0 ? instanceCount > 0 : _options$isInstanced,
|
|
186
|
-
_options$vertexArray = options.vertexArray,
|
|
187
|
-
vertexArray = _options$vertexArray === void 0 ? null : _options$vertexArray,
|
|
188
|
-
transformFeedback = options.transformFeedback,
|
|
189
|
-
framebuffer = options.framebuffer,
|
|
190
|
-
uniforms = options.uniforms,
|
|
191
|
-
samplers = options.samplers;
|
|
192
|
-
var _options$parameters = options.parameters,
|
|
193
|
-
parameters = _options$parameters === void 0 ? {} : _options$parameters;
|
|
194
|
-
|
|
195
|
-
if (uniforms || samplers) {
|
|
196
|
-
_api.log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();
|
|
197
|
-
|
|
198
|
-
this.setUniforms(uniforms || {});
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
if (_api.log.priority >= logPriority) {
|
|
202
|
-
var fb = framebuffer ? framebuffer.id : 'default';
|
|
203
|
-
var message = "mode=".concat((0, _constantsToKeys.getKey)(this.gl, drawMode), " verts=").concat(vertexCount, " ") + "instances=".concat(instanceCount, " indexType=").concat((0, _constantsToKeys.getKey)(this.gl, indexType), " ") + "isInstanced=".concat(isInstanced, " isIndexed=").concat(isIndexed, " ") + "Framebuffer=".concat(fb);
|
|
204
|
-
|
|
205
|
-
_api.log.log(logPriority, message)();
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
(0, _api.assert)(vertexArray);
|
|
209
|
-
this.gl.useProgram(this.handle);
|
|
210
|
-
|
|
211
|
-
if (!this._areTexturesRenderable() || vertexCount === 0 || isInstanced && instanceCount === 0) {
|
|
212
|
-
return false;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
vertexArray.bindForDraw(vertexCount, instanceCount, function () {
|
|
216
|
-
if (framebuffer !== undefined) {
|
|
217
|
-
parameters = Object.assign({}, parameters, {
|
|
218
|
-
framebuffer: framebuffer
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
if (transformFeedback) {
|
|
223
|
-
var primitiveMode = (0, _attributeUtils.getPrimitiveDrawMode)(drawMode);
|
|
224
|
-
transformFeedback.begin(primitiveMode);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
_this2._bindTextures();
|
|
228
|
-
|
|
229
|
-
(0, _withParameters.withParameters)(_this2.gl, parameters, function () {
|
|
230
|
-
if (isIndexed && isInstanced) {
|
|
231
|
-
_this2.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);
|
|
232
|
-
} else if (isIndexed && (0, _webglChecks.isWebGL2)(_this2.gl) && !isNaN(start) && !isNaN(end)) {
|
|
233
|
-
_this2.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);
|
|
234
|
-
} else if (isIndexed) {
|
|
235
|
-
_this2.gl.drawElements(drawMode, vertexCount, indexType, offset);
|
|
236
|
-
} else if (isInstanced) {
|
|
237
|
-
_this2.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);
|
|
238
|
-
} else {
|
|
239
|
-
_this2.gl.drawArrays(drawMode, offset, vertexCount);
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
if (transformFeedback) {
|
|
244
|
-
transformFeedback.end();
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
return true;
|
|
248
|
-
}
|
|
249
|
-
}, {
|
|
250
|
-
key: "setUniforms",
|
|
251
|
-
value: function setUniforms() {
|
|
252
|
-
var uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
253
|
-
|
|
254
|
-
if (_api.log.priority >= 2) {
|
|
255
|
-
(0, _uniforms.checkUniformValues)(uniforms, this.id, this._uniformSetters);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
this.gl.useProgram(this.handle);
|
|
259
|
-
|
|
260
|
-
for (var uniformName in uniforms) {
|
|
261
|
-
var uniform = uniforms[uniformName];
|
|
262
|
-
var uniformSetter = this._uniformSetters[uniformName];
|
|
263
|
-
|
|
264
|
-
if (uniformSetter) {
|
|
265
|
-
var value = uniform;
|
|
266
|
-
var textureUpdate = false;
|
|
267
|
-
|
|
268
|
-
if (value instanceof _framebuffer.default) {
|
|
269
|
-
value = value.texture;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
if (value instanceof _texture.default) {
|
|
273
|
-
textureUpdate = this.uniforms[uniformName] !== uniform;
|
|
274
|
-
|
|
275
|
-
if (textureUpdate) {
|
|
276
|
-
if (uniformSetter.textureIndex === undefined) {
|
|
277
|
-
uniformSetter.textureIndex = this._textureIndexCounter++;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
var texture = value;
|
|
281
|
-
var textureIndex = uniformSetter.textureIndex;
|
|
282
|
-
texture.bind(textureIndex);
|
|
283
|
-
value = textureIndex;
|
|
284
|
-
this._textureUniforms[uniformName] = texture;
|
|
285
|
-
} else {
|
|
286
|
-
value = uniformSetter.textureIndex;
|
|
287
|
-
}
|
|
288
|
-
} else if (this._textureUniforms[uniformName]) {
|
|
289
|
-
delete this._textureUniforms[uniformName];
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
if (uniformSetter(value) || textureUpdate) {
|
|
293
|
-
(0, _uniforms.copyUniform)(this.uniforms, uniformName, uniform);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
return this;
|
|
299
|
-
}
|
|
300
|
-
}, {
|
|
301
|
-
key: "_areTexturesRenderable",
|
|
302
|
-
value: function _areTexturesRenderable() {
|
|
303
|
-
var texturesRenderable = true;
|
|
304
|
-
|
|
305
|
-
for (var uniformName in this._textureUniforms) {
|
|
306
|
-
var texture = this._textureUniforms[uniformName];
|
|
307
|
-
texture.update();
|
|
308
|
-
texturesRenderable = texturesRenderable && texture.loaded;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
return texturesRenderable;
|
|
312
|
-
}
|
|
313
|
-
}, {
|
|
314
|
-
key: "_bindTextures",
|
|
315
|
-
value: function _bindTextures() {
|
|
316
|
-
for (var uniformName in this._textureUniforms) {
|
|
317
|
-
var textureIndex = this._uniformSetters[uniformName].textureIndex;
|
|
318
|
-
|
|
319
|
-
this._textureUniforms[uniformName].bind(textureIndex);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}, {
|
|
323
|
-
key: "_createHandle",
|
|
324
|
-
value: function _createHandle() {
|
|
325
|
-
return this.gl.createProgram();
|
|
326
|
-
}
|
|
327
|
-
}, {
|
|
328
|
-
key: "_deleteHandle",
|
|
329
|
-
value: function _deleteHandle() {
|
|
330
|
-
this.gl.deleteProgram(this.handle);
|
|
331
|
-
}
|
|
332
|
-
}, {
|
|
333
|
-
key: "_getOptionsFromHandle",
|
|
334
|
-
value: function _getOptionsFromHandle(handle) {
|
|
335
|
-
var shaderHandles = this.gl.getAttachedShaders(handle);
|
|
336
|
-
var opts = {};
|
|
337
|
-
|
|
338
|
-
var _iterator = _createForOfIteratorHelper(shaderHandles),
|
|
339
|
-
_step;
|
|
340
|
-
|
|
341
|
-
try {
|
|
342
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
343
|
-
var shaderHandle = _step.value;
|
|
344
|
-
var type = this.gl.getShaderParameter(this.handle, _constants.default.SHADER_TYPE);
|
|
345
|
-
|
|
346
|
-
switch (type) {
|
|
347
|
-
case _constants.default.VERTEX_SHADER:
|
|
348
|
-
opts.vs = new VertexShader({
|
|
349
|
-
handle: shaderHandle
|
|
350
|
-
});
|
|
351
|
-
break;
|
|
352
|
-
|
|
353
|
-
case _constants.default.FRAGMENT_SHADER:
|
|
354
|
-
opts.fs = new FragmentShader({
|
|
355
|
-
handle: shaderHandle
|
|
356
|
-
});
|
|
357
|
-
break;
|
|
358
|
-
|
|
359
|
-
default:
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
} catch (err) {
|
|
363
|
-
_iterator.e(err);
|
|
364
|
-
} finally {
|
|
365
|
-
_iterator.f();
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
return opts;
|
|
369
|
-
}
|
|
370
|
-
}, {
|
|
371
|
-
key: "_getParameter",
|
|
372
|
-
value: function _getParameter(pname) {
|
|
373
|
-
return this.gl.getProgramParameter(this.handle, pname);
|
|
374
|
-
}
|
|
375
|
-
}, {
|
|
376
|
-
key: "_setId",
|
|
377
|
-
value: function _setId(id) {
|
|
378
|
-
if (!id) {
|
|
379
|
-
var programName = this._getName();
|
|
380
|
-
|
|
381
|
-
this.id = (0, _api.uid)(programName);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
}, {
|
|
385
|
-
key: "_getName",
|
|
386
|
-
value: function _getName() {
|
|
387
|
-
var programName = this.vs.id || this.fs.id;
|
|
388
|
-
programName = programName.replace(/shader/i, '');
|
|
389
|
-
programName = programName ? "".concat(programName, "-program") : 'program';
|
|
390
|
-
return programName;
|
|
391
|
-
}
|
|
392
|
-
}, {
|
|
393
|
-
key: "_compileAndLink",
|
|
394
|
-
value: function _compileAndLink() {
|
|
395
|
-
var gl = this.gl;
|
|
396
|
-
gl.attachShader(this.handle, this.vs.handle);
|
|
397
|
-
gl.attachShader(this.handle, this.fs.handle);
|
|
398
|
-
|
|
399
|
-
_api.log.time(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this._getName()))();
|
|
400
|
-
|
|
401
|
-
gl.linkProgram(this.handle);
|
|
402
|
-
|
|
403
|
-
_api.log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this._getName()))();
|
|
404
|
-
|
|
405
|
-
if (gl.debug || _api.log.level > 0) {
|
|
406
|
-
var linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
|
|
407
|
-
|
|
408
|
-
if (!linked) {
|
|
409
|
-
throw new Error("Error linking: ".concat(gl.getProgramInfoLog(this.handle)));
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
gl.validateProgram(this.handle);
|
|
413
|
-
var validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
|
|
414
|
-
|
|
415
|
-
if (!validated) {
|
|
416
|
-
throw new Error("Error validating: ".concat(gl.getProgramInfoLog(this.handle)));
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
}, {
|
|
421
|
-
key: "_readUniformLocationsFromLinkedProgram",
|
|
422
|
-
value: function _readUniformLocationsFromLinkedProgram() {
|
|
423
|
-
var gl = this.gl;
|
|
424
|
-
this._uniformSetters = {};
|
|
425
|
-
this._uniformCount = this._getParameter(_constants.default.ACTIVE_UNIFORMS);
|
|
426
|
-
|
|
427
|
-
for (var i = 0; i < this._uniformCount; i++) {
|
|
428
|
-
var info = this.gl.getActiveUniform(this.handle, i);
|
|
429
|
-
|
|
430
|
-
var _parseUniformName = (0, _uniforms.parseUniformName)(info.name),
|
|
431
|
-
name = _parseUniformName.name;
|
|
432
|
-
|
|
433
|
-
var location = gl.getUniformLocation(this.handle, name);
|
|
434
|
-
this._uniformSetters[name] = (0, _uniforms.getUniformSetter)(gl, location, info);
|
|
435
|
-
|
|
436
|
-
if (info.size > 1) {
|
|
437
|
-
for (var l = 0; l < info.size; l++) {
|
|
438
|
-
location = gl.getUniformLocation(this.handle, "".concat(name, "[").concat(l, "]"));
|
|
439
|
-
this._uniformSetters["".concat(name, "[").concat(l, "]")] = (0, _uniforms.getUniformSetter)(gl, location, info);
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
this._textureIndexCounter = 0;
|
|
445
|
-
}
|
|
446
|
-
}, {
|
|
447
|
-
key: "getActiveUniforms",
|
|
448
|
-
value: function getActiveUniforms(uniformIndices, pname) {
|
|
449
|
-
return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);
|
|
450
|
-
}
|
|
451
|
-
}, {
|
|
452
|
-
key: "getUniformBlockIndex",
|
|
453
|
-
value: function getUniformBlockIndex(blockName) {
|
|
454
|
-
return this.gl2.getUniformBlockIndex(this.handle, blockName);
|
|
455
|
-
}
|
|
456
|
-
}, {
|
|
457
|
-
key: "getActiveUniformBlockParameter",
|
|
458
|
-
value: function getActiveUniformBlockParameter(blockIndex, pname) {
|
|
459
|
-
return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);
|
|
460
|
-
}
|
|
461
|
-
}, {
|
|
462
|
-
key: "uniformBlockBinding",
|
|
463
|
-
value: function uniformBlockBinding(blockIndex, blockBinding) {
|
|
464
|
-
this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);
|
|
465
|
-
}
|
|
466
|
-
}]);
|
|
467
|
-
return Program;
|
|
468
|
-
}(_webglResource.default);
|
|
469
|
-
|
|
470
|
-
exports.default = Program;
|
|
471
|
-
//# sourceMappingURL=program.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/program.ts"],"names":["LOG_PROGRAM_PERF_PRIORITY","GL_SEPARATE_ATTRIBS","Program","device","props","WebGLDevice","attach","initialize","Object","seal","_setId","id","options","_isCached","hash","vs","fs","varyings","bufferMode","createShader","source","stage","uniforms","_textureUniforms","length","gl","gl2","transformFeedbackVaryings","handle","_compileAndLink","_readUniformLocationsFromLinkedProgram","configuration","ProgramConfiguration","setProps","setUniforms","logPriority","drawMode","GL","TRIANGLES","vertexCount","offset","start","end","isIndexed","indexType","UNSIGNED_SHORT","instanceCount","isInstanced","vertexArray","transformFeedback","framebuffer","samplers","parameters","log","deprecated","priority","fb","message","useProgram","_areTexturesRenderable","bindForDraw","undefined","assign","primitiveMode","begin","_bindTextures","drawElementsInstanced","isNaN","drawRangeElements","drawElements","drawArraysInstanced","drawArrays","_uniformSetters","uniformName","uniform","uniformSetter","value","textureUpdate","Framebuffer","texture","Texture","textureIndex","_textureIndexCounter","bind","texturesRenderable","update","loaded","createProgram","deleteProgram","shaderHandles","getAttachedShaders","opts","shaderHandle","type","getShaderParameter","SHADER_TYPE","VERTEX_SHADER","VertexShader","FRAGMENT_SHADER","FragmentShader","pname","getProgramParameter","programName","_getName","replace","attachShader","time","linkProgram","timeEnd","debug","level","linked","LINK_STATUS","Error","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","_uniformCount","_getParameter","ACTIVE_UNIFORMS","i","info","getActiveUniform","name","location","getUniformLocation","size","l","uniformIndices","getActiveUniforms","blockName","getUniformBlockIndex","blockIndex","getActiveUniformBlockParameter","blockBinding","uniformBlockBinding","WebGLResource"],"mappings":"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","sourcesContent":["import {log, assert, uid, cast, Shader} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../adapter/webgl-device';\nimport WebGLResource, {ResourceProps} from './webgl-resource';\nimport Texture from './texture';\nimport Framebuffer from './framebuffer';\nimport {parseUniformName, getUniformSetter} from './uniforms';\nimport {WEBGLShader} from '../adapter/webgl-shader';\nimport ProgramConfiguration from './program-configuration';\nimport {copyUniform, checkUniformValues} from './uniforms';\n\nimport {isWebGL2, assertWebGL2Context} from '../context/context/webgl-checks';\nimport {withParameters} from '../context/state-tracker/with-parameters';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\nconst GL_SEPARATE_ATTRIBS = 0x8c8d;\n\nexport type ProgramProps = ResourceProps & {\n hash?: string;\n vs?: string | Shader;\n fs?: string | Shader;\n varyings?: string[];\n bufferMode?: number;\n};\n\nexport type ProgramDrawOptions = {\n logPriority?: number;\n drawMode?: number;\n vertexCount: any;\n offset?: number;\n start?: number;\n end?: number;\n isIndexed?: boolean;\n indexType?: any;\n instanceCount?: number;\n isInstanced?: boolean;\n vertexArray?: any;\n transformFeedback?: any; // TransformFeedback;\n framebuffer?: Framebuffer;\n parameters?: {};\n uniforms?: Record<string, any>;\n samplers?: any;\n};\n\nexport default class Program extends WebGLResource<ProgramProps> {\n configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n hash: string; // Used by ProgramManager\n vs: WEBGLShader;\n fs: WEBGLShader;\n uniforms: Record<string, any>;\n varyings: Record<string, any>;\n _textureUniforms: Record<string, any>;\n _isCached: boolean = false;\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function>;\n\n constructor(device: WebGLDevice | WebGLRenderingContext, props: ProgramProps = {}) {\n super(WebGLDevice.attach(device), props, {} as any);\n this.initialize(props);\n Object.seal(this);\n this._setId(props.id);\n }\n\n destroy(options = {}) {\n if (this._isCached) {\n // This object is cached, do not delete\n return this;\n }\n return super.delete(options);\n }\n\n delete(options = {}) {\n if (this._isCached) {\n // This object is cached, do not delete\n return this;\n }\n return super.delete(options);\n }\n\n initialize(props: ProgramProps = {}) {\n const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS} = props;\n\n this.hash = hash || ''; // Used by ProgramManager\n\n // Create shaders if needed\n this.vs =\n typeof vs === 'string'\n ? this.device.createShader({id: `${props.id}-vs`, source: vs, stage: 'vertex'})\n : cast<WEBGLShader>(vs);\n this.fs =\n typeof fs === 'string'\n ? this.device.createShader({id: `${props.id}-fs`, source: fs, stage: 'fragment'})\n : cast<WEBGLShader>(fs);\n assert(this.vs.stage === 'vertex');\n assert(this.fs.stage === 'fragment');\n\n // uniforms\n this.uniforms = {};\n this._textureUniforms = {};\n\n // Setup varyings if supplied\n if (varyings && varyings.length > 0) {\n assertWebGL2Context(this.gl);\n this.varyings = varyings;\n this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n this._readUniformLocationsFromLinkedProgram();\n this.configuration = new ProgramConfiguration(this);\n\n return this.setProps(props);\n }\n\n setProps(props) {\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n return this;\n }\n\n // A good thing about the WebGL API is that there are so many ways to draw things ;)\n // This function unifies those ways into a single call using common parameters with sane defaults\n draw(options: ProgramDrawOptions): boolean {\n const {\n logPriority, // Probe log priority, enables Model to do more integrated logging\n\n drawMode = GL.TRIANGLES,\n vertexCount,\n offset = 0,\n start,\n end,\n isIndexed = false,\n indexType = GL.UNSIGNED_SHORT,\n instanceCount = 0,\n isInstanced = instanceCount > 0,\n\n vertexArray = null,\n transformFeedback,\n framebuffer,\n\n // Deprecated\n uniforms,\n samplers\n } = options;\n\n let {parameters = {}} = options;\n\n if (uniforms || samplers) {\n // DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)\n log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();\n this.setUniforms(uniforms || {});\n }\n\n if (log.priority >= logPriority) {\n const fb = framebuffer ? framebuffer.id : 'default';\n const message =\n `mode=${getKey(this.gl, drawMode)} verts=${vertexCount} ` +\n `instances=${instanceCount} indexType=${getKey(this.gl, indexType)} ` +\n `isInstanced=${isInstanced} isIndexed=${isIndexed} ` +\n `Framebuffer=${fb}`;\n log.log(logPriority, message)();\n }\n\n // TODO - move vertex array binding and transform feedback binding to withParameters?\n assert(vertexArray);\n\n this.gl.useProgram(this.handle);\n\n if (\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n !this._areTexturesRenderable() ||\n // Avoid WebGL draw call when not rendering any data\n vertexCount === 0 ||\n (isInstanced && instanceCount === 0)\n ) {\n return false;\n }\n\n vertexArray.bindForDraw(vertexCount, instanceCount, () => {\n if (framebuffer !== undefined) {\n parameters = Object.assign({}, parameters, {framebuffer});\n }\n\n if (transformFeedback) {\n const primitiveMode = getPrimitiveDrawMode(drawMode);\n transformFeedback.begin(primitiveMode);\n }\n\n this._bindTextures();\n\n withParameters(this.gl, parameters, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n } else if (isIndexed && isWebGL2(this.gl) && !isNaN(start) && !isNaN(end)) {\n this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n } else if (isInstanced) {\n this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n } else {\n this.gl.drawArrays(drawMode, offset, vertexCount);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n\n return true;\n }\n\n setUniforms(uniforms = {}) {\n if (log.priority >= 2) {\n checkUniformValues(uniforms, this.id, this._uniformSetters);\n }\n\n this.gl.useProgram(this.handle);\n\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n const uniformSetter = this._uniformSetters[uniformName];\n\n if (uniformSetter) {\n let value = uniform;\n let textureUpdate = false;\n\n if (value instanceof Framebuffer) {\n value = value.texture;\n }\n if (value instanceof Texture) {\n textureUpdate = this.uniforms[uniformName] !== uniform;\n\n if (textureUpdate) {\n // eslint-disable-next-line max-depth\n // @ts-expect-error\n if (uniformSetter.textureIndex === undefined) {\n // @ts-expect-error\n uniformSetter.textureIndex = this._textureIndexCounter++;\n }\n\n // Bind texture to index\n const texture = value;\n // @ts-expect-error\n const {textureIndex} = uniformSetter;\n\n texture.bind(textureIndex);\n value = textureIndex;\n\n this._textureUniforms[uniformName] = texture;\n } else {\n // @ts-expect-error\n value = uniformSetter.textureIndex;\n }\n } else if (this._textureUniforms[uniformName]) {\n delete this._textureUniforms[uniformName];\n }\n\n // NOTE(Tarek): uniformSetter returns whether\n // value had to be updated or not.\n if (uniformSetter(value) || textureUpdate) {\n copyUniform(this.uniforms, uniformName, uniform);\n }\n }\n }\n\n return this;\n }\n\n // PRIVATE METHODS\n\n // Checks if all texture-values uniforms are renderable (i.e. loaded)\n // Update a texture if needed (e.g. from video)\n // Note: This is currently done before every draw call\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const uniformName in this._textureUniforms) {\n const texture = this._textureUniforms[uniformName];\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n return texturesRenderable;\n }\n\n // Binds textures\n // Note: This is currently done before every draw call\n _bindTextures() {\n for (const uniformName in this._textureUniforms) {\n // @ts-expect-error\n const textureIndex = this._uniformSetters[uniformName].textureIndex;\n this._textureUniforms[uniformName].bind(textureIndex);\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createProgram();\n }\n\n _deleteHandle() {\n this.gl.deleteProgram(this.handle);\n }\n\n // Extract opts needed to initialize a `Program` from an independently created WebGLProgram handle\n _getOptionsFromHandle(handle) {\n const shaderHandles = this.gl.getAttachedShaders(handle);\n const opts = {};\n for (const shaderHandle of shaderHandles) {\n const type = this.gl.getShaderParameter(this.handle, GL.SHADER_TYPE);\n switch (type) {\n case GL.VERTEX_SHADER:\n // @ts-expect-error\n opts.vs = new VertexShader({handle: shaderHandle});\n break;\n case GL.FRAGMENT_SHADER:\n // @ts-expect-error\n opts.fs = new FragmentShader({handle: shaderHandle});\n break;\n default:\n }\n }\n return opts;\n }\n\n _getParameter(pname) {\n return this.gl.getProgramParameter(this.handle, pname);\n }\n\n // If program is not named, name it after shader names\n // TODO - this.id will already have been initialized\n _setId(id) {\n if (!id) {\n const programName = this._getName();\n this.id = uid(programName);\n }\n }\n\n // Generate a default name for the program based on names of the shaders\n _getName() {\n // let programName = this.vs.getName() || this.fs.getName();\n let programName = this.vs.id || this.fs.id;\n programName = programName.replace(/shader/i, '');\n programName = programName ? `${programName}-program` : 'program';\n return programName;\n }\n\n _compileAndLink() {\n const {gl} = this;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // query uniform locations and build name to setter map.\n // TODO - This overlaps with ProgramConfiguration?\n _readUniformLocationsFromLinkedProgram() {\n const {gl} = this;\n this._uniformSetters = {};\n this._uniformCount = this._getParameter(GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < this._uniformCount; i++) {\n const info = this.gl.getActiveUniform(this.handle, i);\n const {name} = parseUniformName(info.name);\n let location = gl.getUniformLocation(this.handle, name);\n // @ts-expect-error\n this._uniformSetters[name] = getUniformSetter(gl, location, info);\n if (info.size > 1) {\n for (let l = 0; l < info.size; l++) {\n location = gl.getUniformLocation(this.handle, `${name}[${l}]`);\n // @ts-expect-error\n this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info);\n }\n }\n }\n this._textureIndexCounter = 0;\n }\n\n // TO BE REMOVED in v7?\n\n // Rretrieves information about active uniforms identifed by their indices (`uniformIndices`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniforms\n getActiveUniforms(uniformIndices, pname) {\n return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);\n }\n\n // Retrieves the index of a uniform block\n getUniformBlockIndex(blockName) {\n return this.gl2.getUniformBlockIndex(this.handle, blockName);\n }\n\n // Retrieves information about an active uniform block (`blockIndex`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockParameter\n getActiveUniformBlockParameter(blockIndex, pname) {\n return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n }\n\n // Binds a uniform block (`blockIndex`) to a specific binding point (`blockBinding`)\n uniformBlockBinding(blockIndex, blockBinding) {\n this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n }\n}\n"],"file":"program.js"}
|