@luma.gl/core 9.2.6 → 9.3.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/canvas-context.d.ts +6 -162
- package/dist/adapter/canvas-context.d.ts.map +1 -1
- package/dist/adapter/canvas-context.js +5 -419
- package/dist/adapter/canvas-context.js.map +1 -1
- package/dist/adapter/canvas-observer.d.ts +32 -0
- package/dist/adapter/canvas-observer.d.ts.map +1 -0
- package/dist/adapter/canvas-observer.js +90 -0
- package/dist/adapter/canvas-observer.js.map +1 -0
- package/dist/adapter/canvas-surface.d.ts +150 -0
- package/dist/adapter/canvas-surface.d.ts.map +1 -0
- package/dist/adapter/canvas-surface.js +392 -0
- package/dist/adapter/canvas-surface.js.map +1 -0
- package/dist/adapter/device.d.ts +81 -16
- package/dist/adapter/device.d.ts.map +1 -1
- package/dist/adapter/device.js +191 -10
- package/dist/adapter/device.js.map +1 -1
- package/dist/adapter/luma.js +1 -1
- package/dist/adapter/luma.js.map +1 -1
- package/dist/adapter/presentation-context.d.ts +11 -0
- package/dist/adapter/presentation-context.d.ts.map +1 -0
- package/dist/adapter/presentation-context.js +12 -0
- package/dist/adapter/presentation-context.js.map +1 -0
- package/dist/adapter/resources/buffer.d.ts +1 -1
- package/dist/adapter/resources/buffer.d.ts.map +1 -1
- package/dist/adapter/resources/buffer.js +14 -6
- package/dist/adapter/resources/buffer.js.map +1 -1
- package/dist/adapter/resources/command-buffer.d.ts +3 -1
- package/dist/adapter/resources/command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/command-buffer.js +3 -1
- package/dist/adapter/resources/command-buffer.js.map +1 -1
- package/dist/adapter/resources/command-encoder.d.ts +30 -7
- package/dist/adapter/resources/command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/command-encoder.js +68 -2
- package/dist/adapter/resources/command-encoder.js.map +1 -1
- package/dist/adapter/resources/compute-pipeline.d.ts +2 -2
- package/dist/adapter/resources/compute-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/fence.d.ts +16 -0
- package/dist/adapter/resources/fence.d.ts.map +1 -0
- package/dist/adapter/resources/fence.js +17 -0
- package/dist/adapter/resources/fence.js.map +1 -0
- package/dist/adapter/resources/framebuffer.d.ts +1 -1
- package/dist/adapter/resources/framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/framebuffer.js +15 -12
- package/dist/adapter/resources/framebuffer.js.map +1 -1
- package/dist/adapter/resources/query-set.d.ts +17 -1
- package/dist/adapter/resources/query-set.d.ts.map +1 -1
- package/dist/adapter/resources/query-set.js.map +1 -1
- package/dist/adapter/resources/render-pipeline.d.ts +28 -10
- package/dist/adapter/resources/render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/render-pipeline.js +21 -2
- package/dist/adapter/resources/render-pipeline.js.map +1 -1
- package/dist/adapter/resources/resource.d.ts +13 -0
- package/dist/adapter/resources/resource.d.ts.map +1 -1
- package/dist/adapter/resources/resource.js +243 -14
- package/dist/adapter/resources/resource.js.map +1 -1
- package/dist/adapter/resources/shader.js +27 -25
- package/dist/adapter/resources/shader.js.map +1 -1
- package/dist/adapter/resources/shared-render-pipeline.d.ts +22 -0
- package/dist/adapter/resources/shared-render-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/shared-render-pipeline.js +25 -0
- package/dist/adapter/resources/shared-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/texture-view.d.ts +1 -1
- package/dist/adapter/resources/texture-view.d.ts.map +1 -1
- package/dist/adapter/resources/texture.d.ts +168 -28
- package/dist/adapter/resources/texture.d.ts.map +1 -1
- package/dist/adapter/resources/texture.js +284 -25
- package/dist/adapter/resources/texture.js.map +1 -1
- package/dist/adapter/types/attachments.d.ts +1 -1
- package/dist/adapter/types/attachments.d.ts.map +1 -1
- package/dist/adapter/types/buffer-layout.d.ts +1 -1
- package/dist/adapter/types/buffer-layout.d.ts.map +1 -1
- package/dist/adapter/types/parameters.d.ts +3 -1
- package/dist/adapter/types/parameters.d.ts.map +1 -1
- package/dist/adapter/types/parameters.js +1 -0
- package/dist/adapter/types/parameters.js.map +1 -1
- package/dist/adapter/types/shader-layout.d.ts +10 -6
- package/dist/adapter/types/shader-layout.d.ts.map +1 -1
- package/dist/adapter/types/uniforms.d.ts +6 -0
- package/dist/adapter/types/uniforms.d.ts.map +1 -1
- package/dist/adapter-utils/bind-groups.d.ts +9 -0
- package/dist/adapter-utils/bind-groups.d.ts.map +1 -0
- package/dist/adapter-utils/bind-groups.js +41 -0
- package/dist/adapter-utils/bind-groups.js.map +1 -0
- package/dist/adapter-utils/format-compiler-log.d.ts.map +1 -1
- package/dist/adapter-utils/format-compiler-log.js +23 -15
- package/dist/adapter-utils/format-compiler-log.js.map +1 -1
- package/dist/adapter-utils/get-attribute-from-layouts.d.ts +2 -2
- package/dist/adapter-utils/get-attribute-from-layouts.d.ts.map +1 -1
- package/dist/adapter-utils/get-attribute-from-layouts.js +6 -6
- package/dist/adapter-utils/get-attribute-from-layouts.js.map +1 -1
- package/dist/dist.dev.js +2686 -644
- package/dist/dist.min.js +10 -9
- package/dist/factories/bind-group-factory.d.ts +20 -0
- package/dist/factories/bind-group-factory.d.ts.map +1 -0
- package/dist/factories/bind-group-factory.js +79 -0
- package/dist/factories/bind-group-factory.js.map +1 -0
- package/dist/factories/core-module-state.d.ts +7 -0
- package/dist/factories/core-module-state.d.ts.map +1 -0
- package/dist/{shadertypes/data-types/shader-types.js → factories/core-module-state.js} +1 -1
- package/dist/factories/core-module-state.js.map +1 -0
- package/dist/factories/pipeline-factory.d.ts +54 -0
- package/dist/factories/pipeline-factory.d.ts.map +1 -0
- package/dist/factories/pipeline-factory.js +270 -0
- package/dist/factories/pipeline-factory.js.map +1 -0
- package/dist/factories/shader-factory.d.ts +20 -0
- package/dist/factories/shader-factory.d.ts.map +1 -0
- package/dist/factories/shader-factory.js +84 -0
- package/dist/factories/shader-factory.js.map +1 -0
- package/dist/index.cjs +2422 -554
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +30 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/portable/shader-block-writer.d.ts +51 -0
- package/dist/portable/shader-block-writer.d.ts.map +1 -0
- package/dist/portable/shader-block-writer.js +185 -0
- package/dist/portable/shader-block-writer.js.map +1 -0
- package/dist/portable/uniform-block.d.ts +1 -1
- package/dist/portable/uniform-block.d.ts.map +1 -1
- package/dist/portable/uniform-store.d.ts +55 -24
- package/dist/portable/uniform-store.d.ts.map +1 -1
- package/dist/portable/uniform-store.js +73 -25
- package/dist/portable/uniform-store.js.map +1 -1
- package/dist/shadertypes/data-types/data-type-decoder.d.ts +20 -0
- package/dist/shadertypes/data-types/data-type-decoder.d.ts.map +1 -0
- package/dist/shadertypes/data-types/data-type-decoder.js +79 -0
- package/dist/shadertypes/data-types/data-type-decoder.js.map +1 -0
- package/dist/shadertypes/data-types/data-types.d.ts +31 -12
- package/dist/shadertypes/data-types/data-types.d.ts.map +1 -1
- package/dist/shadertypes/data-types/decode-data-types.d.ts.map +1 -1
- package/dist/shadertypes/data-types/decode-data-types.js +2 -1
- package/dist/shadertypes/data-types/decode-data-types.js.map +1 -1
- package/dist/{image-utils → shadertypes/image-types}/image-types.d.ts +0 -6
- package/dist/shadertypes/image-types/image-types.d.ts.map +1 -0
- package/dist/shadertypes/image-types/image-types.js.map +1 -0
- package/dist/shadertypes/shader-types/shader-block-layout.d.ts +72 -0
- package/dist/shadertypes/shader-types/shader-block-layout.d.ts.map +1 -0
- package/dist/shadertypes/shader-types/shader-block-layout.js +209 -0
- package/dist/shadertypes/shader-types/shader-block-layout.js.map +1 -0
- package/dist/shadertypes/shader-types/shader-type-decoder.d.ts +41 -0
- package/dist/shadertypes/shader-types/shader-type-decoder.d.ts.map +1 -0
- package/dist/shadertypes/{data-types/decode-shader-types.js → shader-types/shader-type-decoder.js} +43 -4
- package/dist/shadertypes/shader-types/shader-type-decoder.js.map +1 -0
- package/dist/shadertypes/shader-types/shader-types.d.ts +101 -0
- package/dist/shadertypes/shader-types/shader-types.d.ts.map +1 -0
- package/dist/shadertypes/shader-types/shader-types.js +30 -0
- package/dist/shadertypes/shader-types/shader-types.js.map +1 -0
- package/dist/shadertypes/texture-types/pixel-utils.d.ts.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/pixel-utils.js +4 -4
- package/dist/shadertypes/texture-types/pixel-utils.js.map +1 -0
- package/dist/shadertypes/texture-types/texture-format-decoder.d.ts +36 -0
- package/dist/shadertypes/texture-types/texture-format-decoder.d.ts.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/texture-format-decoder.js +109 -37
- package/dist/shadertypes/texture-types/texture-format-decoder.js.map +1 -0
- package/dist/shadertypes/texture-types/texture-format-generics.d.ts +34 -0
- package/dist/shadertypes/texture-types/texture-format-generics.d.ts.map +1 -0
- package/dist/shadertypes/texture-types/texture-format-generics.js.map +1 -0
- package/dist/shadertypes/texture-types/texture-format-table.d.ts.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/texture-format-table.js +10 -9
- package/dist/shadertypes/texture-types/texture-format-table.js.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/texture-formats.d.ts +51 -17
- package/dist/shadertypes/texture-types/texture-formats.d.ts.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/texture-formats.js +1 -0
- package/dist/shadertypes/texture-types/texture-formats.js.map +1 -0
- package/dist/shadertypes/texture-types/texture-layout.d.ts +5 -0
- package/dist/shadertypes/texture-types/texture-layout.d.ts.map +1 -0
- package/dist/shadertypes/texture-types/texture-layout.js +41 -0
- package/dist/shadertypes/texture-types/texture-layout.js.map +1 -0
- package/dist/shadertypes/vertex-types/vertex-format-decoder.d.ts +24 -0
- package/dist/shadertypes/vertex-types/vertex-format-decoder.d.ts.map +1 -0
- package/dist/shadertypes/vertex-types/vertex-format-decoder.js +106 -0
- package/dist/shadertypes/vertex-types/vertex-format-decoder.js.map +1 -0
- package/dist/shadertypes/vertex-types/vertex-formats.d.ts +50 -0
- package/dist/shadertypes/vertex-types/vertex-formats.d.ts.map +1 -0
- package/dist/shadertypes/vertex-types/vertex-formats.js.map +1 -0
- package/dist/utils/array-equal.d.ts +1 -1
- package/dist/utils/array-equal.d.ts.map +1 -1
- package/dist/utils/array-equal.js +15 -9
- package/dist/utils/array-equal.js.map +1 -1
- package/dist/utils/assert.d.ts +5 -0
- package/dist/utils/assert.d.ts.map +1 -0
- package/dist/utils/assert.js +17 -0
- package/dist/utils/assert.js.map +1 -0
- package/dist/utils/stats-manager.d.ts.map +1 -1
- package/dist/utils/stats-manager.js +61 -1
- package/dist/utils/stats-manager.js.map +1 -1
- package/package.json +6 -6
- package/src/adapter/canvas-context.ts +7 -556
- package/src/adapter/canvas-observer.ts +130 -0
- package/src/adapter/canvas-surface.ts +521 -0
- package/src/adapter/device.ts +308 -24
- package/src/adapter/presentation-context.ts +16 -0
- package/src/adapter/resources/buffer.ts +13 -5
- package/src/adapter/resources/command-buffer.ts +4 -2
- package/src/adapter/resources/command-encoder.ts +101 -10
- package/src/adapter/resources/compute-pipeline.ts +2 -2
- package/src/adapter/resources/fence.ts +32 -0
- package/src/adapter/resources/framebuffer.ts +16 -13
- package/src/adapter/resources/query-set.ts +17 -1
- package/src/adapter/resources/render-pipeline.ts +52 -16
- package/src/adapter/resources/resource.ts +289 -14
- package/src/adapter/resources/shader.ts +28 -28
- package/src/adapter/resources/shared-render-pipeline.ts +40 -0
- package/src/adapter/resources/texture-view.ts +1 -1
- package/src/adapter/resources/texture.ts +427 -49
- package/src/adapter/types/attachments.ts +1 -1
- package/src/adapter/types/buffer-layout.ts +1 -1
- package/src/adapter/types/parameters.ts +4 -1
- package/src/adapter/types/shader-layout.ts +15 -9
- package/src/adapter/types/uniforms.ts +12 -0
- package/src/adapter-utils/bind-groups.ts +71 -0
- package/src/adapter-utils/format-compiler-log.ts +23 -15
- package/src/adapter-utils/get-attribute-from-layouts.ts +8 -11
- package/src/factories/bind-group-factory.ts +139 -0
- package/src/factories/core-module-state.ts +11 -0
- package/src/factories/pipeline-factory.ts +328 -0
- package/src/factories/shader-factory.ts +103 -0
- package/src/index.ts +70 -26
- package/src/portable/shader-block-writer.ts +254 -0
- package/src/portable/uniform-block.ts +1 -1
- package/src/portable/uniform-store.ts +98 -40
- package/src/shadertypes/data-types/data-type-decoder.ts +105 -0
- package/src/shadertypes/data-types/data-types.ts +100 -48
- package/src/shadertypes/data-types/decode-data-types.ts +2 -1
- package/src/{image-utils → shadertypes/image-types}/image-types.ts +0 -7
- package/src/shadertypes/shader-types/shader-block-layout.ts +340 -0
- package/src/shadertypes/{data-types/decode-shader-types.ts → shader-types/shader-type-decoder.ts} +88 -14
- package/src/shadertypes/shader-types/shader-types.ts +207 -0
- package/src/shadertypes/{textures → texture-types}/pixel-utils.ts +4 -4
- package/src/shadertypes/{textures → texture-types}/texture-format-decoder.ts +166 -45
- package/src/shadertypes/{textures → texture-types}/texture-format-generics.ts +42 -48
- package/src/shadertypes/{textures → texture-types}/texture-format-table.ts +10 -9
- package/src/shadertypes/{textures → texture-types}/texture-formats.ts +73 -17
- package/src/shadertypes/texture-types/texture-layout.ts +60 -0
- package/src/shadertypes/vertex-types/vertex-format-decoder.ts +131 -0
- package/src/shadertypes/vertex-types/vertex-formats.ts +183 -0
- package/src/utils/array-equal.ts +21 -9
- package/src/utils/assert.ts +18 -0
- package/src/utils/stats-manager.ts +76 -2
- package/dist/image-utils/image-types.d.ts.map +0 -1
- package/dist/image-utils/image-types.js.map +0 -1
- package/dist/portable/uniform-buffer-layout.d.ts +0 -28
- package/dist/portable/uniform-buffer-layout.d.ts.map +0 -1
- package/dist/portable/uniform-buffer-layout.js +0 -96
- package/dist/portable/uniform-buffer-layout.js.map +0 -1
- package/dist/shadertypes/data-types/decode-shader-types.d.ts +0 -17
- package/dist/shadertypes/data-types/decode-shader-types.d.ts.map +0 -1
- package/dist/shadertypes/data-types/decode-shader-types.js.map +0 -1
- package/dist/shadertypes/data-types/shader-types.d.ts +0 -45
- package/dist/shadertypes/data-types/shader-types.d.ts.map +0 -1
- package/dist/shadertypes/data-types/shader-types.js.map +0 -1
- package/dist/shadertypes/textures/pixel-utils.d.ts.map +0 -1
- package/dist/shadertypes/textures/pixel-utils.js.map +0 -1
- package/dist/shadertypes/textures/texture-format-decoder.d.ts +0 -18
- package/dist/shadertypes/textures/texture-format-decoder.d.ts.map +0 -1
- package/dist/shadertypes/textures/texture-format-decoder.js.map +0 -1
- package/dist/shadertypes/textures/texture-format-generics.d.ts +0 -33
- package/dist/shadertypes/textures/texture-format-generics.d.ts.map +0 -1
- package/dist/shadertypes/textures/texture-format-generics.js.map +0 -1
- package/dist/shadertypes/textures/texture-format-table.d.ts.map +0 -1
- package/dist/shadertypes/textures/texture-format-table.js.map +0 -1
- package/dist/shadertypes/textures/texture-formats.d.ts.map +0 -1
- package/dist/shadertypes/textures/texture-formats.js.map +0 -1
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.d.ts +0 -18
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.d.ts.map +0 -1
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.js +0 -100
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.js.map +0 -1
- package/dist/shadertypes/vertex-arrays/vertex-formats.d.ts +0 -27
- package/dist/shadertypes/vertex-arrays/vertex-formats.d.ts.map +0 -1
- package/dist/shadertypes/vertex-arrays/vertex-formats.js.map +0 -1
- package/src/portable/uniform-buffer-layout.ts +0 -118
- package/src/shadertypes/data-types/shader-types.ts +0 -87
- package/src/shadertypes/vertex-arrays/decode-vertex-format.ts +0 -124
- package/src/shadertypes/vertex-arrays/vertex-formats.ts +0 -91
- /package/dist/{image-utils → shadertypes/image-types}/image-types.js +0 -0
- /package/dist/shadertypes/{textures → texture-types}/pixel-utils.d.ts +0 -0
- /package/dist/shadertypes/{textures → texture-types}/texture-format-generics.js +0 -0
- /package/dist/shadertypes/{textures → texture-types}/texture-format-table.d.ts +0 -0
- /package/dist/shadertypes/{vertex-arrays → vertex-types}/vertex-formats.js +0 -0
|
@@ -1,62 +1,93 @@
|
|
|
1
1
|
// luma.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import {
|
|
4
|
+
import { dataTypeDecoder } from "../data-types/data-type-decoder.js";
|
|
5
5
|
import { getTextureFormatDefinition } from "./texture-format-table.js";
|
|
6
|
+
const RGB_FORMAT_REGEX = /^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/;
|
|
7
|
+
const COLOR_FORMAT_PREFIXES = ['rgb', 'rgba', 'bgra'];
|
|
8
|
+
const DEPTH_FORMAT_PREFIXES = ['depth', 'stencil'];
|
|
6
9
|
// prettier-ignore
|
|
7
10
|
const COMPRESSED_TEXTURE_FORMAT_PREFIXES = [
|
|
8
11
|
'bc1', 'bc2', 'bc3', 'bc4', 'bc5', 'bc6', 'bc7', 'etc1', 'etc2', 'eac', 'atc', 'astc', 'pvrtc'
|
|
9
12
|
];
|
|
10
|
-
|
|
13
|
+
/** Class that helps applications work with texture formats */
|
|
11
14
|
export class TextureFormatDecoder {
|
|
12
|
-
/** Returns information about a texture format, e.g. attatchment type, components, byte length and flags (integer, signed, normalized) */
|
|
13
|
-
getInfo(format) {
|
|
14
|
-
return getTextureFormatInfo(format);
|
|
15
|
-
}
|
|
16
15
|
/** Checks if a texture format is color */
|
|
17
16
|
isColor(format) {
|
|
18
|
-
return
|
|
17
|
+
return COLOR_FORMAT_PREFIXES.some(prefix => format.startsWith(prefix));
|
|
19
18
|
}
|
|
20
19
|
/** Checks if a texture format is depth or stencil */
|
|
21
20
|
isDepthStencil(format) {
|
|
22
|
-
return
|
|
21
|
+
return DEPTH_FORMAT_PREFIXES.some(prefix => format.startsWith(prefix));
|
|
23
22
|
}
|
|
24
23
|
/** Checks if a texture format is compressed */
|
|
25
24
|
isCompressed(format) {
|
|
26
25
|
return COMPRESSED_TEXTURE_FORMAT_PREFIXES.some(prefix => format.startsWith(prefix));
|
|
27
26
|
}
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
/** Returns information about a texture format, e.g. attachment type, components, byte length and flags (integer, signed, normalized) */
|
|
28
|
+
getInfo(format) {
|
|
29
|
+
return getTextureFormatInfo(format);
|
|
30
|
+
}
|
|
31
|
+
/** "static" capabilities of a texture format. @note Needs to be adjusted against current device */
|
|
32
32
|
getCapabilities(format) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
filter: info.filter ?? true,
|
|
39
|
-
blend: info.blend ?? true,
|
|
40
|
-
store: info.store ?? true
|
|
41
|
-
};
|
|
42
|
-
const formatInfo = getTextureFormatInfo(format);
|
|
43
|
-
const isDepthStencil = format.startsWith('depth') || format.startsWith('stencil');
|
|
44
|
-
const isSigned = formatInfo?.signed;
|
|
45
|
-
const isInteger = formatInfo?.integer;
|
|
46
|
-
const isWebGLSpecific = formatInfo?.webgl;
|
|
47
|
-
// signed formats are not renderable
|
|
48
|
-
formatCapabilities.render &&= !isSigned;
|
|
49
|
-
// signed and integer formats are not filterable
|
|
50
|
-
formatCapabilities.filter &&= !isDepthStencil && !isSigned && !isInteger && !isWebGLSpecific;
|
|
51
|
-
return formatCapabilities;
|
|
33
|
+
return getTextureFormatCapabilities(format);
|
|
34
|
+
}
|
|
35
|
+
/** Computes the memory layout for a texture, in particular including row byte alignment */
|
|
36
|
+
computeMemoryLayout(opts) {
|
|
37
|
+
return computeTextureMemoryLayout(opts);
|
|
52
38
|
}
|
|
53
39
|
}
|
|
40
|
+
/** Decoder for luma.gl texture types */
|
|
54
41
|
export const textureFormatDecoder = new TextureFormatDecoder();
|
|
55
|
-
// HELPERS
|
|
42
|
+
// HELPERS - MEMORY LAYOUT
|
|
43
|
+
/** Get the memory layout of a texture */
|
|
44
|
+
function computeTextureMemoryLayout({ format, width, height, depth, byteAlignment }) {
|
|
45
|
+
const formatInfo = textureFormatDecoder.getInfo(format);
|
|
46
|
+
const { bytesPerPixel, bytesPerBlock = bytesPerPixel, blockWidth = 1, blockHeight = 1, compressed = false } = formatInfo;
|
|
47
|
+
const blockColumns = compressed ? Math.ceil(width / blockWidth) : width;
|
|
48
|
+
const blockRows = compressed ? Math.ceil(height / blockHeight) : height;
|
|
49
|
+
// byteAlignment comes from the backend/call site. WebGPU buffer copies use 256, queue.writeTexture uses 1.
|
|
50
|
+
const unpaddedBytesPerRow = blockColumns * bytesPerBlock;
|
|
51
|
+
const bytesPerRow = Math.ceil(unpaddedBytesPerRow / byteAlignment) * byteAlignment;
|
|
52
|
+
const rowsPerImage = blockRows;
|
|
53
|
+
const byteLength = bytesPerRow * rowsPerImage * depth;
|
|
54
|
+
return {
|
|
55
|
+
bytesPerPixel,
|
|
56
|
+
bytesPerRow,
|
|
57
|
+
rowsPerImage,
|
|
58
|
+
depthOrArrayLayers: depth,
|
|
59
|
+
bytesPerImage: bytesPerRow * rowsPerImage,
|
|
60
|
+
byteLength
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
// HELPERS - CAPABILITIES
|
|
64
|
+
function getTextureFormatCapabilities(format) {
|
|
65
|
+
const info = getTextureFormatDefinition(format);
|
|
66
|
+
const formatCapabilities = {
|
|
67
|
+
format,
|
|
68
|
+
create: info.f ?? true,
|
|
69
|
+
render: info.render ?? true,
|
|
70
|
+
filter: info.filter ?? true,
|
|
71
|
+
blend: info.blend ?? true,
|
|
72
|
+
store: info.store ?? true
|
|
73
|
+
};
|
|
74
|
+
const formatInfo = getTextureFormatInfo(format);
|
|
75
|
+
const isDepthStencil = format.startsWith('depth') || format.startsWith('stencil');
|
|
76
|
+
const isSigned = formatInfo?.signed;
|
|
77
|
+
const isInteger = formatInfo?.integer;
|
|
78
|
+
const isWebGLSpecific = formatInfo?.webgl;
|
|
79
|
+
const isCompressed = Boolean(formatInfo?.compressed);
|
|
80
|
+
// Only uncompressed color formats can be used as color-renderable attachments.
|
|
81
|
+
formatCapabilities.render &&= !isDepthStencil && !isCompressed;
|
|
82
|
+
// signed and integer formats are not filterable
|
|
83
|
+
formatCapabilities.filter &&= !isDepthStencil && !isSigned && !isInteger && !isWebGLSpecific;
|
|
84
|
+
return formatCapabilities;
|
|
85
|
+
}
|
|
86
|
+
// HELPER - FORMAT INFO
|
|
56
87
|
/**
|
|
57
88
|
* Decodes a texture format, returning e.g. attatchment type, components, byte length and flags (integer, signed, normalized)
|
|
58
89
|
*/
|
|
59
|
-
function getTextureFormatInfo(format) {
|
|
90
|
+
export function getTextureFormatInfo(format) {
|
|
60
91
|
let formatInfo = getTextureFormatInfoUsingTable(format);
|
|
61
92
|
if (textureFormatDecoder.isCompressed(format)) {
|
|
62
93
|
formatInfo.channels = 'rgb';
|
|
@@ -64,6 +95,7 @@ function getTextureFormatInfo(format) {
|
|
|
64
95
|
formatInfo.bytesPerPixel = 1;
|
|
65
96
|
formatInfo.srgb = false;
|
|
66
97
|
formatInfo.compressed = true;
|
|
98
|
+
formatInfo.bytesPerBlock = getCompressedTextureBlockByteLength(format);
|
|
67
99
|
const blockSize = getCompressedTextureBlockSize(format);
|
|
68
100
|
if (blockSize) {
|
|
69
101
|
formatInfo.blockWidth = blockSize.blockWidth;
|
|
@@ -71,13 +103,13 @@ function getTextureFormatInfo(format) {
|
|
|
71
103
|
}
|
|
72
104
|
}
|
|
73
105
|
// Fill in missing information that can be derived from the format string
|
|
74
|
-
const matches = RGB_FORMAT_REGEX.exec(format);
|
|
106
|
+
const matches = !formatInfo.packed ? RGB_FORMAT_REGEX.exec(format) : null;
|
|
75
107
|
if (matches) {
|
|
76
108
|
const [, channels, length, type, srgb, suffix] = matches;
|
|
77
109
|
const dataType = `${type}${length}`;
|
|
78
|
-
const decodedType = getDataTypeInfo(dataType);
|
|
110
|
+
const decodedType = dataTypeDecoder.getDataTypeInfo(dataType);
|
|
79
111
|
const bits = decodedType.byteLength * 8;
|
|
80
|
-
const components = channels
|
|
112
|
+
const components = (channels?.length ?? 1);
|
|
81
113
|
const bitsPerChannel = [
|
|
82
114
|
bits,
|
|
83
115
|
components >= 2 ? bits : 0,
|
|
@@ -94,7 +126,7 @@ function getTextureFormatInfo(format) {
|
|
|
94
126
|
signed: decodedType.signed,
|
|
95
127
|
normalized: decodedType.normalized,
|
|
96
128
|
bitsPerChannel,
|
|
97
|
-
bytesPerPixel: decodedType.byteLength *
|
|
129
|
+
bytesPerPixel: decodedType.byteLength * components,
|
|
98
130
|
packed: formatInfo.packed,
|
|
99
131
|
srgb: formatInfo.srgb
|
|
100
132
|
};
|
|
@@ -153,8 +185,48 @@ function getCompressedTextureBlockSize(format) {
|
|
|
153
185
|
const [, blockWidth, blockHeight] = matches;
|
|
154
186
|
return { blockWidth: Number(blockWidth), blockHeight: Number(blockHeight) };
|
|
155
187
|
}
|
|
188
|
+
if (format.startsWith('bc') ||
|
|
189
|
+
format.startsWith('etc1') ||
|
|
190
|
+
format.startsWith('etc2') ||
|
|
191
|
+
format.startsWith('eac') ||
|
|
192
|
+
format.startsWith('atc')) {
|
|
193
|
+
return { blockWidth: 4, blockHeight: 4 };
|
|
194
|
+
}
|
|
195
|
+
if (format.startsWith('pvrtc-rgb4') || format.startsWith('pvrtc-rgba4')) {
|
|
196
|
+
return { blockWidth: 4, blockHeight: 4 };
|
|
197
|
+
}
|
|
198
|
+
if (format.startsWith('pvrtc-rgb2') || format.startsWith('pvrtc-rgba2')) {
|
|
199
|
+
return { blockWidth: 8, blockHeight: 4 };
|
|
200
|
+
}
|
|
156
201
|
return null;
|
|
157
202
|
}
|
|
203
|
+
function getCompressedTextureBlockByteLength(format) {
|
|
204
|
+
if (format.startsWith('bc1') ||
|
|
205
|
+
format.startsWith('bc4') ||
|
|
206
|
+
format.startsWith('etc1') ||
|
|
207
|
+
format.startsWith('etc2-rgb8') ||
|
|
208
|
+
format.startsWith('etc2-rgb8a1') ||
|
|
209
|
+
format.startsWith('eac-r11') ||
|
|
210
|
+
format === 'atc-rgb-unorm-webgl') {
|
|
211
|
+
return 8;
|
|
212
|
+
}
|
|
213
|
+
if (format.startsWith('bc2') ||
|
|
214
|
+
format.startsWith('bc3') ||
|
|
215
|
+
format.startsWith('bc5') ||
|
|
216
|
+
format.startsWith('bc6h') ||
|
|
217
|
+
format.startsWith('bc7') ||
|
|
218
|
+
format.startsWith('etc2-rgba8') ||
|
|
219
|
+
format.startsWith('eac-rg11') ||
|
|
220
|
+
format.startsWith('astc') ||
|
|
221
|
+
format === 'atc-rgba-unorm-webgl' ||
|
|
222
|
+
format === 'atc-rgbai-unorm-webgl') {
|
|
223
|
+
return 16;
|
|
224
|
+
}
|
|
225
|
+
if (format.startsWith('pvrtc')) {
|
|
226
|
+
return 8;
|
|
227
|
+
}
|
|
228
|
+
return 16;
|
|
229
|
+
}
|
|
158
230
|
/*
|
|
159
231
|
'r8unorm': {s: "float"}, // ✓ ✓ ✓ },
|
|
160
232
|
'r8snorm': {s: "float"}, // ✓ },
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-decoder.js","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-format-decoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type TextureFormat, type TextureFormatDepthStencil, type TextureFormatCompressed } from "./texture-formats.js";
|
|
2
|
+
/** @type data type for a texture format */
|
|
3
|
+
export type TextureFormatDataTypeT<T extends TextureFormat> = T extends TextureFormatUint8 ? 'uint8' : T extends TextureFormatSint8 ? 'sint8' : T extends TextureFormatUnorm8 ? 'unorm8' : T extends TextureFormatSnorm8 ? 'snorm8' : T extends TextureFormatUint16 ? 'uint16' : T extends TextureFormatSint16 ? 'sint16' : T extends TextureFormatUnorm16 ? 'unorm16' : T extends TextureFormatSnorm16 ? 'snorm16' : T extends TextureFormatUint32 ? 'uint32' : T extends TextureFormatSint32 ? 'sint32' : T extends TextureFormatFloat16 ? 'float16' : T extends TextureFormatFloat32 ? 'float32' : T extends TextureFormatDepthStencil ? 'uint32' : T extends TextureFormatCompressed ? 'uint8' : T extends TextureFormatPacked16 ? 'uint16' : T extends TextureFormatPacked32 ? 'uint32' : never;
|
|
4
|
+
/** @type A numeric array of length matching the number of components in the texture format */
|
|
5
|
+
export type TextureFormatPixelT<T extends TextureFormat> = TextureFormatPackedComponentsT<T> extends 1 ? [number] : TextureFormatPackedComponentsT<T> extends 2 ? [number, number] : TextureFormatPackedComponentsT<T> extends 3 ? [number, number, number] : TextureFormatPackedComponentsT<T> extends 4 ? [number, number, number, number] : never;
|
|
6
|
+
/**
|
|
7
|
+
* @type number - the number of components in a texture format
|
|
8
|
+
* @note packed formats have only one component. Use TextureFormatPackedComponentsT
|
|
9
|
+
*/
|
|
10
|
+
export type TextureFormatComponentsT<T extends TextureFormat> = T extends TextureFormatR | TextureFormatPackedRGB | TextureFormatPackedRGBA ? 1 : T extends TextureFormatRG ? 2 : T extends TextureFormatRGB ? 3 : T extends TextureFormatRGBA ? 4 : never;
|
|
11
|
+
/** @type number - the number of components in a packed texture format */
|
|
12
|
+
export type TextureFormatPackedComponentsT<T extends TextureFormat> = T extends TextureFormatR ? 1 : T extends TextureFormatRG ? 2 : T extends TextureFormatRGB | TextureFormatPackedRGB ? 3 : T extends TextureFormatRGBA | TextureFormatPackedRGBA ? 4 : never;
|
|
13
|
+
type TextureFormatR = 'r8uint' | 'r8sint' | 'r8unorm' | 'r8snorm' | 'r16unorm' | 'r16snorm' | 'r16uint' | 'r16sint' | 'r16float' | 'r32uint' | 'r32sint' | 'r32float';
|
|
14
|
+
type TextureFormatRG = 'rg8unorm' | 'rg8snorm' | 'rg8uint' | 'rg8sint' | 'rg16unorm' | 'rg16snorm' | 'rg16uint' | 'rg16sint' | 'rg16float' | 'rg32uint' | 'rg32sint' | 'rg32float';
|
|
15
|
+
type TextureFormatRGB = 'rgb8unorm-webgl' | 'rgb8snorm-webgl' | 'rgb16unorm-webgl' | 'rgb16snorm-webgl' | 'rgb32float-webgl';
|
|
16
|
+
type TextureFormatRGBA = 'rgba8uint' | 'rgba8unorm' | 'rgba8unorm-srgb' | 'rgba8snorm' | 'bgra8unorm' | 'bgra8unorm-srgb' | 'rgba8sint' | 'rgba16unorm' | 'rgba16snorm' | 'rgba16uint' | 'rgba16sint' | 'rgba16float' | 'rgba32uint' | 'rgba32sint' | 'rgba32float';
|
|
17
|
+
type TextureFormatPackedRGB = 'rgb565unorm-webgl' | 'rgb9e5ufloat' | 'rg11b10ufloat';
|
|
18
|
+
type TextureFormatPackedRGBA = 'rgba4unorm-webgl' | 'rgb5a1unorm-webgl' | 'rgb10a2unorm' | 'rgb10a2uint';
|
|
19
|
+
type TextureFormatUnorm8 = 'r8unorm' | 'rg8unorm' | 'rgb8unorm-webgl' | 'rgba8unorm' | 'rgba8unorm-srgb' | 'bgra8unorm' | 'bgra8unorm-srgb';
|
|
20
|
+
type TextureFormatSnorm8 = 'r8snorm' | 'rg8snorm' | 'rgb8snorm-webgl' | 'rgba8snorm';
|
|
21
|
+
type TextureFormatUint8 = 'r8uint' | 'rg8uint' | 'rgba8uint';
|
|
22
|
+
type TextureFormatSint8 = 'r8sint' | 'rg8sint' | 'rgba8sint';
|
|
23
|
+
type TextureFormatUnorm16 = 'r16unorm' | 'rg16unorm' | 'rgb16unorm-webgl' | 'rgba16unorm';
|
|
24
|
+
type TextureFormatSnorm16 = 'r16snorm' | 'rg16snorm' | 'rgb16snorm-webgl' | 'rgba16snorm';
|
|
25
|
+
type TextureFormatUint16 = 'r16uint' | 'rg16uint' | 'rgba16uint';
|
|
26
|
+
type TextureFormatSint16 = 'r16sint' | 'rg16sint' | 'rgba16sint';
|
|
27
|
+
type TextureFormatFloat16 = 'r16float' | 'rg16float' | 'rgba16float';
|
|
28
|
+
type TextureFormatUint32 = 'r32uint' | 'rg32uint' | 'rgba32uint';
|
|
29
|
+
type TextureFormatSint32 = 'r32sint' | 'rg32sint' | 'rgba32sint';
|
|
30
|
+
type TextureFormatFloat32 = 'r32float' | 'rg32float' | 'rgb32float-webgl' | 'rgba32float';
|
|
31
|
+
type TextureFormatPacked16 = 'rgba4unorm-webgl' | 'rgb565unorm-webgl' | 'rgb5a1unorm-webgl';
|
|
32
|
+
type TextureFormatPacked32 = 'rgb9e5ufloat' | 'rg11b10ufloat' | 'rgb10a2unorm' | 'rgb10a2uint';
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=texture-format-generics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-generics.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-format-generics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-generics.js","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-format-generics.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-table.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-format-table.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EAGb,cAAc,EACd,iBAAiB,EAElB,6BAA0B;AAsB3B,wDAAwD;AAExD,sDAAsD;AACtD,KAAK,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG;IAC1D,qCAAqC;IACrC,CAAC,CAAC,EAAE,cAAc,CAAC;IACnB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IAChC,0FAA0F;IAC1F,MAAM,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IAChC,KAAK,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IAE/B,wDAAwD;IACxD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,eAAe;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,iCAAiC;IACjC,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,GAAG,uBAAuB,CAMzF;AAED,wBAAgB,qBAAqB,IAAI,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC,CAEhG;AA8KD,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAGzF,CAAC"}
|
|
@@ -13,6 +13,7 @@ const float32_renderable = 'float32-renderable-webgl';
|
|
|
13
13
|
const float16_renderable = 'float16-renderable-webgl';
|
|
14
14
|
const rgb9e5ufloat_renderable = 'rgb9e5ufloat-renderable-webgl';
|
|
15
15
|
const snorm8_renderable = 'snorm8-renderable-webgl';
|
|
16
|
+
const norm16_webgl = 'norm16-webgl';
|
|
16
17
|
const norm16_renderable = 'norm16-renderable-webgl';
|
|
17
18
|
const snorm16_renderable = 'snorm16-renderable-webgl';
|
|
18
19
|
const float32_filterable = 'float32-filterable';
|
|
@@ -47,14 +48,14 @@ const TEXTURE_FORMAT_COLOR_DEPTH_TABLE = {
|
|
|
47
48
|
'rgba8sint': {},
|
|
48
49
|
'bgra8unorm': {},
|
|
49
50
|
'bgra8unorm-srgb': {},
|
|
50
|
-
'r16unorm': { f: norm16_renderable },
|
|
51
|
-
'rg16unorm': { render: norm16_renderable },
|
|
52
|
-
'rgb16unorm-webgl': { f:
|
|
53
|
-
'rgba16unorm': { render: norm16_renderable },
|
|
54
|
-
'r16snorm': { f: snorm16_renderable },
|
|
55
|
-
'rg16snorm': { render: snorm16_renderable },
|
|
56
|
-
'rgb16snorm-webgl': { f:
|
|
57
|
-
'rgba16snorm': { render: snorm16_renderable },
|
|
51
|
+
'r16unorm': { f: norm16_webgl, render: norm16_renderable },
|
|
52
|
+
'rg16unorm': { f: norm16_webgl, render: norm16_renderable },
|
|
53
|
+
'rgb16unorm-webgl': { f: norm16_webgl, render: false }, // rgb not renderable
|
|
54
|
+
'rgba16unorm': { f: norm16_webgl, render: norm16_renderable },
|
|
55
|
+
'r16snorm': { f: norm16_webgl, render: snorm16_renderable },
|
|
56
|
+
'rg16snorm': { f: norm16_webgl, render: snorm16_renderable },
|
|
57
|
+
'rgb16snorm-webgl': { f: norm16_webgl, render: false }, // rgb not renderable
|
|
58
|
+
'rgba16snorm': { f: norm16_webgl, render: snorm16_renderable },
|
|
58
59
|
'r16uint': {},
|
|
59
60
|
'rg16uint': {},
|
|
60
61
|
'rgba16uint': {},
|
|
@@ -157,7 +158,7 @@ const TEXTURE_FORMAT_COMPRESSED_TABLE = {
|
|
|
157
158
|
// WEBGL_compressed_texture_pvrtc
|
|
158
159
|
'pvrtc-rgb4unorm-webgl': { f: texture_compression_pvrtc_webgl },
|
|
159
160
|
'pvrtc-rgba4unorm-webgl': { f: texture_compression_pvrtc_webgl },
|
|
160
|
-
'pvrtc-
|
|
161
|
+
'pvrtc-rgb2unorm-webgl': { f: texture_compression_pvrtc_webgl },
|
|
161
162
|
'pvrtc-rgba2unorm-webgl': { f: texture_compression_pvrtc_webgl },
|
|
162
163
|
// WEBGL_compressed_texture_etc1
|
|
163
164
|
'etc1-rbg-unorm-webgl': { f: texture_compression_etc1_webgl },
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-table.js","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-format-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NormalizedDataType } from "../data-types/data-types.js";
|
|
1
|
+
import type { NormalizedDataType, TypedArrayConstructorT, NormalizedTypedArrayConstructorT } from "../data-types/data-types.js";
|
|
2
2
|
/** Information about the structure of a texture format */
|
|
3
3
|
export type TextureFormatInfo = {
|
|
4
4
|
/** The format that is described */
|
|
@@ -13,6 +13,8 @@ export type TextureFormatInfo = {
|
|
|
13
13
|
dataType?: NormalizedDataType;
|
|
14
14
|
/** Number of bytes per pixel */
|
|
15
15
|
bytesPerPixel: number;
|
|
16
|
+
/** Compressed formats only: Number of bytes per block */
|
|
17
|
+
bytesPerBlock?: number;
|
|
16
18
|
/** Number of bits per channel (may be unreliable for packed formats) */
|
|
17
19
|
bitsPerChannel: [number, number, number, number];
|
|
18
20
|
/** If this is a packed data type */
|
|
@@ -51,6 +53,32 @@ export type TextureFormatCapabilities = {
|
|
|
51
53
|
/** If a feature string, the specified device feature determines if format is storeable. */
|
|
52
54
|
store: TextureFeature | boolean;
|
|
53
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* Memory layout for reading/writing data to a texture's memory.
|
|
58
|
+
*
|
|
59
|
+
* @note Due to alignment, GPU texture data is typically not contiguous.
|
|
60
|
+
*
|
|
61
|
+
* @note GPU texure data must be accessed according to this layout.
|
|
62
|
+
* - On CPU, only the range of rows that are actually read or written need to be allocated.
|
|
63
|
+
* - However, space for the full, padded/aligned rows must be allocated in the buffer,
|
|
64
|
+
* even if just a partial horizontal range `{x, width}` is actually read or written.
|
|
65
|
+
*
|
|
66
|
+
* @note byteLength = bytesPerRow * rowsPerImage * depthOrArrayLayers.
|
|
67
|
+
*/
|
|
68
|
+
export type TextureMemoryLayout = {
|
|
69
|
+
/** Total length in bytes */
|
|
70
|
+
byteLength: number;
|
|
71
|
+
/** Number of images */
|
|
72
|
+
depthOrArrayLayers: number;
|
|
73
|
+
/** Stride between successive images (Use when depthOrArrayLayers > 1) */
|
|
74
|
+
bytesPerImage: number;
|
|
75
|
+
/** Number of rows per image */
|
|
76
|
+
rowsPerImage: number;
|
|
77
|
+
/** Number of bytes per row (padded) */
|
|
78
|
+
bytesPerRow: number;
|
|
79
|
+
/** Number of bytes per pixel */
|
|
80
|
+
bytesPerPixel: number;
|
|
81
|
+
};
|
|
54
82
|
/**
|
|
55
83
|
* These represent the main compressed texture formats
|
|
56
84
|
* Each format typically has a number of more specific subformats
|
|
@@ -60,7 +88,7 @@ export type TextureCompression = 'dxt' | 'dxt-srgb' | 'etc1' | 'etc2' | 'pvrtc'
|
|
|
60
88
|
* Texture feature checks
|
|
61
89
|
* @note these must be a subset of DeviceFeatures.
|
|
62
90
|
*/
|
|
63
|
-
export type TextureFeature = 'texture-compression-bc' | 'texture-compression-astc' | 'texture-compression-etc2' | 'texture-compression-etc1-webgl' | 'texture-compression-pvrtc-webgl' | 'texture-compression-atc-webgl' | 'float32-renderable-webgl' | 'float16-renderable-webgl' | 'rgb9e5ufloat-renderable-webgl' | 'snorm8-renderable-webgl' | 'norm16-renderable-webgl' | 'snorm16-renderable-webgl' | 'float32-filterable' | 'float16-filterable-webgl';
|
|
91
|
+
export type TextureFeature = 'texture-compression-bc' | 'texture-compression-astc' | 'texture-compression-etc2' | 'texture-compression-etc1-webgl' | 'texture-compression-pvrtc-webgl' | 'texture-compression-atc-webgl' | 'float32-renderable-webgl' | 'float16-renderable-webgl' | 'rgb9e5ufloat-renderable-webgl' | 'snorm8-renderable-webgl' | 'norm16-webgl' | 'norm16-renderable-webgl' | 'snorm16-renderable-webgl' | 'float32-filterable' | 'float16-filterable-webgl';
|
|
64
92
|
/** Chrome-specific extensions. Expected to eventually become standard features. */
|
|
65
93
|
export type ChromeExperimentalTextureFeature = 'chromium-experimental-unorm16-texture-formats' | 'chromium-experimental-snorm16-texture-formats';
|
|
66
94
|
/** Texture formats */
|
|
@@ -70,21 +98,27 @@ export type TextureFormatDepthStencil = 'stencil8' | 'depth16unorm' | 'depth24pl
|
|
|
70
98
|
/** Texture formats for color attachments */
|
|
71
99
|
export type TextureFormatColor = TextureFormatColorUncompressed | TextureFormatCompressed;
|
|
72
100
|
export type TextureFormatColorUncompressed = TextureFormatUnorm8 | TextureFormatSnorm8 | TextureFormatUint8 | TextureFormatSint8 | TextureFormatUnorm16 | TextureFormatSnorm16 | TextureFormatUint16 | TextureFormatSint16 | TextureFormatFloat16 | TextureFormatUint32 | TextureFormatSint32 | TextureFormatFloat32 | TextureFormatPacked16 | TextureFormatPacked32;
|
|
73
|
-
type TextureFormatUnorm8 = 'r8unorm' | 'rg8unorm' | 'rgb8unorm-webgl' | 'rgba8unorm' | 'rgba8unorm-srgb' | 'bgra8unorm' | 'bgra8unorm-srgb';
|
|
74
|
-
type TextureFormatSnorm8 = 'r8snorm' | 'rg8snorm' | 'rgb8snorm-webgl' | 'rgba8snorm';
|
|
75
|
-
type TextureFormatUint8 = 'r8uint' | 'rg8uint' | 'rgba8uint';
|
|
76
|
-
type TextureFormatSint8 = 'r8sint' | 'rg8sint' | 'rgba8sint';
|
|
77
|
-
type TextureFormatUnorm16 = 'r16unorm' | 'rg16unorm' | 'rgb16unorm-webgl' | 'rgba16unorm';
|
|
78
|
-
type TextureFormatSnorm16 = 'r16snorm' | 'rg16snorm' | 'rgb16snorm-webgl' | 'rgba16snorm';
|
|
79
|
-
type TextureFormatUint16 = 'r16uint' | 'rg16uint' | 'rgba16uint';
|
|
80
|
-
type TextureFormatSint16 = 'r16sint' | 'rg16sint' | 'rgba16sint';
|
|
81
|
-
type TextureFormatFloat16 = 'r16float' | 'rg16float' | 'rgba16float';
|
|
82
|
-
type TextureFormatUint32 = 'r32uint' | 'rg32uint' | 'rgba32uint';
|
|
83
|
-
type TextureFormatSint32 = 'r32sint' | 'rg32sint' | 'rgba32sint';
|
|
84
|
-
type TextureFormatFloat32 = 'r32float' | 'rg32float' | 'rgb32float-webgl' | 'rgba32float';
|
|
85
|
-
type TextureFormatPacked16 = 'rgba4unorm-webgl' | 'rgb565unorm-webgl' | 'rgb5a1unorm-webgl';
|
|
86
|
-
type TextureFormatPacked32 = 'rgb9e5ufloat' | 'rg11b10ufloat' | 'rgb10a2unorm' | 'rgb10a2uint';
|
|
87
|
-
export type TextureFormatCompressed = 'bc1-rgb-unorm-webgl' | 'bc1-rgb-unorm-srgb-webgl' | 'pvrtc-rgb4unorm-webgl' | 'pvrtc-rgba4unorm-webgl' | 'pvrtc-
|
|
101
|
+
export type TextureFormatUnorm8 = 'r8unorm' | 'rg8unorm' | 'rgb8unorm-webgl' | 'rgba8unorm' | 'rgba8unorm-srgb' | 'bgra8unorm' | 'bgra8unorm-srgb';
|
|
102
|
+
export type TextureFormatSnorm8 = 'r8snorm' | 'rg8snorm' | 'rgb8snorm-webgl' | 'rgba8snorm';
|
|
103
|
+
export type TextureFormatUint8 = 'r8uint' | 'rg8uint' | 'rgba8uint';
|
|
104
|
+
export type TextureFormatSint8 = 'r8sint' | 'rg8sint' | 'rgba8sint';
|
|
105
|
+
export type TextureFormatUnorm16 = 'r16unorm' | 'rg16unorm' | 'rgb16unorm-webgl' | 'rgba16unorm';
|
|
106
|
+
export type TextureFormatSnorm16 = 'r16snorm' | 'rg16snorm' | 'rgb16snorm-webgl' | 'rgba16snorm';
|
|
107
|
+
export type TextureFormatUint16 = 'r16uint' | 'rg16uint' | 'rgba16uint';
|
|
108
|
+
export type TextureFormatSint16 = 'r16sint' | 'rg16sint' | 'rgba16sint';
|
|
109
|
+
export type TextureFormatFloat16 = 'r16float' | 'rg16float' | 'rgba16float';
|
|
110
|
+
export type TextureFormatUint32 = 'r32uint' | 'rg32uint' | 'rgba32uint';
|
|
111
|
+
export type TextureFormatSint32 = 'r32sint' | 'rg32sint' | 'rgba32sint';
|
|
112
|
+
export type TextureFormatFloat32 = 'r32float' | 'rg32float' | 'rgb32float-webgl' | 'rgba32float';
|
|
113
|
+
export type TextureFormatPacked16 = 'rgba4unorm-webgl' | 'rgb565unorm-webgl' | 'rgb5a1unorm-webgl';
|
|
114
|
+
export type TextureFormatPacked32 = 'rgb9e5ufloat' | 'rg11b10ufloat' | 'rgb10a2unorm' | 'rgb10a2uint';
|
|
115
|
+
export type TextureFormatCompressed = 'bc1-rgb-unorm-webgl' | 'bc1-rgb-unorm-srgb-webgl' | 'pvrtc-rgb4unorm-webgl' | 'pvrtc-rgba4unorm-webgl' | 'pvrtc-rgb2unorm-webgl' | 'pvrtc-rgba2unorm-webgl' | 'etc1-rbg-unorm-webgl' | 'atc-rgb-unorm-webgl' | 'atc-rgba-unorm-webgl' | 'atc-rgbai-unorm-webgl' | 'bc1-rgba-unorm' | 'bc1-rgba-unorm-srgb' | 'bc2-rgba-unorm' | 'bc2-rgba-unorm-srgb' | 'bc3-rgba-unorm' | 'bc3-rgba-unorm-srgb' | 'bc4-r-unorm' | 'bc4-r-snorm' | 'bc5-rg-unorm' | 'bc5-rg-snorm' | 'bc6h-rgb-ufloat' | 'bc6h-rgb-float' | 'bc7-rgba-unorm' | 'bc7-rgba-unorm-srgb' | 'etc2-rgb8unorm' | 'etc2-rgb8unorm-srgb' | 'etc2-rgb8a1unorm' | 'etc2-rgb8a1unorm-srgb' | 'etc2-rgba8unorm' | 'etc2-rgba8unorm-srgb' | 'eac-r11unorm' | 'eac-r11snorm' | 'eac-rg11unorm' | 'eac-rg11snorm' | 'astc-4x4-unorm' | 'astc-4x4-unorm-srgb' | 'astc-5x4-unorm' | 'astc-5x4-unorm-srgb' | 'astc-5x5-unorm' | 'astc-5x5-unorm-srgb' | 'astc-6x5-unorm' | 'astc-6x5-unorm-srgb' | 'astc-6x6-unorm' | 'astc-6x6-unorm-srgb' | 'astc-8x5-unorm' | 'astc-8x5-unorm-srgb' | 'astc-8x6-unorm' | 'astc-8x6-unorm-srgb' | 'astc-8x8-unorm' | 'astc-8x8-unorm-srgb' | 'astc-10x5-unorm' | 'astc-10x5-unorm-srgb' | 'astc-10x6-unorm' | 'astc-10x6-unorm-srgb' | 'astc-10x8-unorm' | 'astc-10x8-unorm-srgb' | 'astc-10x10-unorm' | 'astc-10x10-unorm-srgb' | 'astc-12x10-unorm' | 'astc-12x10-unorm-srgb' | 'astc-12x12-unorm' | 'astc-12x12-unorm-srgb';
|
|
116
|
+
export type CompressedTextureFormat = TextureFormatCompressed;
|
|
117
|
+
export type TextureFormatTypedArray<T extends TextureFormat> = DataTypeArray<TextureFormatDataType<T>>;
|
|
118
|
+
export type TextureFormatNormalizedTypedArray<T extends TextureFormat> = NormalizedDataTypeArray<TextureFormatDataType<T>>;
|
|
88
119
|
export type TextureFormatDataType<T extends TextureFormat> = T extends TextureFormatUint8 ? 'uint8' : T extends TextureFormatSint8 ? 'sint8' : T extends TextureFormatUnorm8 ? 'unorm8' : T extends TextureFormatSnorm8 ? 'snorm8' : T extends TextureFormatUint16 ? 'uint16' : T extends TextureFormatSint16 ? 'sint16' : T extends TextureFormatUnorm16 ? 'unorm16' : T extends TextureFormatSnorm16 ? 'snorm16' : T extends TextureFormatUint32 ? 'uint32' : T extends TextureFormatSint32 ? 'sint32' : T extends TextureFormatFloat16 ? 'float16' : T extends TextureFormatFloat32 ? 'float32' : T extends TextureFormatDepthStencil ? 'uint32' : T extends TextureFormatCompressed ? 'uint8' : T extends TextureFormatPacked16 ? 'uint16' : T extends TextureFormatPacked32 ? 'uint32' : never;
|
|
120
|
+
export type TextureFormatDataTypeT<T extends TextureFormat> = TextureFormatDataType<T>;
|
|
121
|
+
type DataTypeArray<T extends NormalizedDataType> = InstanceType<TypedArrayConstructorT<T>>;
|
|
122
|
+
type NormalizedDataTypeArray<T extends NormalizedDataType> = InstanceType<NormalizedTypedArrayConstructorT<T>>;
|
|
89
123
|
export {};
|
|
90
124
|
//# sourceMappingURL=texture-formats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-formats.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-formats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-formats.js","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-formats.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;;AA6UpC,eAAe;AAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoDE"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TypedArray } from '@math.gl/types';
|
|
2
|
+
import { type TextureFormat, type TextureMemoryLayout } from "./texture-formats.js";
|
|
3
|
+
export declare function getTextureImageView<T extends TextureFormat>(arrayBuffer: ArrayBuffer, memoryLayout: TextureMemoryLayout, format: T, image?: number): Uint8Array<ArrayBuffer> | Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer> | Float32Array<ArrayBuffer>;
|
|
4
|
+
export declare function setTextureImageData<T extends TextureFormat>(arrayBuffer: ArrayBuffer, memoryLayout: TextureMemoryLayout, format: T, data: TypedArray, image?: number): void;
|
|
5
|
+
//# sourceMappingURL=texture-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-layout.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAC,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAC,6BAA0B;AAG/E,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,aAAa,EACzD,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,mBAAmB,EACjC,MAAM,EAAE,CAAC,EACT,KAAK,SAAI,6GA8BV;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,aAAa,EACzD,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,mBAAmB,EACjC,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,UAAU,EAChB,KAAK,SAAI,GACR,IAAI,CASN"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { textureFormatDecoder } from "./texture-format-decoder.js";
|
|
5
|
+
export function getTextureImageView(arrayBuffer, memoryLayout, format, image = 0) {
|
|
6
|
+
const formatInfo = textureFormatDecoder.getInfo(format);
|
|
7
|
+
const bytesPerComponent = formatInfo.bytesPerPixel / formatInfo.components;
|
|
8
|
+
const { bytesPerImage } = memoryLayout;
|
|
9
|
+
const offset = bytesPerImage * image;
|
|
10
|
+
const totalPixels = memoryLayout.bytesPerImage / bytesPerComponent;
|
|
11
|
+
switch (format) {
|
|
12
|
+
case 'rgba8unorm':
|
|
13
|
+
case 'bgra8unorm':
|
|
14
|
+
case 'rgba8uint':
|
|
15
|
+
return new Uint8Array(arrayBuffer, offset, totalPixels);
|
|
16
|
+
case 'r8unorm':
|
|
17
|
+
return new Uint8Array(arrayBuffer, offset, totalPixels);
|
|
18
|
+
case 'r16uint':
|
|
19
|
+
case 'rgba16uint':
|
|
20
|
+
return new Uint16Array(arrayBuffer, offset, totalPixels);
|
|
21
|
+
case 'r32uint':
|
|
22
|
+
case 'rgba32uint':
|
|
23
|
+
return new Uint32Array(arrayBuffer, offset, totalPixels);
|
|
24
|
+
case 'r32float':
|
|
25
|
+
return new Float32Array(arrayBuffer, offset, totalPixels);
|
|
26
|
+
case 'rgba16float':
|
|
27
|
+
return new Uint16Array(arrayBuffer, offset, totalPixels); // 4 channels
|
|
28
|
+
case 'rgba32float':
|
|
29
|
+
return new Float32Array(arrayBuffer, offset, totalPixels);
|
|
30
|
+
default:
|
|
31
|
+
throw new Error(`Unsupported format: ${format}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function setTextureImageData(arrayBuffer, memoryLayout, format, data, image = 0) {
|
|
35
|
+
const offset = 0; // memoryLayout.bytesPerImage * image;
|
|
36
|
+
const totalPixels = memoryLayout.bytesPerImage / memoryLayout.bytesPerPixel;
|
|
37
|
+
const subArray = data.subarray(0, totalPixels);
|
|
38
|
+
const typedArray = getTextureImageView(arrayBuffer, memoryLayout, format, image);
|
|
39
|
+
typedArray.set(subArray, offset);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=texture-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-layout.js","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-layout.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,oBAAoB,EAAC,oCAAiC;AAE9D,MAAM,UAAU,mBAAmB,CACjC,WAAwB,EACxB,YAAiC,EACjC,MAAS,EACT,KAAK,GAAG,CAAC;IAET,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC;IAC3E,MAAM,EAAC,aAAa,EAAC,GAAG,YAAY,CAAC;IACrC,MAAM,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;IACrC,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,GAAG,iBAAiB,CAAC;IAEnE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1D,KAAK,SAAS;YACZ,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1D,KAAK,SAAS,CAAC;QACf,KAAK,YAAY;YACf,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3D,KAAK,SAAS,CAAC;QACf,KAAK,YAAY;YACf,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3D,KAAK,UAAU;YACb,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5D,KAAK,aAAa;YAChB,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa;QACzE,KAAK,aAAa;YAChB,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5D;YACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,WAAwB,EACxB,YAAiC,EACjC,MAAS,EACT,IAAgB,EAChB,KAAK,GAAG,CAAC;IAET,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,sCAAsC;IAExD,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAEjF,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { TypedArray } from "../../types.js";
|
|
2
|
+
import type { PrimitiveDataType, SignedDataType } from "../data-types/data-types.js";
|
|
3
|
+
import type { VertexFormat, VertexFormatInfo } from "./vertex-formats.js";
|
|
4
|
+
export declare class VertexFormatDecoder {
|
|
5
|
+
/**
|
|
6
|
+
* Decodes a vertex format, returning type, components, byte length and flags (integer, signed, normalized)
|
|
7
|
+
*/
|
|
8
|
+
getVertexFormatInfo<T extends VertexFormat = VertexFormat>(format: T): VertexFormatInfo<T>;
|
|
9
|
+
/** Build a vertex format from a signed data type and a component */
|
|
10
|
+
makeVertexFormat(signedDataType: SignedDataType, components: 1 | 2 | 3 | 4, normalized?: boolean): VertexFormat;
|
|
11
|
+
/** Get the vertex format for an attribute with TypedArray and size */
|
|
12
|
+
getVertexFormatFromAttribute(typedArray: TypedArray, size: number, normalized?: boolean): VertexFormat;
|
|
13
|
+
/**
|
|
14
|
+
* Return a "default" vertex format for a certain shader data type
|
|
15
|
+
* The simplest vertex format that matches the shader attribute's data type
|
|
16
|
+
*/
|
|
17
|
+
getCompatibleVertexFormat(opts: {
|
|
18
|
+
primitiveType: PrimitiveDataType;
|
|
19
|
+
components: 1 | 2 | 3 | 4;
|
|
20
|
+
}): VertexFormat;
|
|
21
|
+
}
|
|
22
|
+
/** Decoder for luma.gl vertex types */
|
|
23
|
+
export declare const vertexFormatDecoder: VertexFormatDecoder;
|
|
24
|
+
//# sourceMappingURL=vertex-format-decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vertex-format-decoder.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/vertex-types/vertex-format-decoder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,uBAAoB;AAC5C,OAAO,KAAK,EAAqB,iBAAiB,EAAE,cAAc,EAAC,oCAAiC;AACpG,OAAO,KAAK,EAAC,YAAY,EAAE,gBAAgB,EAAC,4BAAyB;AAGrE,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,mBAAmB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;IA2B1F,oEAAoE;IACpE,gBAAgB,CACd,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACzB,UAAU,CAAC,EAAE,OAAO,GACnB,YAAY;IAqCf,sEAAsE;IACtE,4BAA4B,CAC1B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,OAAO,GACnB,YAAY;IAUf;;;OAGG;IAEH,yBAAyB,CAAC,IAAI,EAAE;QAC9B,aAAa,EAAE,iBAAiB,CAAC;QACjC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3B,GAAG,YAAY;CAsBjB;AAED,uCAAuC;AACvC,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
|