@luma.gl/webgl 9.0.0-alpha.29 → 9.0.0-alpha.30
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/LICENSE +2 -1
- package/dist/adapter/converters/device-parameters.d.ts +1 -1
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +1 -1
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/texture-formats.d.ts +1 -1
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +1 -1
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +4 -4
- package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/attribute-utils.js.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts +2 -2
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +1 -1
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +1 -1
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/uniforms.d.ts +1 -1
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
- package/dist/adapter/helpers/uniforms.js.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +1 -1
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +2 -2
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +1 -1
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +2 -2
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +1 -1
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts +2 -2
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +2 -2
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +3 -3
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +7 -3
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +2 -2
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +7 -8
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +1 -1
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +1 -1
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +4 -4
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +2 -2
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/webgl-canvas-context.d.ts +2 -2
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +1 -1
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +3 -3
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +1 -1
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.d.ts +1 -1
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +1 -1
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/buffer-with-accessor.d.ts +1 -1
- package/dist/classic/buffer-with-accessor.d.ts.map +1 -1
- package/dist/classic/buffer-with-accessor.js +1 -1
- package/dist/classic/buffer-with-accessor.js.map +1 -1
- package/dist/classic/clear.d.ts +1 -1
- package/dist/classic/clear.d.ts.map +1 -1
- package/dist/classic/clear.js +1 -1
- package/dist/classic/clear.js.map +1 -1
- package/dist/classic/copy-and-blit.d.ts +1 -1
- package/dist/classic/copy-and-blit.d.ts.map +1 -1
- package/dist/classic/copy-and-blit.js +1 -1
- package/dist/classic/copy-and-blit.js.map +1 -1
- package/dist/classic/format-utils.js +1 -1
- package/dist/classic/format-utils.js.map +1 -1
- package/dist/classic/typed-array-utils.d.ts +1 -1
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/webgl-checks.js +1 -1
- package/dist/context/context/webgl-checks.js.map +1 -1
- package/dist/context/debug/spector.js +1 -1
- package/dist/context/debug/spector.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +1 -1
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +1 -1
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +1 -1
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +1 -1
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts +1 -1
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/dist.dev.js +55 -37
- package/dist/index.cjs +185 -170
- package/dist/index.js.map +1 -1
- package/dist.min.js +4 -4
- package/package.json +5 -5
- package/src/adapter/converters/device-parameters.ts +1 -1
- package/src/adapter/converters/sampler-parameters.ts +1 -1
- package/src/adapter/converters/texture-formats.ts +2 -2
- package/src/adapter/converters/vertex-formats.ts +1 -1
- package/src/adapter/device-helpers/device-features.ts +1 -1
- package/src/adapter/device-helpers/device-limits.ts +1 -1
- package/src/adapter/device-helpers/get-device-info.ts +1 -1
- package/src/adapter/helpers/attribute-utils.ts +4 -4
- package/src/adapter/helpers/get-shader-layout.ts +3 -3
- package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
- package/src/adapter/helpers/set-uniform.ts +3 -4
- package/src/adapter/helpers/uniforms.ts +1 -1
- package/src/adapter/objects/constants-to-keys.ts +1 -1
- package/src/adapter/objects/webgl-renderbuffer.ts +1 -1
- package/src/adapter/objects/webgl-resource.ts +2 -2
- package/src/adapter/objects/webgl-vertex-array-object.ts +2 -2
- package/src/adapter/resources/webgl-buffer.ts +2 -2
- package/src/adapter/resources/webgl-command-buffer.ts +2 -2
- package/src/adapter/resources/webgl-command-encoder.ts +2 -2
- package/src/adapter/resources/webgl-framebuffer.ts +2 -2
- package/src/adapter/resources/webgl-render-pass.ts +9 -3
- package/src/adapter/resources/webgl-render-pipeline.ts +13 -8
- package/src/adapter/resources/webgl-sampler.ts +1 -1
- package/src/adapter/resources/webgl-shader.ts +1 -1
- package/src/adapter/resources/webgl-texture.ts +2 -2
- package/src/adapter/webgl-canvas-context.ts +2 -2
- package/src/adapter/webgl-device.ts +3 -3
- package/src/classic/accessor.ts +1 -1
- package/src/classic/buffer-with-accessor.ts +2 -2
- package/src/classic/clear.ts +1 -1
- package/src/classic/copy-and-blit.ts +1 -1
- package/src/classic/format-utils.ts +1 -1
- package/src/classic/typed-array-utils.ts +1 -1
- package/src/context/context/webgl-checks.ts +1 -1
- package/src/context/debug/spector.ts +1 -1
- package/src/context/debug/webgl-developer-tools.ts +1 -1
- package/src/context/parameters/unified-parameter-api.ts +1 -1
- package/src/context/polyfill/polyfill-context.ts +1 -1
- package/src/context/polyfill/polyfill-table.ts +1 -1
- package/src/context/state-tracker/track-context-state.ts +1 -1
- package/src/context/state-tracker/with-parameters.ts +1 -1
- package/src/index.ts +1 -1
- package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts +0 -12
- package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts.map +0 -1
- package/dist/adapter/helpers/get-vertex-buffer-layout.js +0 -84
- package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +0 -1
- package/src/adapter/helpers/get-vertex-buffer-layout.ts +0 -123
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import type {ShaderLayout, BufferMapping, AttributeLayout} from '@luma.gl/api';
|
|
2
|
-
import {decodeVertexFormat} from '@luma.gl/api';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Build a WebGPU vertex buffer layout intended for use in a GPURenderPassDescriptor.
|
|
6
|
-
* Converts luma.gl attribute definitions to a WebGPU GPUVertexBufferLayout[] array
|
|
7
|
-
* @param layout
|
|
8
|
-
* @param bufferMap The buffer map is optional
|
|
9
|
-
* @returns WebGPU layout intended for a GPURenderPassDescriptor.
|
|
10
|
-
*/
|
|
11
|
-
export function getVertexBufferLayout(layout: ShaderLayout, bufferMap: BufferMapping[]): GPUVertexBufferLayout[] {
|
|
12
|
-
const vertexBufferLayouts: GPUVertexBufferLayout[] = [];
|
|
13
|
-
const usedAttributes = new Set<string>();
|
|
14
|
-
|
|
15
|
-
// First handle any buffers mentioned in `bufferMapping`
|
|
16
|
-
for (const mapping of bufferMap) {
|
|
17
|
-
// Build vertex attributes for one buffer
|
|
18
|
-
const vertexAttributes: GPUVertexAttribute[] = [];
|
|
19
|
-
|
|
20
|
-
// TODO verify that all stepModes for one buffer are the same
|
|
21
|
-
let stepMode: 'vertex' | 'instance' = 'vertex';
|
|
22
|
-
let byteStride = 0;
|
|
23
|
-
const byteOffset = mapping.byteOffset || 0;
|
|
24
|
-
|
|
25
|
-
// interleaved mapping {..., attributes: [{...}, ...]}
|
|
26
|
-
if ('attributes' in mapping) {
|
|
27
|
-
// const arrayStride = mapping.byteStride; TODO
|
|
28
|
-
for (const interleaved of mapping.attributes) {
|
|
29
|
-
const attributeLayout = findAttributeLayout(layout, interleaved.name, usedAttributes);
|
|
30
|
-
|
|
31
|
-
stepMode = attributeLayout.stepMode || 'vertex';
|
|
32
|
-
vertexAttributes.push({
|
|
33
|
-
format: attributeLayout.format,
|
|
34
|
-
offset: byteOffset + byteStride,
|
|
35
|
-
shaderLocation: attributeLayout.location
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
byteStride += decodeVertexFormat(attributeLayout.format).byteLength;
|
|
39
|
-
}
|
|
40
|
-
// non-interleaved mapping (just set offset and stride)
|
|
41
|
-
} else {
|
|
42
|
-
const attributeLayout = findAttributeLayout(layout, mapping.name, usedAttributes);
|
|
43
|
-
byteStride = decodeVertexFormat(attributeLayout.format).byteLength;
|
|
44
|
-
|
|
45
|
-
stepMode = attributeLayout.stepMode || 'vertex';
|
|
46
|
-
vertexAttributes.push({
|
|
47
|
-
format: attributeLayout.format,
|
|
48
|
-
offset: byteOffset,
|
|
49
|
-
shaderLocation: attributeLayout.location
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Store all the attribute bindings for one buffer
|
|
54
|
-
vertexBufferLayouts.push({
|
|
55
|
-
arrayStride: mapping.byteStride || byteStride,
|
|
56
|
-
stepMode: stepMode || 'vertex',
|
|
57
|
-
attributes: vertexAttributes
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Add any non-mapped attributes
|
|
62
|
-
for (const attribute of layout.attributes) {
|
|
63
|
-
if (!usedAttributes.has(attribute.name)) {
|
|
64
|
-
vertexBufferLayouts.push({
|
|
65
|
-
arrayStride: decodeVertexFormat(attribute.format).byteLength,
|
|
66
|
-
stepMode: attribute.stepMode || 'vertex',
|
|
67
|
-
attributes: [{
|
|
68
|
-
format: attribute.format,
|
|
69
|
-
offset: 0,
|
|
70
|
-
shaderLocation: attribute.location
|
|
71
|
-
}]
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return vertexBufferLayouts;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export function getBufferSlots(layout: ShaderLayout, bufferMap: BufferMapping[]): Record<string, number> {
|
|
80
|
-
const usedAttributes = new Set<string>();
|
|
81
|
-
let bufferSlot = 0;
|
|
82
|
-
const bufferSlots: Record<string, number> = {};
|
|
83
|
-
|
|
84
|
-
// First handle any buffers mentioned in `bufferMapping`
|
|
85
|
-
for (const mapping of bufferMap) {
|
|
86
|
-
// interleaved mapping {..., attributes: [{...}, ...]}
|
|
87
|
-
if ('attributes' in mapping) {
|
|
88
|
-
for (const interleaved of mapping.attributes) {
|
|
89
|
-
usedAttributes.add(interleaved.name);
|
|
90
|
-
}
|
|
91
|
-
// non-interleaved mapping (just set offset and stride)
|
|
92
|
-
} else {
|
|
93
|
-
usedAttributes.add(mapping.name);
|
|
94
|
-
}
|
|
95
|
-
bufferSlots[mapping.name] = bufferSlot++;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// Add any non-mapped attributes
|
|
99
|
-
for (const attribute of layout.attributes) {
|
|
100
|
-
if (!usedAttributes.has(attribute.name)) {
|
|
101
|
-
bufferSlots[attribute.name] = bufferSlot++;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return bufferSlots;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Looks up an attribute in the ShaderLayout.
|
|
110
|
-
* @throws if name is not in ShaderLayout
|
|
111
|
-
* @throws if name has already been referenced
|
|
112
|
-
*/
|
|
113
|
-
function findAttributeLayout(layout: ShaderLayout, name: string, attributeNames: Set<string>): AttributeLayout {
|
|
114
|
-
const attribute = layout.attributes.find(attribute => attribute.name === name);
|
|
115
|
-
if (!attribute) {
|
|
116
|
-
throw new Error(`Unknown attribute ${name}`);
|
|
117
|
-
}
|
|
118
|
-
if (attributeNames.has(name)) {
|
|
119
|
-
throw new Error(`Duplicate attribute ${name}`);
|
|
120
|
-
}
|
|
121
|
-
attributeNames.add(name);
|
|
122
|
-
return attribute;
|
|
123
|
-
}
|