@luma.gl/webgl 8.6.0-alpha.5 → 9.0.0-alpha.11
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 +52 -0
- package/dist/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +77 -83
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +253 -115
- 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 +0 -5
- package/dist/context/context/context-state.d.ts.map +1 -1
- package/dist/context/context/context-state.js +1 -6
- 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/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 +94 -0
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/es5/adapter/webgl-device.js +325 -131
- 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 -6
- 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/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 +63 -305
- 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 +52 -0
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/esm/adapter/webgl-device.js +253 -115
- 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 -6
- 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/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 -32
- 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 -47
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -32
- 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 +72 -0
- package/src/adapter/webgl-device.ts +312 -285
- 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 -12
- 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/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 -105
- 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/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -98
- package/dist/context/context/device-pixels.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/device-pixels.js +0 -115
- package/dist/es5/context/context/device-pixels.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/device-pixels.js +0 -98
- package/dist/esm/context/context/device-pixels.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/device-pixels.ts +0 -147
- 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/texture-3d.ts"],"names":["Texture3D","device","props","target","GL","TEXTURE_3D","gl2","Object","assign","depth","unpackFlipY","initialize","seal","level","dataFormat","RGBA","width","height","border","format","type","UNSIGNED_BYTE","offset","data","parameters","trackDeallocatedMemory","gl","bindTexture","handle","ArrayBuffer","isView","texImage3D","Buffer","bindBuffer","PIXEL_UNPACK_BUFFER","byteLength","trackAllocatedMemory","channels","DATA_FORMAT_CHANNELS","channelSize","TYPE_SIZES","loaded","webglDevice","WebGLDevice","attach","isWebGL2","Texture","Symbol","toStringTag"],"mappings":"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","sourcesContent":["import {Device} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../adapter/webgl-device';\nimport {assertWebGL2Context} from '../context/context/webgl-checks';\nimport {withParameters} from '../context/state-tracker/with-parameters';\nimport Texture, {TextureProps} from './texture';\nimport {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';\nimport Buffer from './webgl-buffer';\n\nexport type Texture3DProps = TextureProps & {\n};\n\ntype SetImageDataOptions = {\n level?: number;\n dataFormat?: any;\n width: any;\n height: any;\n depth?: number;\n border?: number;\n format: any;\n type?: any;\n offset?: number;\n data: any;\n parameters?: {};\n};\n\n/**\n * Textures that have 3 dimensions: width, height, and depth.\n * They are accessed by 3-dimensional texture coordinates.\n */\nexport default class Texture3D extends Texture {\n static isSupported(device: Device | WebGLRenderingContext): boolean {\n try {\n const webglDevice = WebGLDevice.attach(device);\n return webglDevice.isWebGL2;\n } catch {\n return false;\n }\n }\n\n constructor(device: Device | WebGL2RenderingContext, props: Texture3DProps = {}) {\n super(device, {...props, target: GL.TEXTURE_3D});\n assertWebGL2Context(this.gl2);\n props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});\n this.initialize(props);\n Object.seal(this);\n }\n\n get [Symbol.toStringTag](): string {\n return 'Texture3D';\n }\n\n /** Image 3D copies from Typed Array or WebGLBuffer */\n setImageData({\n level = 0,\n dataFormat = GL.RGBA,\n width,\n height,\n depth = 1,\n border = 0,\n format,\n type = GL.UNSIGNED_BYTE,\n offset = 0,\n data,\n parameters = {}\n }: SetImageDataOptions) {\n this.trackDeallocatedMemory('Texture');\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n if (ArrayBuffer.isView(data)) {\n // @ts-expect-error\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n data\n );\n }\n\n if (data instanceof Buffer) {\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);\n // @ts-expect-error\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n offset\n );\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(\n this.width * this.height * this.depth * channels * channelSize,\n 'Texture'\n );\n }\n\n this.loaded = true;\n\n return this;\n }\n}\n"],"file":"texture-3d.js"}
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
-
|
|
28
|
-
var _api = require("@luma.gl/api");
|
|
29
|
-
|
|
30
|
-
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
31
|
-
|
|
32
|
-
var _texture = _interopRequireDefault(require("./texture"));
|
|
33
|
-
|
|
34
|
-
var _Symbol$toStringTag;
|
|
35
|
-
|
|
36
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
37
|
-
|
|
38
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
39
|
-
|
|
40
|
-
_Symbol$toStringTag = Symbol.toStringTag;
|
|
41
|
-
|
|
42
|
-
var TextureCube = function (_Texture, _Symbol$toStringTag2) {
|
|
43
|
-
(0, _inherits2.default)(TextureCube, _Texture);
|
|
44
|
-
|
|
45
|
-
var _super = _createSuper(TextureCube);
|
|
46
|
-
|
|
47
|
-
function TextureCube(device, props) {
|
|
48
|
-
var _this;
|
|
49
|
-
|
|
50
|
-
(0, _classCallCheck2.default)(this, TextureCube);
|
|
51
|
-
_this = _super.call(this, device, Object.assign({}, props, {
|
|
52
|
-
target: _constants.default.TEXTURE_CUBE_MAP
|
|
53
|
-
}));
|
|
54
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "props", void 0);
|
|
55
|
-
|
|
56
|
-
_this.initialize(props);
|
|
57
|
-
|
|
58
|
-
Object.seal((0, _assertThisInitialized2.default)(_this));
|
|
59
|
-
return _this;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
(0, _createClass2.default)(TextureCube, [{
|
|
63
|
-
key: _Symbol$toStringTag2,
|
|
64
|
-
get: function get() {
|
|
65
|
-
return 'TextureCube';
|
|
66
|
-
}
|
|
67
|
-
}, {
|
|
68
|
-
key: "initialize",
|
|
69
|
-
value: function initialize(props) {
|
|
70
|
-
var _this2 = this;
|
|
71
|
-
|
|
72
|
-
var _props$mipmaps = props.mipmaps,
|
|
73
|
-
mipmaps = _props$mipmaps === void 0 ? true : _props$mipmaps,
|
|
74
|
-
_props$parameters = props.parameters,
|
|
75
|
-
parameters = _props$parameters === void 0 ? {} : _props$parameters;
|
|
76
|
-
this.props = props;
|
|
77
|
-
this.setCubeMapImageData(props).then(function () {
|
|
78
|
-
_this2.loaded = true;
|
|
79
|
-
|
|
80
|
-
if (mipmaps) {
|
|
81
|
-
_this2.generateMipmap(props);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
_this2.setParameters(parameters);
|
|
85
|
-
});
|
|
86
|
-
return this;
|
|
87
|
-
}
|
|
88
|
-
}, {
|
|
89
|
-
key: "subImage",
|
|
90
|
-
value: function subImage(options) {
|
|
91
|
-
var face = options.face,
|
|
92
|
-
data = options.data,
|
|
93
|
-
_options$x = options.x,
|
|
94
|
-
x = _options$x === void 0 ? 0 : _options$x,
|
|
95
|
-
_options$y = options.y,
|
|
96
|
-
y = _options$y === void 0 ? 0 : _options$y,
|
|
97
|
-
_options$mipmapLevel = options.mipmapLevel,
|
|
98
|
-
mipmapLevel = _options$mipmapLevel === void 0 ? 0 : _options$mipmapLevel;
|
|
99
|
-
return this._subImage({
|
|
100
|
-
target: face,
|
|
101
|
-
data: data,
|
|
102
|
-
x: x,
|
|
103
|
-
y: y,
|
|
104
|
-
mipmapLevel: mipmapLevel
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}, {
|
|
108
|
-
key: "setCubeMapImageData",
|
|
109
|
-
value: function () {
|
|
110
|
-
var _setCubeMapImageData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
|
|
111
|
-
var _this3 = this;
|
|
112
|
-
|
|
113
|
-
var gl, width, height, pixels, data, _options$border, border, _options$format, format, _options$type, type, imageDataMap, resolvedFaces;
|
|
114
|
-
|
|
115
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
116
|
-
while (1) {
|
|
117
|
-
switch (_context.prev = _context.next) {
|
|
118
|
-
case 0:
|
|
119
|
-
gl = this.gl;
|
|
120
|
-
width = options.width, height = options.height, pixels = options.pixels, data = options.data, _options$border = options.border, border = _options$border === void 0 ? 0 : _options$border, _options$format = options.format, format = _options$format === void 0 ? _constants.default.RGBA : _options$format, _options$type = options.type, type = _options$type === void 0 ? _constants.default.UNSIGNED_BYTE : _options$type;
|
|
121
|
-
imageDataMap = pixels || data;
|
|
122
|
-
_context.next = 5;
|
|
123
|
-
return Promise.all(TextureCube.FACES.map(function (face) {
|
|
124
|
-
var facePixels = imageDataMap[face];
|
|
125
|
-
return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);
|
|
126
|
-
}));
|
|
127
|
-
|
|
128
|
-
case 5:
|
|
129
|
-
resolvedFaces = _context.sent;
|
|
130
|
-
this.bind();
|
|
131
|
-
TextureCube.FACES.forEach(function (face, index) {
|
|
132
|
-
if (resolvedFaces[index].length > 1 && _this3.props.mipmaps !== false) {
|
|
133
|
-
_api.log.warn("".concat(_this3.id, " has mipmap and multiple LODs."))();
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
resolvedFaces[index].forEach(function (image, lodLevel) {
|
|
137
|
-
if (width && height) {
|
|
138
|
-
gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);
|
|
139
|
-
} else {
|
|
140
|
-
gl.texImage2D(face, lodLevel, format, format, type, image);
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
this.unbind();
|
|
145
|
-
|
|
146
|
-
case 9:
|
|
147
|
-
case "end":
|
|
148
|
-
return _context.stop();
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}, _callee, this);
|
|
152
|
-
}));
|
|
153
|
-
|
|
154
|
-
function setCubeMapImageData(_x) {
|
|
155
|
-
return _setCubeMapImageData.apply(this, arguments);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
return setCubeMapImageData;
|
|
159
|
-
}()
|
|
160
|
-
}, {
|
|
161
|
-
key: "setImageDataForFace",
|
|
162
|
-
value: function setImageDataForFace(options) {
|
|
163
|
-
var _this4 = this;
|
|
164
|
-
|
|
165
|
-
var face = options.face,
|
|
166
|
-
width = options.width,
|
|
167
|
-
height = options.height,
|
|
168
|
-
pixels = options.pixels,
|
|
169
|
-
data = options.data,
|
|
170
|
-
_options$border2 = options.border,
|
|
171
|
-
border = _options$border2 === void 0 ? 0 : _options$border2,
|
|
172
|
-
_options$format2 = options.format,
|
|
173
|
-
format = _options$format2 === void 0 ? _constants.default.RGBA : _options$format2,
|
|
174
|
-
_options$type2 = options.type,
|
|
175
|
-
type = _options$type2 === void 0 ? _constants.default.UNSIGNED_BYTE : _options$type2;
|
|
176
|
-
var gl = this.gl;
|
|
177
|
-
var imageData = pixels || data;
|
|
178
|
-
this.bind();
|
|
179
|
-
|
|
180
|
-
if (imageData instanceof Promise) {
|
|
181
|
-
imageData.then(function (resolvedImageData) {
|
|
182
|
-
return _this4.setImageDataForFace(Object.assign({}, options, {
|
|
183
|
-
face: face,
|
|
184
|
-
data: resolvedImageData,
|
|
185
|
-
pixels: resolvedImageData
|
|
186
|
-
}));
|
|
187
|
-
});
|
|
188
|
-
} else if (this.width || this.height) {
|
|
189
|
-
gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);
|
|
190
|
-
} else {
|
|
191
|
-
gl.texImage2D(face, 0, format, format, type, imageData);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
return this;
|
|
195
|
-
}
|
|
196
|
-
}]);
|
|
197
|
-
return TextureCube;
|
|
198
|
-
}(_texture.default, _Symbol$toStringTag);
|
|
199
|
-
|
|
200
|
-
exports.default = TextureCube;
|
|
201
|
-
(0, _defineProperty2.default)(TextureCube, "FACES", [_constants.default.TEXTURE_CUBE_MAP_POSITIVE_X, _constants.default.TEXTURE_CUBE_MAP_NEGATIVE_X, _constants.default.TEXTURE_CUBE_MAP_POSITIVE_Y, _constants.default.TEXTURE_CUBE_MAP_NEGATIVE_Y, _constants.default.TEXTURE_CUBE_MAP_POSITIVE_Z, _constants.default.TEXTURE_CUBE_MAP_NEGATIVE_Z]);
|
|
202
|
-
//# sourceMappingURL=texture-cube.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/texture-cube.ts"],"names":["Symbol","toStringTag","TextureCube","device","props","Object","assign","target","GL","TEXTURE_CUBE_MAP","initialize","seal","mipmaps","parameters","setCubeMapImageData","then","loaded","generateMipmap","setParameters","options","face","data","x","y","mipmapLevel","_subImage","gl","width","height","pixels","border","format","RGBA","type","UNSIGNED_BYTE","imageDataMap","Promise","all","FACES","map","facePixels","Array","isArray","resolvedFaces","bind","forEach","index","length","log","warn","id","image","lodLevel","texImage2D","unbind","imageData","resolvedImageData","setImageDataForFace","Texture","TEXTURE_CUBE_MAP_POSITIVE_X","TEXTURE_CUBE_MAP_NEGATIVE_X","TEXTURE_CUBE_MAP_POSITIVE_Y","TEXTURE_CUBE_MAP_NEGATIVE_Y","TEXTURE_CUBE_MAP_POSITIVE_Z","TEXTURE_CUBE_MAP_NEGATIVE_Z"],"mappings":"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","sourcesContent":["import {Device, log} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../adapter/webgl-device';\nimport {assertWebGLContext} from '../context/context/webgl-checks';\nimport Texture, {TextureProps} from './texture';\n\nexport type TextureCubeProps = TextureProps & {\n};\n\nexport default class TextureCube extends Texture {\n static FACES: number[] = [\n GL.TEXTURE_CUBE_MAP_POSITIVE_X,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_X,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Y,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Z,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Z\n ];\n\n props;\n\n constructor(device: Device | WebGLRenderingContext, props?: TextureCubeProps) {\n super(device, Object.assign({}, props, {target: GL.TEXTURE_CUBE_MAP}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n get [Symbol.toStringTag](): string {\n return 'TextureCube';\n }\n\n initialize(props?: TextureCubeProps): this {\n const {mipmaps = true, parameters = {}} = props;\n\n // Store props for accessors\n this.props = props;\n\n // @ts-expect-error\n this.setCubeMapImageData(props).then(() => {\n this.loaded = true;\n\n // TODO - should genMipmap() be called on the cubemap or on the faces?\n // TODO - without generateMipmap() cube textures do not work at all!!! Why?\n if (mipmaps) {\n this.generateMipmap(props);\n }\n\n this.setParameters(parameters);\n });\n return this;\n }\n\n subImage(options: {face: any; data: any; x?: number; y?: number; mipmapLevel?: number}): any {\n const {face, data, x = 0, y = 0, mipmapLevel = 0} = options;\n // @ts-expect-error TODO - is this a bug?\n return this._subImage({target: face, data, x, y, mipmapLevel});\n }\n\n /* eslint-disable max-statements, max-len */\n async setCubeMapImageData(options: {\n width: any;\n height: any;\n pixels: any;\n data: any;\n border?: number;\n format?: any;\n type?: any;\n }): Promise<void>{\n const {gl} = this;\n\n const {\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n } = options;\n const imageDataMap = pixels || data;\n\n // pixel data (imageDataMap) is an Object from Face to Image or Promise.\n // For example:\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : Image-or-Promise,\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : Image-or-Promise,\n // ... }\n // To provide multiple level-of-details (LODs) this can be Face to Array\n // of Image or Promise, like this\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // ... }\n\n const resolvedFaces = await Promise.all(\n TextureCube.FACES.map((face) => {\n const facePixels = imageDataMap[face];\n return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);\n })\n );\n\n this.bind();\n\n TextureCube.FACES.forEach((face, index) => {\n if (resolvedFaces[index].length > 1 && this.props.mipmaps !== false) {\n // If the user provides multiple LODs, then automatic mipmap\n // generation generateMipmap() should be disabled to avoid overwritting them.\n log.warn(`${this.id} has mipmap and multiple LODs.`)();\n }\n resolvedFaces[index].forEach((image, lodLevel) => {\n // TODO: adjust width & height for LOD!\n if (width && height) {\n gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);\n } else {\n gl.texImage2D(face, lodLevel, format, format, type, image);\n }\n });\n });\n\n this.unbind();\n }\n\n // TODO: update this method to accept LODs\n setImageDataForFace(options) {\n const {\n face,\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n // generateMipmap = false // TODO\n } = options;\n\n const {gl} = this;\n\n const imageData = pixels || data;\n\n this.bind();\n if (imageData instanceof Promise) {\n imageData.then((resolvedImageData) =>\n this.setImageDataForFace(\n Object.assign({}, options, {\n face,\n data: resolvedImageData,\n pixels: resolvedImageData\n })\n )\n );\n } else if (this.width || this.height) {\n gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);\n } else {\n gl.texImage2D(face, 0, format, format, type, imageData);\n }\n\n return this;\n }\n}\n"],"file":"texture-cube.js"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.isFormatSupported = isFormatSupported;
|
|
9
|
-
exports.isLinearFilteringSupported = isLinearFilteringSupported;
|
|
10
|
-
exports.TYPE_SIZES = exports.DATA_FORMAT_CHANNELS = exports.TEXTURE_FORMATS = void 0;
|
|
11
|
-
|
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
|
-
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
15
|
-
|
|
16
|
-
var _webglChecks = require("../context/context/webgl-checks");
|
|
17
|
-
|
|
18
|
-
var _TEXTURE_FORMATS, _DATA_FORMAT_CHANNELS, _TYPE_SIZES;
|
|
19
|
-
|
|
20
|
-
var TEXTURE_FORMATS = (_TEXTURE_FORMATS = {}, (0, _defineProperty2.default)(_TEXTURE_FORMATS, _constants.default.RGB, {
|
|
21
|
-
dataFormat: _constants.default.RGB,
|
|
22
|
-
types: [_constants.default.UNSIGNED_BYTE, _constants.default.UNSIGNED_SHORT_5_6_5]
|
|
23
|
-
}), (0, _defineProperty2.default)(_TEXTURE_FORMATS, _constants.default.RGBA, {
|
|
24
|
-
dataFormat: _constants.default.RGBA,
|
|
25
|
-
types: [_constants.default.UNSIGNED_BYTE, _constants.default.UNSIGNED_SHORT_4_4_4_4, _constants.default.UNSIGNED_SHORT_5_5_5_1]
|
|
26
|
-
}), (0, _defineProperty2.default)(_TEXTURE_FORMATS, _constants.default.ALPHA, {
|
|
27
|
-
dataFormat: _constants.default.ALPHA,
|
|
28
|
-
types: [_constants.default.UNSIGNED_BYTE]
|
|
29
|
-
}), (0, _defineProperty2.default)(_TEXTURE_FORMATS, _constants.default.LUMINANCE, {
|
|
30
|
-
dataFormat: _constants.default.LUMINANCE,
|
|
31
|
-
types: [_constants.default.UNSIGNED_BYTE]
|
|
32
|
-
}), (0, _defineProperty2.default)(_TEXTURE_FORMATS, _constants.default.LUMINANCE_ALPHA, {
|
|
33
|
-
dataFormat: _constants.default.LUMINANCE_ALPHA,
|
|
34
|
-
types: [_constants.default.UNSIGNED_BYTE]
|
|
35
|
-
}), (0, _defineProperty2.default)(_TEXTURE_FORMATS, _constants.default.R32F, {
|
|
36
|
-
dataFormat: _constants.default.RED,
|
|
37
|
-
types: [_constants.default.FLOAT],
|
|
38
|
-
gl2: true
|
|
39
|
-
}), (0, _defineProperty2.default)(_TEXTURE_FORMATS, _constants.default.RG32F, {
|
|
40
|
-
dataFormat: _constants.default.RG,
|
|
41
|
-
types: [_constants.default.FLOAT],
|
|
42
|
-
gl2: true
|
|
43
|
-
}), (0, _defineProperty2.default)(_TEXTURE_FORMATS, _constants.default.RGB32F, {
|
|
44
|
-
dataFormat: _constants.default.RGB,
|
|
45
|
-
types: [_constants.default.FLOAT],
|
|
46
|
-
gl2: true
|
|
47
|
-
}), (0, _defineProperty2.default)(_TEXTURE_FORMATS, _constants.default.RGBA32F, {
|
|
48
|
-
dataFormat: _constants.default.RGBA,
|
|
49
|
-
types: [_constants.default.FLOAT],
|
|
50
|
-
gl2: true
|
|
51
|
-
}), _TEXTURE_FORMATS);
|
|
52
|
-
exports.TEXTURE_FORMATS = TEXTURE_FORMATS;
|
|
53
|
-
var DATA_FORMAT_CHANNELS = (_DATA_FORMAT_CHANNELS = {}, (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.RED, 1), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.RED_INTEGER, 1), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.RG, 2), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.RG_INTEGER, 2), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.RGB, 3), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.RGB_INTEGER, 3), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.RGBA, 4), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.RGBA_INTEGER, 4), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.DEPTH_COMPONENT, 1), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.DEPTH_STENCIL, 1), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.ALPHA, 1), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.LUMINANCE, 1), (0, _defineProperty2.default)(_DATA_FORMAT_CHANNELS, _constants.default.LUMINANCE_ALPHA, 2), _DATA_FORMAT_CHANNELS);
|
|
54
|
-
exports.DATA_FORMAT_CHANNELS = DATA_FORMAT_CHANNELS;
|
|
55
|
-
var TYPE_SIZES = (_TYPE_SIZES = {}, (0, _defineProperty2.default)(_TYPE_SIZES, _constants.default.FLOAT, 4), (0, _defineProperty2.default)(_TYPE_SIZES, _constants.default.UNSIGNED_INT, 4), (0, _defineProperty2.default)(_TYPE_SIZES, _constants.default.INT, 4), (0, _defineProperty2.default)(_TYPE_SIZES, _constants.default.UNSIGNED_SHORT, 2), (0, _defineProperty2.default)(_TYPE_SIZES, _constants.default.SHORT, 2), (0, _defineProperty2.default)(_TYPE_SIZES, _constants.default.HALF_FLOAT, 2), (0, _defineProperty2.default)(_TYPE_SIZES, _constants.default.BYTE, 1), (0, _defineProperty2.default)(_TYPE_SIZES, _constants.default.UNSIGNED_BYTE, 1), _TYPE_SIZES);
|
|
56
|
-
exports.TYPE_SIZES = TYPE_SIZES;
|
|
57
|
-
|
|
58
|
-
function isFormatSupported(gl, format) {
|
|
59
|
-
var info = TEXTURE_FORMATS[format];
|
|
60
|
-
|
|
61
|
-
if (!info) {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (info.gl1 === undefined && info.gl2 === undefined) {
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
var value = (0, _webglChecks.isWebGL2)(gl) ? info.gl2 || info.gl1 : info.gl1;
|
|
70
|
-
return typeof value === 'string' ? gl.getExtension(value) : value;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function isLinearFilteringSupported(gl, format) {
|
|
74
|
-
var info = TEXTURE_FORMATS[format];
|
|
75
|
-
|
|
76
|
-
switch (info && info.types[0]) {
|
|
77
|
-
case _constants.default.FLOAT:
|
|
78
|
-
return gl.getExtension('OES_texture_float_linear');
|
|
79
|
-
|
|
80
|
-
case _constants.default.HALF_FLOAT:
|
|
81
|
-
return gl.getExtension('OES_texture_half_float_linear');
|
|
82
|
-
|
|
83
|
-
default:
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=texture-formats.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/texture-formats.ts"],"names":["TEXTURE_FORMATS","GL","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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/texture.ts"],"names":["NPOT_MIN_FILTERS","GL","LINEAR","NEAREST","WEBGLTexture","device","props","WebGLDevice","attach","undefined","id","handle","target","textureUnit","loaded","width","height","depth","format","type","dataFormat","border","mipmaps","gl","gl2","createTexture","deleteTexture","removeStats","trackDeallocatedMemory","data","Promise","then","resolvedImageData","initialize","Object","assign","pixels","isVideo","HTMLVideoElement","readyState","HAVE_METADATA","_video","addEventListener","RGBA","recreate","parameters","pixelStore","compressed","_deduceParameters","Number","isFinite","activeTexture","TEXTURE0","bindTexture","_isNPOT","log","warn","_updateForNPOT","setImageData","generateMipmap","setParameters","video","lastTime","HAVE_CURRENT_DATA","currentTime","setSubImageData","params","options","level","offset","dataType","_getDataType","texImage2D","bindBuffer","PIXEL_UNPACK_BUFFER","entries","levelIndex","levelData","compressedTexImage2D","byteLength","trackAllocatedMemory","channels","DATA_FORMAT_CHANNELS","channelSize","TYPE_SIZES","x","y","ndarray","shape","Buffer","compressedTexSubImage2D","texSubImage2D","ArrayBuffer","isView","WebGLBuffer","opts","error","getParameter","ACTIVE_TEXTURE","textureFormat","TEXTURE_FORMATS","types","_deduceImageSize","size","ImageData","HTMLImageElement","naturalWidth","naturalHeight","HTMLCanvasElement","ImageBitmap","videoWidth","videoHeight","pname","constructor","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","keys","values","parameterKeys","key","value","Error","_setParameter","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","webglDevice","linearFiltering","supported","Texture"],"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"}
|