@asciiz/atoolkit 0.1.0
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 +21 -0
- package/ReadMe.md +198 -0
- package/dist/acircuit/chip.d.ts +46 -0
- package/dist/acircuit/chip.d.ts.map +1 -0
- package/dist/acircuit/chip.js +104 -0
- package/dist/acircuit/chip.js.map +1 -0
- package/dist/acircuit/circuit.d.ts +86 -0
- package/dist/acircuit/circuit.d.ts.map +1 -0
- package/dist/acircuit/circuit.js +606 -0
- package/dist/acircuit/circuit.js.map +1 -0
- package/dist/acircuit/composite.d.ts +32 -0
- package/dist/acircuit/composite.d.ts.map +1 -0
- package/dist/acircuit/composite.js +88 -0
- package/dist/acircuit/composite.js.map +1 -0
- package/dist/acircuit/index.d.ts +7 -0
- package/dist/acircuit/index.d.ts.map +1 -0
- package/dist/acircuit/index.js +6 -0
- package/dist/acircuit/index.js.map +1 -0
- package/dist/acircuit/socket.d.ts +20 -0
- package/dist/acircuit/socket.d.ts.map +1 -0
- package/dist/acircuit/socket.js +23 -0
- package/dist/acircuit/socket.js.map +1 -0
- package/dist/acircuit/types.d.ts +94 -0
- package/dist/acircuit/types.d.ts.map +1 -0
- package/dist/acircuit/types.js +2 -0
- package/dist/acircuit/types.js.map +1 -0
- package/dist/acircuit/wire.d.ts +26 -0
- package/dist/acircuit/wire.d.ts.map +1 -0
- package/dist/acircuit/wire.js +23 -0
- package/dist/acircuit/wire.js.map +1 -0
- package/dist/adiag/bus.d.ts +65 -0
- package/dist/adiag/bus.d.ts.map +1 -0
- package/dist/adiag/bus.js +225 -0
- package/dist/adiag/bus.js.map +1 -0
- package/dist/adiag/index.d.ts +3 -0
- package/dist/adiag/index.d.ts.map +1 -0
- package/dist/adiag/index.js +2 -0
- package/dist/adiag/index.js.map +1 -0
- package/dist/aecs/ComponentSet.d.ts +33 -0
- package/dist/aecs/ComponentSet.d.ts.map +1 -0
- package/dist/aecs/ComponentSet.js +127 -0
- package/dist/aecs/ComponentSet.js.map +1 -0
- package/dist/aecs/Entity.d.ts +43 -0
- package/dist/aecs/Entity.d.ts.map +1 -0
- package/dist/aecs/Entity.js +82 -0
- package/dist/aecs/Entity.js.map +1 -0
- package/dist/aecs/FloatSet.d.ts +34 -0
- package/dist/aecs/FloatSet.d.ts.map +1 -0
- package/dist/aecs/FloatSet.js +147 -0
- package/dist/aecs/FloatSet.js.map +1 -0
- package/dist/aecs/Query.d.ts +90 -0
- package/dist/aecs/Query.d.ts.map +1 -0
- package/dist/aecs/Query.js +304 -0
- package/dist/aecs/Query.js.map +1 -0
- package/dist/aecs/index.d.ts +6 -0
- package/dist/aecs/index.d.ts.map +1 -0
- package/dist/aecs/index.js +6 -0
- package/dist/aecs/index.js.map +1 -0
- package/dist/aecs/join.d.ts +2 -0
- package/dist/aecs/join.d.ts.map +1 -0
- package/dist/aecs/join.js +2 -0
- package/dist/aecs/join.js.map +1 -0
- package/dist/alm/constants.d.ts +11 -0
- package/dist/alm/constants.d.ts.map +1 -0
- package/dist/alm/constants.js +17 -0
- package/dist/alm/constants.js.map +1 -0
- package/dist/alm/index.d.ts +9 -0
- package/dist/alm/index.d.ts.map +1 -0
- package/dist/alm/index.js +12 -0
- package/dist/alm/index.js.map +1 -0
- package/dist/alm/mat3.d.ts +63 -0
- package/dist/alm/mat3.d.ts.map +1 -0
- package/dist/alm/mat3.js +393 -0
- package/dist/alm/mat3.js.map +1 -0
- package/dist/alm/mat4.d.ts +157 -0
- package/dist/alm/mat4.d.ts.map +1 -0
- package/dist/alm/mat4.js +1448 -0
- package/dist/alm/mat4.js.map +1 -0
- package/dist/alm/quat.d.ts +89 -0
- package/dist/alm/quat.d.ts.map +1 -0
- package/dist/alm/quat.js +543 -0
- package/dist/alm/quat.js.map +1 -0
- package/dist/alm/spatial.d.ts +102 -0
- package/dist/alm/spatial.d.ts.map +1 -0
- package/dist/alm/spatial.js +389 -0
- package/dist/alm/spatial.js.map +1 -0
- package/dist/alm/vec2.d.ts +97 -0
- package/dist/alm/vec2.d.ts.map +1 -0
- package/dist/alm/vec2.js +369 -0
- package/dist/alm/vec2.js.map +1 -0
- package/dist/alm/vec3.d.ts +117 -0
- package/dist/alm/vec3.d.ts.map +1 -0
- package/dist/alm/vec3.js +547 -0
- package/dist/alm/vec3.js.map +1 -0
- package/dist/alm/vec4.d.ts +95 -0
- package/dist/alm/vec4.d.ts.map +1 -0
- package/dist/alm/vec4.js +452 -0
- package/dist/alm/vec4.js.map +1 -0
- package/dist/atempo/cadence.d.ts +58 -0
- package/dist/atempo/cadence.d.ts.map +1 -0
- package/dist/atempo/cadence.js +110 -0
- package/dist/atempo/cadence.js.map +1 -0
- package/dist/atempo/clip.d.ts +37 -0
- package/dist/atempo/clip.d.ts.map +1 -0
- package/dist/atempo/clip.js +92 -0
- package/dist/atempo/clip.js.map +1 -0
- package/dist/atempo/curve.d.ts +6 -0
- package/dist/atempo/curve.d.ts.map +1 -0
- package/dist/atempo/curve.js +2 -0
- package/dist/atempo/curve.js.map +1 -0
- package/dist/atempo/curves/bezier.d.ts +7 -0
- package/dist/atempo/curves/bezier.d.ts.map +1 -0
- package/dist/atempo/curves/bezier.js +46 -0
- package/dist/atempo/curves/bezier.js.map +1 -0
- package/dist/atempo/curves/bounce.d.ts +6 -0
- package/dist/atempo/curves/bounce.d.ts.map +1 -0
- package/dist/atempo/curves/bounce.js +22 -0
- package/dist/atempo/curves/bounce.js.map +1 -0
- package/dist/atempo/curves/cubic.d.ts +14 -0
- package/dist/atempo/curves/cubic.d.ts.map +1 -0
- package/dist/atempo/curves/cubic.js +22 -0
- package/dist/atempo/curves/cubic.js.map +1 -0
- package/dist/atempo/curves/elastic.d.ts +6 -0
- package/dist/atempo/curves/elastic.d.ts.map +1 -0
- package/dist/atempo/curves/elastic.js +12 -0
- package/dist/atempo/curves/elastic.js.map +1 -0
- package/dist/atempo/curves/expo.d.ts +14 -0
- package/dist/atempo/curves/expo.d.ts.map +1 -0
- package/dist/atempo/curves/expo.js +26 -0
- package/dist/atempo/curves/expo.js.map +1 -0
- package/dist/atempo/curves/holdSnap.d.ts +6 -0
- package/dist/atempo/curves/holdSnap.d.ts.map +1 -0
- package/dist/atempo/curves/holdSnap.js +15 -0
- package/dist/atempo/curves/holdSnap.js.map +1 -0
- package/dist/atempo/curves/index.d.ts +14 -0
- package/dist/atempo/curves/index.d.ts.map +1 -0
- package/dist/atempo/curves/index.js +14 -0
- package/dist/atempo/curves/index.js.map +1 -0
- package/dist/atempo/curves/linear.d.ts +6 -0
- package/dist/atempo/curves/linear.d.ts.map +1 -0
- package/dist/atempo/curves/linear.js +5 -0
- package/dist/atempo/curves/linear.js.map +1 -0
- package/dist/atempo/curves/overshoot.d.ts +6 -0
- package/dist/atempo/curves/overshoot.d.ts.map +1 -0
- package/dist/atempo/curves/overshoot.js +16 -0
- package/dist/atempo/curves/overshoot.js.map +1 -0
- package/dist/atempo/curves/quad.d.ts +14 -0
- package/dist/atempo/curves/quad.d.ts.map +1 -0
- package/dist/atempo/curves/quad.js +22 -0
- package/dist/atempo/curves/quad.js.map +1 -0
- package/dist/atempo/curves/step.d.ts +6 -0
- package/dist/atempo/curves/step.d.ts.map +1 -0
- package/dist/atempo/curves/step.js +11 -0
- package/dist/atempo/curves/step.js.map +1 -0
- package/dist/atempo/index.d.ts +17 -0
- package/dist/atempo/index.d.ts.map +1 -0
- package/dist/atempo/index.js +18 -0
- package/dist/atempo/index.js.map +1 -0
- package/dist/atempo/phase.d.ts +66 -0
- package/dist/atempo/phase.d.ts.map +1 -0
- package/dist/atempo/phase.js +121 -0
- package/dist/atempo/phase.js.map +1 -0
- package/dist/atempo/spring.d.ts +20 -0
- package/dist/atempo/spring.d.ts.map +1 -0
- package/dist/atempo/spring.js +71 -0
- package/dist/atempo/spring.js.map +1 -0
- package/dist/atempo/track.d.ts +69 -0
- package/dist/atempo/track.d.ts.map +1 -0
- package/dist/atempo/track.js +184 -0
- package/dist/atempo/track.js.map +1 -0
- package/dist/atempo/tracks/color.d.ts +20 -0
- package/dist/atempo/tracks/color.d.ts.map +1 -0
- package/dist/atempo/tracks/color.js +52 -0
- package/dist/atempo/tracks/color.js.map +1 -0
- package/dist/atempo/tracks/float.d.ts +9 -0
- package/dist/atempo/tracks/float.d.ts.map +1 -0
- package/dist/atempo/tracks/float.js +13 -0
- package/dist/atempo/tracks/float.js.map +1 -0
- package/dist/atempo/tracks/index.d.ts +8 -0
- package/dist/atempo/tracks/index.d.ts.map +1 -0
- package/dist/atempo/tracks/index.js +8 -0
- package/dist/atempo/tracks/index.js.map +1 -0
- package/dist/atempo/tracks/quat.d.ts +16 -0
- package/dist/atempo/tracks/quat.d.ts.map +1 -0
- package/dist/atempo/tracks/quat.js +72 -0
- package/dist/atempo/tracks/quat.js.map +1 -0
- package/dist/atempo/tracks/vec.d.ts +11 -0
- package/dist/atempo/tracks/vec.d.ts.map +1 -0
- package/dist/atempo/tracks/vec.js +27 -0
- package/dist/atempo/tracks/vec.js.map +1 -0
- package/dist/awasm/abi/index.d.ts +4 -0
- package/dist/awasm/abi/index.d.ts.map +1 -0
- package/dist/awasm/abi/index.js +4 -0
- package/dist/awasm/abi/index.js.map +1 -0
- package/dist/awasm/abi/layout.d.ts +40 -0
- package/dist/awasm/abi/layout.d.ts.map +1 -0
- package/dist/awasm/abi/layout.js +100 -0
- package/dist/awasm/abi/layout.js.map +1 -0
- package/dist/awasm/abi/slice.d.ts +28 -0
- package/dist/awasm/abi/slice.d.ts.map +1 -0
- package/dist/awasm/abi/slice.js +68 -0
- package/dist/awasm/abi/slice.js.map +1 -0
- package/dist/awasm/abi/string-buffer.d.ts +23 -0
- package/dist/awasm/abi/string-buffer.d.ts.map +1 -0
- package/dist/awasm/abi/string-buffer.js +52 -0
- package/dist/awasm/abi/string-buffer.js.map +1 -0
- package/dist/awasm/index.d.ts +5 -0
- package/dist/awasm/index.d.ts.map +1 -0
- package/dist/awasm/index.js +8 -0
- package/dist/awasm/index.js.map +1 -0
- package/dist/awasm/memory/block-pool.d.ts +31 -0
- package/dist/awasm/memory/block-pool.d.ts.map +1 -0
- package/dist/awasm/memory/block-pool.js +98 -0
- package/dist/awasm/memory/block-pool.js.map +1 -0
- package/dist/awasm/memory/index.d.ts +5 -0
- package/dist/awasm/memory/index.d.ts.map +1 -0
- package/dist/awasm/memory/index.js +5 -0
- package/dist/awasm/memory/index.js.map +1 -0
- package/dist/awasm/memory/linear-arena.d.ts +36 -0
- package/dist/awasm/memory/linear-arena.d.ts.map +1 -0
- package/dist/awasm/memory/linear-arena.js +94 -0
- package/dist/awasm/memory/linear-arena.js.map +1 -0
- package/dist/awasm/memory/memory-view.d.ts +51 -0
- package/dist/awasm/memory/memory-view.d.ts.map +1 -0
- package/dist/awasm/memory/memory-view.js +110 -0
- package/dist/awasm/memory/memory-view.js.map +1 -0
- package/dist/awasm/memory/wasm-memory.d.ts +40 -0
- package/dist/awasm/memory/wasm-memory.d.ts.map +1 -0
- package/dist/awasm/memory/wasm-memory.js +88 -0
- package/dist/awasm/memory/wasm-memory.js.map +1 -0
- package/dist/awasm/runtime/host-bridge.d.ts +30 -0
- package/dist/awasm/runtime/host-bridge.d.ts.map +1 -0
- package/dist/awasm/runtime/host-bridge.js +57 -0
- package/dist/awasm/runtime/host-bridge.js.map +1 -0
- package/dist/awasm/runtime/index.d.ts +5 -0
- package/dist/awasm/runtime/index.d.ts.map +1 -0
- package/dist/awasm/runtime/index.js +5 -0
- package/dist/awasm/runtime/index.js.map +1 -0
- package/dist/awasm/runtime/module-inspector.d.ts +32 -0
- package/dist/awasm/runtime/module-inspector.d.ts.map +1 -0
- package/dist/awasm/runtime/module-inspector.js +43 -0
- package/dist/awasm/runtime/module-inspector.js.map +1 -0
- package/dist/awasm/runtime/module-loader.d.ts +17 -0
- package/dist/awasm/runtime/module-loader.d.ts.map +1 -0
- package/dist/awasm/runtime/module-loader.js +99 -0
- package/dist/awasm/runtime/module-loader.js.map +1 -0
- package/dist/awasm/runtime/wasm-instance.d.ts +25 -0
- package/dist/awasm/runtime/wasm-instance.d.ts.map +1 -0
- package/dist/awasm/runtime/wasm-instance.js +60 -0
- package/dist/awasm/runtime/wasm-instance.js.map +1 -0
- package/dist/awasm/thread/atomic-queue.d.ts +33 -0
- package/dist/awasm/thread/atomic-queue.d.ts.map +1 -0
- package/dist/awasm/thread/atomic-queue.js +78 -0
- package/dist/awasm/thread/atomic-queue.js.map +1 -0
- package/dist/awasm/thread/index.d.ts +4 -0
- package/dist/awasm/thread/index.d.ts.map +1 -0
- package/dist/awasm/thread/index.js +4 -0
- package/dist/awasm/thread/index.js.map +1 -0
- package/dist/awasm/thread/shared-memory.d.ts +38 -0
- package/dist/awasm/thread/shared-memory.d.ts.map +1 -0
- package/dist/awasm/thread/shared-memory.js +74 -0
- package/dist/awasm/thread/shared-memory.js.map +1 -0
- package/dist/awasm/thread/worker-pool.d.ts +43 -0
- package/dist/awasm/thread/worker-pool.d.ts.map +1 -0
- package/dist/awasm/thread/worker-pool.js +118 -0
- package/dist/awasm/thread/worker-pool.js.map +1 -0
- package/dist/awgpu/binding.d.ts +108 -0
- package/dist/awgpu/binding.d.ts.map +1 -0
- package/dist/awgpu/binding.js +251 -0
- package/dist/awgpu/binding.js.map +1 -0
- package/dist/awgpu/device.d.ts +68 -0
- package/dist/awgpu/device.d.ts.map +1 -0
- package/dist/awgpu/device.js +150 -0
- package/dist/awgpu/device.js.map +1 -0
- package/dist/awgpu/graph.d.ts +77 -0
- package/dist/awgpu/graph.d.ts.map +1 -0
- package/dist/awgpu/graph.js +288 -0
- package/dist/awgpu/graph.js.map +1 -0
- package/dist/awgpu/index.d.ts +10 -0
- package/dist/awgpu/index.d.ts.map +1 -0
- package/dist/awgpu/index.js +19 -0
- package/dist/awgpu/index.js.map +1 -0
- package/dist/awgpu/memory.d.ts +231 -0
- package/dist/awgpu/memory.d.ts.map +1 -0
- package/dist/awgpu/memory.js +547 -0
- package/dist/awgpu/memory.js.map +1 -0
- package/dist/awgpu/pipeline.d.ts +114 -0
- package/dist/awgpu/pipeline.d.ts.map +1 -0
- package/dist/awgpu/pipeline.js +335 -0
- package/dist/awgpu/pipeline.js.map +1 -0
- package/dist/awgpu/sequence.d.ts +83 -0
- package/dist/awgpu/sequence.d.ts.map +1 -0
- package/dist/awgpu/sequence.js +273 -0
- package/dist/awgpu/sequence.js.map +1 -0
- package/dist/awgpu/state.d.ts +27 -0
- package/dist/awgpu/state.d.ts.map +1 -0
- package/dist/awgpu/state.js +43 -0
- package/dist/awgpu/state.js.map +1 -0
- package/dist/awgpu/stream.d.ts +57 -0
- package/dist/awgpu/stream.d.ts.map +1 -0
- package/dist/awgpu/stream.js +139 -0
- package/dist/awgpu/stream.js.map +1 -0
- package/dist/awgpu/target.d.ts +98 -0
- package/dist/awgpu/target.d.ts.map +1 -0
- package/dist/awgpu/target.js +357 -0
- package/dist/awgpu/target.js.map +1 -0
- package/dist/awgpu_old/buffer.d.ts +78 -0
- package/dist/awgpu_old/buffer.d.ts.map +1 -0
- package/dist/awgpu_old/buffer.js +220 -0
- package/dist/awgpu_old/buffer.js.map +1 -0
- package/dist/awgpu_old/device.d.ts +69 -0
- package/dist/awgpu_old/device.d.ts.map +1 -0
- package/dist/awgpu_old/device.js +121 -0
- package/dist/awgpu_old/device.js.map +1 -0
- package/dist/awgpu_old/frame.d.ts +17 -0
- package/dist/awgpu_old/frame.d.ts.map +1 -0
- package/dist/awgpu_old/frame.js +29 -0
- package/dist/awgpu_old/frame.js.map +1 -0
- package/dist/awgpu_old/index.d.ts +8 -0
- package/dist/awgpu_old/index.d.ts.map +1 -0
- package/dist/awgpu_old/index.js +18 -0
- package/dist/awgpu_old/index.js.map +1 -0
- package/dist/awgpu_old/layout.d.ts +70 -0
- package/dist/awgpu_old/layout.d.ts.map +1 -0
- package/dist/awgpu_old/layout.js +137 -0
- package/dist/awgpu_old/layout.js.map +1 -0
- package/dist/awgpu_old/pass.d.ts +97 -0
- package/dist/awgpu_old/pass.d.ts.map +1 -0
- package/dist/awgpu_old/pass.js +302 -0
- package/dist/awgpu_old/pass.js.map +1 -0
- package/dist/awgpu_old/pipeline.d.ts +73 -0
- package/dist/awgpu_old/pipeline.d.ts.map +1 -0
- package/dist/awgpu_old/pipeline.js +226 -0
- package/dist/awgpu_old/pipeline.js.map +1 -0
- package/dist/awgpu_old/target.d.ts +186 -0
- package/dist/awgpu_old/target.d.ts.map +1 -0
- package/dist/awgpu_old/target.js +428 -0
- package/dist/awgpu_old/target.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standardized 4-tier WebGPU bind group frequency slots.
|
|
3
|
+
*/
|
|
4
|
+
export var BindSlot;
|
|
5
|
+
(function (BindSlot) {
|
|
6
|
+
BindSlot[BindSlot["Pass"] = 0] = "Pass";
|
|
7
|
+
BindSlot[BindSlot["Phase"] = 1] = "Phase";
|
|
8
|
+
BindSlot[BindSlot["Material"] = 2] = "Material";
|
|
9
|
+
BindSlot[BindSlot["Instance"] = 3] = "Instance";
|
|
10
|
+
})(BindSlot || (BindSlot = {}));
|
|
11
|
+
/**
|
|
12
|
+
* Fluent builder for creating GPUBindGroupLayout descriptors.
|
|
13
|
+
*/
|
|
14
|
+
export class BindGroupLayoutBuilder {
|
|
15
|
+
entries = [];
|
|
16
|
+
addUniform(binding, visibility = GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, options = {}) {
|
|
17
|
+
this.entries.push({
|
|
18
|
+
binding,
|
|
19
|
+
visibility,
|
|
20
|
+
buffer: {
|
|
21
|
+
type: "uniform",
|
|
22
|
+
hasDynamicOffset: options.hasDynamicOffset ?? false,
|
|
23
|
+
minBindingSize: options.minBindingSize,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
addStorage(binding, visibility = GPUShaderStage.VERTEX | GPUShaderStage.COMPUTE, options = {}) {
|
|
29
|
+
const type = (options.readOnly ?? true) ? "read-only-storage" : "storage";
|
|
30
|
+
this.entries.push({
|
|
31
|
+
binding,
|
|
32
|
+
visibility,
|
|
33
|
+
buffer: {
|
|
34
|
+
type,
|
|
35
|
+
hasDynamicOffset: options.hasDynamicOffset ?? false,
|
|
36
|
+
minBindingSize: options.minBindingSize,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
addTexture(binding, visibility = GPUShaderStage.FRAGMENT, options = {}) {
|
|
42
|
+
this.entries.push({
|
|
43
|
+
binding,
|
|
44
|
+
visibility,
|
|
45
|
+
texture: {
|
|
46
|
+
sampleType: options.sampleType ?? "float",
|
|
47
|
+
viewDimension: options.viewDimension ?? "2d",
|
|
48
|
+
multisampled: options.multisampled ?? false,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
addStorageTexture(binding, format, visibility = GPUShaderStage.COMPUTE, options = {}) {
|
|
54
|
+
this.entries.push({
|
|
55
|
+
binding,
|
|
56
|
+
visibility,
|
|
57
|
+
storageTexture: {
|
|
58
|
+
access: options.access ?? "write-only",
|
|
59
|
+
format,
|
|
60
|
+
viewDimension: options.viewDimension ?? "2d",
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
addDepthTexture(binding, visibility = GPUShaderStage.FRAGMENT, options = {}) {
|
|
66
|
+
return this.addTexture(binding, visibility, {
|
|
67
|
+
sampleType: "depth",
|
|
68
|
+
viewDimension: options.viewDimension,
|
|
69
|
+
multisampled: options.multisampled,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
addSampler(binding, visibility = GPUShaderStage.FRAGMENT, optionsOrType = "filtering") {
|
|
73
|
+
const type = typeof optionsOrType === "object"
|
|
74
|
+
? (optionsOrType.comparison ? "comparison" : "filtering")
|
|
75
|
+
: optionsOrType;
|
|
76
|
+
this.entries.push({
|
|
77
|
+
binding,
|
|
78
|
+
visibility,
|
|
79
|
+
sampler: { type },
|
|
80
|
+
});
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
build(device, label = "BindGroupLayout") {
|
|
84
|
+
return device.createBindGroupLayout({
|
|
85
|
+
label,
|
|
86
|
+
entries: this.entries,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* GPU bind group wrapper tracking slot index and layout.
|
|
92
|
+
*/
|
|
93
|
+
export class BindGroup {
|
|
94
|
+
gpuBindGroup;
|
|
95
|
+
layout;
|
|
96
|
+
slot;
|
|
97
|
+
label;
|
|
98
|
+
constructor(gpuBindGroup, layout, slot = BindSlot.Pass, label = "BindGroup") {
|
|
99
|
+
this.gpuBindGroup = gpuBindGroup;
|
|
100
|
+
this.layout = layout;
|
|
101
|
+
this.slot = slot;
|
|
102
|
+
this.label = label;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Resolves resource wrappers into native GPUBindingResource descriptors.
|
|
106
|
+
*/
|
|
107
|
+
static resolveResource(res) {
|
|
108
|
+
if ("gpuBuffer" in res) {
|
|
109
|
+
return { buffer: res.gpuBuffer };
|
|
110
|
+
}
|
|
111
|
+
if ("gpuView" in res) {
|
|
112
|
+
return res.gpuView;
|
|
113
|
+
}
|
|
114
|
+
if ("gpuSampler" in res) {
|
|
115
|
+
return res.gpuSampler;
|
|
116
|
+
}
|
|
117
|
+
return res;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Factory: Creates GPUBindGroup from typed entries.
|
|
121
|
+
*/
|
|
122
|
+
static create(device, layout, entries, options = {}) {
|
|
123
|
+
const label = options.label ?? "BindGroup";
|
|
124
|
+
const slot = options.slot ?? BindSlot.Pass;
|
|
125
|
+
const resolvedEntries = entries.map((e) => ({
|
|
126
|
+
binding: e.binding,
|
|
127
|
+
resource: BindGroup.resolveResource(e.resource),
|
|
128
|
+
}));
|
|
129
|
+
const gpuBindGroup = device.createBindGroup({
|
|
130
|
+
label,
|
|
131
|
+
layout,
|
|
132
|
+
entries: resolvedEntries,
|
|
133
|
+
});
|
|
134
|
+
return new BindGroup(gpuBindGroup, layout, slot, label);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../awgpu_old/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { RenderTarget } from "./target.js";
|
|
2
|
+
import type { RenderPipeline, ComputePipeline } from "./pipeline.js";
|
|
3
|
+
import type { BindGroup } from "./layout.js";
|
|
4
|
+
import type { Buffer } from "./buffer.js";
|
|
5
|
+
export type DynamicOffsets = Iterable<number> | (Iterable<number> | undefined)[] | Record<number, Iterable<number>>;
|
|
6
|
+
export interface DrawCommand {
|
|
7
|
+
pipeline: RenderPipeline;
|
|
8
|
+
vertexBuffer?: GPUBuffer | Buffer | (GPUBuffer | Buffer)[];
|
|
9
|
+
indexBuffer?: GPUBuffer | Buffer;
|
|
10
|
+
indexFormat?: GPUIndexFormat;
|
|
11
|
+
indexCount?: number;
|
|
12
|
+
vertexCount?: number;
|
|
13
|
+
indexStart?: number;
|
|
14
|
+
vertexStart?: number;
|
|
15
|
+
instanceCount?: number;
|
|
16
|
+
firstInstance?: number;
|
|
17
|
+
bindGroups?: (GPUBindGroup | BindGroup | null | undefined)[];
|
|
18
|
+
dynamicOffsets?: DynamicOffsets;
|
|
19
|
+
}
|
|
20
|
+
export interface ComputeCommand {
|
|
21
|
+
pipeline: ComputePipeline;
|
|
22
|
+
workgroupsX: number;
|
|
23
|
+
workgroupsY?: number;
|
|
24
|
+
workgroupsZ?: number;
|
|
25
|
+
bindGroups?: (GPUBindGroup | BindGroup | null | undefined)[];
|
|
26
|
+
dynamicOffsets?: DynamicOffsets;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Encapsulates self-contained WebGPU render pass recording draw commands into target.
|
|
30
|
+
*/
|
|
31
|
+
export declare class Pass {
|
|
32
|
+
readonly name: string;
|
|
33
|
+
target: RenderTarget;
|
|
34
|
+
viewport?: {
|
|
35
|
+
x: number;
|
|
36
|
+
y: number;
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
minDepth?: number;
|
|
40
|
+
maxDepth?: number;
|
|
41
|
+
};
|
|
42
|
+
scissor?: {
|
|
43
|
+
x: number;
|
|
44
|
+
y: number;
|
|
45
|
+
width: number;
|
|
46
|
+
height: number;
|
|
47
|
+
};
|
|
48
|
+
drawCommands: DrawCommand[];
|
|
49
|
+
private _drawPool;
|
|
50
|
+
private _poolIndex;
|
|
51
|
+
private _customRecorder?;
|
|
52
|
+
constructor(name: string, target: RenderTarget);
|
|
53
|
+
addDraw(cmd: DrawCommand): this;
|
|
54
|
+
/**
|
|
55
|
+
* Acquires a pooled, reusable draw command to avoid per-frame heap allocations.
|
|
56
|
+
* Mutate returned command directly. Reused commands automatically append to drawCommands.
|
|
57
|
+
*/
|
|
58
|
+
acquireDraw(): DrawCommand;
|
|
59
|
+
/**
|
|
60
|
+
* Sets custom recording callback for direct hardware pass execution, bypassing drawCommands list.
|
|
61
|
+
*/
|
|
62
|
+
record(recorder: (pass: GPURenderPassEncoder) => void): this;
|
|
63
|
+
clearDraws(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Records render pass into active command encoder with redundant state filtering.
|
|
66
|
+
* Accepts optional custom recording callback overriding queued draw commands.
|
|
67
|
+
*/
|
|
68
|
+
execute(encoder: GPUCommandEncoder, customRecorder?: (pass: GPURenderPassEncoder) => void): void;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Encapsulates WebGPU compute pass executing compute dispatch commands.
|
|
72
|
+
*/
|
|
73
|
+
export declare class ComputePass {
|
|
74
|
+
readonly name: string;
|
|
75
|
+
commands: ComputeCommand[];
|
|
76
|
+
private _computePool;
|
|
77
|
+
private _poolIndex;
|
|
78
|
+
private _customRecorder?;
|
|
79
|
+
constructor(name: string);
|
|
80
|
+
addCompute(cmd: ComputeCommand): this;
|
|
81
|
+
/**
|
|
82
|
+
* Acquires a pooled, reusable compute command to avoid per-frame heap allocations.
|
|
83
|
+
* Mutate returned command directly. Reused commands automatically append to commands list.
|
|
84
|
+
*/
|
|
85
|
+
acquireCompute(): ComputeCommand;
|
|
86
|
+
/**
|
|
87
|
+
* Sets custom recording callback for direct hardware compute pass execution, bypassing commands list.
|
|
88
|
+
*/
|
|
89
|
+
record(recorder: (pass: GPUComputePassEncoder) => void): this;
|
|
90
|
+
clear(): void;
|
|
91
|
+
/**
|
|
92
|
+
* Records compute pass into active command encoder with redundant state filtering.
|
|
93
|
+
* Accepts optional custom recording callback overriding queued compute commands.
|
|
94
|
+
*/
|
|
95
|
+
execute(encoder: GPUCommandEncoder, customRecorder?: (pass: GPUComputePassEncoder) => void): void;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=pass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass.d.ts","sourceRoot":"","sources":["../../awgpu_old/pass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
function resolveGpuBuffer(buf) {
|
|
2
|
+
return "gpuBuffer" in buf ? buf.gpuBuffer : buf;
|
|
3
|
+
}
|
|
4
|
+
function resolveGpuBindGroup(bg) {
|
|
5
|
+
if (!bg)
|
|
6
|
+
return null;
|
|
7
|
+
return "gpuBindGroup" in bg ? bg.gpuBindGroup : bg;
|
|
8
|
+
}
|
|
9
|
+
function resolveDynamicOffsets(offsets, slot) {
|
|
10
|
+
if (!offsets)
|
|
11
|
+
return undefined;
|
|
12
|
+
if (Array.isArray(offsets)) {
|
|
13
|
+
if (offsets.length > 0 && (Array.isArray(offsets[0]) || ArrayBuffer.isView(offsets[0]))) {
|
|
14
|
+
return offsets[slot];
|
|
15
|
+
}
|
|
16
|
+
return offsets;
|
|
17
|
+
}
|
|
18
|
+
if (typeof offsets === "object" && !(Symbol.iterator in offsets)) {
|
|
19
|
+
return offsets[slot];
|
|
20
|
+
}
|
|
21
|
+
return offsets;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Encapsulates self-contained WebGPU render pass recording draw commands into target.
|
|
25
|
+
*/
|
|
26
|
+
export class Pass {
|
|
27
|
+
name;
|
|
28
|
+
target;
|
|
29
|
+
viewport;
|
|
30
|
+
scissor;
|
|
31
|
+
drawCommands = [];
|
|
32
|
+
_drawPool = [];
|
|
33
|
+
_poolIndex = 0;
|
|
34
|
+
_customRecorder;
|
|
35
|
+
constructor(name, target) {
|
|
36
|
+
this.name = name;
|
|
37
|
+
this.target = target;
|
|
38
|
+
}
|
|
39
|
+
addDraw(cmd) {
|
|
40
|
+
this.drawCommands.push(cmd);
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Acquires a pooled, reusable draw command to avoid per-frame heap allocations.
|
|
45
|
+
* Mutate returned command directly. Reused commands automatically append to drawCommands.
|
|
46
|
+
*/
|
|
47
|
+
acquireDraw() {
|
|
48
|
+
let cmd;
|
|
49
|
+
if (this._poolIndex < this._drawPool.length) {
|
|
50
|
+
cmd = this._drawPool[this._poolIndex++];
|
|
51
|
+
cmd.vertexBuffer = undefined;
|
|
52
|
+
cmd.indexBuffer = undefined;
|
|
53
|
+
cmd.indexFormat = undefined;
|
|
54
|
+
cmd.indexCount = undefined;
|
|
55
|
+
cmd.vertexCount = undefined;
|
|
56
|
+
cmd.indexStart = undefined;
|
|
57
|
+
cmd.vertexStart = undefined;
|
|
58
|
+
cmd.instanceCount = undefined;
|
|
59
|
+
cmd.firstInstance = undefined;
|
|
60
|
+
cmd.bindGroups = undefined;
|
|
61
|
+
cmd.dynamicOffsets = undefined;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
cmd = { pipeline: null };
|
|
65
|
+
this._drawPool.push(cmd);
|
|
66
|
+
this._poolIndex++;
|
|
67
|
+
}
|
|
68
|
+
this.drawCommands.push(cmd);
|
|
69
|
+
return cmd;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Sets custom recording callback for direct hardware pass execution, bypassing drawCommands list.
|
|
73
|
+
*/
|
|
74
|
+
record(recorder) {
|
|
75
|
+
this._customRecorder = recorder;
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
clearDraws() {
|
|
79
|
+
this.drawCommands.length = 0;
|
|
80
|
+
this._poolIndex = 0;
|
|
81
|
+
this._customRecorder = undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Records render pass into active command encoder with redundant state filtering.
|
|
85
|
+
* Accepts optional custom recording callback overriding queued draw commands.
|
|
86
|
+
*/
|
|
87
|
+
execute(encoder, customRecorder) {
|
|
88
|
+
const passDesc = this.target.buildPassDescriptor();
|
|
89
|
+
passDesc.label = `${this.name}_Encoder`;
|
|
90
|
+
const pass = encoder.beginRenderPass(passDesc);
|
|
91
|
+
if (this.viewport) {
|
|
92
|
+
pass.setViewport(this.viewport.x, this.viewport.y, this.viewport.width, this.viewport.height, this.viewport.minDepth ?? 0.0, this.viewport.maxDepth ?? 1.0);
|
|
93
|
+
}
|
|
94
|
+
if (this.scissor) {
|
|
95
|
+
pass.setScissorRect(this.scissor.x, this.scissor.y, this.scissor.width, this.scissor.height);
|
|
96
|
+
}
|
|
97
|
+
const recorder = customRecorder ?? this._customRecorder;
|
|
98
|
+
if (recorder) {
|
|
99
|
+
recorder(pass);
|
|
100
|
+
pass.end();
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// Redundant state filtering cache
|
|
104
|
+
let activePipeline = null;
|
|
105
|
+
let activeIbo = null;
|
|
106
|
+
const activeVbos = [];
|
|
107
|
+
const activeBindGroups = [null, null, null, null];
|
|
108
|
+
const activeOffsets = [null, null, null, null];
|
|
109
|
+
for (let i = 0; i < this.drawCommands.length; i++) {
|
|
110
|
+
const cmd = this.drawCommands[i];
|
|
111
|
+
// 1. Pipeline State
|
|
112
|
+
if (activePipeline !== cmd.pipeline.gpuPipeline) {
|
|
113
|
+
pass.setPipeline(cmd.pipeline.gpuPipeline);
|
|
114
|
+
activePipeline = cmd.pipeline.gpuPipeline;
|
|
115
|
+
}
|
|
116
|
+
// 2. Bind Groups (Slots 0 to 3)
|
|
117
|
+
if (cmd.bindGroups) {
|
|
118
|
+
for (let slot = 0; slot < cmd.bindGroups.length; slot++) {
|
|
119
|
+
const bg = resolveGpuBindGroup(cmd.bindGroups[slot]);
|
|
120
|
+
if (bg) {
|
|
121
|
+
const offsets = resolveDynamicOffsets(cmd.dynamicOffsets, slot);
|
|
122
|
+
if (offsets !== undefined) {
|
|
123
|
+
const offsetArray = Array.isArray(offsets) ? offsets : Array.from(offsets);
|
|
124
|
+
const prevOffsets = activeOffsets[slot];
|
|
125
|
+
let offsetsChanged = prevOffsets === null || prevOffsets.length !== offsetArray.length;
|
|
126
|
+
if (!offsetsChanged && prevOffsets !== null) {
|
|
127
|
+
for (let o = 0; o < offsetArray.length; o++) {
|
|
128
|
+
if (prevOffsets[o] !== offsetArray[o]) {
|
|
129
|
+
offsetsChanged = true;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (activeBindGroups[slot] !== bg || offsetsChanged) {
|
|
135
|
+
pass.setBindGroup(slot, bg, offsetArray);
|
|
136
|
+
activeBindGroups[slot] = bg;
|
|
137
|
+
activeOffsets[slot] = offsetArray;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else if (activeBindGroups[slot] !== bg || activeOffsets[slot] !== null) {
|
|
141
|
+
pass.setBindGroup(slot, bg);
|
|
142
|
+
activeBindGroups[slot] = bg;
|
|
143
|
+
activeOffsets[slot] = null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// 3. Vertex Buffers
|
|
149
|
+
if (cmd.vertexBuffer) {
|
|
150
|
+
if (Array.isArray(cmd.vertexBuffer)) {
|
|
151
|
+
for (let vSlot = 0; vSlot < cmd.vertexBuffer.length; vSlot++) {
|
|
152
|
+
const vbo = resolveGpuBuffer(cmd.vertexBuffer[vSlot]);
|
|
153
|
+
if (activeVbos[vSlot] !== vbo) {
|
|
154
|
+
pass.setVertexBuffer(vSlot, vbo);
|
|
155
|
+
activeVbos[vSlot] = vbo;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const vbo = resolveGpuBuffer(cmd.vertexBuffer);
|
|
161
|
+
if (activeVbos[0] !== vbo) {
|
|
162
|
+
pass.setVertexBuffer(0, vbo);
|
|
163
|
+
activeVbos[0] = vbo;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// 4. Index Buffer & Draw Execution
|
|
168
|
+
const instanceCount = cmd.instanceCount ?? 1;
|
|
169
|
+
const firstInstance = cmd.firstInstance ?? 0;
|
|
170
|
+
if (cmd.indexBuffer) {
|
|
171
|
+
const ibo = resolveGpuBuffer(cmd.indexBuffer);
|
|
172
|
+
const format = cmd.indexFormat ?? "uint16";
|
|
173
|
+
if (activeIbo !== ibo) {
|
|
174
|
+
pass.setIndexBuffer(ibo, format);
|
|
175
|
+
activeIbo = ibo;
|
|
176
|
+
}
|
|
177
|
+
const count = cmd.indexCount ?? 0;
|
|
178
|
+
const start = cmd.indexStart ?? 0;
|
|
179
|
+
if (count > 0) {
|
|
180
|
+
pass.drawIndexed(count, instanceCount, start, 0, firstInstance);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if (cmd.vertexCount !== undefined && cmd.vertexCount > 0) {
|
|
184
|
+
pass.draw(cmd.vertexCount, instanceCount, cmd.vertexStart ?? 0, firstInstance);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
pass.end();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Encapsulates WebGPU compute pass executing compute dispatch commands.
|
|
192
|
+
*/
|
|
193
|
+
export class ComputePass {
|
|
194
|
+
name;
|
|
195
|
+
commands = [];
|
|
196
|
+
_computePool = [];
|
|
197
|
+
_poolIndex = 0;
|
|
198
|
+
_customRecorder;
|
|
199
|
+
constructor(name) {
|
|
200
|
+
this.name = name;
|
|
201
|
+
}
|
|
202
|
+
addCompute(cmd) {
|
|
203
|
+
this.commands.push(cmd);
|
|
204
|
+
return this;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Acquires a pooled, reusable compute command to avoid per-frame heap allocations.
|
|
208
|
+
* Mutate returned command directly. Reused commands automatically append to commands list.
|
|
209
|
+
*/
|
|
210
|
+
acquireCompute() {
|
|
211
|
+
let cmd;
|
|
212
|
+
if (this._poolIndex < this._computePool.length) {
|
|
213
|
+
cmd = this._computePool[this._poolIndex++];
|
|
214
|
+
cmd.workgroupsX = 1;
|
|
215
|
+
cmd.workgroupsY = undefined;
|
|
216
|
+
cmd.workgroupsZ = undefined;
|
|
217
|
+
cmd.bindGroups = undefined;
|
|
218
|
+
cmd.dynamicOffsets = undefined;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
cmd = {
|
|
222
|
+
pipeline: null,
|
|
223
|
+
workgroupsX: 1,
|
|
224
|
+
};
|
|
225
|
+
this._computePool.push(cmd);
|
|
226
|
+
this._poolIndex++;
|
|
227
|
+
}
|
|
228
|
+
this.commands.push(cmd);
|
|
229
|
+
return cmd;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Sets custom recording callback for direct hardware compute pass execution, bypassing commands list.
|
|
233
|
+
*/
|
|
234
|
+
record(recorder) {
|
|
235
|
+
this._customRecorder = recorder;
|
|
236
|
+
return this;
|
|
237
|
+
}
|
|
238
|
+
clear() {
|
|
239
|
+
this.commands.length = 0;
|
|
240
|
+
this._poolIndex = 0;
|
|
241
|
+
this._customRecorder = undefined;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Records compute pass into active command encoder with redundant state filtering.
|
|
245
|
+
* Accepts optional custom recording callback overriding queued compute commands.
|
|
246
|
+
*/
|
|
247
|
+
execute(encoder, customRecorder) {
|
|
248
|
+
const pass = encoder.beginComputePass({
|
|
249
|
+
label: `${this.name}_ComputePass`,
|
|
250
|
+
});
|
|
251
|
+
const activeBindGroups = [null, null, null, null];
|
|
252
|
+
const activeOffsets = [null, null, null, null];
|
|
253
|
+
const recorder = customRecorder ?? this._customRecorder;
|
|
254
|
+
if (recorder) {
|
|
255
|
+
recorder(pass);
|
|
256
|
+
pass.end();
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
let activePipeline = null;
|
|
260
|
+
for (let i = 0; i < this.commands.length; i++) {
|
|
261
|
+
const cmd = this.commands[i];
|
|
262
|
+
if (activePipeline !== cmd.pipeline.gpuPipeline) {
|
|
263
|
+
pass.setPipeline(cmd.pipeline.gpuPipeline);
|
|
264
|
+
activePipeline = cmd.pipeline.gpuPipeline;
|
|
265
|
+
}
|
|
266
|
+
if (cmd.bindGroups) {
|
|
267
|
+
for (let slot = 0; slot < cmd.bindGroups.length; slot++) {
|
|
268
|
+
const bg = resolveGpuBindGroup(cmd.bindGroups[slot]);
|
|
269
|
+
if (bg) {
|
|
270
|
+
const offsets = resolveDynamicOffsets(cmd.dynamicOffsets, slot);
|
|
271
|
+
if (offsets) {
|
|
272
|
+
const offsetArray = Array.isArray(offsets) ? offsets : Array.from(offsets);
|
|
273
|
+
const prevOffsets = activeOffsets[slot];
|
|
274
|
+
let offsetsChanged = !prevOffsets || prevOffsets.length !== offsetArray.length;
|
|
275
|
+
if (!offsetsChanged && prevOffsets) {
|
|
276
|
+
for (let k = 0; k < offsetArray.length; k++) {
|
|
277
|
+
if (prevOffsets[k] !== offsetArray[k]) {
|
|
278
|
+
offsetsChanged = true;
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
if (activeBindGroups[slot] !== bg || offsetsChanged) {
|
|
284
|
+
pass.setBindGroup(slot, bg, offsetArray);
|
|
285
|
+
activeBindGroups[slot] = bg;
|
|
286
|
+
activeOffsets[slot] = offsetArray;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else if (activeBindGroups[slot] !== bg || activeOffsets[slot] !== null) {
|
|
290
|
+
pass.setBindGroup(slot, bg);
|
|
291
|
+
activeBindGroups[slot] = bg;
|
|
292
|
+
activeOffsets[slot] = null;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
pass.dispatchWorkgroups(cmd.workgroupsX, cmd.workgroupsY ?? 1, cmd.workgroupsZ ?? 1);
|
|
298
|
+
}
|
|
299
|
+
pass.end();
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=pass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass.js","sourceRoot":"","sources":["../../awgpu_old/pass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Bus } from "../adiag/index.js";
|
|
2
|
+
export interface VertexAttributeDesc {
|
|
3
|
+
shaderLocation: number;
|
|
4
|
+
format: GPUVertexFormat;
|
|
5
|
+
offset?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Derives GPUVertexBufferLayout with automatic cumulative offsets and 4-byte aligned arrayStride.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createVertexLayout(attributes: VertexAttributeDesc[], stepMode?: GPUVertexStepMode): GPUVertexBufferLayout;
|
|
11
|
+
export interface ShaderMessage {
|
|
12
|
+
type: "error" | "warning" | "info";
|
|
13
|
+
stage: "vertex" | "fragment" | "compute";
|
|
14
|
+
message: string;
|
|
15
|
+
lineNum: number;
|
|
16
|
+
linePos: number;
|
|
17
|
+
offset: number;
|
|
18
|
+
length: number;
|
|
19
|
+
}
|
|
20
|
+
export interface RenderPipelineDescriptor {
|
|
21
|
+
label?: string;
|
|
22
|
+
layout?: GPUPipelineLayout | "auto";
|
|
23
|
+
bindGroupLayouts?: (GPUBindGroupLayout | null | undefined)[];
|
|
24
|
+
vertex: {
|
|
25
|
+
code: string;
|
|
26
|
+
entryPoint?: string;
|
|
27
|
+
buffers?: GPUVertexBufferLayout[];
|
|
28
|
+
};
|
|
29
|
+
fragment?: {
|
|
30
|
+
code?: string;
|
|
31
|
+
entryPoint?: string;
|
|
32
|
+
targets: GPUColorTargetState[];
|
|
33
|
+
};
|
|
34
|
+
depthStencil?: GPUDepthStencilState;
|
|
35
|
+
primitive?: GPUPrimitiveState;
|
|
36
|
+
multisample?: GPUMultisampleState;
|
|
37
|
+
onShaderMessage?: (msg: ShaderMessage) => void;
|
|
38
|
+
diag?: Bus;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* WebGPU Render Pipeline wrapper supporting full shading as well as depth-only execution.
|
|
42
|
+
*/
|
|
43
|
+
export declare class RenderPipeline {
|
|
44
|
+
readonly gpuPipeline: GPURenderPipeline;
|
|
45
|
+
readonly label: string;
|
|
46
|
+
readonly hasFragmentStage: boolean;
|
|
47
|
+
constructor(gpuPipeline: GPURenderPipeline, hasFragmentStage: boolean, label?: string);
|
|
48
|
+
/**
|
|
49
|
+
* Factory: Compiles shaders and instantiates GPURenderPipeline.
|
|
50
|
+
*/
|
|
51
|
+
static create(device: GPUDevice, descriptor: RenderPipelineDescriptor): RenderPipeline;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* WebGPU Compute Pipeline wrapper for compute shaders.
|
|
55
|
+
*/
|
|
56
|
+
export declare class ComputePipeline {
|
|
57
|
+
readonly gpuPipeline: GPUComputePipeline;
|
|
58
|
+
readonly label: string;
|
|
59
|
+
constructor(gpuPipeline: GPUComputePipeline, label?: string);
|
|
60
|
+
/**
|
|
61
|
+
* Factory: Compiles compute shader and instantiates GPUComputePipeline.
|
|
62
|
+
*/
|
|
63
|
+
static create(device: GPUDevice, options: {
|
|
64
|
+
code: string;
|
|
65
|
+
entryPoint?: string;
|
|
66
|
+
layout?: GPUPipelineLayout | "auto";
|
|
67
|
+
bindGroupLayouts?: GPUBindGroupLayout[];
|
|
68
|
+
label?: string;
|
|
69
|
+
onShaderMessage?: (msg: ShaderMessage) => void;
|
|
70
|
+
diag?: Bus;
|
|
71
|
+
}): ComputePipeline;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../awgpu_old/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAgC7C,MAAM,WAAW,mBAAmB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,mBAAmB,EAAE,EACjC,QAAQ,GAAE,iBAA4B,GACvC,qBAAqB,CAuBvB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACnC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAwDD,MAAM,WAAW,wBAAwB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IACpC,gBAAgB,CAAC,EAAE,CAAC,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;IAC7D,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;KACrC,CAAC;IACF,QAAQ,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,mBAAmB,EAAE,CAAC;KAClC,CAAC;IACF,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,IAAI,CAAC,EAAE,GAAG,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,cAAc;IACvB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;gBAEvB,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,SAAmB;IAM/F;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,wBAAwB,GAAG,cAAc;CA+EzF;AAED;;GAEG;AACH,qBAAa,eAAe;IACxB,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,WAAW,EAAE,kBAAkB,EAAE,KAAK,SAAoB;IAKtE;;OAEG;IACH,MAAM,CAAC,MAAM,CACT,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;QACpC,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACxC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;QAC/C,IAAI,CAAC,EAAE,GAAG,CAAC;KACd,GACF,eAAe;CA6BrB"}
|