@luma.gl/core 9.2.6 → 9.3.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/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 +193 -11
- package/dist/adapter/device.js.map +1 -1
- package/dist/adapter/luma.d.ts.map +1 -1
- package/dist/adapter/luma.js +2 -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 +2734 -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 +88 -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 +2447 -534
- 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 +4 -3
- 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 +110 -38
- 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 +12 -11
- 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 +144 -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 +311 -25
- package/src/adapter/luma.ts +1 -0
- 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 +157 -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 +4 -3
- 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 +167 -46
- package/src/shadertypes/{textures → texture-types}/texture-format-generics.ts +42 -48
- package/src/shadertypes/{textures → texture-types}/texture-format-table.ts +12 -11
- 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 +175 -0
- package/src/shadertypes/vertex-types/vertex-formats.ts +196 -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
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { alignTo } from "../data-types/decode-data-types.js";
|
|
5
|
+
import { getVariableShaderTypeInfo, resolveVariableShaderTypeAlias } from "./shader-type-decoder.js";
|
|
6
|
+
/**
|
|
7
|
+
* Builds a deterministic shader-block layout from composite shader type declarations.
|
|
8
|
+
*
|
|
9
|
+
* The returned value is pure layout metadata. It records the packed field
|
|
10
|
+
* offsets and exact packed byte length, but it does not allocate buffers or
|
|
11
|
+
* serialize values.
|
|
12
|
+
*/
|
|
13
|
+
export function makeShaderBlockLayout(uniformTypes, options = {}) {
|
|
14
|
+
const copiedUniformTypes = { ...uniformTypes };
|
|
15
|
+
const layout = options.layout ?? 'std140';
|
|
16
|
+
const fields = {};
|
|
17
|
+
let size = 0;
|
|
18
|
+
for (const [key, uniformType] of Object.entries(copiedUniformTypes)) {
|
|
19
|
+
size = addToLayout(fields, key, uniformType, size, layout);
|
|
20
|
+
}
|
|
21
|
+
size = alignTo(size, getTypeAlignment(copiedUniformTypes, layout));
|
|
22
|
+
return {
|
|
23
|
+
layout,
|
|
24
|
+
byteLength: size * 4,
|
|
25
|
+
uniformTypes: copiedUniformTypes,
|
|
26
|
+
fields
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Returns the layout metadata for a scalar, vector, or matrix leaf type.
|
|
31
|
+
*
|
|
32
|
+
* The result includes both the occupied size in 32-bit words and the alignment
|
|
33
|
+
* requirement that must be applied before placing the value in a shader block.
|
|
34
|
+
*/
|
|
35
|
+
export function getLeafLayoutInfo(type, layout) {
|
|
36
|
+
const resolvedType = resolveVariableShaderTypeAlias(type);
|
|
37
|
+
const decodedType = getVariableShaderTypeInfo(resolvedType);
|
|
38
|
+
const matrixMatch = /^mat(\d)x(\d)<.+>$/.exec(resolvedType);
|
|
39
|
+
if (matrixMatch) {
|
|
40
|
+
const columns = Number(matrixMatch[1]);
|
|
41
|
+
const rows = Number(matrixMatch[2]);
|
|
42
|
+
const columnInfo = getVectorLayoutInfo(rows, resolvedType, decodedType.type, layout);
|
|
43
|
+
const columnStride = getMatrixColumnStride(columnInfo.size, columnInfo.alignment, layout);
|
|
44
|
+
return {
|
|
45
|
+
alignment: columnInfo.alignment,
|
|
46
|
+
size: columns * columnStride,
|
|
47
|
+
components: columns * rows,
|
|
48
|
+
columns,
|
|
49
|
+
rows,
|
|
50
|
+
columnStride,
|
|
51
|
+
shaderType: resolvedType,
|
|
52
|
+
type: decodedType.type
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const vectorMatch = /^vec(\d)<.+>$/.exec(resolvedType);
|
|
56
|
+
if (vectorMatch) {
|
|
57
|
+
return getVectorLayoutInfo(Number(vectorMatch[1]), resolvedType, decodedType.type, layout);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
alignment: 1,
|
|
61
|
+
size: 1,
|
|
62
|
+
components: 1,
|
|
63
|
+
columns: 1,
|
|
64
|
+
rows: 1,
|
|
65
|
+
columnStride: 1,
|
|
66
|
+
shaderType: resolvedType,
|
|
67
|
+
type: decodedType.type
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Type guard for composite struct declarations.
|
|
72
|
+
*/
|
|
73
|
+
export function isCompositeShaderTypeStruct(value) {
|
|
74
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Recursively adds a composite type to the flattened field map.
|
|
78
|
+
*
|
|
79
|
+
* @returns The next free 32-bit-word offset after the inserted type.
|
|
80
|
+
*/
|
|
81
|
+
function addToLayout(fields, name, type, offset, layout) {
|
|
82
|
+
if (typeof type === 'string') {
|
|
83
|
+
const info = getLeafLayoutInfo(type, layout);
|
|
84
|
+
const alignedOffset = alignTo(offset, info.alignment);
|
|
85
|
+
fields[name] = {
|
|
86
|
+
offset: alignedOffset,
|
|
87
|
+
...info
|
|
88
|
+
};
|
|
89
|
+
return alignedOffset + info.size;
|
|
90
|
+
}
|
|
91
|
+
if (Array.isArray(type)) {
|
|
92
|
+
if (Array.isArray(type[0])) {
|
|
93
|
+
throw new Error(`Nested arrays are not supported for ${name}`);
|
|
94
|
+
}
|
|
95
|
+
const elementType = type[0];
|
|
96
|
+
const length = type[1];
|
|
97
|
+
const stride = getArrayStride(elementType, layout);
|
|
98
|
+
const arrayOffset = alignTo(offset, getTypeAlignment(type, layout));
|
|
99
|
+
for (let i = 0; i < length; i++) {
|
|
100
|
+
addToLayout(fields, `${name}[${i}]`, elementType, arrayOffset + i * stride, layout);
|
|
101
|
+
}
|
|
102
|
+
return arrayOffset + stride * length;
|
|
103
|
+
}
|
|
104
|
+
if (isCompositeShaderTypeStruct(type)) {
|
|
105
|
+
const structAlignment = getTypeAlignment(type, layout);
|
|
106
|
+
let structOffset = alignTo(offset, structAlignment);
|
|
107
|
+
for (const [memberName, memberType] of Object.entries(type)) {
|
|
108
|
+
structOffset = addToLayout(fields, `${name}.${memberName}`, memberType, structOffset, layout);
|
|
109
|
+
}
|
|
110
|
+
return alignTo(structOffset, structAlignment);
|
|
111
|
+
}
|
|
112
|
+
throw new Error(`Unsupported CompositeShaderType for ${name}`);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Returns the occupied size of a composite type in 32-bit words.
|
|
116
|
+
*/
|
|
117
|
+
function getTypeSize(type, layout) {
|
|
118
|
+
if (typeof type === 'string') {
|
|
119
|
+
return getLeafLayoutInfo(type, layout).size;
|
|
120
|
+
}
|
|
121
|
+
if (Array.isArray(type)) {
|
|
122
|
+
const elementType = type[0];
|
|
123
|
+
const length = type[1];
|
|
124
|
+
if (Array.isArray(elementType)) {
|
|
125
|
+
throw new Error('Nested arrays are not supported');
|
|
126
|
+
}
|
|
127
|
+
return getArrayStride(elementType, layout) * length;
|
|
128
|
+
}
|
|
129
|
+
let size = 0;
|
|
130
|
+
for (const memberType of Object.values(type)) {
|
|
131
|
+
const compositeMemberType = memberType;
|
|
132
|
+
size = alignTo(size, getTypeAlignment(compositeMemberType, layout));
|
|
133
|
+
size += getTypeSize(compositeMemberType, layout);
|
|
134
|
+
}
|
|
135
|
+
return alignTo(size, getTypeAlignment(type, layout));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Returns the required alignment of a composite type in 32-bit words.
|
|
139
|
+
*/
|
|
140
|
+
function getTypeAlignment(type, layout) {
|
|
141
|
+
if (typeof type === 'string') {
|
|
142
|
+
return getLeafLayoutInfo(type, layout).alignment;
|
|
143
|
+
}
|
|
144
|
+
if (Array.isArray(type)) {
|
|
145
|
+
const elementType = type[0];
|
|
146
|
+
const elementAlignment = getTypeAlignment(elementType, layout);
|
|
147
|
+
return uses16ByteArrayAlignment(layout)
|
|
148
|
+
? Math.max(elementAlignment, 4)
|
|
149
|
+
: elementAlignment;
|
|
150
|
+
}
|
|
151
|
+
let maxAlignment = 1;
|
|
152
|
+
for (const memberType of Object.values(type)) {
|
|
153
|
+
const memberAlignment = getTypeAlignment(memberType, layout);
|
|
154
|
+
maxAlignment = Math.max(maxAlignment, memberAlignment);
|
|
155
|
+
}
|
|
156
|
+
return uses16ByteStructAlignment(layout)
|
|
157
|
+
? Math.max(maxAlignment, 4)
|
|
158
|
+
: maxAlignment;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Returns the layout metadata for a vector leaf type.
|
|
162
|
+
*/
|
|
163
|
+
function getVectorLayoutInfo(components, shaderType, type, layout) {
|
|
164
|
+
return {
|
|
165
|
+
alignment: components === 2 ? 2 : 4,
|
|
166
|
+
size: components === 3 ? 3 : components,
|
|
167
|
+
components,
|
|
168
|
+
columns: 1,
|
|
169
|
+
rows: components,
|
|
170
|
+
columnStride: components === 3 ? 3 : components,
|
|
171
|
+
shaderType,
|
|
172
|
+
type
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Returns the stride of an array element in 32-bit words.
|
|
177
|
+
*
|
|
178
|
+
* This includes any layout-specific padding between adjacent array elements.
|
|
179
|
+
*/
|
|
180
|
+
function getArrayStride(elementType, layout) {
|
|
181
|
+
const elementSize = getTypeSize(elementType, layout);
|
|
182
|
+
const elementAlignment = getTypeAlignment(elementType, layout);
|
|
183
|
+
return getArrayLikeStride(elementSize, elementAlignment, layout);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Returns the common stride rule shared by array-like elements in the target layout.
|
|
187
|
+
*/
|
|
188
|
+
function getArrayLikeStride(size, alignment, layout) {
|
|
189
|
+
return alignTo(size, uses16ByteArrayAlignment(layout) ? 4 : alignment);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Returns the stride of a matrix column in 32-bit words.
|
|
193
|
+
*/
|
|
194
|
+
function getMatrixColumnStride(size, alignment, layout) {
|
|
195
|
+
return layout === 'std140' ? 4 : alignTo(size, alignment);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Returns `true` when arrays must be rounded up to 16-byte boundaries.
|
|
199
|
+
*/
|
|
200
|
+
function uses16ByteArrayAlignment(layout) {
|
|
201
|
+
return layout === 'std140' || layout === 'wgsl-uniform';
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Returns `true` when structs must be rounded up to 16-byte boundaries.
|
|
205
|
+
*/
|
|
206
|
+
function uses16ByteStructAlignment(layout) {
|
|
207
|
+
return layout === 'std140' || layout === 'wgsl-uniform';
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=shader-block-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader-block-layout.js","sourceRoot":"","sources":["../../../src/shadertypes/shader-types/shader-block-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type PrimitiveDataType } from "../data-types/data-types.js";
|
|
2
|
+
import { type VariableShaderType, type AttributeShaderType, type VariableShaderTypeAlias, type AttributeShaderTypeAlias } from "./shader-types.js";
|
|
3
|
+
/** Information extracted from a VariableShaderType constant */
|
|
4
|
+
export type VariableShaderTypeInfo = {
|
|
5
|
+
type: PrimitiveDataType;
|
|
6
|
+
components: number;
|
|
7
|
+
};
|
|
8
|
+
/** Information extracted from a AttributeShaderType constant */
|
|
9
|
+
export type AttributeShaderTypeInfo = {
|
|
10
|
+
/** WGSL-style primitive data type, f32, i32, u32 */
|
|
11
|
+
primitiveType: PrimitiveDataType;
|
|
12
|
+
/** Whether this is a normalized integer (that must be used as float) */
|
|
13
|
+
components: 1 | 2 | 3 | 4;
|
|
14
|
+
/** Length in bytes of the data for one vertex */
|
|
15
|
+
byteLength?: number;
|
|
16
|
+
/** Whether this is for integer or float vert */
|
|
17
|
+
integer: boolean;
|
|
18
|
+
/** Whether this data type is signed */
|
|
19
|
+
signed: boolean;
|
|
20
|
+
};
|
|
21
|
+
/** Split a uniform type string into type and components */
|
|
22
|
+
export declare function getVariableShaderTypeInfo(format: VariableShaderType | VariableShaderTypeAlias): VariableShaderTypeInfo;
|
|
23
|
+
/** Decodes a vertex type, returning byte length and flags (integer, signed, normalized) */
|
|
24
|
+
export declare function getAttributeShaderTypeInfo(attributeType: AttributeShaderType | AttributeShaderTypeAlias): AttributeShaderTypeInfo;
|
|
25
|
+
export declare class ShaderTypeDecoder {
|
|
26
|
+
getVariableShaderTypeInfo(format: VariableShaderType | VariableShaderTypeAlias): VariableShaderTypeInfo;
|
|
27
|
+
getAttributeShaderTypeInfo(attributeType: AttributeShaderType | AttributeShaderTypeAlias): AttributeShaderTypeInfo;
|
|
28
|
+
makeShaderAttributeType(primitiveType: PrimitiveDataType, components: 1 | 2 | 3 | 4): AttributeShaderType;
|
|
29
|
+
resolveAttributeShaderTypeAlias(alias: AttributeShaderTypeAlias | AttributeShaderType): AttributeShaderType;
|
|
30
|
+
resolveVariableShaderTypeAlias(alias: VariableShaderTypeAlias | VariableShaderType): VariableShaderType;
|
|
31
|
+
}
|
|
32
|
+
export declare function makeShaderAttributeType(primitiveType: PrimitiveDataType, components: 1 | 2 | 3 | 4): AttributeShaderType;
|
|
33
|
+
export declare function resolveAttributeShaderTypeAlias(alias: AttributeShaderTypeAlias | AttributeShaderType): AttributeShaderType;
|
|
34
|
+
export declare function resolveVariableShaderTypeAlias(alias: VariableShaderTypeAlias | VariableShaderType): VariableShaderType;
|
|
35
|
+
/** Decoder for luma.gl shader types */
|
|
36
|
+
export declare const shaderTypeDecoder: ShaderTypeDecoder;
|
|
37
|
+
/** Predeclared aliases @see https://www.w3.org/TR/WGSL/#vector-types */
|
|
38
|
+
export declare const WGSL_ATTRIBUTE_TYPE_ALIAS_MAP: Record<AttributeShaderTypeAlias, AttributeShaderType>;
|
|
39
|
+
/** @todo These tables are quite big, consider parsing alias strings instead */
|
|
40
|
+
export declare const WGSL_VARIABLE_TYPE_ALIAS_MAP: Record<VariableShaderTypeAlias, VariableShaderType>;
|
|
41
|
+
//# sourceMappingURL=shader-type-decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader-type-decoder.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/shader-types/shader-type-decoder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,iBAAiB,EAAC,oCAAiC;AAChE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC9B,0BAAuB;AAExB,+DAA+D;AAC/D,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,uBAAuB,GAAG;IACpC,oDAAoD;IACpD,aAAa,EAAE,iBAAiB,CAAC;IACjC,wEAAwE;IACxE,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,2DAA2D;AAC3D,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,kBAAkB,GAAG,uBAAuB,GACnD,sBAAsB,CAOxB;AAED,2FAA2F;AAC3F,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,mBAAmB,GAAG,wBAAwB,GAC5D,uBAAuB,CAkBzB;AAED,qBAAa,iBAAiB;IAC5B,yBAAyB,CACvB,MAAM,EAAE,kBAAkB,GAAG,uBAAuB,GACnD,sBAAsB;IAIzB,0BAA0B,CACxB,aAAa,EAAE,mBAAmB,GAAG,wBAAwB,GAC5D,uBAAuB;IAI1B,uBAAuB,CACrB,aAAa,EAAE,iBAAiB,EAChC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACxB,mBAAmB;IAItB,+BAA+B,CAC7B,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,GACpD,mBAAmB;IAItB,8BAA8B,CAC5B,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,GAClD,kBAAkB;CAGtB;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,iBAAiB,EAChC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACxB,mBAAmB,CAErB;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,GACpD,mBAAmB,CAErB;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,GAClD,kBAAkB,CAEpB;AAED,uCAAuC;AACvC,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AA6FzD,yEAAyE;AACzE,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,wBAAwB,EAAE,mBAAmB,CAe7F,CAAC;AAEJ,+EAA+E;AAC/E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,uBAAuB,EAAE,kBAAkB,CAoD5F,CAAC"}
|
package/dist/shadertypes/{data-types/decode-shader-types.js → shader-types/shader-type-decoder.js}
RENAMED
|
@@ -3,12 +3,21 @@
|
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
/** Split a uniform type string into type and components */
|
|
5
5
|
export function getVariableShaderTypeInfo(format) {
|
|
6
|
-
const
|
|
6
|
+
const resolvedFormat = resolveVariableShaderTypeAlias(format);
|
|
7
|
+
const decoded = UNIFORM_FORMATS[resolvedFormat];
|
|
8
|
+
if (!decoded) {
|
|
9
|
+
throw new Error(`Unsupported variable shader type: ${format}`);
|
|
10
|
+
}
|
|
7
11
|
return decoded;
|
|
8
12
|
}
|
|
9
13
|
/** Decodes a vertex type, returning byte length and flags (integer, signed, normalized) */
|
|
10
14
|
export function getAttributeShaderTypeInfo(attributeType) {
|
|
11
|
-
const
|
|
15
|
+
const resolvedAttributeType = resolveAttributeShaderTypeAlias(attributeType);
|
|
16
|
+
const decoded = TYPE_INFO[resolvedAttributeType];
|
|
17
|
+
if (!decoded) {
|
|
18
|
+
throw new Error(`Unsupported attribute shader type: ${attributeType}`);
|
|
19
|
+
}
|
|
20
|
+
const [primitiveType, components] = decoded;
|
|
12
21
|
const integer = primitiveType === 'i32' || primitiveType === 'u32';
|
|
13
22
|
const signed = primitiveType !== 'u32';
|
|
14
23
|
const byteLength = PRIMITIVE_TYPE_SIZES[primitiveType] * components;
|
|
@@ -20,6 +29,23 @@ export function getAttributeShaderTypeInfo(attributeType) {
|
|
|
20
29
|
signed
|
|
21
30
|
};
|
|
22
31
|
}
|
|
32
|
+
export class ShaderTypeDecoder {
|
|
33
|
+
getVariableShaderTypeInfo(format) {
|
|
34
|
+
return getVariableShaderTypeInfo(format);
|
|
35
|
+
}
|
|
36
|
+
getAttributeShaderTypeInfo(attributeType) {
|
|
37
|
+
return getAttributeShaderTypeInfo(attributeType);
|
|
38
|
+
}
|
|
39
|
+
makeShaderAttributeType(primitiveType, components) {
|
|
40
|
+
return makeShaderAttributeType(primitiveType, components);
|
|
41
|
+
}
|
|
42
|
+
resolveAttributeShaderTypeAlias(alias) {
|
|
43
|
+
return resolveAttributeShaderTypeAlias(alias);
|
|
44
|
+
}
|
|
45
|
+
resolveVariableShaderTypeAlias(alias) {
|
|
46
|
+
return resolveVariableShaderTypeAlias(alias);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
23
49
|
export function makeShaderAttributeType(primitiveType, components) {
|
|
24
50
|
return components === 1 ? primitiveType : `vec${components}<${primitiveType}>`;
|
|
25
51
|
}
|
|
@@ -29,6 +55,8 @@ export function resolveAttributeShaderTypeAlias(alias) {
|
|
|
29
55
|
export function resolveVariableShaderTypeAlias(alias) {
|
|
30
56
|
return WGSL_VARIABLE_TYPE_ALIAS_MAP[alias] || alias;
|
|
31
57
|
}
|
|
58
|
+
/** Decoder for luma.gl shader types */
|
|
59
|
+
export const shaderTypeDecoder = new ShaderTypeDecoder();
|
|
32
60
|
// TABLES
|
|
33
61
|
const PRIMITIVE_TYPE_SIZES = {
|
|
34
62
|
f32: 4,
|
|
@@ -130,7 +158,18 @@ export const WGSL_ATTRIBUTE_TYPE_ALIAS_MAP = {
|
|
|
130
158
|
};
|
|
131
159
|
/** @todo These tables are quite big, consider parsing alias strings instead */
|
|
132
160
|
export const WGSL_VARIABLE_TYPE_ALIAS_MAP = {
|
|
133
|
-
|
|
161
|
+
vec2i: 'vec2<i32>',
|
|
162
|
+
vec3i: 'vec3<i32>',
|
|
163
|
+
vec4i: 'vec4<i32>',
|
|
164
|
+
vec2u: 'vec2<u32>',
|
|
165
|
+
vec3u: 'vec3<u32>',
|
|
166
|
+
vec4u: 'vec4<u32>',
|
|
167
|
+
vec2f: 'vec2<f32>',
|
|
168
|
+
vec3f: 'vec3<f32>',
|
|
169
|
+
vec4f: 'vec4<f32>',
|
|
170
|
+
vec2h: 'vec2<f16>',
|
|
171
|
+
vec3h: 'vec3<f16>',
|
|
172
|
+
vec4h: 'vec4<f16>',
|
|
134
173
|
mat2x2f: 'mat2x2<f32>',
|
|
135
174
|
mat2x3f: 'mat2x3<f32>',
|
|
136
175
|
mat2x4f: 'mat2x4<f32>',
|
|
@@ -168,4 +207,4 @@ export const WGSL_VARIABLE_TYPE_ALIAS_MAP = {
|
|
|
168
207
|
mat4x3h: 'mat4x3<f16>',
|
|
169
208
|
mat4x4h: 'mat4x4<f16>'
|
|
170
209
|
};
|
|
171
|
-
//# sourceMappingURL=
|
|
210
|
+
//# sourceMappingURL=shader-type-decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader-type-decoder.js","sourceRoot":"","sources":["../../../src/shadertypes/shader-types/shader-type-decoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { PrimitiveDataType } from "../data-types/data-types.js";
|
|
2
|
+
/**
|
|
3
|
+
* @type the type of an attribute as defined in the shader source code.
|
|
4
|
+
* @note This is a subset of shader variable types
|
|
5
|
+
* @note Buffers with various `VertexFormat`s can be supplied for each type, GPU will convert them at runtime/
|
|
6
|
+
*/
|
|
7
|
+
export type AttributeShaderType = 'i32' | 'u32' | 'f32' | 'f16' | `vec2<${PrimitiveDataType}>` | `vec3<${PrimitiveDataType}>` | `vec4<${PrimitiveDataType}>`;
|
|
8
|
+
/**
|
|
9
|
+
* @type Describes the type of a variable that can declared in shader source code.
|
|
10
|
+
* @note Uniforms can be declared using these types
|
|
11
|
+
* @note Uniforms can be of a wider range of types than attributes.
|
|
12
|
+
* @note to WebGL users: "bindings" (textures, samplers, and uniform buffers) are considered "bindings", not shader variables/uniforms
|
|
13
|
+
*/
|
|
14
|
+
export type VariableShaderType = 'i32' | 'u32' | 'f32' | 'f16' | `vec2<${PrimitiveDataType}>` | `vec3<${PrimitiveDataType}>` | `vec4<${PrimitiveDataType}>` | `mat2x2<${PrimitiveDataType}>` | `mat2x3<${PrimitiveDataType}>` | `mat2x4<${PrimitiveDataType}>` | `mat3x2<${PrimitiveDataType}>` | `mat3x3<${PrimitiveDataType}>` | `mat3x4<${PrimitiveDataType}>` | `mat4x2<${PrimitiveDataType}>` | `mat4x3<${PrimitiveDataType}>` | `mat4x4<${PrimitiveDataType}>`;
|
|
15
|
+
/** @type A composite shader type can include structs and arrays, recursively */
|
|
16
|
+
export type CompositeShaderType = VariableShaderType | StructShaderType | ArrayShaderType;
|
|
17
|
+
/** @type Represents a struct in WGSL */
|
|
18
|
+
export type StructShaderType = {
|
|
19
|
+
[memberName: string]: CompositeShaderType;
|
|
20
|
+
};
|
|
21
|
+
/** @type Represents an array in WGSL */
|
|
22
|
+
export type ArrayShaderType = readonly [type: CompositeShaderType, length: number];
|
|
23
|
+
/** @type Shorthand type aliases recognized by WGSL */
|
|
24
|
+
export type AttributeShaderTypeAlias = keyof AttributeShaderTypeAliasMap;
|
|
25
|
+
/** @note work around for lack of type narrowing in conditional generics */
|
|
26
|
+
type AttributeShaderTypeAliasMap = {
|
|
27
|
+
vec2f: 'vec2<f32>';
|
|
28
|
+
vec3f: 'vec3<f32>';
|
|
29
|
+
vec4f: 'vec4<f32>';
|
|
30
|
+
vec2i: 'vec2<i32>';
|
|
31
|
+
vec3i: 'vec3<i32>';
|
|
32
|
+
vec4i: 'vec4<i32>';
|
|
33
|
+
vec2u: 'vec2<u32>';
|
|
34
|
+
vec3u: 'vec3<u32>';
|
|
35
|
+
vec4u: 'vec4<u32>';
|
|
36
|
+
vec2h: 'vec2<f16>';
|
|
37
|
+
vec3h: 'vec3<f16>';
|
|
38
|
+
vec4h: 'vec4<f16>';
|
|
39
|
+
};
|
|
40
|
+
/** @type Shorthand type aliases recognized by WGSL */
|
|
41
|
+
export type VariableShaderTypeAlias = keyof VariableShaderTypeAliasMap;
|
|
42
|
+
/** @note work around for lack of type narrowing in conditional generics */
|
|
43
|
+
type VariableShaderTypeAliasMap = {
|
|
44
|
+
vec2f: 'vec2<f32>';
|
|
45
|
+
vec3f: 'vec3<f32>';
|
|
46
|
+
vec4f: 'vec4<f32>';
|
|
47
|
+
vec2i: 'vec2<i32>';
|
|
48
|
+
vec3i: 'vec3<i32>';
|
|
49
|
+
vec4i: 'vec4<i32>';
|
|
50
|
+
vec2u: 'vec2<u32>';
|
|
51
|
+
vec3u: 'vec3<u32>';
|
|
52
|
+
vec4u: 'vec4<u32>';
|
|
53
|
+
vec2h: 'vec2<f16>';
|
|
54
|
+
vec3h: 'vec3<f16>';
|
|
55
|
+
vec4h: 'vec4<f16>';
|
|
56
|
+
mat2x2f: 'mat2x2<f32>';
|
|
57
|
+
mat2x3f: 'mat2x3<f32>';
|
|
58
|
+
mat2x4f: 'mat2x4<f32>';
|
|
59
|
+
mat3x2f: 'mat3x2<f32>';
|
|
60
|
+
mat3x3f: 'mat3x3<f32>';
|
|
61
|
+
mat3x4f: 'mat3x4<f32>';
|
|
62
|
+
mat4x2f: 'mat4x2<f32>';
|
|
63
|
+
mat4x3f: 'mat4x3<f32>';
|
|
64
|
+
mat4x4f: 'mat4x4<f32>';
|
|
65
|
+
mat2x2i: 'mat2x2<i32>';
|
|
66
|
+
mat2x3i: 'mat2x3<i32>';
|
|
67
|
+
mat2x4i: 'mat2x4<i32>';
|
|
68
|
+
mat3x2i: 'mat3x2<i32>';
|
|
69
|
+
mat3x3i: 'mat3x3<i32>';
|
|
70
|
+
mat3x4i: 'mat3x4<i32>';
|
|
71
|
+
mat4x2i: 'mat4x2<i32>';
|
|
72
|
+
mat4x3i: 'mat4x3<i32>';
|
|
73
|
+
mat4x4i: 'mat4x4<i32>';
|
|
74
|
+
mat2x2u: 'mat2x2<u32>';
|
|
75
|
+
mat2x3u: 'mat2x3<u32>';
|
|
76
|
+
mat2x4u: 'mat2x4<u32>';
|
|
77
|
+
mat3x2u: 'mat3x2<u32>';
|
|
78
|
+
mat3x3u: 'mat3x3<u32>';
|
|
79
|
+
mat3x4u: 'mat3x4<u32>';
|
|
80
|
+
mat4x2u: 'mat4x2<u32>';
|
|
81
|
+
mat4x3u: 'mat4x3<u32>';
|
|
82
|
+
mat4x4u: 'mat4x4<u32>';
|
|
83
|
+
mat2x2h: 'mat2x2<f16>';
|
|
84
|
+
mat2x3h: 'mat2x3<f16>';
|
|
85
|
+
mat2x4h: 'mat2x4<f16>';
|
|
86
|
+
mat3x2h: 'mat3x2<f16>';
|
|
87
|
+
mat3x3h: 'mat3x3<f16>';
|
|
88
|
+
mat3x4h: 'mat3x4<f16>';
|
|
89
|
+
mat4x2h: 'mat4x2<f16>';
|
|
90
|
+
mat4x3h: 'mat4x3<f16>';
|
|
91
|
+
mat4x4h: 'mat4x4<f16>';
|
|
92
|
+
};
|
|
93
|
+
/** @type The unaliased type */
|
|
94
|
+
export type AttributeShaderTypeT<T extends AttributeShaderTypeAlias | AttributeShaderType> = T extends AttributeShaderTypeAlias ? AttributeShaderTypeAliasMap[T] : T;
|
|
95
|
+
/** @type The unaliased type */
|
|
96
|
+
export type VariableShaderTypeT<T extends VariableShaderType | keyof VariableShaderTypeAliasMap> = T extends VariableShaderTypeAlias ? VariableShaderTypeAliasMap[T] : T;
|
|
97
|
+
type TypeOfAliasSuffix<T extends string> = T extends 'f' ? 'f32' : T extends 'i' ? 'i32' : T extends 'u' ? 'u32' : T extends 'h' ? 'f16' : never;
|
|
98
|
+
export type AttributeShaderTypeAliasT<T extends AttributeShaderTypeAlias> = T extends `vec2${infer S}` ? `vec2<${TypeOfAliasSuffix<S>}>` : T extends `vec3${infer S}` ? `vec3<${TypeOfAliasSuffix<S>}>` : T extends `vec4${infer S}` ? `vec4<${TypeOfAliasSuffix<S>}>` : never;
|
|
99
|
+
export type VariableShaderTypeAliasT<T extends VariableShaderTypeAlias> = T extends `vec2${infer S}` ? `vec2<${TypeOfAliasSuffix<S>}>` : T extends `vec3${infer S}` ? `vec3<${TypeOfAliasSuffix<S>}>` : T extends `vec4${infer S}` ? `vec4<${TypeOfAliasSuffix<S>}>` : T extends `mat2x2${infer S}` ? `mat2x2<${TypeOfAliasSuffix<S>}>` : T extends `mat2x3${infer S}` ? `mat2x3<${TypeOfAliasSuffix<S>}>` : T extends `mat2x4${infer S}` ? `mat2x4<${TypeOfAliasSuffix<S>}>` : T extends `mat3x2${infer S}` ? `mat3x2<${TypeOfAliasSuffix<S>}>` : T extends `mat3x3${infer S}` ? `mat3x3<${TypeOfAliasSuffix<S>}>` : T extends `mat3x4${infer S}` ? `mat3x4<${TypeOfAliasSuffix<S>}>` : T extends `mat4x2${infer S}` ? `mat4x2<${TypeOfAliasSuffix<S>}>` : T extends `mat4x3${infer S}` ? `mat4x3<${TypeOfAliasSuffix<S>}>` : T extends `mat4x4${infer S}` ? `mat4x4<${TypeOfAliasSuffix<S>}>` : never;
|
|
100
|
+
export {};
|
|
101
|
+
//# sourceMappingURL=shader-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader-types.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/shader-types/shader-types.ts"],"names":[],"mappings":"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,CAAC,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAChE,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAChE,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAChE,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAChE,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAChE,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAChE,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAChE,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAChE,CAAC,SAAS,SAAS,MAAM,CAAC,EAAE,GAAG,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAChE,KAAK,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
export {};
|
|
5
|
+
// : T extends `vec2<${infer S}>`
|
|
6
|
+
// ? `vec2<${S}>`
|
|
7
|
+
// : T extends `vec3<${infer S}>`
|
|
8
|
+
// ? `vec3<${S}>`
|
|
9
|
+
// : T extends `vec4<${infer S}>`
|
|
10
|
+
// ? `vec4<${S}>`
|
|
11
|
+
// : T extends `mat2x2<${infer S}>`
|
|
12
|
+
// ? `mat2x2<${S}>`
|
|
13
|
+
// : T extends `mat2x3<${infer S}>`
|
|
14
|
+
// ? `mat2x3<${S}>`
|
|
15
|
+
// : T extends `mat2x4<${infer S}>`
|
|
16
|
+
// ? `mat2x4<${S}>`
|
|
17
|
+
// : T extends `mat3x2<${infer S}>`
|
|
18
|
+
// ? `mat3x2<${S}>`
|
|
19
|
+
// : T extends `mat3x3<${infer S}>`
|
|
20
|
+
// ? `mat3x3<${S}>`
|
|
21
|
+
// : T extends `mat3x4<${infer S}>`
|
|
22
|
+
// ? `mat3x4<${S}>`
|
|
23
|
+
// : T extends `mat4x2<${infer S}>`
|
|
24
|
+
// ? `mat4x2<${S}>`
|
|
25
|
+
// : T extends `mat4x3<${infer S}>`
|
|
26
|
+
// ? `mat4x3<${S}>`
|
|
27
|
+
// : T extends `mat4x4<${infer S}>`
|
|
28
|
+
// ? `mat4x4<${S}>`
|
|
29
|
+
// : never;
|
|
30
|
+
//# sourceMappingURL=shader-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader-types.js","sourceRoot":"","sources":["../../../src/shadertypes/shader-types/shader-types.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;;AAoLpC,iCAAiC;AACjC,mBAAmB;AACnB,mCAAmC;AACnC,qBAAqB;AACrB,qCAAqC;AACrC,uBAAuB;AACvB,yCAAyC;AACzC,2BAA2B;AAC3B,2CAA2C;AAC3C,6BAA6B;AAC7B,6CAA6C;AAC7C,+BAA+B;AAC/B,+CAA+C;AAC/C,iCAAiC;AACjC,iDAAiD;AACjD,mCAAmC;AACnC,mDAAmD;AACnD,qCAAqC;AACrC,qDAAqD;AACrD,uCAAuC;AACvC,uDAAuD;AACvD,yCAAyC;AACzC,yDAAyD;AACzD,2CAA2C;AAC3C,mCAAmC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pixel-utils.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/pixel-utils.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG;IACtB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sNAAsN;IACtN,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BE;AAEF,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,EACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC/C,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CA6BlC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BE;AACF,wBAAgB,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACtC,IAAI,CAUN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CA0BR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAkCN"}
|
|
@@ -45,7 +45,7 @@ export function readPixel(pixelData, x, y, bitsPerChannel) {
|
|
|
45
45
|
const channels = [];
|
|
46
46
|
// Extract each of the four channels.
|
|
47
47
|
for (let i = 0; i < 4; i++) {
|
|
48
|
-
const bits = bitsPerChannel[i];
|
|
48
|
+
const bits = bitsPerChannel[i] ?? 0;
|
|
49
49
|
// If a channel's bit width is zero or negative, consider it not present.
|
|
50
50
|
if (bits <= 0) {
|
|
51
51
|
channels.push(0);
|
|
@@ -56,7 +56,7 @@ export function readPixel(pixelData, x, y, bitsPerChannel) {
|
|
|
56
56
|
bitOffsetWithinPixel += bits;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
return [channels[0], channels[1], channels[2], channels[3]];
|
|
59
|
+
return [channels[0] ?? 0, channels[1] ?? 0, channels[2] ?? 0, channels[3] ?? 0];
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Encodes an RGBA pixel into a DataView at a given bit offset according to a specified bit layout.
|
|
@@ -92,10 +92,10 @@ The dataView now contains the 16-bit packed pixel value in big-endian order.
|
|
|
92
92
|
export function writePixel(dataView, bitOffset, bitsPerChannel, pixel) {
|
|
93
93
|
let currentBitOffset = bitOffset;
|
|
94
94
|
for (let channel = 0; channel < 4; channel++) {
|
|
95
|
-
const bits = bitsPerChannel[channel];
|
|
95
|
+
const bits = bitsPerChannel[channel] ?? 0;
|
|
96
96
|
// Clamp the channel value to the maximum allowed by the bit width.
|
|
97
97
|
const maxValue = (1 << bits) - 1;
|
|
98
|
-
const channelValue = pixel[channel] & maxValue;
|
|
98
|
+
const channelValue = (pixel[channel] ?? 0) & maxValue;
|
|
99
99
|
writeBitsToDataView(dataView, currentBitOffset, bits, channelValue);
|
|
100
100
|
currentBitOffset += bits;
|
|
101
101
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pixel-utils.js","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/pixel-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { TextureFormat, TextureFormatCompressed, TextureFormatInfo, TextureFormatCapabilities, TextureFormatColor, TextureMemoryLayout, TextureFormatDepthStencil } from "./texture-formats.js";
|
|
2
|
+
/** Options to calculate a texture layout */
|
|
3
|
+
export type TextureMemoryLayoutOptions = {
|
|
4
|
+
/** Number of bytes per pixel */
|
|
5
|
+
format: TextureFormat;
|
|
6
|
+
/** Width of the texture in pixels */
|
|
7
|
+
width: number;
|
|
8
|
+
/** Height of the texture in pixels */
|
|
9
|
+
height: number;
|
|
10
|
+
/** Number of images in the texture */
|
|
11
|
+
depth: number;
|
|
12
|
+
/** Alignment of each row */
|
|
13
|
+
byteAlignment: number;
|
|
14
|
+
};
|
|
15
|
+
/** Class that helps applications work with texture formats */
|
|
16
|
+
export declare class TextureFormatDecoder {
|
|
17
|
+
/** Checks if a texture format is color */
|
|
18
|
+
isColor(format: TextureFormat): format is TextureFormatColor;
|
|
19
|
+
/** Checks if a texture format is depth or stencil */
|
|
20
|
+
isDepthStencil(format: TextureFormat): format is TextureFormatDepthStencil;
|
|
21
|
+
/** Checks if a texture format is compressed */
|
|
22
|
+
isCompressed(format: TextureFormat): format is TextureFormatCompressed;
|
|
23
|
+
/** Returns information about a texture format, e.g. attachment type, components, byte length and flags (integer, signed, normalized) */
|
|
24
|
+
getInfo(format: TextureFormat): TextureFormatInfo;
|
|
25
|
+
/** "static" capabilities of a texture format. @note Needs to be adjusted against current device */
|
|
26
|
+
getCapabilities(format: TextureFormat): TextureFormatCapabilities;
|
|
27
|
+
/** Computes the memory layout for a texture, in particular including row byte alignment */
|
|
28
|
+
computeMemoryLayout(opts: TextureMemoryLayoutOptions): TextureMemoryLayout;
|
|
29
|
+
}
|
|
30
|
+
/** Decoder for luma.gl texture types */
|
|
31
|
+
export declare const textureFormatDecoder: TextureFormatDecoder;
|
|
32
|
+
/**
|
|
33
|
+
* Decodes a texture format, returning e.g. attatchment type, components, byte length and flags (integer, signed, normalized)
|
|
34
|
+
*/
|
|
35
|
+
export declare function getTextureFormatInfo(format: TextureFormat): TextureFormatInfo;
|
|
36
|
+
//# sourceMappingURL=texture-format-decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-decoder.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/texture-types/texture-format-decoder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EAC1B,6BAA0B;AAa3B,4CAA4C;AAC5C,MAAM,MAAM,0BAA0B,GAAG;IACvC,gCAAgC;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,8DAA8D;AAC9D,qBAAa,oBAAoB;IAC/B,0CAA0C;IAC1C,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,IAAI,kBAAkB;IAI5D,qDAAqD;IACrD,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,IAAI,yBAAyB;IAI1E,+CAA+C;IAC/C,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,IAAI,uBAAuB;IAItE,wIAAwI;IACxI,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB;IAIjD,oGAAoG;IACpG,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,yBAAyB;IAIjE,2FAA2F;IAC3F,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,mBAAmB;CAG3E;AAED,wCAAwC;AACxC,eAAO,MAAM,oBAAoB,sBAA6B,CAAC;AAqE/D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAiE7E"}
|