@luma.gl/webgl 9.0.0-beta.4 → 9.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +297 -155
- package/dist/adapter/converters/sampler-parameters.d.ts +0 -4
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +73 -67
- package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
- package/dist/adapter/converters/shader-formats.js +53 -46
- package/dist/adapter/converters/texture-formats.d.ts +13 -19
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +474 -879
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +53 -61
- package/dist/adapter/device-helpers/device-features.d.ts +2 -5
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +56 -87
- package/dist/adapter/device-helpers/device-limits.d.ts +2 -4
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +88 -83
- package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +79 -63
- package/dist/adapter/device-helpers/webgl-device-features.d.ts +19 -0
- package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-features.js +86 -0
- package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
- package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
- package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
- package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
- package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
- package/dist/adapter/helpers/decode-webgl-types.js +88 -76
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +261 -225
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
- package/dist/adapter/helpers/set-uniform.d.ts +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +68 -82
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
- package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +19 -12
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +86 -77
- package/dist/adapter/objects/webgl-resource.d.ts +3 -25
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +102 -146
- package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +161 -119
- package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +266 -168
- package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +33 -39
- package/dist/adapter/resources/webgl-external-texture.js +93 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -10
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +167 -137
- package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
- package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-query-set.js +136 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +124 -90
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +356 -221
- package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +43 -33
- package/dist/adapter/resources/webgl-shader.d.ts +12 -2
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +114 -47
- package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
- package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-texture-view.js +18 -0
- package/dist/adapter/resources/webgl-texture.d.ts +6 -9
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +615 -695
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
- package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.js +229 -157
- package/dist/adapter/webgl-canvas-context.d.ts +2 -2
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +58 -36
- package/dist/adapter/webgl-device.d.ts +34 -40
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +418 -363
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +132 -101
- package/dist/classic/clear.d.ts +2 -2
- package/dist/classic/clear.d.ts.map +1 -1
- package/dist/classic/clear.js +73 -72
- package/dist/classic/copy-and-blit.d.ts +1 -1
- package/dist/classic/copy-and-blit.d.ts.map +1 -1
- package/dist/classic/copy-and-blit.js +175 -175
- package/dist/classic/format-utils.d.ts +2 -2
- package/dist/classic/format-utils.d.ts.map +1 -1
- package/dist/classic/format-utils.js +39 -32
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +96 -81
- package/dist/context/context/context-data.d.ts +14 -0
- package/dist/context/context/context-data.d.ts.map +1 -0
- package/dist/context/context/context-data.js +33 -0
- package/dist/context/context/create-browser-context.d.ts +1 -6
- package/dist/context/context/create-browser-context.d.ts.map +1 -1
- package/dist/context/context/create-browser-context.js +62 -49
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +55 -50
- package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +104 -77
- package/dist/context/helpers/create-browser-context.d.ts +35 -0
- package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
- package/dist/context/helpers/create-browser-context.js +67 -0
- package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
- package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
- package/dist/context/helpers/webgl-context-data.js +21 -0
- package/dist/context/helpers/webgl-extensions.d.ts +4 -0
- package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
- package/dist/context/helpers/webgl-extensions.js +10 -0
- package/dist/context/parameters/unified-parameter-api.d.ts +3 -3
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +94 -44
- package/dist/context/parameters/webgl-parameter-tables.d.ts +120 -99
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +469 -404
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +19 -14
- package/dist/context/state-tracker/track-context-state.d.ts +4 -4
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +188 -123
- package/dist/context/state-tracker/with-parameters.d.ts +2 -2
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +43 -26
- package/dist/dist.dev.js +3135 -4142
- package/dist/index.cjs +1766 -2717
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +25 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -1
- package/dist.min.js +9 -42
- package/package.json +11 -15
- package/src/adapter/converters/device-parameters.ts +105 -17
- package/src/adapter/converters/sampler-parameters.ts +12 -20
- package/src/adapter/converters/shader-formats.ts +47 -22
- package/src/adapter/converters/texture-formats.ts +138 -185
- package/src/adapter/converters/vertex-formats.ts +3 -3
- package/src/adapter/device-helpers/webgl-device-features.ts +101 -0
- package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
- package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
- package/src/adapter/helpers/decode-webgl-types.ts +13 -7
- package/src/adapter/helpers/get-shader-layout.ts +21 -31
- package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
- package/src/adapter/helpers/set-uniform.ts +3 -4
- package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
- package/src/adapter/objects/constants-to-keys.ts +3 -2
- package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
- package/src/adapter/objects/webgl-resource.ts +7 -140
- package/src/adapter/resources/webgl-buffer.ts +10 -14
- package/src/adapter/resources/webgl-command-buffer.ts +24 -34
- package/src/adapter/resources/webgl-command-encoder.ts +14 -11
- package/src/adapter/resources/webgl-external-texture.ts +5 -5
- package/src/adapter/resources/webgl-framebuffer.ts +38 -34
- package/src/adapter/resources/webgl-query-set.ts +171 -0
- package/src/adapter/resources/webgl-render-pass.ts +24 -15
- package/src/adapter/resources/webgl-render-pipeline.ts +138 -70
- package/src/adapter/resources/webgl-sampler.ts +7 -10
- package/src/adapter/resources/webgl-shader.ts +65 -11
- package/src/adapter/resources/webgl-texture-view.ts +28 -0
- package/src/adapter/resources/webgl-texture.ts +38 -105
- package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
- package/src/adapter/resources/webgl-vertex-array.ts +20 -21
- package/src/adapter/webgl-canvas-context.ts +7 -11
- package/src/adapter/webgl-device.ts +106 -151
- package/src/classic/accessor.ts +5 -4
- package/src/classic/clear.ts +25 -20
- package/src/classic/copy-and-blit.ts +12 -6
- package/src/classic/format-utils.ts +2 -1
- package/src/classic/typed-array-utils.ts +3 -7
- package/src/context/debug/spector.ts +9 -6
- package/src/context/debug/webgl-developer-tools.ts +31 -20
- package/src/context/{context → helpers}/create-browser-context.ts +9 -33
- package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
- package/src/context/helpers/webgl-extensions.ts +17 -0
- package/src/context/parameters/unified-parameter-api.ts +5 -4
- package/src/context/parameters/webgl-parameter-tables.ts +118 -90
- package/src/context/state-tracker/deep-array-equal.ts +2 -1
- package/src/context/state-tracker/track-context-state.ts +29 -23
- package/src/context/state-tracker/with-parameters.ts +7 -2
- package/src/index.ts +4 -18
- package/src/types.ts +2 -1
- package/dist/adapter/converters/device-parameters.js.map +0 -1
- package/dist/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/adapter/converters/shader-formats.js.map +0 -1
- package/dist/adapter/converters/texture-formats.js.map +0 -1
- package/dist/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
- package/dist/adapter/device-helpers/is-old-ie.js +0 -9
- package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
- package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
- package/dist/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
- package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
- package/dist/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/adapter/webgl-device.js.map +0 -1
- package/dist/classic/accessor.js.map +0 -1
- package/dist/classic/clear.js.map +0 -1
- package/dist/classic/copy-and-blit.js.map +0 -1
- package/dist/classic/format-utils.js.map +0 -1
- package/dist/classic/typed-array-utils.js.map +0 -1
- package/dist/context/context/create-browser-context.js.map +0 -1
- package/dist/context/context/create-headless-context.d.ts +0 -9
- package/dist/context/context/create-headless-context.d.ts.map +0 -1
- package/dist/context/context/create-headless-context.js +0 -42
- package/dist/context/context/create-headless-context.js.map +0 -1
- package/dist/context/context/webgl-checks.d.ts +0 -13
- package/dist/context/context/webgl-checks.d.ts.map +0 -1
- package/dist/context/context/webgl-checks.js +0 -31
- package/dist/context/context/webgl-checks.js.map +0 -1
- package/dist/context/debug/spector.js.map +0 -1
- package/dist/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/context/polyfill/context-data.d.ts.map +0 -1
- package/dist/context/polyfill/context-data.js +0 -12
- package/dist/context/polyfill/context-data.js.map +0 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
- package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/context/polyfill/polyfill-context.d.ts +0 -5
- package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
- package/dist/context/polyfill/polyfill-context.js +0 -87
- package/dist/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/context/polyfill/polyfill-table.d.ts +0 -48
- package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
- package/dist/context/polyfill/polyfill-table.js +0 -137
- package/dist/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/src/adapter/device-helpers/device-features.ts +0 -161
- package/src/adapter/device-helpers/device-limits.ts +0 -155
- package/src/adapter/device-helpers/is-old-ie.ts +0 -14
- package/src/context/context/create-headless-context.ts +0 -51
- package/src/context/context/webgl-checks.ts +0 -51
- package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
- package/src/context/polyfill/polyfill-context.ts +0 -104
- package/src/context/polyfill/polyfill-table.ts +0 -167
- package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -365
|
@@ -1,192 +1,192 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { assert, Texture, Framebuffer } from '@luma.gl/core';
|
|
5
|
+
import { GL } from '@luma.gl/constants';
|
|
2
6
|
import { getGLTypeFromTypedArray, getTypedArrayFromGLType } from "./typed-array-utils.js";
|
|
3
7
|
import { glFormatToComponents, glTypeToBytes } from "./format-utils.js";
|
|
8
|
+
/**
|
|
9
|
+
* Copies data from a type or a Texture object into ArrayBuffer object.
|
|
10
|
+
* App can provide targetPixelArray or have it auto allocated by this method
|
|
11
|
+
* newly allocated by this method unless provided by app.
|
|
12
|
+
* @deprecated Use CommandEncoder.copyTextureToBuffer and Buffer.read
|
|
13
|
+
* @note Slow requires roundtrip to GPU
|
|
14
|
+
*
|
|
15
|
+
* @param source
|
|
16
|
+
* @param options
|
|
17
|
+
* @returns pixel array,
|
|
18
|
+
*/
|
|
4
19
|
export function readPixelsToArray(source, options) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
return target;
|
|
20
|
+
const { sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA, sourceAttachment = GL.COLOR_ATTACHMENT0 // TODO - support gl.readBuffer
|
|
21
|
+
} = options || {};
|
|
22
|
+
let { target = null,
|
|
23
|
+
// following parameters are auto deduced if not provided
|
|
24
|
+
sourceWidth, sourceHeight, sourceType } = options || {};
|
|
25
|
+
const { framebuffer, deleteFramebuffer } = getFramebuffer(source);
|
|
26
|
+
assert(framebuffer);
|
|
27
|
+
const { gl, handle } = framebuffer;
|
|
28
|
+
sourceWidth = sourceWidth || framebuffer.width;
|
|
29
|
+
sourceHeight = sourceHeight || framebuffer.height;
|
|
30
|
+
// TODO - Set and unset gl.readBuffer
|
|
31
|
+
// if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {
|
|
32
|
+
// sourceAttachment = GL.FRONT;
|
|
33
|
+
// }
|
|
34
|
+
const attachment = sourceAttachment - GL.COLOR_ATTACHMENT0;
|
|
35
|
+
// assert(attachments[sourceAttachment]);
|
|
36
|
+
// Deduce the type from color attachment if not provided.
|
|
37
|
+
sourceType =
|
|
38
|
+
sourceType ||
|
|
39
|
+
framebuffer.colorAttachments[attachment]?.texture?.type ||
|
|
40
|
+
GL.UNSIGNED_BYTE;
|
|
41
|
+
// Deduce type and allocated pixelArray if needed
|
|
42
|
+
target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);
|
|
43
|
+
// Pixel array available, if necessary, deduce type from it.
|
|
44
|
+
sourceType = sourceType || getGLTypeFromTypedArray(target);
|
|
45
|
+
const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
|
|
46
|
+
gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);
|
|
47
|
+
// @ts-expect-error
|
|
48
|
+
gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
49
|
+
if (deleteFramebuffer) {
|
|
50
|
+
framebuffer.destroy();
|
|
51
|
+
}
|
|
52
|
+
return target;
|
|
40
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Copies data from a Framebuffer or a Texture object into a Buffer object.
|
|
56
|
+
* NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.
|
|
57
|
+
* @deprecated Use CommandEncoder
|
|
58
|
+
* @param source
|
|
59
|
+
* @param options
|
|
60
|
+
*/
|
|
41
61
|
export function readPixelsToBuffer(source, options) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
sourceType
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
const { target, sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA, targetByteOffset = 0 } = options || {};
|
|
63
|
+
// following parameters are auto deduced if not provided
|
|
64
|
+
let { sourceWidth, sourceHeight, sourceType } = options || {};
|
|
65
|
+
const { framebuffer, deleteFramebuffer } = getFramebuffer(source);
|
|
66
|
+
assert(framebuffer);
|
|
67
|
+
sourceWidth = sourceWidth || framebuffer.width;
|
|
68
|
+
sourceHeight = sourceHeight || framebuffer.height;
|
|
69
|
+
// Asynchronous read (PIXEL_PACK_BUFFER) is WebGL2 only feature
|
|
70
|
+
const webglFramebuffer = framebuffer;
|
|
71
|
+
// deduce type if not available.
|
|
72
|
+
sourceType = sourceType || GL.UNSIGNED_BYTE;
|
|
73
|
+
let webglBufferTarget = target;
|
|
74
|
+
if (!webglBufferTarget) {
|
|
75
|
+
// Create new buffer with enough size
|
|
76
|
+
const components = glFormatToComponents(sourceFormat);
|
|
77
|
+
const byteCount = glTypeToBytes(sourceType);
|
|
78
|
+
const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;
|
|
79
|
+
webglBufferTarget = webglFramebuffer.device.createBuffer({ byteLength });
|
|
80
|
+
}
|
|
81
|
+
// TODO(donmccurdy): Do we have tests to confirm this is working?
|
|
82
|
+
const commandEncoder = source.device.createCommandEncoder();
|
|
83
|
+
commandEncoder.copyTextureToBuffer({
|
|
84
|
+
source: source,
|
|
85
|
+
width: sourceWidth,
|
|
86
|
+
height: sourceHeight,
|
|
87
|
+
origin: [sourceX, sourceY],
|
|
88
|
+
destination: webglBufferTarget,
|
|
89
|
+
byteOffset: targetByteOffset
|
|
70
90
|
});
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
height: sourceHeight,
|
|
77
|
-
origin: [sourceX, sourceY],
|
|
78
|
-
destination: webglBufferTarget,
|
|
79
|
-
byteOffset: targetByteOffset
|
|
80
|
-
});
|
|
81
|
-
commandEncoder.destroy();
|
|
82
|
-
if (deleteFramebuffer) {
|
|
83
|
-
framebuffer.destroy();
|
|
84
|
-
}
|
|
85
|
-
return webglBufferTarget;
|
|
91
|
+
commandEncoder.destroy();
|
|
92
|
+
if (deleteFramebuffer) {
|
|
93
|
+
framebuffer.destroy();
|
|
94
|
+
}
|
|
95
|
+
return webglBufferTarget;
|
|
86
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)
|
|
99
|
+
* @deprecated Use CommandEncoder
|
|
100
|
+
*/
|
|
101
|
+
// eslint-disable-next-line complexity, max-statements
|
|
87
102
|
export function copyToTexture(source, target, options) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
break;
|
|
136
|
-
case 35866:
|
|
137
|
-
case 32879:
|
|
138
|
-
device.assertWebGL2();
|
|
139
|
-
device.gl2.copyTexSubImage3D(textureTarget, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);
|
|
140
|
-
break;
|
|
141
|
-
default:
|
|
103
|
+
const { sourceX = 0, sourceY = 0,
|
|
104
|
+
// attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer
|
|
105
|
+
targetMipmaplevel = 0, targetInternalFormat = GL.RGBA } = options || {};
|
|
106
|
+
let { targetX, targetY, targetZ, width, // defaults to target width
|
|
107
|
+
height // defaults to target height
|
|
108
|
+
} = options || {};
|
|
109
|
+
const { framebuffer, deleteFramebuffer } = getFramebuffer(source);
|
|
110
|
+
assert(framebuffer);
|
|
111
|
+
const webglFramebuffer = framebuffer;
|
|
112
|
+
const { device, handle } = webglFramebuffer;
|
|
113
|
+
const isSubCopy = typeof targetX !== 'undefined' ||
|
|
114
|
+
typeof targetY !== 'undefined' ||
|
|
115
|
+
typeof targetZ !== 'undefined';
|
|
116
|
+
targetX = targetX || 0;
|
|
117
|
+
targetY = targetY || 0;
|
|
118
|
+
targetZ = targetZ || 0;
|
|
119
|
+
const prevHandle = device.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
|
|
120
|
+
// TODO - support gl.readBuffer (WebGL2 only)
|
|
121
|
+
// const prevBuffer = gl.readBuffer(attachment);
|
|
122
|
+
assert(target);
|
|
123
|
+
let texture = null;
|
|
124
|
+
let textureTarget;
|
|
125
|
+
if (target instanceof Texture) {
|
|
126
|
+
texture = target;
|
|
127
|
+
width = Number.isFinite(width) ? width : texture.width;
|
|
128
|
+
height = Number.isFinite(height) ? height : texture.height;
|
|
129
|
+
texture.bind(0);
|
|
130
|
+
textureTarget = texture.target;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
textureTarget = target;
|
|
134
|
+
}
|
|
135
|
+
if (!isSubCopy) {
|
|
136
|
+
device.gl.copyTexImage2D(textureTarget, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0 /* border must be 0 */);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
switch (textureTarget) {
|
|
140
|
+
case GL.TEXTURE_2D:
|
|
141
|
+
case GL.TEXTURE_CUBE_MAP:
|
|
142
|
+
device.gl.copyTexSubImage2D(textureTarget, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);
|
|
143
|
+
break;
|
|
144
|
+
case GL.TEXTURE_2D_ARRAY:
|
|
145
|
+
case GL.TEXTURE_3D:
|
|
146
|
+
device.gl.copyTexSubImage3D(textureTarget, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);
|
|
147
|
+
break;
|
|
148
|
+
default:
|
|
149
|
+
}
|
|
142
150
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
151
|
+
if (texture) {
|
|
152
|
+
texture.unbind();
|
|
153
|
+
}
|
|
154
|
+
// @ts-expect-error
|
|
155
|
+
device.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
|
|
156
|
+
if (deleteFramebuffer) {
|
|
157
|
+
framebuffer.destroy();
|
|
158
|
+
}
|
|
159
|
+
return texture;
|
|
152
160
|
}
|
|
153
161
|
function getFramebuffer(source) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
framebuffer: source,
|
|
162
|
-
deleteFramebuffer: false
|
|
163
|
-
};
|
|
162
|
+
if (!(source instanceof Framebuffer)) {
|
|
163
|
+
return { framebuffer: toFramebuffer(source), deleteFramebuffer: true };
|
|
164
|
+
}
|
|
165
|
+
return { framebuffer: source, deleteFramebuffer: false };
|
|
164
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Wraps a given texture into a framebuffer object, that can be further used
|
|
169
|
+
* to read data from the texture object.
|
|
170
|
+
*/
|
|
165
171
|
export function toFramebuffer(texture, props) {
|
|
166
|
-
|
|
167
|
-
device
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
width,
|
|
176
|
-
height,
|
|
177
|
-
colorAttachments: [texture]
|
|
178
|
-
});
|
|
179
|
-
return framebuffer;
|
|
172
|
+
const { device, width, height, id } = texture;
|
|
173
|
+
const framebuffer = device.createFramebuffer({
|
|
174
|
+
...props,
|
|
175
|
+
id: `framebuffer-for-${id}`,
|
|
176
|
+
width,
|
|
177
|
+
height,
|
|
178
|
+
colorAttachments: [texture]
|
|
179
|
+
});
|
|
180
|
+
return framebuffer;
|
|
180
181
|
}
|
|
181
182
|
function getPixelArray(pixelArray, type, format, width, height) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
clamped: false
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
183
|
+
if (pixelArray) {
|
|
184
|
+
return pixelArray;
|
|
185
|
+
}
|
|
186
|
+
// Allocate pixel array if not already available, using supplied type
|
|
187
|
+
type = type || GL.UNSIGNED_BYTE;
|
|
188
|
+
const ArrayType = getTypedArrayFromGLType(type, { clamped: false });
|
|
189
|
+
const components = glFormatToComponents(format);
|
|
190
|
+
// TODO - check for composite type (components = 1).
|
|
191
|
+
return new ArrayType(width * height * components);
|
|
191
192
|
}
|
|
192
|
-
//# sourceMappingURL=copy-and-blit.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function glFormatToComponents(format: any):
|
|
2
|
-
export declare function glTypeToBytes(type: any):
|
|
1
|
+
export declare function glFormatToComponents(format: any): 1 | 2 | 3 | 4 | 0;
|
|
2
|
+
export declare function glTypeToBytes(type: any): 1 | 2 | 4 | 0;
|
|
3
3
|
//# sourceMappingURL=format-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-utils.d.ts","sourceRoot":"","sources":["../../src/classic/format-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format-utils.d.ts","sourceRoot":"","sources":["../../src/classic/format-utils.ts"],"names":[],"mappings":"AAQA,wBAAgB,oBAAoB,CAAC,MAAM,KAAA,qBAoB1C;AAGD,wBAAgB,aAAa,CAAC,IAAI,KAAA,iBAejC"}
|
|
@@ -1,37 +1,44 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { assert } from '@luma.gl/core';
|
|
5
|
+
import { GL } from '@luma.gl/constants';
|
|
6
|
+
// Returns number of components in a specific readPixels WebGL format
|
|
2
7
|
export function glFormatToComponents(format) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
switch (format) {
|
|
9
|
+
case GL.ALPHA:
|
|
10
|
+
case GL.R32F:
|
|
11
|
+
case GL.RED:
|
|
12
|
+
return 1;
|
|
13
|
+
case GL.RG32F:
|
|
14
|
+
case GL.RG:
|
|
15
|
+
return 2;
|
|
16
|
+
case GL.RGB:
|
|
17
|
+
case GL.RGB32F:
|
|
18
|
+
return 3;
|
|
19
|
+
case GL.RGBA:
|
|
20
|
+
case GL.RGBA32F:
|
|
21
|
+
return 4;
|
|
22
|
+
// TODO: Add support for additional WebGL2 formats
|
|
23
|
+
default:
|
|
24
|
+
assert(false);
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
21
27
|
}
|
|
28
|
+
// Return byte count for given readPixels WebGL type
|
|
22
29
|
export function glTypeToBytes(type) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
switch (type) {
|
|
31
|
+
case GL.UNSIGNED_BYTE:
|
|
32
|
+
return 1;
|
|
33
|
+
case GL.UNSIGNED_SHORT_5_6_5:
|
|
34
|
+
case GL.UNSIGNED_SHORT_4_4_4_4:
|
|
35
|
+
case GL.UNSIGNED_SHORT_5_5_5_1:
|
|
36
|
+
return 2;
|
|
37
|
+
case GL.FLOAT:
|
|
38
|
+
return 4;
|
|
39
|
+
// TODO: Add support for additional WebGL2 types
|
|
40
|
+
default:
|
|
41
|
+
assert(false);
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
36
44
|
}
|
|
37
|
-
//# sourceMappingURL=format-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-array-utils.d.ts","sourceRoot":"","sources":["../../src/classic/typed-array-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typed-array-utils.d.ts","sourceRoot":"","sources":["../../src/classic/typed-array-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAE,qBAAqB,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAK,UAAU,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAI/D;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAuB3E;AAED;;;;;;;GAOG;AAEH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,GAAG,WAAW,EAChC,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,qBAAqB,CAwBvB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,GAAG,IAAI,CAgBP;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,GAAG;IACvF,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAaA"}
|