@aardworx/wombat.rendering 0.8.0 → 0.9.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/dist/core/command.d.ts +7 -9
- package/dist/core/command.d.ts.map +1 -1
- package/dist/core/renderTask.d.ts +64 -1
- package/dist/core/renderTask.d.ts.map +1 -1
- package/dist/core/renderTask.js +3 -1
- package/dist/core/renderTask.js.map +1 -1
- package/dist/resources/preparedRenderObject.js +3 -3
- package/dist/resources/preparedRenderObject.js.map +1 -1
- package/dist/resources/uniformBuffer.d.ts.map +1 -1
- package/dist/resources/uniformBuffer.js +17 -0
- package/dist/resources/uniformBuffer.js.map +1 -1
- package/dist/runtime/derivedUniforms/dispatch.d.ts +105 -0
- package/dist/runtime/derivedUniforms/dispatch.d.ts.map +1 -0
- package/dist/runtime/derivedUniforms/dispatch.js +355 -0
- package/dist/runtime/derivedUniforms/dispatch.js.map +1 -0
- package/dist/runtime/derivedUniforms/index.d.ts +6 -0
- package/dist/runtime/derivedUniforms/index.d.ts.map +1 -0
- package/dist/runtime/derivedUniforms/index.js +26 -0
- package/dist/runtime/derivedUniforms/index.js.map +1 -0
- package/dist/runtime/derivedUniforms/recipes.d.ts +42 -0
- package/dist/runtime/derivedUniforms/recipes.d.ts.map +1 -0
- package/dist/runtime/derivedUniforms/recipes.js +134 -0
- package/dist/runtime/derivedUniforms/recipes.js.map +1 -0
- package/dist/runtime/derivedUniforms/sceneIntegration.d.ts +56 -0
- package/dist/runtime/derivedUniforms/sceneIntegration.d.ts.map +1 -0
- package/dist/runtime/derivedUniforms/sceneIntegration.js +171 -0
- package/dist/runtime/derivedUniforms/sceneIntegration.js.map +1 -0
- package/dist/runtime/derivedUniforms/slotId.d.ts +15 -0
- package/dist/runtime/derivedUniforms/slotId.d.ts.map +1 -0
- package/dist/runtime/derivedUniforms/slotId.js +30 -0
- package/dist/runtime/derivedUniforms/slotId.js.map +1 -0
- package/dist/runtime/derivedUniforms/slots.d.ts +49 -0
- package/dist/runtime/derivedUniforms/slots.d.ts.map +1 -0
- package/dist/runtime/derivedUniforms/slots.js +123 -0
- package/dist/runtime/derivedUniforms/slots.js.map +1 -0
- package/dist/runtime/derivedUniforms/uberKernel.wgsl.d.ts +13 -0
- package/dist/runtime/derivedUniforms/uberKernel.wgsl.d.ts.map +1 -0
- package/dist/runtime/derivedUniforms/uberKernel.wgsl.js +218 -0
- package/dist/runtime/derivedUniforms/uberKernel.wgsl.js.map +1 -0
- package/dist/runtime/flattenTree.d.ts +5 -0
- package/dist/runtime/flattenTree.d.ts.map +1 -0
- package/dist/runtime/flattenTree.js +45 -0
- package/dist/runtime/flattenTree.js.map +1 -0
- package/dist/runtime/heapAdapter.d.ts +16 -0
- package/dist/runtime/heapAdapter.d.ts.map +1 -0
- package/dist/runtime/heapAdapter.js +263 -0
- package/dist/runtime/heapAdapter.js.map +1 -0
- package/dist/runtime/heapEffect.d.ts +235 -0
- package/dist/runtime/heapEffect.d.ts.map +1 -0
- package/dist/runtime/heapEffect.js +518 -0
- package/dist/runtime/heapEffect.js.map +1 -0
- package/dist/runtime/heapEffectIR.d.ts +34 -0
- package/dist/runtime/heapEffectIR.d.ts.map +1 -0
- package/dist/runtime/heapEffectIR.js +1161 -0
- package/dist/runtime/heapEffectIR.js.map +1 -0
- package/dist/runtime/heapEligibility.d.ts +9 -0
- package/dist/runtime/heapEligibility.d.ts.map +1 -0
- package/dist/runtime/heapEligibility.js +195 -0
- package/dist/runtime/heapEligibility.js.map +1 -0
- package/dist/runtime/heapScene.d.ts +240 -31
- package/dist/runtime/heapScene.d.ts.map +1 -1
- package/dist/runtime/heapScene.js +3334 -265
- package/dist/runtime/heapScene.js.map +1 -1
- package/dist/runtime/heapShaderFamily.d.ts +132 -0
- package/dist/runtime/heapShaderFamily.d.ts.map +1 -0
- package/dist/runtime/heapShaderFamily.js +866 -0
- package/dist/runtime/heapShaderFamily.js.map +1 -0
- package/dist/runtime/hybridScene.d.ts +133 -0
- package/dist/runtime/hybridScene.d.ts.map +1 -0
- package/dist/runtime/hybridScene.js +159 -0
- package/dist/runtime/hybridScene.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +9 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/renderTask.d.ts +21 -4
- package/dist/runtime/renderTask.d.ts.map +1 -1
- package/dist/runtime/renderTask.js +127 -32
- package/dist/runtime/renderTask.js.map +1 -1
- package/dist/runtime/runtime.d.ts +33 -3
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +12 -3
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/scenePass.d.ts +28 -3
- package/dist/runtime/scenePass.d.ts.map +1 -1
- package/dist/runtime/scenePass.js +37 -4
- package/dist/runtime/scenePass.js.map +1 -1
- package/dist/runtime/textureAtlas/atlasMipGutterKernel.d.ts +35 -0
- package/dist/runtime/textureAtlas/atlasMipGutterKernel.d.ts.map +1 -0
- package/dist/runtime/textureAtlas/atlasMipGutterKernel.js +247 -0
- package/dist/runtime/textureAtlas/atlasMipGutterKernel.js.map +1 -0
- package/dist/runtime/textureAtlas/atlasPool.d.ts +240 -0
- package/dist/runtime/textureAtlas/atlasPool.d.ts.map +1 -0
- package/dist/runtime/textureAtlas/atlasPool.js +798 -0
- package/dist/runtime/textureAtlas/atlasPool.js.map +1 -0
- package/dist/runtime/textureAtlas/bvhTree2d.d.ts +33 -0
- package/dist/runtime/textureAtlas/bvhTree2d.d.ts.map +1 -0
- package/dist/runtime/textureAtlas/bvhTree2d.js +501 -0
- package/dist/runtime/textureAtlas/bvhTree2d.js.map +1 -0
- package/dist/runtime/textureAtlas/packer.d.ts +50 -0
- package/dist/runtime/textureAtlas/packer.d.ts.map +1 -0
- package/dist/runtime/textureAtlas/packer.js +390 -0
- package/dist/runtime/textureAtlas/packer.js.map +1 -0
- package/dist/window/loop.d.ts +14 -0
- package/dist/window/loop.d.ts.map +1 -1
- package/dist/window/loop.js +18 -5
- package/dist/window/loop.js.map +1 -1
- package/package.json +5 -4
- package/src/core/command.ts +9 -9
- package/src/core/renderTask.ts +55 -2
- package/src/resources/preparedRenderObject.ts +3 -3
- package/src/resources/uniformBuffer.ts +15 -0
- package/src/runtime/derivedUniforms/dispatch.ts +407 -0
- package/src/runtime/derivedUniforms/index.ts +52 -0
- package/src/runtime/derivedUniforms/recipes.ts +159 -0
- package/src/runtime/derivedUniforms/sceneIntegration.ts +239 -0
- package/src/runtime/derivedUniforms/slotId.ts +35 -0
- package/src/runtime/derivedUniforms/slots.ts +155 -0
- package/src/runtime/derivedUniforms/uberKernel.wgsl.ts +220 -0
- package/src/runtime/flattenTree.ts +46 -0
- package/src/runtime/heapAdapter.ts +314 -0
- package/src/runtime/heapEffect.ts +719 -0
- package/src/runtime/heapEffectIR.ts +1211 -0
- package/src/runtime/heapEligibility.ts +189 -0
- package/src/runtime/heapScene.ts +3981 -349
- package/src/runtime/heapShaderFamily.ts +1102 -0
- package/src/runtime/hybridScene.ts +310 -0
- package/src/runtime/index.ts +46 -0
- package/src/runtime/renderTask.ts +167 -32
- package/src/runtime/runtime.ts +37 -4
- package/src/runtime/scenePass.ts +39 -4
- package/src/runtime/textureAtlas/atlasMipGutterKernel.ts +291 -0
- package/src/runtime/textureAtlas/atlasPool.ts +991 -0
- package/src/runtime/textureAtlas/bvhTree2d.ts +530 -0
- package/src/runtime/textureAtlas/packer.ts +429 -0
- package/src/window/loop.ts +32 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heapEffectIR.js","sourceRoot":"","sources":["../../src/runtime/heapEffectIR.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type aval } from "@aardworx/wombat.adaptive";
|
|
2
|
+
import type { RenderObject } from "../core/renderObject.js";
|
|
3
|
+
/**
|
|
4
|
+
* `true` when the RO is heap-bucketable, `false` when it must fall
|
|
5
|
+
* back to the legacy per-RO path. Reactive on every contributing
|
|
6
|
+
* `aval`: rewires the partition automatically when any input flips.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isHeapEligible(ro: RenderObject): aval<boolean>;
|
|
9
|
+
//# sourceMappingURL=heapEligibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heapEligibility.d.ts","sourceRoot":"","sources":["../../src/runtime/heapEligibility.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAK5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AA0F5D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAoD9D"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
// heapEligibility — reactive predicate over a RenderObject deciding
|
|
2
|
+
// whether it can ride the heap-bucket fast path.
|
|
3
|
+
//
|
|
4
|
+
// Three classes of conditions:
|
|
5
|
+
// 1. STATIC HARD WEDGES — features the heap path doesn't ingest
|
|
6
|
+
// yet (instanceAttributes, storageBuffers, > 1 texture or
|
|
7
|
+
// sampler). Decided once at classifier time.
|
|
8
|
+
// 2. STATIC SOFT WEDGES — supported with limits (indexed-only,
|
|
9
|
+
// instanceCount=1, baseVertex/firstIndex/firstInstance=0).
|
|
10
|
+
// Read once from the drawCall snapshot.
|
|
11
|
+
// 3. REACTIVE — every `aval<IBuffer>` (vertex attribs + indices)
|
|
12
|
+
// must currently resolve to `kind: "host"`. Every `aval<ITexture>`
|
|
13
|
+
// must be heap-servable: `kind: "host"` (atlasable / Tier-L
|
|
14
|
+
// host upload), 2D dimension, single array layer, and within
|
|
15
|
+
// `LEGACY_MAX_DIM` on each side. Anything failing those rules
|
|
16
|
+
// escalates to the legacy ScenePass — the user is managing a
|
|
17
|
+
// backend resource (render-target, video, environment probe,
|
|
18
|
+
// streaming tile) or asking for a cubemap/array/volume that
|
|
19
|
+
// the heap shaders don't support, or a texture too large for
|
|
20
|
+
// heap-side handling to be a win. Every `aval<ISampler>` must
|
|
21
|
+
// resolve to `kind: "gpu"`. When any of these mark and flip,
|
|
22
|
+
// the result aval marks → hybrid task repartitions.
|
|
23
|
+
//
|
|
24
|
+
// Out-of-scope blockers (return false unconditionally if present):
|
|
25
|
+
// - `storageBuffers` — same.
|
|
26
|
+
// - >1 texture or sampler — multi-binding API not in v1.
|
|
27
|
+
//
|
|
28
|
+
// Per-RO instancing IS supported: `instanceAttributes` are accepted as
|
|
29
|
+
// long as every entry passes the same tight-stride / stride-0-broadcast
|
|
30
|
+
// rule used for `vertexAttributes`, and `dc.instanceCount` may be any
|
|
31
|
+
// positive value (with `firstInstance === 0`).
|
|
32
|
+
//
|
|
33
|
+
// These are conservative wedges, not permanent: as the heap path
|
|
34
|
+
// grows feature support each becomes a per-buffer eligibility
|
|
35
|
+
// question instead of a blanket "no".
|
|
36
|
+
import { AVal } from "@aardworx/wombat.adaptive";
|
|
37
|
+
/**
|
|
38
|
+
* Maximum texture extent (per side) the heap path is willing to
|
|
39
|
+
* ingest. Anything wider/taller escalates to the legacy renderer
|
|
40
|
+
* which gives each RO its own dedicated GPUTexture — that's a
|
|
41
|
+
* better fit than wasting an atlas page on a single ~4K image
|
|
42
|
+
* (and it sidesteps device-limit risk near `maxTextureDimension2D`).
|
|
43
|
+
*/
|
|
44
|
+
const LEGACY_MAX_DIM = 4096;
|
|
45
|
+
const isHostBuffer = (b) => b.kind === "host";
|
|
46
|
+
// Samplers: accept both descriptor-form (`kind: "host"`) and resolved
|
|
47
|
+
// (`kind: "gpu"`). The heap atlas path uses ONE shared GPU sampler for
|
|
48
|
+
// all atlas reads — per-RO sampler state (filter modes, wrap modes)
|
|
49
|
+
// is packed into the drawHeader's formatBits and consumed by the
|
|
50
|
+
// shader, not bound as a per-RO GPUSampler. So the heap path doesn't
|
|
51
|
+
// care whether the user handed in a descriptor or a pre-resolved
|
|
52
|
+
// sampler; both are equivalent at this level.
|
|
53
|
+
const isHeapServableSampler = (_s) => true;
|
|
54
|
+
/**
|
|
55
|
+
* Heap-servability check for a single texture value. Returns `true`
|
|
56
|
+
* when the texture fits the heap path's ingest envelope:
|
|
57
|
+
* - `kind === "host"` (the user isn't managing a backend
|
|
58
|
+
* resource — those go to legacy untouched).
|
|
59
|
+
* - 2D, single array layer (heap shaders are 2D-only).
|
|
60
|
+
* - Both extents `<= LEGACY_MAX_DIM`.
|
|
61
|
+
*
|
|
62
|
+
* For `kind: "gpu"` we currently always reject (rule 1) — even a
|
|
63
|
+
* plain 2D rgba8unorm GPUTexture goes legacy, on the assumption
|
|
64
|
+
* that the user attached a `GPUTexture` for a reason (render target,
|
|
65
|
+
* external import, streamed tile) and shouldn't be silently
|
|
66
|
+
* rebadged. The dimension/layer/size checks are still implemented
|
|
67
|
+
* for `kind: "gpu"` for clarity / future use if we relax rule 1.
|
|
68
|
+
*
|
|
69
|
+
* For `kind: "host"`, by construction `RawTextureSource` and
|
|
70
|
+
* `ExternalTextureSource` are 2D single-layer — but we read
|
|
71
|
+
* `depthOrArrayLayers` from raw sources defensively (it's optional
|
|
72
|
+
* on the descriptor and could in principle be set).
|
|
73
|
+
*/
|
|
74
|
+
function isHeapServableTexture(t) {
|
|
75
|
+
if (t.kind === "gpu")
|
|
76
|
+
return false;
|
|
77
|
+
const src = t.source;
|
|
78
|
+
if (src.kind === "raw") {
|
|
79
|
+
if ((src.depthOrArrayLayers ?? 1) !== 1)
|
|
80
|
+
return false;
|
|
81
|
+
if (src.width > LEGACY_MAX_DIM || src.height > LEGACY_MAX_DIM)
|
|
82
|
+
return false;
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
// external — read width/height off the source. Most types have
|
|
86
|
+
// it; HTMLVideoElement uses videoWidth/videoHeight. Sources
|
|
87
|
+
// without measurable dimensions are deferred (eligible until
|
|
88
|
+
// they resolve — heapAdapter handles undimensioned gracefully).
|
|
89
|
+
const ext = src.source;
|
|
90
|
+
let w = 0, h = 0;
|
|
91
|
+
if (typeof HTMLVideoElement !== "undefined" && ext instanceof HTMLVideoElement) {
|
|
92
|
+
w = ext.videoWidth;
|
|
93
|
+
h = ext.videoHeight;
|
|
94
|
+
}
|
|
95
|
+
else if (typeof ImageData !== "undefined" && ext instanceof ImageData) {
|
|
96
|
+
w = ext.width;
|
|
97
|
+
h = ext.height;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const any = ext;
|
|
101
|
+
w = any.width ?? 0;
|
|
102
|
+
h = any.height ?? 0;
|
|
103
|
+
}
|
|
104
|
+
if (w > LEGACY_MAX_DIM || h > LEGACY_MAX_DIM)
|
|
105
|
+
return false;
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
function bufferAvals(ro) {
|
|
109
|
+
const out = [];
|
|
110
|
+
ro.vertexAttributes.iter((_k, v) => { out.push(v.buffer); });
|
|
111
|
+
if (ro.instanceAttributes !== undefined) {
|
|
112
|
+
ro.instanceAttributes.iter((_k, v) => { out.push(v.buffer); });
|
|
113
|
+
}
|
|
114
|
+
if (ro.indices !== undefined)
|
|
115
|
+
out.push(ro.indices.buffer);
|
|
116
|
+
return out;
|
|
117
|
+
}
|
|
118
|
+
function textureAvals(ro) {
|
|
119
|
+
const out = [];
|
|
120
|
+
ro.textures.iter((_k, av) => { out.push(av); });
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
function samplerAvals(ro) {
|
|
124
|
+
const out = [];
|
|
125
|
+
ro.samplers.iter((_k, av) => { out.push(av); });
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* `true` when the RO is heap-bucketable, `false` when it must fall
|
|
130
|
+
* back to the legacy per-RO path. Reactive on every contributing
|
|
131
|
+
* `aval`: rewires the partition automatically when any input flips.
|
|
132
|
+
*/
|
|
133
|
+
export function isHeapEligible(ro) {
|
|
134
|
+
// 1. Static hard wedges.
|
|
135
|
+
if (ro.storageBuffers !== undefined && ro.storageBuffers.count > 0) {
|
|
136
|
+
return AVal.constant(false);
|
|
137
|
+
}
|
|
138
|
+
if (ro.textures.count > 1 || ro.samplers.count > 1) {
|
|
139
|
+
return AVal.constant(false);
|
|
140
|
+
}
|
|
141
|
+
// 2. BufferView stride wedge — only tight per-vertex/per-instance
|
|
142
|
+
// layouts (and broadcasts via `singleValue` / stride 0) are
|
|
143
|
+
// ingested. The shader-side cyclic addressing (`vid % length`,
|
|
144
|
+
// `iidx % length`) makes broadcasts a degenerate length-1 case,
|
|
145
|
+
// so we don't reject them here — but interleaved strides remain
|
|
146
|
+
// unsupported. Per-instance attributes follow the same rule.
|
|
147
|
+
let strideBlocked = false;
|
|
148
|
+
const checkStride = (v) => {
|
|
149
|
+
const stride = v.stride ?? v.elementType.byteSize;
|
|
150
|
+
const isBroadcast = v.singleValue !== undefined || stride === 0;
|
|
151
|
+
if (!isBroadcast && stride !== v.elementType.byteSize)
|
|
152
|
+
strideBlocked = true;
|
|
153
|
+
};
|
|
154
|
+
ro.vertexAttributes.iter((_k, v) => checkStride(v));
|
|
155
|
+
if (ro.instanceAttributes !== undefined) {
|
|
156
|
+
ro.instanceAttributes.iter((_k, v) => checkStride(v));
|
|
157
|
+
}
|
|
158
|
+
if (strideBlocked)
|
|
159
|
+
return AVal.constant(false);
|
|
160
|
+
// 3. Index-format wedge — heap stores indices as u32.
|
|
161
|
+
if (ro.indices !== undefined && ro.indices.elementType.indexFormat !== "uint32") {
|
|
162
|
+
return AVal.constant(false);
|
|
163
|
+
}
|
|
164
|
+
const buffers = bufferAvals(ro);
|
|
165
|
+
const textures = textureAvals(ro);
|
|
166
|
+
const samplers = samplerAvals(ro);
|
|
167
|
+
// Reactive AND-fold over all participating avals. We also subscribe
|
|
168
|
+
// to drawCall (instanceCount/baseVertex/firstIndex/firstInstance
|
|
169
|
+
// can flip; if they violate heap constraints the RO routes to the
|
|
170
|
+
// legacy path that frame).
|
|
171
|
+
return AVal.custom(token => {
|
|
172
|
+
for (const av of buffers)
|
|
173
|
+
if (!isHostBuffer(av.getValue(token)))
|
|
174
|
+
return false;
|
|
175
|
+
for (const av of textures)
|
|
176
|
+
if (!isHeapServableTexture(av.getValue(token)))
|
|
177
|
+
return false;
|
|
178
|
+
for (const av of samplers)
|
|
179
|
+
if (!isHeapServableSampler(av.getValue(token)))
|
|
180
|
+
return false;
|
|
181
|
+
const dc = ro.drawCall.getValue(token);
|
|
182
|
+
if (dc.kind !== "indexed")
|
|
183
|
+
return false;
|
|
184
|
+
if (dc.instanceCount < 1)
|
|
185
|
+
return false;
|
|
186
|
+
if (dc.baseVertex !== 0)
|
|
187
|
+
return false;
|
|
188
|
+
if (dc.firstIndex !== 0)
|
|
189
|
+
return false;
|
|
190
|
+
if (dc.firstInstance !== 0)
|
|
191
|
+
return false;
|
|
192
|
+
return true;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=heapEligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heapEligibility.js","sourceRoot":"","sources":["../../src/runtime/heapEligibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import { type V2f } from "@aardworx/wombat.base";
|
|
2
|
+
import type { ITexture } from "../core/texture.js";
|
|
3
|
+
import type { ISampler } from "../core/sampler.js";
|
|
4
|
+
import { AdaptiveToken } from "@aardworx/wombat.adaptive";
|
|
5
|
+
import type { aval, aset } from "@aardworx/wombat.adaptive";
|
|
6
|
+
import type { Effect } from "@aardworx/wombat.shader";
|
|
7
|
+
import type { PipelineState } from "../core/pipelineState.js";
|
|
8
|
+
import { type FragmentOutputLayout } from "./heapEffect.js";
|
|
9
|
+
import { type AtlasPage, type AtlasPool } from "./textureAtlas/atlasPool.js";
|
|
4
10
|
/**
|
|
5
11
|
* Geometry triple. Tightly-packed Float32 positions / normals (3
|
|
6
|
-
* floats per vertex) plus Uint32 indices.
|
|
7
|
-
* concatenates all draws' geometry into per-group slabs.
|
|
12
|
+
* floats per vertex) plus Uint32 indices.
|
|
8
13
|
*/
|
|
9
14
|
export interface HeapGeometry {
|
|
10
15
|
readonly positions: Float32Array;
|
|
@@ -12,22 +17,126 @@ export interface HeapGeometry {
|
|
|
12
17
|
readonly indices: Uint32Array;
|
|
13
18
|
}
|
|
14
19
|
export interface HeapDrawSpec {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
readonly
|
|
20
|
+
/**
|
|
21
|
+
* The shader. Two draws with the same effect (matched by `effect.id`)
|
|
22
|
+
* share a pipeline + bucket.
|
|
23
|
+
*/
|
|
24
|
+
readonly effect: Effect;
|
|
25
|
+
/**
|
|
26
|
+
* Per-name inputs covering both vertex attributes (e.g. `Positions`,
|
|
27
|
+
* `Normals`) and uniforms (e.g. `ModelTrafo`, `Color`, `ViewProjTrafo`)
|
|
28
|
+
* — whatever the effect's schema declares. The runtime walks the
|
|
29
|
+
* schema and pulls each by name.
|
|
30
|
+
*
|
|
31
|
+
* Sharing happens via aval identity: the same `cval` passed to
|
|
32
|
+
* many draws → one arena allocation + one upload per change.
|
|
33
|
+
* Same applies to attributes: instanced draws sharing a `Float32Array`
|
|
34
|
+
* for `Positions` share one arena allocation. Wrap raw values in
|
|
35
|
+
* `AVal.constant(...)` if you don't need to update them.
|
|
36
|
+
*/
|
|
37
|
+
readonly inputs: {
|
|
38
|
+
readonly [name: string]: aval<unknown> | unknown;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Per-RO instance attributes — one BufferView per name, indexed by
|
|
42
|
+
* `instance_index` (= iidx in the megacall path) at shader time.
|
|
43
|
+
* Routed through the same arena-pool as `inputs` (aval-keyed
|
|
44
|
+
* sharing across draws). Triggers the heap path's per-RO
|
|
45
|
+
* instancing fast path: one record / one drawIndirect for an RO
|
|
46
|
+
* with `instanceCount=N`, total emit = `indexCount * N`.
|
|
47
|
+
*
|
|
48
|
+
* Must NOT alias names in `inputs` — instance attributes are
|
|
49
|
+
* disjoint from per-vertex attributes and from uniforms.
|
|
50
|
+
*/
|
|
51
|
+
readonly instanceAttributes?: {
|
|
52
|
+
readonly [name: string]: aval<unknown> | unknown;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Per-RO instance count for the instancing path. Defaults to 1.
|
|
56
|
+
* Reads through the arena's drawTable record so the GPU prefix-sum
|
|
57
|
+
* computes `indexCount * instanceCount` per record.
|
|
58
|
+
*/
|
|
59
|
+
readonly instanceCount?: aval<number> | number;
|
|
60
|
+
/**
|
|
61
|
+
* Index buffer for this draw. Indices live in their own `INDEX`-
|
|
62
|
+
* usage `GPUBuffer` (WebGPU forces this), separate from the arena.
|
|
63
|
+
*/
|
|
64
|
+
readonly indices: aval<Uint32Array> | Uint32Array;
|
|
65
|
+
/**
|
|
66
|
+
* Optional texture set. When present, adds a `texture_2d<f32>` at
|
|
67
|
+
* binding 4 and a sampler at binding 5; the FS must declare them.
|
|
68
|
+
* Buckets with different `textures` (by reference) cannot share a
|
|
69
|
+
* bind group, so a distinct texture set wedges into the bucket key
|
|
70
|
+
* alongside the effect id.
|
|
71
|
+
*/
|
|
72
|
+
readonly textures?: HeapTextureSet;
|
|
73
|
+
/**
|
|
74
|
+
* Optional pipeline state (rasterizer / depth / blend). Two specs
|
|
75
|
+
* sharing the SAME `PipelineState` object share a bucket; distinct
|
|
76
|
+
* objects get distinct buckets even if structurally equal — same
|
|
77
|
+
* identity convention as `effect`, `indices`, `textures`. The
|
|
78
|
+
* underlying avals are forced at addDraw time and baked into the
|
|
79
|
+
* pipeline; later marks on those avals are ignored. To change
|
|
80
|
+
* pipeline state, swap the `PipelineState` object (which forces
|
|
81
|
+
* a fresh bucket).
|
|
82
|
+
*
|
|
83
|
+
* Omitted ⇒ defaults: triangle-list / cull back / ccw / depth-less
|
|
84
|
+
* with depth write enabled. Matches the demo's existing visuals.
|
|
85
|
+
*/
|
|
86
|
+
readonly pipelineState?: PipelineState;
|
|
20
87
|
}
|
|
21
88
|
export interface HeapSceneStats {
|
|
22
89
|
readonly groups: number;
|
|
23
|
-
|
|
24
|
-
readonly globalsBytes: number;
|
|
90
|
+
totalDraws: number;
|
|
25
91
|
drawBytes: number;
|
|
26
|
-
|
|
92
|
+
geometryBytes: number;
|
|
93
|
+
/** §7 derived-uniforms per-frame breakdown (last frame). */
|
|
94
|
+
derivedPullMs: number;
|
|
95
|
+
derivedUploadMs: number;
|
|
96
|
+
derivedEncodeMs: number;
|
|
97
|
+
derivedRecords: number;
|
|
27
98
|
}
|
|
28
99
|
export interface HeapScene {
|
|
29
|
-
/**
|
|
30
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Convenience: open a command encoder + render pass against
|
|
102
|
+
* `framebuffer`, run `update` + `encodeIntoPass`, end pass, submit.
|
|
103
|
+
* For hybrid composition (heap + legacy in one pass), use
|
|
104
|
+
* `update` + `encodeIntoPass` directly against a caller-managed
|
|
105
|
+
* `GPURenderPassEncoder` instead.
|
|
106
|
+
*/
|
|
107
|
+
frame(framebuffer: import("../core/index.js").IFramebuffer, token: AdaptiveToken): void;
|
|
108
|
+
/**
|
|
109
|
+
* Pull pending aset deltas, drain pool / per-bucket dirty, and
|
|
110
|
+
* upload everything CPU-side that the next `encodeIntoPass` will
|
|
111
|
+
* read on the GPU. Idempotent within a frame; safe to call twice.
|
|
112
|
+
*/
|
|
113
|
+
update(token: AdaptiveToken): void;
|
|
114
|
+
/**
|
|
115
|
+
* Encode all live bucket draws into an existing render pass. Caller
|
|
116
|
+
* owns `beginRenderPass` / `end` / `submit`. This is the building
|
|
117
|
+
* block for hybrid: a caller can interleave (in batches, never per-
|
|
118
|
+
* draw) heap encoding with legacy encoding into the same pass.
|
|
119
|
+
*
|
|
120
|
+
* Must be preceded by `update(token)` in the same frame; otherwise
|
|
121
|
+
* GPU state may lag behind CPU-side aval marks.
|
|
122
|
+
*/
|
|
123
|
+
encodeIntoPass(passEnc: GPURenderPassEncoder): void;
|
|
124
|
+
/**
|
|
125
|
+
* Encode any compute work the next `encodeIntoPass` depends on.
|
|
126
|
+
* For megacall buckets: dispatches the GPU prefix-sum scan that
|
|
127
|
+
* computes per-record `firstEmit` and writes the indirect-draw
|
|
128
|
+
* args. Must be called BEFORE `beginRenderPass` since compute can't
|
|
129
|
+
* run inside a render pass. No-op when the scene has no megacall
|
|
130
|
+
* buckets or none are dirty.
|
|
131
|
+
*/
|
|
132
|
+
encodeComputePrep(enc: GPUCommandEncoder, token: AdaptiveToken): void;
|
|
133
|
+
/**
|
|
134
|
+
* Add a draw at runtime. Returns a stable slot handle that can be
|
|
135
|
+
* passed to `removeDraw` later. Allocators auto-grow as needed.
|
|
136
|
+
*/
|
|
137
|
+
addDraw(spec: HeapDrawSpec): number;
|
|
138
|
+
/** Remove a draw previously returned by `addDraw` (or the initial-array index). */
|
|
139
|
+
removeDraw(slot: number): void;
|
|
31
140
|
readonly stats: HeapSceneStats;
|
|
32
141
|
dispose(): void;
|
|
33
142
|
}
|
|
@@ -35,27 +144,127 @@ export interface HeapScene {
|
|
|
35
144
|
* Per-group texture set. Bindless isn't standard WebGPU, so a group
|
|
36
145
|
* with sampled textures gets a distinct bind-group layout and is
|
|
37
146
|
* keyed separately from groups with no textures or different sets.
|
|
147
|
+
*
|
|
148
|
+
* Discriminated union, in preparation for the texture-atlas
|
|
149
|
+
* integration (see `docs/heap-textures-plan.md`):
|
|
150
|
+
* - `standalone` — Tier L; one `GPUTexture` per source. Today's path.
|
|
151
|
+
* - `atlas` — Tier S/M; the texture lives as a sub-rect of an
|
|
152
|
+
* `AtlasPool` page, identified by `(format, pageId)`
|
|
153
|
+
* plus mip-0 `(origin, size)` in normalized atlas
|
|
154
|
+
* coords and `numMips` (1 = no embedded pyramid;
|
|
155
|
+
* >1 = 1.5×1 Iliffe pyramid stored in the page).
|
|
156
|
+
* NOT YET WIRED through the heap path; the BGL/
|
|
157
|
+
* bind-group/drawHeader work lands in a follow-up PR.
|
|
38
158
|
*/
|
|
39
|
-
export
|
|
40
|
-
readonly
|
|
159
|
+
export type HeapTextureSet = {
|
|
160
|
+
readonly kind: "standalone";
|
|
161
|
+
readonly texture: ITexture;
|
|
41
162
|
readonly textureView?: GPUTextureView;
|
|
42
|
-
readonly sampler:
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
readonly
|
|
163
|
+
readonly sampler: ISampler;
|
|
164
|
+
} | {
|
|
165
|
+
readonly kind: "atlas";
|
|
166
|
+
readonly format: GPUTextureFormat;
|
|
167
|
+
readonly pageId: number;
|
|
168
|
+
/** Top-left of mip-0 in the atlas, normalized [0,1]. */
|
|
169
|
+
readonly origin: V2f;
|
|
170
|
+
/** Size of mip-0 in the atlas, normalized [0,1]. */
|
|
171
|
+
readonly size: V2f;
|
|
172
|
+
/** Mip-level count stored at this acquisition (1 = no pyramid). */
|
|
173
|
+
readonly numMips: number;
|
|
174
|
+
readonly sampler: ISampler;
|
|
47
175
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
176
|
+
* Strong reference to the atlas page hosting this acquisition, so
|
|
177
|
+
* the heap path can resolve `pageId` to a `GPUTexture` for the
|
|
178
|
+
* bind-group binding_array. Filled by the adapter from
|
|
179
|
+
* `AtlasPool.acquire(...).page`.
|
|
51
180
|
*/
|
|
52
|
-
readonly
|
|
53
|
-
|
|
181
|
+
readonly page: AtlasPage;
|
|
182
|
+
/**
|
|
183
|
+
* Refcount handle from `AtlasPool.acquire(...).ref`. removeDraw
|
|
184
|
+
* threads this back to `pool.release(ref)`.
|
|
185
|
+
*/
|
|
186
|
+
readonly poolRef: number;
|
|
187
|
+
/**
|
|
188
|
+
* Pool-level release callback. The heap path doesn't keep a
|
|
189
|
+
* reference to AtlasPool itself; instead the adapter wires this
|
|
190
|
+
* closure so removeDraw can drop the refcount without a global
|
|
191
|
+
* pool handle.
|
|
192
|
+
*/
|
|
193
|
+
readonly release: () => void;
|
|
194
|
+
/**
|
|
195
|
+
* The original `aval<ITexture>` source. When present, heapScene
|
|
196
|
+
* subscribes to it; an aval mark routes through the per-frame
|
|
197
|
+
* `update` loop into `AtlasPool.repack(av, newValue)`, with the
|
|
198
|
+
* resulting drawHeader fields rewritten in place. Absent ⇒ static
|
|
199
|
+
* texture path (no reactivity, current behaviour).
|
|
200
|
+
*
|
|
201
|
+
* The pool-level `repack` callback rewires this RO's atlas slot
|
|
202
|
+
* to the new placement; heapScene reads it from `bucket.localAtlasReleases`'
|
|
203
|
+
* sibling slot (`localAtlasRepacks`) to avoid a global pool handle.
|
|
204
|
+
*/
|
|
205
|
+
readonly sourceAval?: aval<ITexture>;
|
|
206
|
+
/**
|
|
207
|
+
* Bound `(newTex) → AtlasAcquisition` closure backed by the
|
|
208
|
+
* pool's `repack`. Adapter-supplied so heapScene can swap the
|
|
209
|
+
* placement for `sourceAval` without holding a direct pool
|
|
210
|
+
* reference.
|
|
211
|
+
*/
|
|
212
|
+
readonly repack?: (newTex: ITexture) => import("./textureAtlas/atlasPool.js").AtlasAcquisition;
|
|
213
|
+
};
|
|
54
214
|
/**
|
|
55
|
-
* Build a
|
|
56
|
-
*
|
|
57
|
-
*
|
|
215
|
+
* Build a heap-backed scene renderer from a flat list of draws.
|
|
216
|
+
*
|
|
217
|
+
* Bucketing is automatic: draws with the same effect (matched by
|
|
218
|
+
* `effect.id` for DSL effects, by reference for raw-WGSL pairs) and
|
|
219
|
+
* the same texture set (by reference) share a pipeline + bind group.
|
|
220
|
+
* Per-RO avals are subscribed so dirty marks propagate to per-slot
|
|
58
221
|
* `writeBuffer`s on the next `frame()`.
|
|
59
222
|
*/
|
|
60
|
-
export
|
|
223
|
+
export interface BuildHeapSceneOptions {
|
|
224
|
+
/**
|
|
225
|
+
* Maps each fragment-output name an effect emits to its framebuffer
|
|
226
|
+
* attachment location. Outputs not in the map get DCE'd by the
|
|
227
|
+
* `linkFragmentOutputs` pass — and any uniforms that only fed those
|
|
228
|
+
* outputs disappear from the schema too.
|
|
229
|
+
*
|
|
230
|
+
* Example: `{ locations: new Map([["outColor", 0]]) }` for a single-
|
|
231
|
+
* color framebuffer with effects that write to `outColor`.
|
|
232
|
+
*
|
|
233
|
+
* Omitted ⇒ no pruning; every output the effect declares survives.
|
|
234
|
+
*/
|
|
235
|
+
readonly fragmentOutputLayout?: FragmentOutputLayout;
|
|
236
|
+
/**
|
|
237
|
+
* Atlas pool that owns the per-format independent page textures.
|
|
238
|
+
* heapScene reads `pool.pagesFor(format)` to wire each page's
|
|
239
|
+
* `GPUTexture` into the matching slot of the bucket's BGL ladder
|
|
240
|
+
* and subscribes to `pool.onPageAdded` so bind groups rebuild when
|
|
241
|
+
* a fresh page joins. Required when any RO produces an atlas-
|
|
242
|
+
* variant `HeapTextureSet`.
|
|
243
|
+
*/
|
|
244
|
+
readonly atlasPool?: AtlasPool;
|
|
245
|
+
/**
|
|
246
|
+
* §6 family-merge opt-in — when true, build ONE family covering all
|
|
247
|
+
* effects in the scene, with a single bucket per pipelineState.
|
|
248
|
+
* Default false: each effect lands in its own bucket / shader /
|
|
249
|
+
* pipeline (the simpler baseline). Empirically the per-effect path
|
|
250
|
+
* is at-or-better than merged on tested workloads (10K–30K small
|
|
251
|
+
* ROs across 8 effects); merge stays available as opt-in until the
|
|
252
|
+
* trace-based auto-trigger lands as v2.
|
|
253
|
+
*/
|
|
254
|
+
readonly enableFamilyMerge?: boolean;
|
|
255
|
+
/**
|
|
256
|
+
* §7 derived-uniforms opt-in. When true, the renderer recognises the
|
|
257
|
+
* 10 standard derived names (ModelView, ViewProj, ModelViewProj,
|
|
258
|
+
* NormalMatrix, the 3 *TrafoInv fields, and the 3 product inverses)
|
|
259
|
+
* as compute-produced and writes them into each RO's drawHeader via
|
|
260
|
+
* a df32 compute pre-pass — not via the uniform provider. ROs MUST
|
|
261
|
+
* supply ModelTrafo / ViewTrafo / ProjTrafo as `aval<Trafo3d>` for
|
|
262
|
+
* any derived field they consume.
|
|
263
|
+
*
|
|
264
|
+
* Default false: each derived name continues to be served by the
|
|
265
|
+
* effect's `spec.inputs[name]` like any other uniform.
|
|
266
|
+
*/
|
|
267
|
+
readonly enableDerivedUniforms?: boolean;
|
|
268
|
+
}
|
|
269
|
+
export declare function buildHeapScene(device: GPUDevice, sig: import("../core/framebufferSignature.js").FramebufferSignature, initialDraws: readonly HeapDrawSpec[] | aset<HeapDrawSpec>, opts?: BuildHeapSceneOptions): HeapScene;
|
|
61
270
|
//# sourceMappingURL=heapScene.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heapScene.d.ts","sourceRoot":"","sources":["../../src/runtime/heapScene.ts"],"names":[],"mappings":"AA4CA,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"heapScene.d.ts","sourceRoot":"","sources":["../../src/runtime/heapScene.ts"],"names":[],"mappings":"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"}
|