@aardworx/wombat.rendering 0.9.13 → 0.9.15
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/runtime/derivedModes/modeKeyCpu.d.ts +45 -0
- package/dist/runtime/derivedModes/modeKeyCpu.d.ts.map +1 -0
- package/dist/runtime/derivedModes/modeKeyCpu.js +179 -0
- package/dist/runtime/derivedModes/modeKeyCpu.js.map +1 -0
- package/dist/runtime/derivedModes/partition.d.ts +36 -0
- package/dist/runtime/derivedModes/partition.d.ts.map +1 -0
- package/dist/runtime/derivedModes/partition.js +170 -0
- package/dist/runtime/derivedModes/partition.js.map +1 -0
- package/dist/runtime/derivedModes/slotTable.d.ts +70 -0
- package/dist/runtime/derivedModes/slotTable.d.ts.map +1 -0
- package/dist/runtime/derivedModes/slotTable.js +130 -0
- package/dist/runtime/derivedModes/slotTable.js.map +1 -0
- package/dist/runtime/derivedUniforms/marker.d.ts +11 -3
- package/dist/runtime/derivedUniforms/marker.d.ts.map +1 -1
- package/dist/runtime/derivedUniforms/marker.js +10 -5
- package/dist/runtime/derivedUniforms/marker.js.map +1 -1
- package/dist/runtime/heapScene/growBuffer.d.ts +33 -0
- package/dist/runtime/heapScene/growBuffer.d.ts.map +1 -0
- package/dist/runtime/heapScene/growBuffer.js +76 -0
- package/dist/runtime/heapScene/growBuffer.js.map +1 -0
- package/dist/runtime/heapScene/packers.d.ts +25 -0
- package/dist/runtime/heapScene/packers.d.ts.map +1 -0
- package/dist/runtime/heapScene/packers.js +111 -0
- package/dist/runtime/heapScene/packers.js.map +1 -0
- package/dist/runtime/heapScene/pools.d.ts +181 -0
- package/dist/runtime/heapScene/pools.d.ts.map +1 -0
- package/dist/runtime/heapScene/pools.js +417 -0
- package/dist/runtime/heapScene/pools.js.map +1 -0
- package/dist/runtime/heapScene/scanKernel.d.ts +11 -0
- package/dist/runtime/heapScene/scanKernel.d.ts.map +1 -0
- package/dist/runtime/heapScene/scanKernel.js +181 -0
- package/dist/runtime/heapScene/scanKernel.js.map +1 -0
- package/dist/runtime/heapScene.d.ts.map +1 -1
- package/dist/runtime/heapScene.js +228 -937
- package/dist/runtime/heapScene.js.map +1 -1
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +5 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/pipelineCache/bitfield.d.ts +5 -0
- package/dist/runtime/pipelineCache/bitfield.d.ts.map +1 -0
- package/dist/runtime/pipelineCache/bitfield.js +201 -0
- package/dist/runtime/pipelineCache/bitfield.js.map +1 -0
- package/dist/runtime/pipelineCache/cache.d.ts +36 -0
- package/dist/runtime/pipelineCache/cache.d.ts.map +1 -0
- package/dist/runtime/pipelineCache/cache.js +108 -0
- package/dist/runtime/pipelineCache/cache.js.map +1 -0
- package/dist/runtime/pipelineCache/descriptor.d.ts +58 -0
- package/dist/runtime/pipelineCache/descriptor.d.ts.map +1 -0
- package/dist/runtime/pipelineCache/descriptor.js +100 -0
- package/dist/runtime/pipelineCache/descriptor.js.map +1 -0
- package/dist/runtime/pipelineCache/index.d.ts +5 -0
- package/dist/runtime/pipelineCache/index.d.ts.map +1 -0
- package/dist/runtime/pipelineCache/index.js +12 -0
- package/dist/runtime/pipelineCache/index.js.map +1 -0
- package/package.json +1 -1
- package/src/runtime/derivedModes/modeKeyCpu.ts +213 -0
- package/src/runtime/derivedModes/partition.ts +206 -0
- package/src/runtime/derivedModes/slotTable.ts +153 -0
- package/src/runtime/derivedUniforms/marker.ts +19 -6
- package/src/runtime/heapScene/growBuffer.ts +75 -0
- package/src/runtime/heapScene/packers.ts +127 -0
- package/src/runtime/heapScene/pools.ts +492 -0
- package/src/runtime/heapScene/scanKernel.ts +184 -0
- package/src/runtime/heapScene.ts +283 -1064
- package/src/runtime/index.ts +40 -0
- package/src/runtime/pipelineCache/bitfield.ts +225 -0
- package/src/runtime/pipelineCache/cache.ts +129 -0
- package/src/runtime/pipelineCache/descriptor.ts +150 -0
- package/src/runtime/pipelineCache/index.ts +37 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// Megacall GPU prefix-sum compute shader + record-layout constants.
|
|
2
|
+
//
|
|
3
|
+
// Four-pass scan over the bucket's drawTable:
|
|
4
|
+
// 1. scanTile — per-tile Blelloch scan, writes per-tile sums
|
|
5
|
+
// 2. scanBlocks — exclusive scan over the per-tile sums →
|
|
6
|
+
// tile offsets + total emit count
|
|
7
|
+
// 3. addOffsets — add tile offsets back into per-record
|
|
8
|
+
// firstEmit values
|
|
9
|
+
// 4. buildTileIndex — per-tile binary-search-fold for the VS
|
|
10
|
+
// prelude (mapping vertex_index → drawIdx)
|
|
11
|
+
//
|
|
12
|
+
// All four entry points share one WGSL module + one binding layout
|
|
13
|
+
// (defined below). The host runs them in sequence with the same bind
|
|
14
|
+
// group; only the dispatch shape and entry point change per pass.
|
|
15
|
+
export const SCAN_TILE_SIZE = 512;
|
|
16
|
+
export const SCAN_WG_SIZE = 256;
|
|
17
|
+
/** numBlocks ≤ TILE_SIZE — single-pass blockOffsets fits in shared memory. */
|
|
18
|
+
export const SCAN_MAX_RECORDS = SCAN_TILE_SIZE * SCAN_TILE_SIZE;
|
|
19
|
+
/** Tile size for the firstDrawInTile binary-search-fold index. */
|
|
20
|
+
export const TILE_K = 64;
|
|
21
|
+
/** drawTable record width: (firstEmit, drawIdx, indexStart, indexCount, instanceCount). */
|
|
22
|
+
export const RECORD_U32 = 5;
|
|
23
|
+
export const RECORD_BYTES = RECORD_U32 * 4;
|
|
24
|
+
export const HEAP_SCAN_WGSL = `
|
|
25
|
+
struct Params {
|
|
26
|
+
numRecords: u32,
|
|
27
|
+
numBlocks: u32,
|
|
28
|
+
_pad0: u32,
|
|
29
|
+
_pad1: u32,
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
struct Record {
|
|
33
|
+
firstEmit: u32,
|
|
34
|
+
drawIdx: u32,
|
|
35
|
+
indexStart: u32,
|
|
36
|
+
indexCount: u32,
|
|
37
|
+
instanceCount: u32,
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
@group(0) @binding(0) var<storage, read_write> drawTable: array<Record>;
|
|
41
|
+
@group(0) @binding(1) var<storage, read_write> blockSums: array<u32>;
|
|
42
|
+
@group(0) @binding(2) var<storage, read_write> blockOffsets: array<u32>;
|
|
43
|
+
@group(0) @binding(3) var<storage, read_write> indirect: array<u32>;
|
|
44
|
+
@group(0) @binding(4) var<uniform> params: Params;
|
|
45
|
+
@group(0) @binding(5) var<storage, read_write> firstDrawInTile: array<u32>;
|
|
46
|
+
|
|
47
|
+
const TILE_SIZE: u32 = 512u;
|
|
48
|
+
const WG_SIZE: u32 = 256u;
|
|
49
|
+
const TILE_K: u32 = 64u;
|
|
50
|
+
|
|
51
|
+
var<workgroup> sdata: array<u32, 512>;
|
|
52
|
+
|
|
53
|
+
fn blellochScan(tid: u32) {
|
|
54
|
+
var offset: u32 = 1u;
|
|
55
|
+
for (var d: u32 = TILE_SIZE >> 1u; d > 0u; d = d >> 1u) {
|
|
56
|
+
workgroupBarrier();
|
|
57
|
+
if (tid < d) {
|
|
58
|
+
let ai = offset * (2u * tid + 1u) - 1u;
|
|
59
|
+
let bi = offset * (2u * tid + 2u) - 1u;
|
|
60
|
+
sdata[bi] = sdata[bi] + sdata[ai];
|
|
61
|
+
}
|
|
62
|
+
offset = offset * 2u;
|
|
63
|
+
}
|
|
64
|
+
if (tid == 0u) { sdata[TILE_SIZE - 1u] = 0u; }
|
|
65
|
+
for (var d: u32 = 1u; d < TILE_SIZE; d = d * 2u) {
|
|
66
|
+
offset = offset >> 1u;
|
|
67
|
+
workgroupBarrier();
|
|
68
|
+
if (tid < d) {
|
|
69
|
+
let ai = offset * (2u * tid + 1u) - 1u;
|
|
70
|
+
let bi = offset * (2u * tid + 2u) - 1u;
|
|
71
|
+
let t = sdata[ai];
|
|
72
|
+
sdata[ai] = sdata[bi];
|
|
73
|
+
sdata[bi] = sdata[bi] + t;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
workgroupBarrier();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@compute @workgroup_size(WG_SIZE)
|
|
80
|
+
fn scanTile(@builtin(local_invocation_id) lid: vec3<u32>, @builtin(workgroup_id) wgid: vec3<u32>) {
|
|
81
|
+
let tid = lid.x;
|
|
82
|
+
let blockOff = wgid.x * TILE_SIZE;
|
|
83
|
+
let n = params.numRecords;
|
|
84
|
+
let i0 = blockOff + tid;
|
|
85
|
+
let i1 = blockOff + tid + WG_SIZE;
|
|
86
|
+
var v0: u32 = 0u;
|
|
87
|
+
var v1: u32 = 0u;
|
|
88
|
+
if (i0 < n) { v0 = drawTable[i0].indexCount * drawTable[i0].instanceCount; }
|
|
89
|
+
if (i1 < n) { v1 = drawTable[i1].indexCount * drawTable[i1].instanceCount; }
|
|
90
|
+
sdata[tid] = v0;
|
|
91
|
+
sdata[tid + WG_SIZE] = v1;
|
|
92
|
+
workgroupBarrier();
|
|
93
|
+
blellochScan(tid);
|
|
94
|
+
if (i0 < n) { drawTable[i0].firstEmit = sdata[tid]; }
|
|
95
|
+
if (i1 < n) { drawTable[i1].firstEmit = sdata[tid + WG_SIZE]; }
|
|
96
|
+
if (tid == WG_SIZE - 1u) {
|
|
97
|
+
blockSums[wgid.x] = sdata[tid + WG_SIZE] + v1;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@compute @workgroup_size(WG_SIZE)
|
|
102
|
+
fn scanBlocks(@builtin(local_invocation_id) lid: vec3<u32>) {
|
|
103
|
+
let tid = lid.x;
|
|
104
|
+
let n = params.numBlocks;
|
|
105
|
+
let i0 = tid;
|
|
106
|
+
let i1 = tid + WG_SIZE;
|
|
107
|
+
var v0: u32 = 0u;
|
|
108
|
+
var v1: u32 = 0u;
|
|
109
|
+
if (i0 < n) { v0 = blockSums[i0]; }
|
|
110
|
+
if (i1 < n) { v1 = blockSums[i1]; }
|
|
111
|
+
sdata[tid] = v0;
|
|
112
|
+
sdata[tid + WG_SIZE] = v1;
|
|
113
|
+
workgroupBarrier();
|
|
114
|
+
blellochScan(tid);
|
|
115
|
+
if (i0 < n) { blockOffsets[i0] = sdata[tid]; }
|
|
116
|
+
if (i1 < n) { blockOffsets[i1] = sdata[tid + WG_SIZE]; }
|
|
117
|
+
workgroupBarrier();
|
|
118
|
+
if (tid == 0u) {
|
|
119
|
+
if (n > 0u) {
|
|
120
|
+
let lastIdx = n - 1u;
|
|
121
|
+
let total = blockOffsets[lastIdx] + blockSums[lastIdx];
|
|
122
|
+
indirect[0] = total;
|
|
123
|
+
} else {
|
|
124
|
+
indirect[0] = 0u;
|
|
125
|
+
}
|
|
126
|
+
indirect[1] = 1u;
|
|
127
|
+
indirect[2] = 0u;
|
|
128
|
+
indirect[3] = 0u;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@compute @workgroup_size(WG_SIZE)
|
|
133
|
+
fn addOffsets(@builtin(local_invocation_id) lid: vec3<u32>, @builtin(workgroup_id) wgid: vec3<u32>) {
|
|
134
|
+
let tid = lid.x;
|
|
135
|
+
let blockOff = wgid.x * TILE_SIZE;
|
|
136
|
+
let n = params.numRecords;
|
|
137
|
+
let off = blockOffsets[wgid.x];
|
|
138
|
+
let i0 = blockOff + tid;
|
|
139
|
+
let i1 = blockOff + tid + WG_SIZE;
|
|
140
|
+
if (i0 < n) { drawTable[i0].firstEmit = drawTable[i0].firstEmit + off; }
|
|
141
|
+
if (i1 < n) { drawTable[i1].firstEmit = drawTable[i1].firstEmit + off; }
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
@compute @workgroup_size(WG_SIZE)
|
|
145
|
+
fn buildTileIndex(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
146
|
+
let tileIdx = gid.x;
|
|
147
|
+
// totalEmit is computed by scanBlocks into indirect[0]; reading it
|
|
148
|
+
// from indirect avoids a separate uniform/storage round-trip.
|
|
149
|
+
let totalEmit = indirect[0];
|
|
150
|
+
let numTiles = (totalEmit + TILE_K - 1u) / TILE_K;
|
|
151
|
+
if (tileIdx > numTiles) { return; }
|
|
152
|
+
if (params.numRecords == 0u) {
|
|
153
|
+
if (tileIdx == 0u) { firstDrawInTile[0] = 0u; }
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (tileIdx == numTiles) {
|
|
157
|
+
// Sentinel for the open upper bound — the LAST VALID SLOT, not
|
|
158
|
+
// numRecords. The render VS uses
|
|
159
|
+
// hi = firstDrawInTile[_tileIdx + 1u]
|
|
160
|
+
// and the binary search treats hi as INCLUSIVE. If the sentinel
|
|
161
|
+
// were numRecords (one past last), the search would drag lo into
|
|
162
|
+
// the OOB slot for emits in the last tile, since drawTable reads
|
|
163
|
+
// past recordCount return 0 (binding size clamping) and 0 ≤ emit
|
|
164
|
+
// is always true. Visible symptom: the LAST few emits in the
|
|
165
|
+
// bucket land on slot=numRecords (drawIdx=0, indexCount=0 → /-by-
|
|
166
|
+
// zero) → degenerate / cross-RO triangle stitched to slot 0.
|
|
167
|
+
firstDrawInTile[tileIdx] = params.numRecords - 1u;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
let tileStart = tileIdx * TILE_K;
|
|
171
|
+
var lo: u32 = 0u;
|
|
172
|
+
var hi: u32 = params.numRecords - 1u;
|
|
173
|
+
loop {
|
|
174
|
+
if (lo >= hi) { break; }
|
|
175
|
+
let mid = (lo + hi + 1u) >> 1u;
|
|
176
|
+
if (drawTable[mid].firstEmit <= tileStart) { lo = mid; } else { hi = mid - 1u; }
|
|
177
|
+
}
|
|
178
|
+
firstDrawInTile[tileIdx] = lo;
|
|
179
|
+
}
|
|
180
|
+
`;
|
|
181
|
+
//# sourceMappingURL=scanKernel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanKernel.js","sourceRoot":"","sources":["../../../src/runtime/heapScene/scanKernel.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,8CAA8C;AAC9C,uEAAuE;AACvE,kEAAkE;AAClE,0DAA0D;AAC1D,gEAAgE;AAChE,2CAA2C;AAC3C,iEAAiE;AACjE,mEAAmE;AACnE,EAAE;AACF,mEAAmE;AACnE,qEAAqE;AACrE,kEAAkE;AAElE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,MAAM,YAAY,GAAK,GAAG,CAAC;AAClC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAC;AAEhE,kEAAkE;AAClE,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;AAEzB,2FAA2F;AAC3F,MAAM,CAAC,MAAM,UAAU,GAAK,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4J7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heapScene.d.ts","sourceRoot":"","sources":["../../src/runtime/heapScene.ts"],"names":[],"mappings":"AA4CA,OAAO,EAA2B,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAwB,aAAa,EAAa,MAAM,2BAA2B,CAAC;AAC3F,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAgD,MAAM,2BAA2B,CAAC;AAC1G,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAEc,KAAK,oBAAoB,EAE7C,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAEL,KAAK,SAAS,EAAwB,KAAK,SAAS,EACrD,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"heapScene.d.ts","sourceRoot":"","sources":["../../src/runtime/heapScene.ts"],"names":[],"mappings":"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"}
|