@yali-engine/render 0.0.0-stage → 0.4.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.
Files changed (131) hide show
  1. package/dist/bvh.d.ts +66 -0
  2. package/dist/bvh.js +493 -0
  3. package/dist/bvh.js.map +1 -0
  4. package/dist/camera.d.ts +34 -0
  5. package/dist/camera.js +66 -0
  6. package/dist/camera.js.map +1 -0
  7. package/dist/cluster-build.d.ts +46 -0
  8. package/dist/cluster-build.js +179 -0
  9. package/dist/cluster-build.js.map +1 -0
  10. package/dist/cluster-pages.d.ts +70 -0
  11. package/dist/cluster-pages.js +203 -0
  12. package/dist/cluster-pages.js.map +1 -0
  13. package/dist/cluster-stream.d.ts +83 -0
  14. package/dist/cluster-stream.js +226 -0
  15. package/dist/cluster-stream.js.map +1 -0
  16. package/dist/culled-draws.d.ts +30 -0
  17. package/dist/culled-draws.js +103 -0
  18. package/dist/culled-draws.js.map +1 -0
  19. package/dist/debug-lines.d.ts +51 -0
  20. package/dist/debug-lines.js +158 -0
  21. package/dist/debug-lines.js.map +1 -0
  22. package/dist/device-profile.d.ts +100 -0
  23. package/dist/device-profile.js +131 -0
  24. package/dist/device-profile.js.map +1 -0
  25. package/dist/device.d.ts +39 -0
  26. package/dist/device.js +79 -0
  27. package/dist/device.js.map +1 -0
  28. package/dist/environment.d.ts +60 -0
  29. package/dist/environment.js +204 -0
  30. package/dist/environment.js.map +1 -0
  31. package/dist/extract.d.ts +74 -0
  32. package/dist/extract.js +194 -0
  33. package/dist/extract.js.map +1 -0
  34. package/dist/frame-graph.d.ts +112 -0
  35. package/dist/frame-graph.js +226 -0
  36. package/dist/frame-graph.js.map +1 -0
  37. package/dist/gpu-health.d.ts +74 -0
  38. package/dist/gpu-health.js +106 -0
  39. package/dist/gpu-health.js.map +1 -0
  40. package/dist/gpu-timer.d.ts +26 -0
  41. package/dist/gpu-timer.js +93 -0
  42. package/dist/gpu-timer.js.map +1 -0
  43. package/dist/headless.d.ts +28 -0
  44. package/dist/headless.js +91 -0
  45. package/dist/headless.js.map +1 -0
  46. package/dist/index.d.ts +34 -0
  47. package/dist/index.js +36 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/lights.d.ts +81 -0
  50. package/dist/lights.js +247 -0
  51. package/dist/lights.js.map +1 -0
  52. package/dist/matrix.d.ts +6 -0
  53. package/dist/matrix.js +59 -0
  54. package/dist/matrix.js.map +1 -0
  55. package/dist/meshes.d.ts +411 -0
  56. package/dist/meshes.js +545 -0
  57. package/dist/meshes.js.map +1 -0
  58. package/dist/meshlets-decoder.d.ts +20 -0
  59. package/dist/meshlets-decoder.js +47 -0
  60. package/dist/meshlets-decoder.js.map +1 -0
  61. package/dist/meshlets.d.ts +186 -0
  62. package/dist/meshlets.js +1040 -0
  63. package/dist/meshlets.js.map +1 -0
  64. package/dist/occlusion.d.ts +51 -0
  65. package/dist/occlusion.js +188 -0
  66. package/dist/occlusion.js.map +1 -0
  67. package/dist/pick-decoder.d.ts +19 -0
  68. package/dist/pick-decoder.js +45 -0
  69. package/dist/pick-decoder.js.map +1 -0
  70. package/dist/pick.d.ts +86 -0
  71. package/dist/pick.js +452 -0
  72. package/dist/pick.js.map +1 -0
  73. package/dist/pipeline-cache.d.ts +53 -0
  74. package/dist/pipeline-cache.js +96 -0
  75. package/dist/pipeline-cache.js.map +1 -0
  76. package/dist/post-options.d.ts +109 -0
  77. package/dist/post-options.js +23 -0
  78. package/dist/post-options.js.map +1 -0
  79. package/dist/post-shaders.gen.d.ts +40 -0
  80. package/dist/post-shaders.gen.js +43 -0
  81. package/dist/post-shaders.gen.js.map +1 -0
  82. package/dist/post.d.ts +101 -0
  83. package/dist/post.js +555 -0
  84. package/dist/post.js.map +1 -0
  85. package/dist/render-plugin.d.ts +239 -0
  86. package/dist/render-plugin.js +633 -0
  87. package/dist/render-plugin.js.map +1 -0
  88. package/dist/scene.d.ts +406 -0
  89. package/dist/scene.js +2005 -0
  90. package/dist/scene.js.map +1 -0
  91. package/dist/shaders.gen.d.ts +40 -0
  92. package/dist/shaders.gen.js +43 -0
  93. package/dist/shaders.gen.js.map +1 -0
  94. package/dist/shadows.d.ts +104 -0
  95. package/dist/shadows.js +227 -0
  96. package/dist/shadows.js.map +1 -0
  97. package/dist/staging-ring.d.ts +41 -0
  98. package/dist/staging-ring.js +125 -0
  99. package/dist/staging-ring.js.map +1 -0
  100. package/dist/textures.d.ts +165 -0
  101. package/dist/textures.js +361 -0
  102. package/dist/textures.js.map +1 -0
  103. package/dist/tonemap.d.ts +45 -0
  104. package/dist/tonemap.js +141 -0
  105. package/dist/tonemap.js.map +1 -0
  106. package/dist/viewport.d.ts +78 -0
  107. package/dist/viewport.js +130 -0
  108. package/dist/viewport.js.map +1 -0
  109. package/dist/webgl2/plugin.d.ts +40 -0
  110. package/dist/webgl2/plugin.js +190 -0
  111. package/dist/webgl2/plugin.js.map +1 -0
  112. package/dist/webgl2/program.d.ts +27 -0
  113. package/dist/webgl2/program.js +74 -0
  114. package/dist/webgl2/program.js.map +1 -0
  115. package/dist/webgl2/renderer.d.ts +128 -0
  116. package/dist/webgl2/renderer.js +976 -0
  117. package/dist/webgl2/renderer.js.map +1 -0
  118. package/dist/webgl2/shaders.glsl.gen.d.ts +27 -0
  119. package/dist/webgl2/shaders.glsl.gen.js +20 -0
  120. package/dist/webgl2/shaders.glsl.gen.js.map +1 -0
  121. package/dist/webgl2/textures.d.ts +11 -0
  122. package/dist/webgl2/textures.js +82 -0
  123. package/dist/webgl2/textures.js.map +1 -0
  124. package/dist/webgl2/webgl2.d.ts +1 -0
  125. package/dist/webgl2/webgl2.js +4 -0
  126. package/dist/webgl2/webgl2.js.map +1 -0
  127. package/dist/worker-mode.d.ts +85 -0
  128. package/dist/worker-mode.js +204 -0
  129. package/dist/worker-mode.js.map +1 -0
  130. package/package.json +47 -3
  131. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-plugin.js","sourceRoot":"","sources":["../src/render-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,406 @@
1
+ import type { OrbitCamera } from './camera.ts';
2
+ import type { ExtractedInstances } from './extract.ts';
3
+ import type { FrameGraph } from './frame-graph.ts';
4
+ import { type MaterialStore, type MeshStore } from './meshes.ts';
5
+ import type { LinkedShader, PipelineCache } from './pipeline-cache.ts';
6
+ import { SunShadows } from './shadows.ts';
7
+ import type { OcclusionFactory } from './occlusion.ts';
8
+ import type { Environment } from './environment.ts';
9
+ import type { ClusteredLights } from './lights.ts';
10
+ import type { TextureStore } from './textures.ts';
11
+ import { type ToneCurve } from './tonemap.ts';
12
+ /** The scene's light (besides the sun's direction, which is `camera.lightDir`): M2 increment 5. */
13
+ export interface LightingOptions {
14
+ /** Linear sun colour (default white). */
15
+ sunColor: [number, number, number];
16
+ /** Sun intensity: radiance at normal incidence (default 3). */
17
+ sunIntensity: number;
18
+ /** Image-based ambient intensity (default 1). */
19
+ ambient: number;
20
+ }
21
+ /** This frame's skinning palette (ADR-0088): `rows` palette rows of 12 f32 (three texels each), from float `at` of `f32`. */
22
+ export interface PaletteView {
23
+ readonly f32: Float32Array<ArrayBufferLike>;
24
+ readonly at: number;
25
+ readonly rows: number;
26
+ }
27
+ /** Where the renderer reads the palette each frame: `@yali-engine/animation` sets `render.scene.paletteSource`. */
28
+ export type PaletteSource = () => PaletteView | null;
29
+ /** Texels per palette texture row (`shaders/scene/skin.wesl` `PALETTE_WIDTH`). */
30
+ export declare const PALETTE_WIDTH = 1024;
31
+ /**
32
+ * The order draw classes draw in (ADR-0081, ADR-0088): everything opaque and masked, rigid then
33
+ * skinned, before anything blended.
34
+ */
35
+ export declare const CLASS_ORDER: readonly [0, 1, 2, 3, 6, 7, 8, 9, 4, 5, 10, 11];
36
+ /**
37
+ * What `render.scene` offers on every backend (ADR-0070): the WebGPU `SceneRenderer` and the
38
+ * WebGL2 renderer both have it. The knobs (`lighting`, `lodBias`, `errorPx`, `minRadiusPx`)
39
+ * apply on the next frame.
40
+ */
41
+ export interface SceneControls {
42
+ readonly lighting: LightingOptions;
43
+ lodBias: number;
44
+ errorPx: number;
45
+ minRadiusPx: number;
46
+ /** Who culls: the GPU's compute pass or the CPU's extract (always `cpu` on WebGL2). */
47
+ readonly cull: 'gpu' | 'cpu';
48
+ /** How instances reach the vertex stage (always `vertex` on WebGL2). */
49
+ readonly path: 'storage' | 'vertex';
50
+ readonly useBundles: boolean;
51
+ /** Instances drawn (read back a few frames late on the GPU cull; NaN until known). */
52
+ readonly visible: number;
53
+ readonly count: number;
54
+ readonly capacity: number;
55
+ readonly stats: {
56
+ readonly slots: number;
57
+ readonly draws: number;
58
+ readonly layouts: number;
59
+ readonly meshes: number;
60
+ readonly shaderBuilds: number;
61
+ };
62
+ readonly staticUploads: number;
63
+ /** Instance transform bytes uploaded last frame (ADR-0075). */
64
+ readonly transformBytes: number;
65
+ /** The staging ring's counters (null when there is none). */
66
+ readonly staging: {
67
+ writes: number;
68
+ fallbacks: number;
69
+ } | null;
70
+ readonly shaderError: string;
71
+ /** Resolves when node-material shaders registered so far draw (at once on WebGL2, which draws them as the standard material). */
72
+ shadersReady(): Promise<void>;
73
+ /** Resolves when the draw classes the meshes need (ADR-0081: mask, blend, double-sided) are compiled. */
74
+ drawClassesReady(): Promise<void>;
75
+ /** Where the skinned draws read their palette each frame (ADR-0088), or null (they draw at their bind pose). */
76
+ paletteSource: PaletteSource | null;
77
+ /** Instances drawn at each LOD (a diagnostic: it allocates). */
78
+ drawnByLod(): number[];
79
+ /**
80
+ * Writes the CPU cull's parameters into linear memory (the extract reads them). With
81
+ * shadows it fits the cascades first (`widthPx` sets the aspect), so the cull can sort each
82
+ * slot's instances by the cascades they reach (ADR-0073).
83
+ */
84
+ writeCullParams(f32: Float32Array, at: number, camera: OrbitCamera, heightPx: number, widthPx?: number): void;
85
+ /**
86
+ * The shading level (ADR-0072): 0 full PBR, 1 Lambert with the SH ambient and the sun's
87
+ * shadow, 2 flat (no textures, no shadows, and no shadow pass). Levels above `shadingLevels
88
+ * − 1` clamp. The governor's `render.shading` knob on T0.
89
+ */
90
+ shadingLevel: number;
91
+ /** How many shading levels were compiled (1 unless the plugin enables the knob). */
92
+ readonly shadingLevels: number;
93
+ readonly gpuBytes: number;
94
+ readonly liveBuffers: number;
95
+ }
96
+ /** Bytes per instance: a 32-byte transform plus a 16-byte static record (ADR-0055). */
97
+ export declare const INSTANCE_BYTES = 48;
98
+ /**
99
+ * Cluster culling for big meshes, from `@yali-engine/render/meshlets` (ADR-0100): the main view's
100
+ * finest-LOD slot of a mesh it covers is skipped, and it draws that mesh's clusters itself.
101
+ */
102
+ export interface ClusterHook {
103
+ covers(mesh: number): boolean;
104
+ /** Resolves when its draw pipelines for the current draw shader are built. */
105
+ ready(): Promise<void>;
106
+ /** Draws frames (`frame`) until streamed cluster pages stop arriving (ADR-0134; goldens). */
107
+ settled?(frame: () => void, most?: number): Promise<void>;
108
+ /** Bumped when the covered meshes change (recorded bundles are re-recorded). */
109
+ readonly version: number;
110
+ /** Adds a cluster cull (a compute pass) after the instance cull it reads: phase 0 without occlusion, 1 and 2 its two passes (ADR-0109). */
111
+ addCull(graph: FrameGraph, after: string, phase?: 0 | 1 | 2): void;
112
+ /** Draws a phase's visible clusters into the opaque pass it is called from. */
113
+ encodeDraw(pass: GPURenderPassEncoder, phase?: 0 | 1 | 2): void;
114
+ /** Adds the shadow casters' cluster cull after the instance cull `after` (ADR-0112). */
115
+ addShadowCull(graph: FrameGraph, after: string): void;
116
+ /** Whether this frame's casters of `mesh` are drawn as clusters (the cascades skip its finest-LOD slots). */
117
+ shadowCovers(mesh: number): boolean;
118
+ /** Draws cascade `cascade`'s clustered casters (its viewport set); it may bind its own index buffer (the caller rebinds its own). */
119
+ encodeShadow(pass: GPURenderPassEncoder, cascade: number): void;
120
+ /** Starts building the clustered motion pipeline over the motion pass's shader (`ready()` awaits it). */
121
+ prepareMotion(shader: LinkedShader, format: GPUTextureFormat): void;
122
+ /** Whether the motion pass may skip the clustered meshes (their clustered motion pipeline is built). */
123
+ motionCovers(motion: ClusterMotion): boolean;
124
+ /** Draws the clusters the view drew into the motion pass. */
125
+ encodeMotion(pass: GPURenderPassEncoder, motion: ClusterMotion): void;
126
+ }
127
+ /** What the clustered shadow casters read from the scene each frame (ADR-0112). */
128
+ export interface ClusterShadowSource {
129
+ readonly cascades: number;
130
+ /** Five inward planes per cascade, camera-relative (`cascadeCullPlanes`' layout). */
131
+ readonly planes: Float32Array;
132
+ /** The direction towards the light. */
133
+ readonly light: ArrayLike<number>;
134
+ readonly cascadeBuffer: GPUBuffer;
135
+ cascadeOffset(c: number): number;
136
+ readonly cascadeBytes: number;
137
+ /** The scene's shadow shader (the clustered caster stage is appended to it). */
138
+ readonly shader: LinkedShader;
139
+ }
140
+ /** The motion pass, as the clustered motion draw extends it (ADR-0112): its shader, its rigid bind group's entries, their generation, its target format. */
141
+ export interface ClusterMotion {
142
+ readonly shader: LinkedShader;
143
+ readonly entries: readonly GPUBindGroupEntry[];
144
+ readonly key: string;
145
+ readonly format: GPUTextureFormat;
146
+ }
147
+ /** The `Camera` uniform (shaders/core/camera.wesl): the camera's 176 bytes, then the instance origin (ADR-0075). */
148
+ export declare const CAMERA_BYTES = 192;
149
+ /** Bytes per CPU-culled record (ADR-0059): position, scale, rotation, colour, material (no mesh: the draw knows it). */
150
+ export declare const CULLED_BYTES = 40;
151
+ /** The skin stream's vertex layout (ADR-0088): 4 × u16 joints at location 6, 4 × unorm16 weights at 7. */
152
+ /** A pool vertex's position only (the motion pass, ADR-0098). */
153
+ export declare const POSITION_LAYOUT: GPUVertexBufferLayout;
154
+ export declare const SKIN_LAYOUT: GPUVertexBufferLayout;
155
+ /**
156
+ * The GPU-driven many-draw renderer (DESIGN.md §11, M2 increment 2). The core's extract
157
+ * writes every `render.Mesh` instance into linear memory, grouped by mesh, with the count
158
+ * per mesh; `upload` copies them to the GPU straight from that memory. A compute pass
159
+ * culls each instance against its mesh's bounding sphere, picks its LOD from the projected
160
+ * error, and appends it to that (mesh, LOD) slot; the draw is one `drawIndexedIndirect`
161
+ * per slot over one geometry pool.
162
+ *
163
+ * A slot's instances live at a start the CPU computes from the counts (the layout), so a
164
+ * draw finds them through `firstInstance` (the storage path) or through a vertex-buffer
165
+ * offset with `firstInstance` 0 (the vertex path, for compatibility mode; ADR-0045). The
166
+ * layout, the indirect-argument template and the recorded render bundle change only when
167
+ * the counts do.
168
+ */
169
+ export declare class SceneRenderer implements SceneControls {
170
+ #private;
171
+ readonly device: GPUDevice;
172
+ /** Instance-buffer capacity (grows on demand). */
173
+ capacity: number;
174
+ /** Instances uploaded this frame. */
175
+ count: number;
176
+ /** Instances drawn, read back a few frames late (NaN until the first readback). */
177
+ visible: number;
178
+ /** Replay a recorded render bundle instead of encoding the draws each frame. Set before `init`. */
179
+ useBundles: boolean;
180
+ /** Upload instances through a mapped staging ring (default true; see `StagingRing`). Set before `init`. */
181
+ useStaging: boolean;
182
+ /** How the vertex stage gets instance data (ADR-0045; see the class comment). Set before `init`. */
183
+ path: 'storage' | 'vertex';
184
+ /**
185
+ * Who culls (ADR-0057): `gpu`, the compute pass feeding indirect draws; `cpu`, the extract
186
+ * (`InstanceExtractor.runCulled`) with ordinary draws from its per-slot counts, for
187
+ * devices where indirect draws cost more than they save (compatibility mode). `cpu` uses
188
+ * the vertex path. Set before `init`.
189
+ */
190
+ cull: 'gpu' | 'cpu';
191
+ /** The largest projected LOD error allowed, in pixels, before `lodBias`. */
192
+ errorPx: number;
193
+ /**
194
+ * The governor's knob (`render.lodBias`, ADR-0050): each unit doubles the allowed LOD
195
+ * error, and from 1 up also drops instances under `0.25 × 2^lodBias` pixels of radius
196
+ * (0.5, 1, 2 px), so a step saves work even in a scene without LODs.
197
+ */
198
+ lodBias: number;
199
+ /** Instances whose projected radius is under this many pixels are not drawn (0 keeps them all; `lodBias` may raise it). */
200
+ minRadiusPx: number;
201
+ /** Instances each shadow cascade drew last frame on the CPU cull (ADR-0073; a diagnostic). */
202
+ get shadowCasters(): number[];
203
+ /** What the last layout and draw looked like. */
204
+ readonly stats: {
205
+ slots: number;
206
+ draws: number;
207
+ layouts: number;
208
+ meshes: number;
209
+ shaderBuilds: number;
210
+ };
211
+ /** The light; changes apply the next frame. */
212
+ readonly lighting: LightingOptions;
213
+ /**
214
+ * When set (T0, ADR-0071), the draw tone-maps inline with these knobs and writes the display
215
+ * format directly: no HDR target, no tone-mapping pass. Set before `init`.
216
+ */
217
+ inlineTone: {
218
+ readonly exposure: number;
219
+ readonly curve: ToneCurve;
220
+ } | null;
221
+ /** Where the skinned draws read the palette each frame (`@yali-engine/animation` sets it). */
222
+ paletteSource: PaletteSource | null;
223
+ /**
224
+ * Benchmarks only: a transform of the linked draw shader, compiled beside it as extra
225
+ * shading levels (`#buildDraws`), so a page can alternate the two and compare them under
226
+ * the same conditions (a phone's GPU clocks move between separate runs). Set before `init`.
227
+ * A variant must keep every binding statically used (or keep the level's `bindings_anchor`
228
+ * call): its pipelines share the bind-group entries, and an unused binding drops out of
229
+ * the auto layout, so the group fails validation (`RENDER_SETUP`).
230
+ */
231
+ shaderVariant: ((wgsl: string) => string) | null;
232
+ /** Shading levels to compile (1, or 3 for the governor's knob). Set before `init`. */
233
+ shadingLevels: number;
234
+ shadingLevel: number;
235
+ /** Static-region uploads so far (they should be rare: ADR-0055). */
236
+ staticUploads: number;
237
+ /** Transform bytes uploaded last frame (all of them, or only the dirty ranges: ADR-0075). */
238
+ transformBytes: number;
239
+ /**
240
+ * Two-pass occlusion culling (ADR-0095), `occlusion()` from `@yali-engine/render/occlusion`: set before
241
+ * `init`; it runs on the GPU cull's storage path only (`occlusionActive`).
242
+ */
243
+ occlusion: OcclusionFactory | null;
244
+ constructor(device: GPUDevice, format: GPUTextureFormat, store: MeshStore, materials: MaterialStore, textures: TextureStore, capacity: number);
245
+ /** Compiles both pipelines asynchronously through `cache` (DESIGN.md §13: never on the first frame). */
246
+ init(cache: PipelineCache): Promise<void>;
247
+ /**
248
+ * Resolves when every draw class the stored meshes need is compiled (they build in the
249
+ * background, and a class draws from the frame after its pipelines exist). Await it for a
250
+ * first frame that must show every mesh (goldens, captures).
251
+ */
252
+ drawClassesReady(): Promise<void>;
253
+ /**
254
+ * Resolves when the draw pipeline includes every node-material shader registered so far
255
+ * (it compiles in the background). Await it after registering shaders to keep the first
256
+ * frames from drawing those materials as standard ones; rejects when the build failed.
257
+ */
258
+ shadersReady(): Promise<void>;
259
+ /** The last failed node-material shader build's message ('' when none). */
260
+ shaderError: string;
261
+ /** The sun's shadows (set before `init`; the render plugin does). */
262
+ set shadows(s: SunShadows);
263
+ /** The clustered point and spot lights (set before `init`; the render plugin does). */
264
+ set lights(l: ClusteredLights);
265
+ /** The environment the draw lights with (set before `init`; the render plugin does). */
266
+ set environment(env: Environment);
267
+ /**
268
+ * Writes the CPU cull's parameters (ADR-0057) into linear memory at word `at` of `f32`:
269
+ * the camera's six frustum planes (camera-relative), the LOD scale for a target `heightPx`
270
+ * tall, and the error and small-instance thresholds after `lodBias`: what the GPU cull
271
+ * reads from its uniforms.
272
+ */
273
+ writeCullParams(f32: Float32Array, at: number, camera: OrbitCamera, heightPx: number, widthPx?: number): void;
274
+ /** Grows the instance buffers to hold `count` instances (rare; reallocates). */
275
+ ensureCapacity(count: number): void;
276
+ /** Whether two-pass occlusion culling runs (asked for, on the GPU cull's storage path). */
277
+ get occlusionActive(): boolean;
278
+ /** The staging ring's counters (null when staging is off). */
279
+ get staging(): {
280
+ writes: number;
281
+ fallbacks: number;
282
+ } | null;
283
+ /** The camera uniform buffer. */
284
+ get cameraBuffer(): GPUBuffer;
285
+ /**
286
+ * Uploads the camera uniform; `heightPx` (the render target's height) sets the LOD scale.
287
+ * `origin` is the camera's offset from the anchor the instance records are relative to
288
+ * (ADR-0075; omit it for camera-relative records).
289
+ */
290
+ setCamera(camera: OrbitCamera, heightPx: number, origin?: ArrayLike<number>): void;
291
+ /**
292
+ * Uploads this frame's extracted instances straight from linear memory (`heap` is the
293
+ * whole-memory byte view, `u32` the same memory as words): the transforms every frame,
294
+ * the static records only when they changed or the GPU has not got them (ADR-0055). Lays
295
+ * out the draw slots from the per-mesh counts. Call `recordUpload` on the frame's encoder
296
+ * before the passes, and `afterSubmit` after `queue.submit`.
297
+ */
298
+ upload(heap: Uint8Array, u32: Uint32Array, x: ExtractedInstances): void;
299
+ /** Set before `addPasses` when the colour target is the HDR one: blended classes then draw after a copy of the opaque scene. */
300
+ screenTransmission: boolean;
301
+ /** The colour target's size (call before `upload` each frame): the opaque copy follows it. */
302
+ setTargetSize(width: number, height: number): void;
303
+ /** TAA's jitter in clip units, applied to the uploaded view-projection (ADR-0092); null for none. */
304
+ jitter: Float32Array | null;
305
+ /** Set by the render plugin from `renderPlugin({ meshlets })`, on the GPU cull's storage path. */
306
+ clusters: ClusterHook | null;
307
+ /** The finest-LOD slots of this layout (and where their instances are), for the cluster cull. */
308
+ clusterLayout(): {
309
+ key: string;
310
+ slots: {
311
+ slot: number;
312
+ mesh: number;
313
+ start: number;
314
+ n: number;
315
+ }[];
316
+ sets: number[];
317
+ slots_: number;
318
+ region: number;
319
+ } | null;
320
+ /** What the cluster passes bind (null until the buffers exist). */
321
+ clusterSources(): {
322
+ key: string;
323
+ camera: GPUBuffer;
324
+ instances: GPUBuffer;
325
+ visible: GPUBuffer;
326
+ args: GPUBuffer;
327
+ cullParams: GPUBuffer;
328
+ pool: GPUBuffer;
329
+ drawEntries: GPUBindGroupEntry[];
330
+ occlusion: {
331
+ params: GPUBuffer;
332
+ view: GPUTextureView;
333
+ version: number;
334
+ } | null;
335
+ } | null;
336
+ /** The full-shading draw shader, with the app's node materials (the clustered draw extends it). */
337
+ clusterShader(): LinkedShader;
338
+ /** What the clustered shadow casters read this frame (ADR-0112; the planes refitted in place); null when the sun casts nothing. */
339
+ clusterShadow(): ClusterShadowSource | null;
340
+ /** Bumped when a motion resource is recreated: bind groups that hold one are rebuilt. */
341
+ motionVersion: number;
342
+ /** Whether motion vectors can be drawn here (the GPU cull's storage path). */
343
+ get motionSupported(): boolean;
344
+ /** What the motion pass binds (null until the instances exist, or off this path); keeps last frame's copies from now on. */
345
+ motionResources(): {
346
+ camera: GPUBuffer;
347
+ instances: GPUBuffer;
348
+ visible: GPUBuffer;
349
+ prevInstances: GPUBuffer;
350
+ palette: GPUTexture;
351
+ prevPalette: GPUTexture;
352
+ prevPool: GPUBuffer;
353
+ prevSkinnedPool: GPUBuffer;
354
+ } | null;
355
+ /** The bind-group generation of the instances, the visible ranges and the palette (motion rebuilds its groups on a change). */
356
+ get motionKey(): string;
357
+ /**
358
+ * Draws every opaque instance of the view's slot sets (both passes under occlusion) with the
359
+ * motion pipelines: `rigid`, and `skinned` for the skinned classes (pipeline, bind group). With
360
+ * `clustered` (the motion pass's shader and rigid entries), meshes the view drew as clusters draw
361
+ * those same clusters once their pipeline is built (ADR-0112), whole until then.
362
+ */
363
+ encodeMotion(pass: GPURenderPassEncoder, rigid: [GPURenderPipeline, GPUBindGroup], skinned: [GPURenderPipeline, GPUBindGroup] | null, clustered?: ClusterMotion, motionParams?: GPUBuffer): void;
364
+ /**
365
+ * Starts building the masked classes' motion pipelines over the draw shader (`vs_motion_mask`,
366
+ * `fs_motion_mask`: the material's alpha test), for a motion target of `format`: the motion pass calls
367
+ * it when it builds its graph, so `drawClassesReady()` awaits them (trap 134). Classes present only.
368
+ */
369
+ prepareMaskMotion(format: GPUTextureFormat): void;
370
+ /** What the motion pass reads besides the visible instances: the cluster lists it redraws (ADR-0112). */
371
+ get motionReads(): string[];
372
+ /** After the frame's passes: this frame's transforms and palette become last frame's (motion only). */
373
+ recordMotionCopies(encoder: GPUCommandEncoder): void;
374
+ /**
375
+ * Adds `scene.cull`, `scene.shadow` (with shadows) and `scene.draw` to the graph. `keepDepth`
376
+ * stores the depth after the draw, for a later pass that samples it (TAA).
377
+ */
378
+ addPasses(graph: FrameGraph, color: string, depth: string, keepDepth?: boolean): void;
379
+ /**
380
+ * Drawn at the end of `scene.draw`, after every draw class, into the same colour and depth
381
+ * targets (debug lines, ADR-0087). Each gets the pass encoder.
382
+ */
383
+ readonly overlays: ((pass: GPURenderPassEncoder) => void)[];
384
+ /** The colour format the scene draws into (an overlay's pipeline must match it). */
385
+ get format(): GPUTextureFormat;
386
+ /** The rigid vertex pool (`MESH_VERTEX_FLOATS` f32 per vertex; STORAGE): GPU deformables write their meshes' vertices into it (ADR-0101). */
387
+ get vertexPool(): GPUBuffer | null;
388
+ /** The index pool (u32; COPY_DST): a torn cloth copies its triangles over its mesh's (ADR-0104). */
389
+ get indexPool(): GPUBuffer | null;
390
+ /** Records this frame's staged instance copy and the indirect-argument reset (call first on the frame's encoder). */
391
+ recordUpload(encoder: GPUCommandEncoder): void;
392
+ /** Call after `queue.submit`: recycles the staging buffers. */
393
+ afterSubmit(): void;
394
+ /** Call after recording: every 30 frames, copies the draw args out to count the drawn instances. */
395
+ afterPasses(encoder: GPUCommandEncoder): boolean;
396
+ /** Call after submit when `afterPasses` returned true. */
397
+ collect(): void;
398
+ /** Instances drawn at each LOD (index 0 = full detail), from the last readback. A diagnostic: it allocates. */
399
+ drawnByLod(): number[];
400
+ /** Bytes of the per-instance and layout GPU buffers, for the memory counter. */
401
+ get gpuBytes(): number;
402
+ /** GPU buffers this renderer currently owns (for the dispose leak check). */
403
+ get liveBuffers(): number;
404
+ /** Destroys every GPU buffer this renderer owns. */
405
+ destroy(): void;
406
+ }