@luma.gl/webgl 8.6.0-alpha.5 → 9.0.0-alpha.10
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 +27 -0
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/{set-device-parameters.js → device-parameters.js} +50 -6
- 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/{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 +227 -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 +39 -50
- 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 +330 -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/{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 +41 -0
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-framebuffer.js +267 -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 +21 -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 +428 -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/{esm/adapter → adapter/resources}/webgl-shader.js +17 -23
- 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/{classes/texture.js → adapter/resources/webgl-texture.js} +280 -232
- 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 +63 -75
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +242 -112
- 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/{classes/webgl-buffer.js → classic/buffer.js} +67 -57
- 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 → create-browser-context.d.ts} +2 -1
- package/dist/context/context/create-browser-context.d.ts.map +1 -0
- package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +27 -3
- package/dist/context/context/create-browser-context.js.map +1 -0
- package/dist/context/context/create-headless-context.d.ts +9 -0
- package/dist/context/context/create-headless-context.d.ts.map +1 -0
- package/dist/context/context/create-headless-context.js +43 -0
- package/dist/context/context/create-headless-context.js.map +1 -0
- 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 +13 -8
- 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 +9 -7
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +9 -8
- 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 +3 -3
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +1 -1
- package/dist/context/polyfill/polyfill-table.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 +26 -12
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts +2 -1
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +6 -2
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +53 -6
- 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 +245 -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 +61 -58
- 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} +211 -94
- 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 +346 -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} +26 -45
- package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +530 -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} +16 -21
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +374 -298
- 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 +314 -130
- 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} +88 -72
- 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 → create-browser-context.js} +29 -3
- package/dist/es5/context/context/create-browser-context.js.map +1 -0
- package/dist/es5/context/context/create-headless-context.js +60 -0
- package/dist/es5/context/context/create-headless-context.js.map +1 -0
- package/dist/es5/context/context/device-pixels.js +14 -8
- 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 +15 -9
- 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 +3 -3
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-table.js +1 -1
- package/dist/es5/context/polyfill/polyfill-table.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 +39 -24
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/context/state-tracker/with-parameters.js +8 -2
- package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/es5/index.js +72 -300
- 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/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +50 -6
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
- package/dist/esm/{classes → 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 +227 -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 +39 -50
- 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 +330 -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/esm/{classes → 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 +267 -0
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js +21 -0
- package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +428 -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/{adapter → esm/adapter/resources}/webgl-shader.js +17 -23
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +280 -232
- 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 +242 -112
- 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/esm/{classes/webgl-buffer.js → classic/buffer.js} +67 -57
- 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/{context/context/create-context.js → esm/context/context/create-browser-context.js} +27 -3
- package/dist/esm/context/context/create-browser-context.js.map +1 -0
- package/dist/esm/context/context/create-headless-context.js +43 -0
- package/dist/esm/context/context/create-headless-context.js.map +1 -0
- package/dist/esm/context/context/device-pixels.js +13 -8
- 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 +9 -8
- 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 +3 -3
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-table.js +1 -1
- package/dist/esm/context/polyfill/polyfill-table.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 +26 -12
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/context/state-tracker/with-parameters.js +6 -2
- package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/esm/index.js +20 -31
- 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 +25 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -31
- 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 +145 -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} +81 -12
- package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
- package/src/adapter/converters/sampler-parameters.ts +184 -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 +55 -124
- package/src/adapter/device-helpers/device-limits.ts +6 -3
- 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 +407 -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 +121 -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 +282 -0
- package/src/adapter/resources/webgl-render-pass.ts +24 -0
- package/src/adapter/resources/webgl-render-pipeline.ts +425 -0
- package/src/adapter/resources/webgl-sampler.ts +56 -0
- package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +19 -24
- package/src/adapter/resources/webgl-texture.ts +1036 -0
- package/src/adapter/webgl-canvas-context.ts +74 -0
- package/src/adapter/webgl-device.ts +293 -278
- package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +38 -37
- package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +76 -84
- package/src/{webgl-utils → classic}/typed-array-utils.ts +5 -1
- package/src/context/context/context-state.ts +4 -2
- package/src/context/context/{create-context.ts → create-browser-context.ts} +41 -6
- package/src/context/context/create-headless-context.ts +48 -0
- package/src/context/context/device-pixels.ts +24 -13
- 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 +21 -13
- 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 -5
- package/src/context/polyfill/polyfill-table.ts +1 -1
- package/src/context/state-tracker/deep-array-equal.ts +1 -1
- package/src/context/state-tracker/track-context-state.ts +34 -26
- package/src/context/state-tracker/with-parameters.ts +7 -2
- package/src/index.ts +42 -102
- package/src/init.ts +2 -46
- package/src/types/webgl.ts +284 -0
- package/dist/_deprecated/context-api.d.ts +0 -85
- package/dist/_deprecated/context-api.d.ts.map +0 -1
- package/dist/_deprecated/context-api.js +0 -76
- package/dist/_deprecated/context-api.js.map +0 -1
- package/dist/_deprecated/features.d.ts +0 -27
- package/dist/_deprecated/features.d.ts.map +0 -1
- package/dist/_deprecated/features.js +0 -111
- package/dist/_deprecated/features.js.map +0 -1
- 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/create-context.d.ts.map +0 -1
- package/dist/context/context/create-context.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/_deprecated/context-api.js +0 -116
- package/dist/es5/_deprecated/context-api.js.map +0 -1
- package/dist/es5/_deprecated/features.js +0 -118
- package/dist/es5/_deprecated/features.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/create-context.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/_deprecated/context-api.js +0 -76
- package/dist/esm/_deprecated/context-api.js.map +0 -1
- package/dist/esm/_deprecated/features.js +0 -111
- package/dist/esm/_deprecated/features.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/create-context.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/_deprecated/context-api.ts +0 -146
- package/src/_deprecated/features.ts +0 -159
- 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,37 +0,0 @@
|
|
|
1
|
-
declare type TextureFormat = {
|
|
2
|
-
dataFormat: number;
|
|
3
|
-
types: number[];
|
|
4
|
-
gl2?: boolean;
|
|
5
|
-
gl1?: boolean;
|
|
6
|
-
compressed?: boolean;
|
|
7
|
-
};
|
|
8
|
-
export declare const TEXTURE_FORMATS: Record<string, TextureFormat>;
|
|
9
|
-
export declare const DATA_FORMAT_CHANNELS: {
|
|
10
|
-
6403: number;
|
|
11
|
-
36244: number;
|
|
12
|
-
33319: number;
|
|
13
|
-
33320: number;
|
|
14
|
-
6407: number;
|
|
15
|
-
36248: number;
|
|
16
|
-
6408: number;
|
|
17
|
-
36249: number;
|
|
18
|
-
6402: number;
|
|
19
|
-
34041: number;
|
|
20
|
-
6406: number;
|
|
21
|
-
6409: number;
|
|
22
|
-
6410: number;
|
|
23
|
-
};
|
|
24
|
-
export declare const TYPE_SIZES: {
|
|
25
|
-
5126: number;
|
|
26
|
-
5125: number;
|
|
27
|
-
5124: number;
|
|
28
|
-
5123: number;
|
|
29
|
-
5122: number;
|
|
30
|
-
5131: number;
|
|
31
|
-
5120: number;
|
|
32
|
-
5121: number;
|
|
33
|
-
};
|
|
34
|
-
export declare function isFormatSupported(gl: any, format: any): any;
|
|
35
|
-
export declare function isLinearFilteringSupported(gl: any, format: any): any;
|
|
36
|
-
export {};
|
|
37
|
-
//# sourceMappingURL=texture-formats.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"texture-formats.d.ts","sourceRoot":"","sources":["../../src/classes/texture-formats.ts"],"names":[],"mappings":"AAUA,aAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAA;AAGD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAiGzD,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;CAchC,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;CAStB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,KAAA,EAAE,MAAM,KAAA,OAW3C;AAED,wBAAgB,0BAA0B,CAAC,EAAE,KAAA,EAAE,MAAM,KAAA,OAYpD"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import GL from '@luma.gl/constants';
|
|
2
|
-
import { isWebGL2 } from '../context/context/webgl-checks';
|
|
3
|
-
export const TEXTURE_FORMATS = {
|
|
4
|
-
[GL.RGB]: {
|
|
5
|
-
dataFormat: GL.RGB,
|
|
6
|
-
types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]
|
|
7
|
-
},
|
|
8
|
-
[GL.RGBA]: {
|
|
9
|
-
dataFormat: GL.RGBA,
|
|
10
|
-
types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]
|
|
11
|
-
},
|
|
12
|
-
[GL.ALPHA]: {
|
|
13
|
-
dataFormat: GL.ALPHA,
|
|
14
|
-
types: [GL.UNSIGNED_BYTE]
|
|
15
|
-
},
|
|
16
|
-
[GL.LUMINANCE]: {
|
|
17
|
-
dataFormat: GL.LUMINANCE,
|
|
18
|
-
types: [GL.UNSIGNED_BYTE]
|
|
19
|
-
},
|
|
20
|
-
[GL.LUMINANCE_ALPHA]: {
|
|
21
|
-
dataFormat: GL.LUMINANCE_ALPHA,
|
|
22
|
-
types: [GL.UNSIGNED_BYTE]
|
|
23
|
-
},
|
|
24
|
-
[GL.R32F]: {
|
|
25
|
-
dataFormat: GL.RED,
|
|
26
|
-
types: [GL.FLOAT],
|
|
27
|
-
gl2: true
|
|
28
|
-
},
|
|
29
|
-
[GL.RG32F]: {
|
|
30
|
-
dataFormat: GL.RG,
|
|
31
|
-
types: [GL.FLOAT],
|
|
32
|
-
gl2: true
|
|
33
|
-
},
|
|
34
|
-
[GL.RGB32F]: {
|
|
35
|
-
dataFormat: GL.RGB,
|
|
36
|
-
types: [GL.FLOAT],
|
|
37
|
-
gl2: true
|
|
38
|
-
},
|
|
39
|
-
[GL.RGBA32F]: {
|
|
40
|
-
dataFormat: GL.RGBA,
|
|
41
|
-
types: [GL.FLOAT],
|
|
42
|
-
gl2: true
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
export const DATA_FORMAT_CHANNELS = {
|
|
46
|
-
[GL.RED]: 1,
|
|
47
|
-
[GL.RED_INTEGER]: 1,
|
|
48
|
-
[GL.RG]: 2,
|
|
49
|
-
[GL.RG_INTEGER]: 2,
|
|
50
|
-
[GL.RGB]: 3,
|
|
51
|
-
[GL.RGB_INTEGER]: 3,
|
|
52
|
-
[GL.RGBA]: 4,
|
|
53
|
-
[GL.RGBA_INTEGER]: 4,
|
|
54
|
-
[GL.DEPTH_COMPONENT]: 1,
|
|
55
|
-
[GL.DEPTH_STENCIL]: 1,
|
|
56
|
-
[GL.ALPHA]: 1,
|
|
57
|
-
[GL.LUMINANCE]: 1,
|
|
58
|
-
[GL.LUMINANCE_ALPHA]: 2
|
|
59
|
-
};
|
|
60
|
-
export const TYPE_SIZES = {
|
|
61
|
-
[GL.FLOAT]: 4,
|
|
62
|
-
[GL.UNSIGNED_INT]: 4,
|
|
63
|
-
[GL.INT]: 4,
|
|
64
|
-
[GL.UNSIGNED_SHORT]: 2,
|
|
65
|
-
[GL.SHORT]: 2,
|
|
66
|
-
[GL.HALF_FLOAT]: 2,
|
|
67
|
-
[GL.BYTE]: 1,
|
|
68
|
-
[GL.UNSIGNED_BYTE]: 1
|
|
69
|
-
};
|
|
70
|
-
export function isFormatSupported(gl, format) {
|
|
71
|
-
const info = TEXTURE_FORMATS[format];
|
|
72
|
-
|
|
73
|
-
if (!info) {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (info.gl1 === undefined && info.gl2 === undefined) {
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;
|
|
82
|
-
return typeof value === 'string' ? gl.getExtension(value) : value;
|
|
83
|
-
}
|
|
84
|
-
export function isLinearFilteringSupported(gl, format) {
|
|
85
|
-
const info = TEXTURE_FORMATS[format];
|
|
86
|
-
|
|
87
|
-
switch (info && info.types[0]) {
|
|
88
|
-
case GL.FLOAT:
|
|
89
|
-
return gl.getExtension('OES_texture_float_linear');
|
|
90
|
-
|
|
91
|
-
case GL.HALF_FLOAT:
|
|
92
|
-
return gl.getExtension('OES_texture_half_float_linear');
|
|
93
|
-
|
|
94
|
-
default:
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=texture-formats.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/classes/texture-formats.ts"],"names":["GL","isWebGL2","TEXTURE_FORMATS","RGB","dataFormat","types","UNSIGNED_BYTE","UNSIGNED_SHORT_5_6_5","RGBA","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","ALPHA","LUMINANCE","LUMINANCE_ALPHA","R32F","RED","FLOAT","gl2","RG32F","RG","RGB32F","RGBA32F","DATA_FORMAT_CHANNELS","RED_INTEGER","RG_INTEGER","RGB_INTEGER","RGBA_INTEGER","DEPTH_COMPONENT","DEPTH_STENCIL","TYPE_SIZES","UNSIGNED_INT","INT","UNSIGNED_SHORT","SHORT","HALF_FLOAT","BYTE","isFormatSupported","gl","format","info","gl1","undefined","value","getExtension","isLinearFilteringSupported"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/context/webgl-checks';\n\n// const S3TC = 'WEBGL_compressed_texture_s3tc';\n// const PVRTC = 'WEBGL_compressed_texture_pvrtc';\n// const ES3 = 'WEBGL_compressed_texture_es3';\n// const ETC1 = 'WEBGL_compressed_texture_etc1';\n// const SRGB = 'EXT_sRGB';\n// const DEPTH = 'WEBGL_depth_texture';\n\ntype TextureFormat = {\n dataFormat: number;\n types: number[];\n gl2?: boolean;\n gl1?: boolean;\n compressed?: boolean;\n}\n\n// Legal combinations for internalFormat, format and type\nexport const TEXTURE_FORMATS: Record<string, TextureFormat> = {\n // Unsized texture format - more performance\n [GL.RGB]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n // TODO: format: GL.RGBA type: GL.FLOAT is supported in WebGL1 when 'OES_texure_float' is suported\n // we need to update this table structure to specify extensions (gl1: 'OES_texure_float', gl2: false) for each type.\n [GL.RGBA]: {\n dataFormat: GL.RGBA,\n types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]\n },\n [GL.ALPHA]: {dataFormat: GL.ALPHA, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE]: {dataFormat: GL.LUMINANCE, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE_ALPHA]: {dataFormat: GL.LUMINANCE_ALPHA, types: [GL.UNSIGNED_BYTE]},\n\n // 32 bit floats\n [GL.R32F]: {dataFormat: GL.RED, types: [GL.FLOAT], gl2: true},\n [GL.RG32F]: {dataFormat: GL.RG, types: [GL.FLOAT], gl2: true},\n [GL.RGB32F]: {dataFormat: GL.RGB, types: [GL.FLOAT], gl2: true},\n [GL.RGBA32F]: {dataFormat: GL.RGBA, types: [GL.FLOAT], gl2: true}\n\n // [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1: DEPTH},\n // [GL.DEPTH_STENCIL]: {gl1: DEPTH},\n\n // Sized texture format - more performance\n // R\n // [GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RG\n // [GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGB\n // [GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n // [GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_half_float'},\n // [GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_float'},\n // [GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGBA\n // [GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n // [GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n // [GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n\n // Compressed formats\n\n // WEBGL_compressed_texture_s3tc\n\n // [GL.COMPRESSED_RGB_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT3_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT5_EXT]: {compressed: true, gl1: S3TC},\n\n // WEBGL_compressed_texture_es3\n\n // [GL.COMPRESSED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_SIGNED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_SIGNED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_RGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_RGBA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RBG\n // [GL.COMPRESSED_SRGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n /* WebGL2 guaranteed availability compressed formats?\n COMPRESSED_R11_EAC RED\n COMPRESSED_SIGNED_R11_EAC RED\n COMPRESSED_RG11_EAC RG\n COMPRESSED_SIGNED_RG11_EAC RG\n COMPRESSED_RGB8_ETC2 RGB\n COMPRESSED_SRGB8_ETC2 RGB\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_RGBA8_ETC2_EAC RGBA\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n */\n\n // WEBGL_compressed_texture_pvrtc\n\n // [GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n\n // WEBGL_compressed_texture_etc1\n\n // [GL.COMPRESSED_RGB_ETC1_WEBGL]: {compressed: true, gl1: ETC1},\n\n // WEBGL_compressed_texture_atc\n\n // [GL.COMPRESSED_RGB_ATC_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL]: {compressed: true, gl1: ETC1}\n};\n\nexport const DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\nexport const TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\nexport function isFormatSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n if (info.gl1 === undefined && info.gl2 === undefined) {\n // No info - always supported\n return true;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n return typeof value === 'string' ? gl.getExtension(value) : value;\n}\n\nexport function isLinearFilteringSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n switch (info && info.types[0]) {\n // Both WebGL1 and WebGL2?\n case GL.FLOAT:\n return gl.getExtension('OES_texture_float_linear');\n // Not in WebGL2?\n case GL.HALF_FLOAT:\n return gl.getExtension('OES_texture_half_float_linear');\n default:\n return true;\n }\n}\n"],"file":"texture-formats.js"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { Device } from '@luma.gl/api';
|
|
2
|
-
import { Texture, TextureProps } from '@luma.gl/api';
|
|
3
|
-
import GL from '@luma.gl/constants';
|
|
4
|
-
import WebGLDevice from '../adapter/webgl-device';
|
|
5
|
-
export type { TextureProps };
|
|
6
|
-
export declare type TextureSupportOptions = {
|
|
7
|
-
format?: any;
|
|
8
|
-
linearFiltering?: any;
|
|
9
|
-
};
|
|
10
|
-
export default class WEBGLTexture extends Texture {
|
|
11
|
-
readonly MAX_ATTRIBUTES: number;
|
|
12
|
-
readonly device: WebGLDevice;
|
|
13
|
-
readonly gl: WebGLRenderingContext;
|
|
14
|
-
readonly gl2: WebGL2RenderingContext | null;
|
|
15
|
-
readonly handle: WebGLTexture;
|
|
16
|
-
data: any;
|
|
17
|
-
width: number;
|
|
18
|
-
height: number;
|
|
19
|
-
depth: number;
|
|
20
|
-
format: any;
|
|
21
|
-
type: any;
|
|
22
|
-
dataFormat: any;
|
|
23
|
-
border: any;
|
|
24
|
-
mipmaps: boolean;
|
|
25
|
-
target: GL;
|
|
26
|
-
textureUnit: number;
|
|
27
|
-
loaded: boolean;
|
|
28
|
-
_video: any;
|
|
29
|
-
static isSupported(device: Device | WebGLRenderingContext, options?: TextureSupportOptions): boolean;
|
|
30
|
-
constructor(device: Device | WebGLRenderingContext, props: TextureProps);
|
|
31
|
-
destroy(): void;
|
|
32
|
-
toString(): string;
|
|
33
|
-
initialize(props?: TextureProps): this;
|
|
34
|
-
update(): this;
|
|
35
|
-
resize({ height, width, mipmaps }: {
|
|
36
|
-
height: any;
|
|
37
|
-
width: any;
|
|
38
|
-
mipmaps?: boolean;
|
|
39
|
-
}): this;
|
|
40
|
-
generateMipmap(params?: {}): this;
|
|
41
|
-
setImageData(options: any): this;
|
|
42
|
-
/**
|
|
43
|
-
* Redefines an area of an existing texture
|
|
44
|
-
* Note: does not allocate storage
|
|
45
|
-
*/
|
|
46
|
-
setSubImageData({ target, pixels, data, x, y, width, height, level, format, type, dataFormat, compressed, offset, border, parameters }: {
|
|
47
|
-
target?: GL;
|
|
48
|
-
pixels?: any;
|
|
49
|
-
data?: any;
|
|
50
|
-
x?: number;
|
|
51
|
-
y?: number;
|
|
52
|
-
width?: number;
|
|
53
|
-
height?: number;
|
|
54
|
-
level?: number;
|
|
55
|
-
format?: any;
|
|
56
|
-
type?: any;
|
|
57
|
-
dataFormat?: any;
|
|
58
|
-
compressed?: boolean;
|
|
59
|
-
offset?: number;
|
|
60
|
-
border?: any;
|
|
61
|
-
parameters?: {};
|
|
62
|
-
}): void;
|
|
63
|
-
/**
|
|
64
|
-
* Defines a two-dimensional texture image or cube-map texture image with
|
|
65
|
-
* pixels from the current framebuffer (rather than from client memory).
|
|
66
|
-
* (gl.copyTexImage2D wrapper)
|
|
67
|
-
*
|
|
68
|
-
* Note that binding a texture into a Framebuffer's color buffer and
|
|
69
|
-
* rendering can be faster.
|
|
70
|
-
*/
|
|
71
|
-
copyFramebuffer(opts?: {}): any;
|
|
72
|
-
getActiveUnit(): number;
|
|
73
|
-
bind(textureUnit?: number): number;
|
|
74
|
-
unbind(textureUnit?: number): number;
|
|
75
|
-
_getDataType({ data, compressed }: {
|
|
76
|
-
data: any;
|
|
77
|
-
compressed?: boolean;
|
|
78
|
-
}): {
|
|
79
|
-
data: any;
|
|
80
|
-
dataType: string;
|
|
81
|
-
};
|
|
82
|
-
_deduceParameters(opts: any): {
|
|
83
|
-
dataFormat: any;
|
|
84
|
-
type: any;
|
|
85
|
-
compressed: any;
|
|
86
|
-
width: any;
|
|
87
|
-
height: any;
|
|
88
|
-
format: any;
|
|
89
|
-
data: any;
|
|
90
|
-
};
|
|
91
|
-
_deduceImageSize(data: any, width: any, height: any): {
|
|
92
|
-
width: number;
|
|
93
|
-
height: number;
|
|
94
|
-
};
|
|
95
|
-
/**
|
|
96
|
-
* Query a Resource parameter
|
|
97
|
-
*
|
|
98
|
-
* @param name
|
|
99
|
-
* @return param
|
|
100
|
-
*/
|
|
101
|
-
getParameter(pname: number, props?: {}): any;
|
|
102
|
-
getParameters(options?: {
|
|
103
|
-
parameters?: any;
|
|
104
|
-
keys?: any;
|
|
105
|
-
}): {};
|
|
106
|
-
/**
|
|
107
|
-
* Update a Resource setting
|
|
108
|
-
*
|
|
109
|
-
* @todo - cache parameter to avoid issuing WebGL calls?
|
|
110
|
-
*
|
|
111
|
-
* @param {string} pname - parameter (GL constant, value or key)
|
|
112
|
-
* @param {GLint|GLfloat|GLenum} value
|
|
113
|
-
* @return {Resource} returns self to enable chaining
|
|
114
|
-
*/
|
|
115
|
-
setParameter(pname: any, value: any): this;
|
|
116
|
-
setParameters(parameters: any): this;
|
|
117
|
-
_getParameter(pname: number, props?: any): any;
|
|
118
|
-
_setParameter(pname: number, param: number): this;
|
|
119
|
-
_isNPOT(): boolean;
|
|
120
|
-
_updateForNPOT(parameters: any): void;
|
|
121
|
-
_getNPOTParam(pname: number, param: number): number;
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=texture.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../../src/classes/texture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/classes/texture.ts"],"names":["log","assert","uid","isPowerOfTwo","Texture","GL","isWebGL2","assertWebGL2Context","withParameters","getKey","getKeyValue","WebGLDevice","Buffer","TEXTURE_FORMATS","DATA_FORMAT_CHANNELS","TYPE_SIZES","isFormatSupported","isLinearFilteringSupported","NPOT_MIN_FILTERS","LINEAR","NEAREST","WEBGLTexture","isSupported","device","options","webglDevice","attach","format","linearFiltering","supported","gl","constructor","props","undefined","id","handle","target","textureUnit","loaded","width","height","depth","type","dataFormat","border","mipmaps","gl2","createTexture","destroy","deleteTexture","removeStats","trackDeallocatedMemory","toString","initialize","data","Promise","then","resolvedImageData","Object","assign","pixels","isVideo","HTMLVideoElement","readyState","HAVE_METADATA","_video","addEventListener","RGBA","recreate","parameters","pixelStore","compressed","_deduceParameters","Number","isFinite","activeTexture","TEXTURE0","bindTexture","_isNPOT","warn","_updateForNPOT","setImageData","generateMipmap","setParameters","video","lastTime","HAVE_CURRENT_DATA","currentTime","update","setSubImageData","resize","params","level","offset","dataType","_getDataType","texImage2D","bindBuffer","PIXEL_UNPACK_BUFFER","levelIndex","levelData","entries","compressedTexImage2D","byteLength","trackAllocatedMemory","channels","channelSize","x","y","ndarray","shape","compressedTexSubImage2D","texSubImage2D","ArrayBuffer","isView","WebGLBuffer","copyFramebuffer","opts","error","getActiveUnit","getParameter","ACTIVE_TEXTURE","bind","unbind","textureFormat","types","_deduceImageSize","size","ImageData","HTMLImageElement","naturalWidth","naturalHeight","HTMLCanvasElement","ImageBitmap","videoWidth","videoHeight","pname","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","getParameters","keys","values","parameterKeys","key","setParameter","value","Error","_setParameter","TEXTURE_WIDTH","TEXTURE_HEIGHT","getTexParameter","param","_getNPOTParam","TEXTURE_MIN_LOD","TEXTURE_MAX_LOD","texParameterf","texParameteri","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","indexOf"],"mappings":"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","sourcesContent":["import {Device, log, assert, uid, isPowerOfTwo} from '@luma.gl/api';\nimport {Texture, TextureProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context} from '../context/context/webgl-checks';\nimport {withParameters} from '../context/state-tracker/with-parameters';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport WebGLDevice from '../adapter/webgl-device';\nimport Buffer from './webgl-buffer';\nimport {\n TEXTURE_FORMATS,\n DATA_FORMAT_CHANNELS,\n TYPE_SIZES,\n isFormatSupported,\n isLinearFilteringSupported\n} from './texture-formats';\n\nexport type {TextureProps};\n\nexport type TextureSupportOptions = {\n format?: any;\n linearFiltering?: any;\n};\n\n// Supported min filters for NPOT texture.\nconst NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];\n\n// Polyfill\nexport default class WEBGLTexture extends Texture {\n readonly MAX_ATTRIBUTES: number;\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext | null;\n readonly handle: WebGLTexture;\n\n data;\n\n width: number;\n height: number;\n depth: number;\n\n format = undefined;\n type = undefined;\n dataFormat = undefined;\n border = undefined;\n mipmaps: boolean = undefined;\n\n target: GL;\n textureUnit: number = undefined;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n loaded = false;\n _video;\n\n static isSupported(\n device: Device | WebGLRenderingContext,\n options?: TextureSupportOptions\n ): boolean {\n const webglDevice = WebGLDevice.attach(device);\n const {format, linearFiltering} = options;\n let supported = true;\n if (format) {\n supported = supported && isFormatSupported(webglDevice.gl, format);\n supported = supported && (!linearFiltering || isLinearFilteringSupported(webglDevice.gl, format));\n }\n return supported;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n constructor(device: Device | WebGLRenderingContext, props: TextureProps) {\n super(WebGLDevice.attach(device), props);\n\n const {\n id = uid('texture'),\n handle,\n target\n // , magFilter, minFilter, wrapS, wrapT\n } = props;\n\n this.target = target;\n this.textureUnit = undefined;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n this.loaded = false;\n\n this.width = undefined;\n this.height = undefined;\n this.depth = undefined;\n this.format = undefined;\n this.type = undefined;\n this.dataFormat = undefined;\n this.border = undefined;\n this.textureUnit = undefined;\n this.mipmaps = undefined;\n\n this.device = WebGLDevice.attach(device);\n this.gl = this.device.gl;\n this.gl2 = this.device.gl2;\n this.handle = this.props.handle || this.gl.createTexture();\n }\n\n destroy(): void {\n if (this.handle) {\n this.gl.deleteTexture(this.handle);\n this.removeStats();\n this.trackDeallocatedMemory('Texture');\n // @ts-expect-error\n this.handle = null;\n }\n }\n\n toString(): string {\n return `Texture(${this.id},${this.width}x${this.height})`;\n }\n\n // eslint-disable-next-line max-statements\n initialize(props: TextureProps = {}): this {\n let data = props.data;\n\n if (data instanceof Promise) {\n data.then((resolvedImageData) =>\n this.initialize(\n Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })\n )\n );\n return this;\n }\n const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n // @ts-expect-error\n if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n this._video = null; // Declare member before the object is sealed\n data.addEventListener('loadeddata', () => this.initialize(props));\n return this;\n }\n\n const {\n pixels = null,\n format = GL.RGBA,\n border = 0,\n recreate = false,\n parameters = {},\n pixelStore = {},\n textureUnit = undefined\n } = props;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n // TODO - This looks backwards? Commenting out for now until we decide\n // which prop to use\n // log.deprecated('data', 'pixels')();\n data = pixels;\n }\n\n let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;\n const {depth = 0} = props;\n\n // Deduce width and height\n ({width, height, compressed, dataFormat, type} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n // Store opts for accessors\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.border = border;\n this.textureUnit = textureUnit;\n\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n\n if (mipmaps && this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n mipmaps = false;\n\n this._updateForNPOT(parameters);\n }\n\n this.mipmaps = mipmaps;\n\n this.setImageData({\n data,\n width,\n height,\n depth,\n format,\n type,\n dataFormat,\n border,\n mipmaps,\n parameters: pixelStore,\n compressed\n });\n\n if (mipmaps) {\n this.generateMipmap();\n }\n\n // Set texture sampler parameters\n this.setParameters(parameters);\n\n // TODO - Store data to enable auto recreate on context loss\n if (recreate) {\n this.data = data;\n }\n if (isVideo) {\n this._video = {\n video: data,\n parameters,\n // @ts-expect-error\n lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n };\n }\n\n return this;\n }\n\n update(): this {\n if (this._video) {\n const {video, parameters, lastTime} = this._video;\n // @ts-expect-error\n if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n return;\n }\n this.setSubImageData({\n data: video,\n parameters\n });\n if (this.mipmaps) {\n this.generateMipmap();\n }\n this._video.lastTime = video.currentTime;\n }\n }\n\n // If size has changed, reinitializes with current format\n // note clears image and mipmaps\n resize({height, width, mipmaps = false}): this {\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n border: this.border,\n mipmaps\n });\n }\n return this;\n }\n\n // Call to regenerate mipmaps after modifying texture(s)\n generateMipmap(params = {}): this {\n if (this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n return this;\n }\n\n this.mipmaps = true;\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, params, () => {\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n /*\n * Allocates storage\n * @param {*} pixels -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} width -\n * @param {GLint} height -\n * @param {GLint} mipMapLevel -\n * @param {GLenum} format - format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n // eslint-disable-next-line max-statements, complexity\n setImageData(options) {\n this.trackDeallocatedMemory('Texture');\n\n const {\n target = this.target,\n pixels = null,\n level = 0,\n format = this.format,\n border = this.border,\n offset = 0,\n parameters = {}\n } = options;\n\n let {\n data = null,\n type = this.type,\n width = this.width,\n height = this.height,\n dataFormat = this.dataFormat,\n compressed = false\n } = options;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n const {gl} = this;\n gl.bindTexture(this.target, this.handle);\n\n let dataType = null;\n ({data, dataType} = this._getDataType({data, compressed}));\n\n let gl2;\n\n withParameters(this.gl, parameters, () => {\n switch (dataType) {\n case 'null':\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n break;\n case 'typed-array':\n // Looks like this assert is not necessary, as offset is ignored under WebGL1\n // assert((offset === 0 || isWebGL2(gl)), 'offset supported in WebGL2 only');\n gl.texImage2D(\n target,\n level,\n format,\n width,\n height,\n border,\n dataFormat,\n type,\n data,\n // @ts-expect-error\n offset\n );\n break;\n case 'buffer':\n // WebGL2 enables creating textures directly from a WebGL buffer\n gl2 = assertWebGL2Context(gl);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);\n gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n break;\n case 'browser-object':\n if (isWebGL2(gl)) {\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n } else {\n gl.texImage2D(target, level, format, dataFormat, type, data);\n }\n break;\n case 'compressed':\n for (const [levelIndex, levelData] of data.entries()) {\n gl.compressedTexImage2D(\n target,\n levelIndex,\n levelData.format,\n levelData.width,\n levelData.height,\n border,\n levelData.data\n );\n }\n\n break;\n default:\n assert(false, 'Unknown image data type');\n }\n });\n\n if (data && data.byteLength) {\n this.trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this.trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n }\n\n this.loaded = true;\n\n return this;\n }\n \n /**\n * Redefines an area of an existing texture\n * Note: does not allocate storage\n */\n /*\n * Redefines an area of an existing texture\n * @param {*} pixels, data -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} x - xOffset from where texture to be updated\n * @param {GLint} y - yOffset from where texture to be updated\n * @param {GLint} width - width of the sub image to be updated\n * @param {GLint} height - height of the sub image to be updated\n * @param {GLint} level - mip level to be updated\n * @param {GLenum} format - internal format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer or ArrayBufferView\n * @param {GLenum} dataFormat - format of image data.\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n setSubImageData({\n target = this.target,\n pixels = null,\n data = null,\n x = 0,\n y = 0,\n width = this.width,\n height = this.height,\n level = 0,\n format = this.format,\n type = this.type,\n dataFormat = this.dataFormat,\n compressed = false,\n offset = 0,\n border = this.border,\n parameters = {}\n }) {\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n assert(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n // Support ndarrays\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n\n // Support buffers\n if (data instanceof Buffer) {\n data = data.handle;\n }\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n // TODO - x,y parameters\n if (compressed) {\n this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n } else if (data === null) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n } else if (ArrayBuffer.isView(data)) {\n // const gl2 = assertWebGL2Context(this.gl);\n // @ts-expect-error last offset parameter is ignored under WebGL1\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n } else if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {\n // WebGL2 allows us to create texture directly from a WebGL buffer\n const gl2 = assertWebGL2Context(this.gl);\n // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n } else if (isWebGL2(this.gl)) {\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n const gl2 = assertWebGL2Context(this.gl);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else {\n this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n }\n });\n\n this.gl.bindTexture(this.target, null);\n }\n \n /**\n * Defines a two-dimensional texture image or cube-map texture image with\n * pixels from the current framebuffer (rather than from client memory).\n * (gl.copyTexImage2D wrapper)\n *\n * Note that binding a texture into a Framebuffer's color buffer and\n * rendering can be faster.\n */\n copyFramebuffer(opts = {}) {\n log.error(\n 'Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n getActiveUnit(): number {\n return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n\n bind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n\n unbind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n\n // PRIVATE METHODS\n\n _getDataType({data, compressed = false}) {\n if (compressed) {\n return {data, dataType: 'compressed'};\n }\n if (data === null) {\n return {data, dataType: 'null'};\n }\n if (ArrayBuffer.isView(data)) {\n return {data, dataType: 'typed-array'};\n }\n if (data instanceof Buffer) {\n return {data: data.handle, dataType: 'buffer'};\n }\n if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {\n return {data, dataType: 'buffer'};\n }\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n return {data, dataType: 'browser-object'};\n }\n\n /* Copied from texture-2d.js\n // WebGL2\n setPixels(opts = {}) {\n const {\n buffer,\n width = null,\n height = null,\n mipmapLevel = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n\n // This signature of texImage2D uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, buffer.target);\n // And as always, we must also bind the texture itself\n this.bind();\n\n gl.texImage2D(gl.TEXTURE_2D,\n mipmapLevel, format, width, height, border, format, type, buffer.target);\n\n this.unbind();\n gl.bindBuffer(GL.GL.PIXEL_UNPACK_BUFFER, null);\n return this;\n }\n\n setImageDataFromCompressedBuffer(opts) {\n const {\n buffer,\n // offset = 0,\n width = null,\n height = null,\n mipmapLevel = 0,\n internalFormat = GL.RGBA,\n // format = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n gl.compressedTexImage2D(this.target,\n mipmapLevel, internalFormat, width, height, border, buffer);\n // gl.compressedTexSubImage2D(target,\n // level, xoffset, yoffset, width, height, format, ArrayBufferView? pixels);\n return this;\n }\n\n copySubImage(opts) {\n const {\n // pixels,\n // offset = 0,\n // x,\n // y,\n // width,\n // height,\n // mipmapLevel = 0,\n // internalFormat = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n // border = 0\n } = opts;\n\n // if (pixels instanceof ArrayBufferView) {\n // gl.texSubImage2D(target, level, x, y, width, height, format, type, pixels);\n // }\n // gl.texSubImage2D(target, level, x, y, format, type, ? pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLImageElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLCanvasElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLVideoElement pixels);\n // // Additional signature in a WebGL 2 context:\n // gl.texSubImage2D(target, level, x, y, format, type, GLintptr offset);\n }\n */\n\n // HELPER METHODS\n\n _deduceParameters(opts) {\n const {format, data} = opts;\n let {width, height, dataFormat, type, compressed} = opts;\n\n // Deduce format and type from format\n const textureFormat = TEXTURE_FORMATS[format];\n dataFormat = dataFormat || (textureFormat && textureFormat.dataFormat);\n type = type || (textureFormat && textureFormat.types[0]);\n\n // Deduce compression from format\n compressed = compressed || (textureFormat && textureFormat.compressed);\n\n ({width, height} = this._deduceImageSize(data, width, height));\n\n return {dataFormat, type, compressed, width, height, format, data};\n }\n\n // eslint-disable-next-line complexity\n _deduceImageSize(data, width, height): {width: number, height: number} {\n let size;\n\n if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n size = {width: data.naturalWidth, height: data.naturalHeight};\n } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n size = {width: data.width, height: data.height};\n } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n size = {width: data.videoWidth, height: data.videoHeight};\n } else if (!data) {\n size = {width: width >= 0 ? width : 1, height: height >= 0 ? height : 1};\n } else {\n size = {width, height};\n }\n\n assert(size, 'Could not deduced texture size');\n assert(\n width === undefined || size.width === width,\n 'Deduced texture width does not match supplied width'\n );\n assert(\n height === undefined || size.height === height,\n 'Deduced texture height does not match supplied height'\n );\n\n return size;\n }\n\n // RESOURCE METHODS\n\n /**\n * Query a Resource parameter\n *\n * @param name\n * @return param\n */\n getParameter(pname: number, props = {}): any {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n \n // @ts-expect-error\n const parameters = this.constructor.PARAMETERS || {};\n \n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n \n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n \n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n \n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, props);\n }\n \n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options: {parameters?, keys?} = {}) {\n const {parameters, keys} = options;\n \n // Get parameter definitions for this Resource\n // @ts-expect-error\n const PARAMETERS = this.constructor.PARAMETERS || {};\n \n const isWebgl2 = isWebGL2(this.gl);\n \n const values = {};\n \n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n \n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n \n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n \n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n \n return values;\n }\n \n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n \n // @ts-expect-error\n const parameters = this.constructor.PARAMETERS || {};\n \n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n \n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n \n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n \n // Handle string keys\n if (parameter.type === 'GLenum') {\n // @ts-expect-error\n value = getKeyValue(value);\n }\n }\n \n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n \n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n \n _getParameter(pname: number, props?): any {\n switch (pname) {\n case GL.TEXTURE_WIDTH:\n return this.width;\n case GL.TEXTURE_HEIGHT:\n return this.height;\n default:\n this.gl.bindTexture(this.target, this.handle);\n const value = this.gl.getTexParameter(this.target, pname);\n this.gl.bindTexture(this.target, null);\n return value;\n }\n }\n\n _setParameter(pname: number, param: number): this {\n this.gl.bindTexture(this.target, this.handle);\n\n // NOTE: Apply NPOT workaround\n param = this._getNPOTParam(pname, param);\n\n // Apparently there are some integer/float conversion rules that made\n // the WebGL committe expose two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n switch (pname) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.gl.texParameterf(this.target, pname, param);\n break;\n\n case GL.TEXTURE_WIDTH:\n case GL.TEXTURE_HEIGHT:\n assert(false);\n break;\n\n default:\n this.gl.texParameteri(this.target, pname, param);\n break;\n }\n\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n _isNPOT(): boolean {\n if (isWebGL2(this.gl)) {\n // NPOT restriction is only for WebGL1\n return false;\n }\n // Width and height not available, consider it is not NPOT texture\n if (!this.width || !this.height) {\n return false;\n }\n return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);\n }\n\n // Update default settings which are not supported by NPOT textures.\n _updateForNPOT(parameters) {\n if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n }\n if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n }\n if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_T to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n }\n }\n\n _getNPOTParam(pname: number, param: number): number {\n if (this._isNPOT()) {\n switch (pname) {\n case GL.TEXTURE_MIN_FILTER:\n if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n param = GL.LINEAR;\n }\n break;\n case GL.TEXTURE_WRAP_S:\n case GL.TEXTURE_WRAP_T:\n if (param !== GL.CLAMP_TO_EDGE) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)();\n param = GL.CLAMP_TO_EDGE;\n }\n break;\n default:\n break;\n }\n }\n return param;\n }\n}\n"],"file":"texture.js"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import GL from '@luma.gl/constants';
|
|
2
|
-
import WebGLResource, { ResourceProps } from './webgl-resource';
|
|
3
|
-
export declare type TransformFeedbackProps = ResourceProps & {
|
|
4
|
-
[key: string]: any;
|
|
5
|
-
};
|
|
6
|
-
export default class TransformFeedback extends WebGLResource<TransformFeedbackProps> {
|
|
7
|
-
buffers: {};
|
|
8
|
-
unused: {};
|
|
9
|
-
configuration: any;
|
|
10
|
-
bindOnUse: boolean;
|
|
11
|
-
static isSupported(gl: WebGLRenderingContext): boolean;
|
|
12
|
-
constructor(gl: WebGLRenderingContext, props?: TransformFeedbackProps);
|
|
13
|
-
initialize(props?: TransformFeedbackProps): this;
|
|
14
|
-
setProps(props: TransformFeedbackProps): void;
|
|
15
|
-
setBuffers(buffers?: {}): this;
|
|
16
|
-
setBuffer(locationOrName: any, bufferOrParams: any): this;
|
|
17
|
-
begin(primitiveMode?: GL): this;
|
|
18
|
-
end(): this;
|
|
19
|
-
_getBufferParams(bufferOrParams: any): {
|
|
20
|
-
buffer: any;
|
|
21
|
-
byteOffset: any;
|
|
22
|
-
byteSize: any;
|
|
23
|
-
};
|
|
24
|
-
_getVaryingInfo(locationOrName: any): any;
|
|
25
|
-
_getVaryingIndex(locationOrName: any): any;
|
|
26
|
-
_bindBuffers(): void;
|
|
27
|
-
_unbindBuffers(): void;
|
|
28
|
-
_bindBuffer(index: any, buffer: any, byteOffset?: number, byteSize?: any): this;
|
|
29
|
-
_createHandle(): any;
|
|
30
|
-
_deleteHandle(): void;
|
|
31
|
-
_bindHandle(handle: any): void;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=transform-feedback.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transform-feedback.d.ts","sourceRoot":"","sources":["../../src/classes/transform-feedback.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGpC,OAAO,aAAa,EAAE,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAG9D,oBAAY,sBAAsB,GAAG,aAAa,GAAG;IACnD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa,CAAC,sBAAsB,CAAC;IAClF,OAAO,KAAM;IACb,MAAM,KAAM;IACZ,aAAa,MAAQ;IAGrB,SAAS,UAAQ;IAEjB,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,qBAAqB,GAAG,OAAO;gBAI1C,EAAE,EAAE,qBAAqB,EAAE,KAAK,GAAE,sBAA2B;IASzE,UAAU,CAAC,KAAK,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAehD,QAAQ,CAAC,KAAK,EAAE,sBAAsB;IAetC,UAAU,CAAC,OAAO,KAAK;IASvB,SAAS,CAAC,cAAc,KAAA,EAAE,cAAc,KAAA;IAqBxC,KAAK,CAAC,aAAa,KAAY;IAS/B,GAAG;IAWH,gBAAgB,CAAC,cAAc,KAAA;;;;;IAmB/B,eAAe,CAAC,cAAc,KAAA;IAI9B,gBAAgB,CAAC,cAAc,KAAA;IAU/B,YAAY;IASZ,cAAc;IAQd,WAAW,CAAC,KAAK,KAAA,EAAE,MAAM,KAAA,EAAE,UAAU,SAAI,EAAE,QAAQ,CAAC,KAAA;IAcpD,aAAa;IAKb,aAAa;IAKb,WAAW,CAAC,MAAM,KAAA;CAInB"}
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import { log, isObjectEmpty } from '@luma.gl/api';
|
|
3
|
-
import GL from '@luma.gl/constants';
|
|
4
|
-
import WebGLDevice from '../adapter/webgl-device';
|
|
5
|
-
import { isWebGL2, assertWebGL2Context } from '../context/context/webgl-checks';
|
|
6
|
-
import WebGLResource from './webgl-resource';
|
|
7
|
-
import Buffer from './webgl-buffer';
|
|
8
|
-
export default class TransformFeedback extends WebGLResource {
|
|
9
|
-
static isSupported(gl) {
|
|
10
|
-
return isWebGL2(gl);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
constructor(gl, props = {}) {
|
|
14
|
-
super(WebGLDevice.attach(gl), props, {});
|
|
15
|
-
|
|
16
|
-
_defineProperty(this, "buffers", {});
|
|
17
|
-
|
|
18
|
-
_defineProperty(this, "unused", {});
|
|
19
|
-
|
|
20
|
-
_defineProperty(this, "configuration", null);
|
|
21
|
-
|
|
22
|
-
_defineProperty(this, "bindOnUse", true);
|
|
23
|
-
|
|
24
|
-
assertWebGL2Context(gl);
|
|
25
|
-
this.initialize(props);
|
|
26
|
-
this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);
|
|
27
|
-
Object.seal(this);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
initialize(props) {
|
|
31
|
-
this.buffers = {};
|
|
32
|
-
this.unused = {};
|
|
33
|
-
this.configuration = null;
|
|
34
|
-
this.bindOnUse = true;
|
|
35
|
-
|
|
36
|
-
if (!isObjectEmpty(this.buffers)) {
|
|
37
|
-
this.bind(() => this._unbindBuffers());
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
this.setProps(props);
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
setProps(props) {
|
|
45
|
-
if ('program' in props) {
|
|
46
|
-
this.configuration = props.program && props.program.configuration;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if ('configuration' in props) {
|
|
50
|
-
this.configuration = props.configuration;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if ('bindOnUse' in props) {
|
|
54
|
-
props = props.bindOnUse;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if ('buffers' in props) {
|
|
58
|
-
this.setBuffers(props.buffers);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
setBuffers(buffers = {}) {
|
|
63
|
-
this.bind(() => {
|
|
64
|
-
for (const bufferName in buffers) {
|
|
65
|
-
this.setBuffer(bufferName, buffers[bufferName]);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
return this;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
setBuffer(locationOrName, bufferOrParams) {
|
|
72
|
-
const location = this._getVaryingIndex(locationOrName);
|
|
73
|
-
|
|
74
|
-
const {
|
|
75
|
-
buffer,
|
|
76
|
-
byteSize,
|
|
77
|
-
byteOffset
|
|
78
|
-
} = this._getBufferParams(bufferOrParams);
|
|
79
|
-
|
|
80
|
-
if (location < 0) {
|
|
81
|
-
this.unused[locationOrName] = buffer;
|
|
82
|
-
log.warn("".concat(this.id, " unused varying buffer ").concat(locationOrName))();
|
|
83
|
-
return this;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
this.buffers[location] = bufferOrParams;
|
|
87
|
-
|
|
88
|
-
if (!this.bindOnUse) {
|
|
89
|
-
this._bindBuffer(location, buffer, byteOffset, byteSize);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return this;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
begin(primitiveMode = GL.POINTS) {
|
|
96
|
-
this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);
|
|
97
|
-
|
|
98
|
-
this._bindBuffers();
|
|
99
|
-
|
|
100
|
-
this.gl.beginTransformFeedback(primitiveMode);
|
|
101
|
-
return this;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
end() {
|
|
105
|
-
this.gl.endTransformFeedback();
|
|
106
|
-
|
|
107
|
-
this._unbindBuffers();
|
|
108
|
-
|
|
109
|
-
this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);
|
|
110
|
-
return this;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
_getBufferParams(bufferOrParams) {
|
|
114
|
-
let byteOffset;
|
|
115
|
-
let byteSize;
|
|
116
|
-
let buffer;
|
|
117
|
-
|
|
118
|
-
if (bufferOrParams instanceof Buffer === false) {
|
|
119
|
-
buffer = bufferOrParams.buffer;
|
|
120
|
-
byteSize = bufferOrParams.byteSize;
|
|
121
|
-
byteOffset = bufferOrParams.byteOffset;
|
|
122
|
-
} else {
|
|
123
|
-
buffer = bufferOrParams;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (byteOffset !== undefined || byteSize !== undefined) {
|
|
127
|
-
byteOffset = byteOffset || 0;
|
|
128
|
-
byteSize = byteSize || buffer.byteLength - byteOffset;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
buffer,
|
|
133
|
-
byteOffset,
|
|
134
|
-
byteSize
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
_getVaryingInfo(locationOrName) {
|
|
139
|
-
return this.configuration && this.configuration.getVaryingInfo(locationOrName);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
_getVaryingIndex(locationOrName) {
|
|
143
|
-
if (this.configuration) {
|
|
144
|
-
return this.configuration.getVaryingInfo(locationOrName).location;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
const location = Number(locationOrName);
|
|
148
|
-
return Number.isFinite(location) ? location : -1;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
_bindBuffers() {
|
|
152
|
-
if (this.bindOnUse) {
|
|
153
|
-
for (const bufferIndex in this.buffers) {
|
|
154
|
-
const {
|
|
155
|
-
buffer,
|
|
156
|
-
byteSize,
|
|
157
|
-
byteOffset
|
|
158
|
-
} = this._getBufferParams(this.buffers[bufferIndex]);
|
|
159
|
-
|
|
160
|
-
this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
_unbindBuffers() {
|
|
166
|
-
if (this.bindOnUse) {
|
|
167
|
-
for (const bufferIndex in this.buffers) {
|
|
168
|
-
this._bindBuffer(bufferIndex, null);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
_bindBuffer(index, buffer, byteOffset = 0, byteSize) {
|
|
174
|
-
const handle = buffer && buffer.handle;
|
|
175
|
-
|
|
176
|
-
if (!handle || byteSize === undefined) {
|
|
177
|
-
this.gl.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);
|
|
178
|
-
} else {
|
|
179
|
-
this.gl.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteSize);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
return this;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
_createHandle() {
|
|
186
|
-
return this.gl.createTransformFeedback();
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
_deleteHandle() {
|
|
190
|
-
this.gl.deleteTransformFeedback(this.handle);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
_bindHandle(handle) {
|
|
194
|
-
this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
//# sourceMappingURL=transform-feedback.js.map
|