@tinypoly/gpu-renderer 0.2.5 → 0.3.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 (101) hide show
  1. package/ARCHITECTURE.md +48 -10
  2. package/README.md +2 -0
  3. package/dist/accumulator.d.ts.map +1 -1
  4. package/dist/accumulator.js +1 -0
  5. package/dist/accumulator.js.map +1 -1
  6. package/dist/denoise.js +2 -2
  7. package/dist/denoise.js.map +1 -1
  8. package/dist/device.d.ts.map +1 -1
  9. package/dist/device.js +9 -0
  10. package/dist/device.js.map +1 -1
  11. package/dist/frameLayout.d.ts.map +1 -1
  12. package/dist/frameLayout.js +5 -0
  13. package/dist/frameLayout.js.map +1 -1
  14. package/dist/geometry.d.ts +48 -8
  15. package/dist/geometry.d.ts.map +1 -1
  16. package/dist/geometry.js +409 -134
  17. package/dist/geometry.js.map +1 -1
  18. package/dist/grass.d.ts.map +1 -1
  19. package/dist/grass.js +2 -1
  20. package/dist/grass.js.map +1 -1
  21. package/dist/imageResolve.js +2 -2
  22. package/dist/imageResolve.js.map +1 -1
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +1 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/instancing.d.ts +100 -0
  28. package/dist/instancing.d.ts.map +1 -0
  29. package/dist/instancing.js +286 -0
  30. package/dist/instancing.js.map +1 -0
  31. package/dist/lights.d.ts.map +1 -1
  32. package/dist/lights.js +8 -5
  33. package/dist/lights.js.map +1 -1
  34. package/dist/memoryProbe.d.ts +76 -0
  35. package/dist/memoryProbe.d.ts.map +1 -0
  36. package/dist/memoryProbe.js +197 -0
  37. package/dist/memoryProbe.js.map +1 -0
  38. package/dist/oidnPass.d.ts +6 -0
  39. package/dist/oidnPass.d.ts.map +1 -1
  40. package/dist/oidnPass.js +18 -1
  41. package/dist/oidnPass.js.map +1 -1
  42. package/dist/pathTracePass.d.ts +15 -2
  43. package/dist/pathTracePass.d.ts.map +1 -1
  44. package/dist/pathTracePass.js +38 -16
  45. package/dist/pathTracePass.js.map +1 -1
  46. package/dist/renderer.d.ts +13 -0
  47. package/dist/renderer.d.ts.map +1 -1
  48. package/dist/renderer.js +248 -41
  49. package/dist/renderer.js.map +1 -1
  50. package/dist/sceneUpload.d.ts +26 -8
  51. package/dist/sceneUpload.d.ts.map +1 -1
  52. package/dist/sceneUpload.js +97 -27
  53. package/dist/sceneUpload.js.map +1 -1
  54. package/dist/shaderModule.d.ts.map +1 -1
  55. package/dist/shaderModule.js +2 -1
  56. package/dist/shaderModule.js.map +1 -1
  57. package/dist/skyBake.d.ts.map +1 -1
  58. package/dist/skyBake.js +5 -3
  59. package/dist/skyBake.js.map +1 -1
  60. package/dist/texturePack.d.ts +43 -3
  61. package/dist/texturePack.d.ts.map +1 -1
  62. package/dist/texturePack.js +209 -37
  63. package/dist/texturePack.js.map +1 -1
  64. package/dist/wgsl/bvh.wgsl.d.ts +5 -1
  65. package/dist/wgsl/bvh.wgsl.d.ts.map +1 -1
  66. package/dist/wgsl/bvh.wgsl.js +105 -15
  67. package/dist/wgsl/bvh.wgsl.js.map +1 -1
  68. package/dist/wgsl/common.wgsl.d.ts.map +1 -1
  69. package/dist/wgsl/common.wgsl.js +92 -11
  70. package/dist/wgsl/common.wgsl.js.map +1 -1
  71. package/dist/wgsl/surface.wgsl.d.ts +1 -1
  72. package/dist/wgsl/surface.wgsl.d.ts.map +1 -1
  73. package/dist/wgsl/surface.wgsl.js +24 -14
  74. package/dist/wgsl/surface.wgsl.js.map +1 -1
  75. package/dist/wgsl/texture.wgsl.d.ts +1 -1
  76. package/dist/wgsl/texture.wgsl.d.ts.map +1 -1
  77. package/dist/wgsl/texture.wgsl.js +11 -0
  78. package/dist/wgsl/texture.wgsl.js.map +1 -1
  79. package/package.json +1 -1
  80. package/src/accumulator.ts +1 -0
  81. package/src/denoise.ts +2 -2
  82. package/src/device.ts +12 -0
  83. package/src/frameLayout.ts +5 -0
  84. package/src/geometry.ts +527 -133
  85. package/src/grass.ts +2 -1
  86. package/src/imageResolve.ts +2 -2
  87. package/src/index.ts +1 -0
  88. package/src/instancing.ts +415 -0
  89. package/src/lights.ts +9 -5
  90. package/src/memoryProbe.ts +275 -0
  91. package/src/oidnPass.ts +21 -1
  92. package/src/pathTracePass.ts +42 -18
  93. package/src/renderer.ts +308 -47
  94. package/src/sceneUpload.ts +139 -36
  95. package/src/shaderModule.ts +2 -1
  96. package/src/skyBake.ts +5 -3
  97. package/src/texturePack.ts +274 -43
  98. package/src/wgsl/bvh.wgsl.ts +105 -15
  99. package/src/wgsl/common.wgsl.ts +92 -11
  100. package/src/wgsl/surface.wgsl.ts +24 -14
  101. package/src/wgsl/texture.wgsl.ts +11 -0
@@ -0,0 +1,197 @@
1
+ import { SLOT_CHANNELS } from "./texturePack.js";
2
+ const live = new Map();
3
+ let nextId = 0;
4
+ let enabled = false;
5
+ // A resource dropped without destroy() still holds its memory until it is collected; then it leaves the count.
6
+ const collected = typeof FinalizationRegistry === "undefined"
7
+ ? null
8
+ : new FinalizationRegistry(id => live.delete(id));
9
+ const MB = 1024 * 1024;
10
+ /** Turns the memory log on or off. It is off by default. */
11
+ export function setMemoryLogging(on) {
12
+ enabled = on;
13
+ }
14
+ /** Whether the memory log is on, so a caller can skip measuring what nobody will read. */
15
+ export function memoryLogging() {
16
+ return enabled;
17
+ }
18
+ function track(resource, label, bytes) {
19
+ const id = nextId++;
20
+ const destroy = resource.destroy.bind(resource);
21
+ live.set(id, { label, bytes });
22
+ collected?.register(resource, id);
23
+ resource.destroy = () => {
24
+ live.delete(id);
25
+ destroy();
26
+ };
27
+ return resource;
28
+ }
29
+ /** Bytes per texel of the formats the renderer and a canvas use; anything else counts as four. */
30
+ function texelBytes(format) {
31
+ if (format.startsWith("rgba32"))
32
+ return 16;
33
+ if (format.startsWith("rgba16") || format.startsWith("rg32"))
34
+ return 8;
35
+ if (format.startsWith("r8") && !format.startsWith("r8g8"))
36
+ return 1;
37
+ return 4;
38
+ }
39
+ /** Counts every buffer and texture the device creates from now on. */
40
+ export function trackDevice(device) {
41
+ const createBuffer = device.createBuffer.bind(device);
42
+ const createTexture = device.createTexture.bind(device);
43
+ device.createBuffer = descriptor => track(createBuffer(descriptor), descriptor.label || "unlabeled", descriptor.size);
44
+ device.createTexture = descriptor => {
45
+ const size = descriptor.size;
46
+ const [width, height = 1, layers = 1] = Array.isArray(size)
47
+ ? size
48
+ : [size.width, size.height ?? 1, size.depthOrArrayLayers ?? 1];
49
+ return track(createTexture(descriptor), descriptor.label || "texture", width * height * layers * texelBytes(descriptor.format) * (descriptor.mipLevelCount ?? 1));
50
+ };
51
+ }
52
+ const mb = (bytes) => Math.round(bytes / MB * 10) / 10;
53
+ /** Bytes of every typed array and ArrayBuffer reachable from a value, each counted once, without crossing into DOM. */
54
+ export function retainedBytes(value) {
55
+ const seen = new Set();
56
+ const buffers = new Set();
57
+ const stack = [value];
58
+ let plain = 0;
59
+ while (stack.length) {
60
+ const item = stack.pop();
61
+ if (item === null || typeof item !== "object" || seen.has(item)) {
62
+ if (typeof item === "string")
63
+ plain += item.length * 2;
64
+ continue;
65
+ }
66
+ seen.add(item);
67
+ if (ArrayBuffer.isView(item)) {
68
+ buffers.add(item.buffer);
69
+ continue;
70
+ }
71
+ if (item instanceof ArrayBuffer) {
72
+ buffers.add(item);
73
+ continue;
74
+ }
75
+ if (Array.isArray(item)) {
76
+ // A plain array of numbers costs eight bytes an element, which is how a large one goes unnoticed.
77
+ plain += item.length * 8;
78
+ for (const element of item)
79
+ if (typeof element === "object" || typeof element === "string")
80
+ stack.push(element);
81
+ continue;
82
+ }
83
+ if (typeof item.nodeType === "number")
84
+ continue;
85
+ for (const key of Object.keys(item))
86
+ stack.push(item[key]);
87
+ }
88
+ let typed = 0;
89
+ for (const buffer of buffers)
90
+ typed += buffer.byteLength;
91
+ return typed + plain;
92
+ }
93
+ /** What the device holds, in MB, with the largest labels first. */
94
+ export function deviceMemory() {
95
+ const byLabel = new Map();
96
+ let total = 0;
97
+ for (const { label, bytes } of live.values()) {
98
+ total += bytes;
99
+ byLabel.set(label, (byLabel.get(label) ?? 0) + bytes);
100
+ }
101
+ const sorted = [...byLabel].sort((a, b) => b[1] - a[1]).slice(0, 12);
102
+ return { totalMB: mb(total), byLabel: Object.fromEntries(sorted.map(([label, bytes]) => [label, mb(bytes)])) };
103
+ }
104
+ /** The page's JavaScript heap, where the browser tells (Chrome and Edge only). */
105
+ function heap() {
106
+ const memory = performance.memory;
107
+ return memory
108
+ ? { usedMB: mb(memory.usedJSHeapSize), totalMB: mb(memory.totalJSHeapSize), limitMB: mb(memory.jsHeapSizeLimit) }
109
+ : null;
110
+ }
111
+ /** Logs one step: the device's total and largest labels, the JavaScript heap, and whatever sizes the step adds. */
112
+ export function logMemory(step, details = {}) {
113
+ if (!enabled)
114
+ return;
115
+ const device = deviceMemory();
116
+ const js = heap();
117
+ // As text, not as an object: a console that folds objects loses them when it is copied.
118
+ const text = Object.entries({ ...details, device: device.byLabel })
119
+ .map(([key, value]) => `\n ${key}: ${typeof value === "object" ? JSON.stringify(value) : String(value)}`)
120
+ .join("");
121
+ // eslint-disable-next-line no-console -- the log is the point of this module
122
+ console.info(`[gpu-renderer] ${step}: device ${device.totalMB} MB`
123
+ + (js ? `, JS heap ${js.usedMB}/${js.limitMB} MB` : "") + text);
124
+ }
125
+ /**
126
+ * Where a snapshot's triangles come from: plain meshes, wireframe materials, or lines, points and sprites, which the
127
+ * packer turns into triangles facing the camera (a line segment becomes two). Lines and wireframes that are not
128
+ * meant to be rendered are the usual reason a scene packs far more than it shows. Also the largest meshes, by the
129
+ * triangles each one packs.
130
+ */
131
+ export function sceneBreakdown(meshes) {
132
+ const kinds = {};
133
+ const largest = [];
134
+ for (const mesh of meshes) {
135
+ const vertices = (mesh.attributes.position?.data.length ?? 0) / 3;
136
+ const count = mesh.index?.length ?? vertices;
137
+ const material = mesh.materials[0];
138
+ const wireframe = !mesh.primitive && mesh.materials.some(entry => entry?.values?.wireframe === true);
139
+ const kind = mesh.primitive ?? (wireframe ? "wireframe" : "mesh");
140
+ // Two triangles a segment or a point; a strip has one segment fewer than vertices.
141
+ const packed = kind === "lineSegments" ? count : kind === "line" || kind === "lineLoop" ? 2 * count
142
+ : kind === "points" ? 2 * count : count / 3;
143
+ kinds[kind] ??= { meshes: 0, packedTriangles: 0 };
144
+ kinds[kind].meshes++;
145
+ kinds[kind].packedTriangles += Math.round(packed);
146
+ largest.push({ kind, material: material?.name || material?.type || "?", packedTriangles: Math.round(packed),
147
+ vertices });
148
+ }
149
+ largest.sort((a, b) => b.packedTriangles - a.packedTriangles);
150
+ return { kinds, largest: largest.slice(0, 10) };
151
+ }
152
+ /**
153
+ * What each texture costs and how much of it is read: the slots that use it, the channels those slots read, and the
154
+ * bytes a texel would take if only those channels were kept (one, two or four bytes; float textures keep their four
155
+ * floats). The total says what keeping only the channels read would save.
156
+ */
157
+ export function textureUsage(textures, materials) {
158
+ const slots = new Map();
159
+ for (const material of new Set(materials)) {
160
+ for (const [slot, id] of Object.entries(material?.maps ?? {})) {
161
+ if (typeof id !== "string")
162
+ continue;
163
+ let known = slots.get(id);
164
+ if (!known)
165
+ slots.set(id, known = new Set());
166
+ known.add(slot);
167
+ }
168
+ }
169
+ let nowBytes = 0, packedBytes = 0;
170
+ const rows = textures.map(texture => {
171
+ const used = [...slots.get(texture.id) ?? []];
172
+ // A normal map's third component could be rebuilt from the other two, so it counts as two here.
173
+ const channels = new Set(used.flatMap(slot => [...(slot.endsWith("ormalMap") ? "rg" : SLOT_CHANNELS[slot] ?? "rgba")]));
174
+ const float = texture.data instanceof Float32Array;
175
+ const texels = texture.width * texture.height;
176
+ const now = texels * (float ? 16 : 4);
177
+ // Three channels do not pack into fewer than four bytes on a word boundary; one or two do.
178
+ const kept = float ? 16 : channels.size === 0 ? 0 : channels.size <= 2 ? channels.size : 4;
179
+ const packed = texels * kept;
180
+ nowBytes += now;
181
+ packedBytes += packed;
182
+ return {
183
+ id: texture.id.length > 12 ? `${texture.id.slice(0, 12)}…` : texture.id,
184
+ fullId: texture.id,
185
+ size: `${texture.width}x${texture.height}`,
186
+ MB: mb(now),
187
+ slots: used.join("+") || "unused",
188
+ channels: [...channels].sort().join("") || "-",
189
+ packedMB: mb(packed),
190
+ };
191
+ });
192
+ rows.sort((a, b) => b.MB - a.MB);
193
+ return { totalMB: mb(nowBytes), packedMB: mb(packedBytes), textures: rows };
194
+ }
195
+ /** Bytes as MB, for the details of a step. */
196
+ export const toMB = mb;
197
+ //# sourceMappingURL=memoryProbe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryProbe.js","sourceRoot":"","sources":["../src/memoryProbe.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,12 @@ export declare class OidnPass {
43
43
  run(accumulation: GPUBuffer, width: number, height: number, strength: number, weights: string, signal?: {
44
44
  cancelled: boolean;
45
45
  }): Promise<boolean>;
46
+ /**
47
+ * Lets go of everything sized by an image: the four buffers here and the network's own, its activations and its
48
+ * input and output passes, which together hold a few hundred megabytes for a large image. The network is loaded
49
+ * again by the next run. Call it only once no run is in flight.
50
+ */
51
+ release(): Promise<void>;
46
52
  destroy(): void;
47
53
  }
48
54
  //# sourceMappingURL=oidnPass.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oidnPass.d.ts","sourceRoot":"","sources":["../src/oidnPass.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAiE,CAAC;AAKnG;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,QAgGrB,CAAC;AAsBF;;;;GAIG;AACH,qBAAa,QAAQ;IAaP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IACnB,0EAA0E;IAC1E,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAEH,MAAM,EAAE,SAAS;IA0B9C,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,QAAQ;IAUhB;;;OAGG;IACG,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EACjG,MAAM,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAgDpD,OAAO;CAMR"}
1
+ {"version":3,"file":"oidnPass.d.ts","sourceRoot":"","sources":["../src/oidnPass.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAiE,CAAC;AAKnG;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,QAgGrB,CAAC;AAsBF;;;;GAIG;AACH,qBAAa,QAAQ;IAaP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IACnB,0EAA0E;IAC1E,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAEH,MAAM,EAAE,SAAS;IA0B9C,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,QAAQ;IAUhB;;;OAGG;IACG,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EACjG,MAAM,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAgDpD;;;;OAIG;IACG,OAAO;IAeb,OAAO;CAMR"}
package/dist/oidnPass.js CHANGED
@@ -178,7 +178,7 @@ export class OidnPass {
178
178
  const size = Math.max(16, width * height * 16);
179
179
  const usage = GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST;
180
180
  // Colour, albedo and normal for the network, then the result.
181
- this.buffers = Array.from({ length: 4 }, () => this.device.createBuffer({ size, usage }));
181
+ this.buffers = Array.from({ length: 4 }, () => this.device.createBuffer({ label: "oidn", size, usage }));
182
182
  this.output = this.buffers[3];
183
183
  this.width = width;
184
184
  this.height = height;
@@ -245,6 +245,23 @@ export class OidnPass {
245
245
  this.device.queue.submit([finishing.finish()]);
246
246
  return true;
247
247
  }
248
+ /**
249
+ * Lets go of everything sized by an image: the four buffers here and the network's own, its activations and its
250
+ * input and output passes, which together hold a few hundred megabytes for a large image. The network is loaded
251
+ * again by the next run. Call it only once no run is in flight.
252
+ */
253
+ async release() {
254
+ for (const buffer of this.buffers)
255
+ buffer.destroy();
256
+ this.buffers = [];
257
+ this.output = null;
258
+ this.width = 0;
259
+ this.height = 0;
260
+ const byUrl = networks.get(this.device);
261
+ networks.delete(this.device);
262
+ for (const unet of byUrl?.values() ?? [])
263
+ await unet.then(loaded => loaded.dispose(), () => undefined);
264
+ }
248
265
  destroy() {
249
266
  for (const buffer of [...this.buffers, this.params, this.scale])
250
267
  buffer.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"oidnPass.js","sourceRoot":"","sources":["../src/oidnPass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oidnPass.js","sourceRoot":"","sources":["../src/oidnPass.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,18 @@ export type FrameUniforms = Record<keyof typeof FRAME_LAYOUT.offsets & string, n
8
8
  * declarations. The scene's translated shaders sit between the texture code they call and the surface code that calls
9
9
  * them.
10
10
  */
11
- export declare function pathTraceSource(programs?: ShaderPrograms | null, subsurface?: boolean, volumes?: boolean, bevel?: boolean, portals?: boolean, grass?: boolean): string;
11
+ export declare function pathTraceSource(programs?: ShaderPrograms | null, subsurface?: boolean, volumes?: boolean, bevel?: boolean, portals?: boolean, grass?: boolean, instances?: boolean): string;
12
+ /**
13
+ * Whether the traversal can enter instances, and the stack that takes: an instance stacks its own hierarchy on top of
14
+ * the scene's and the tree over the instances, so the stack doubles. A scene with no repeated geometry keeps the
15
+ * smaller one, which is what the kernel's registers are measured against.
16
+ */
17
+ export declare function traversalConstants(instances: boolean): string;
12
18
  export declare class PathTracePass {
13
19
  private readonly device;
14
20
  private pipeline;
21
+ /** The kernel being compiled for `programKey`, which every caller asking for the same set waits on. */
22
+ private building;
15
23
  private readonly uniforms;
16
24
  private readonly values;
17
25
  private bindGroup;
@@ -21,7 +29,12 @@ export declare class PathTracePass {
21
29
  * Recompiles the kernel when the scene's shaders changed, or whether it has a material that scatters light inside;
22
30
  * the same set keeps the pipeline it has.
23
31
  */
24
- setPrograms(programs: ShaderPrograms | null, subsurface?: boolean, volumes?: boolean, bevel?: boolean, portals?: boolean, grass?: boolean): void;
32
+ setPrograms(programs: ShaderPrograms | null, subsurface?: boolean, volumes?: boolean, bevel?: boolean, portals?: boolean, grass?: boolean, instances?: boolean): Promise<void>;
33
+ /**
34
+ * The kernel is large, and on Windows the browser compiles it through the D3D shader compiler, which can take many
35
+ * seconds. Compiled synchronously that blocks the GPU process long enough for its watchdog to kill it, and the device
36
+ * is lost before the first sample; the async path compiles off that thread.
37
+ */
25
38
  private build;
26
39
  /** Rebinds after the scene or the accumulation buffer was replaced. */
27
40
  setBindings(scene: SceneBuffers, accumulation: GPUBuffer): void;
@@ -1 +1 @@
1
- {"version":3,"file":"pathTracePass.d.ts","sourceRoot":"","sources":["../src/pathTracePass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAerD,+GAA+G;AAC/G,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,OAAO,YAAY,CAAC,OAAO,GAAG,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAErH;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,GAAE,cAAc,GAAG,IAAW,EAAE,UAAU,UAAO,EAAE,OAAO,UAAO,EAAE,KAAK,UAAO,EACvF,OAAO,UAAO,EAAE,KAAK,UAAO,GAAG,MAAM,CAOtC;AAMD,qBAAa,aAAa;IAOZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,UAAU,CAAoC;gBAEzB,MAAM,EAAE,SAAS;IAK9C;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAAE,UAAU,UAAQ,EAAE,OAAO,UAAQ,EAAE,KAAK,UAAQ,EAC7F,OAAO,UAAQ,EAAE,KAAK,UAAQ;IAUhC,OAAO,CAAC,KAAK;IAQb,uEAAuE;IACvE,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS;IAiBxD,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa;CAexD"}
1
+ {"version":3,"file":"pathTracePass.d.ts","sourceRoot":"","sources":["../src/pathTracePass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAerD,+GAA+G;AAC/G,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,OAAO,YAAY,CAAC,OAAO,GAAG,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAErH;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,GAAE,cAAc,GAAG,IAAW,EAAE,UAAU,UAAO,EAAE,OAAO,UAAO,EAAE,KAAK,UAAO,EACvF,OAAO,UAAO,EAAE,KAAK,UAAO,EAAE,SAAS,UAAO,GAAG,MAAM,CAOxD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAE7D;AAMD,qBAAa,aAAa;IASZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IARnC,OAAO,CAAC,QAAQ,CAAmC;IACnD,uGAAuG;IACvG,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,UAAU,CAAuB;gBAEZ,MAAM,EAAE,SAAS;IAI9C;;;OAGG;IACG,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAAE,UAAU,UAAQ,EAAE,OAAO,UAAQ,EAAE,KAAK,UAAQ,EACnG,OAAO,UAAQ,EAAE,KAAK,UAAQ,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnE;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAQb,uEAAuE;IACvE,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS;IAmBxD,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa;CAexD"}
@@ -19,46 +19,68 @@ import { TEXTURE_WGSL } from "./wgsl/texture.wgsl.js";
19
19
  * declarations. The scene's translated shaders sit between the texture code they call and the surface code that calls
20
20
  * them.
21
21
  */
22
- export function pathTraceSource(programs = null, subsurface = true, volumes = true, bevel = true, portals = true, grass = true) {
22
+ export function pathTraceSource(programs = null, subsurface = true, volumes = true, bevel = true, portals = true, grass = true, instances = true) {
23
23
  // The random walk inside materials and the media inside volumes are compiled in only for a scene that has them: the
24
24
  // kernel is bound by its size, and either would cost every other scene a few percent for code that never runs.
25
25
  return `const SUBSURFACE_WALK: bool = ${subsurface};\nconst VOLUMES: bool = ${volumes};\nconst BEVEL: bool = ${bevel};\n`
26
- + `const PORTALS: bool = ${portals};\nconst GRASS: bool = ${grass};\n` + COMMON_WGSL + RANDOM_WGSL + BVH_WGSL
26
+ + `const PORTALS: bool = ${portals};\nconst GRASS: bool = ${grass};\n` + traversalConstants(instances) + COMMON_WGSL + RANDOM_WGSL + BVH_WGSL
27
27
  + SAMPLING_WGSL + TEXTURE_WGSL + SHADER_SUPPORT_WGSL + programsWgsl(programs) + ENVIRONMENT_WGSL + SURFACE_WGSL
28
28
  + (grass ? GRASS_WGSL : GRASS_STUB_WGSL) + BSDF_WGSL + LIGHTS_WGSL + PATH_TRACE_WGSL;
29
29
  }
30
+ /**
31
+ * Whether the traversal can enter instances, and the stack that takes: an instance stacks its own hierarchy on top of
32
+ * the scene's and the tree over the instances, so the stack doubles. A scene with no repeated geometry keeps the
33
+ * smaller one, which is what the kernel's registers are measured against.
34
+ */
35
+ export function traversalConstants(instances) {
36
+ return `const INSTANCES: bool = ${instances};\nconst BVH_STACK: u32 = ${instances ? 64 : 32}u;\n`;
37
+ }
30
38
  const FRAME_BYTES = FRAME_WORDS * 4;
31
39
  const WORKGROUP = 8;
32
40
  export class PathTracePass {
33
41
  device;
34
- pipeline;
42
+ pipeline = null;
43
+ /** The kernel being compiled for `programKey`, which every caller asking for the same set waits on. */
44
+ building = null;
35
45
  uniforms;
36
46
  values = new ArrayBuffer(FRAME_BYTES);
37
47
  bindGroup = null;
38
- programKey = "|false|false|false|false|false";
48
+ programKey = null;
39
49
  constructor(device) {
40
50
  this.device = device;
41
- this.pipeline = this.build(null, false, false, false, false, false);
42
51
  this.uniforms = device.createBuffer({ size: FRAME_BYTES, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST });
43
52
  }
44
53
  /**
45
54
  * Recompiles the kernel when the scene's shaders changed, or whether it has a material that scatters light inside;
46
55
  * the same set keeps the pipeline it has.
47
56
  */
48
- setPrograms(programs, subsurface = false, volumes = false, bevel = false, portals = false, grass = false) {
49
- const key = `${programs?.key ?? ""}|${subsurface}|${volumes}|${bevel}|${portals}|${grass}`;
50
- if (key === this.programKey)
51
- return;
52
- this.programKey = key;
53
- this.pipeline = this.build(programs, subsurface, volumes, bevel, portals, grass);
54
- this.bindGroup = null;
57
+ async setPrograms(programs, subsurface = false, volumes = false, bevel = false, portals = false, grass = false, instances = false) {
58
+ const key = `${programs?.key ?? ""}|${subsurface}|${volumes}|${bevel}|${portals}|${grass}|${instances}`;
59
+ if (key !== this.programKey) {
60
+ this.programKey = key;
61
+ this.pipeline = null;
62
+ this.bindGroup = null;
63
+ this.building = this.build(programs, subsurface, volumes, bevel, portals, grass, instances);
64
+ }
65
+ const building = this.building;
66
+ const pipeline = await building;
67
+ // A newer set may have started compiling meanwhile; this one is then already stale.
68
+ if (this.building === building)
69
+ this.pipeline = pipeline;
55
70
  }
56
- build(programs, subsurface, volumes, bevel, portals, grass) {
57
- const module = createShaderModule(this.device, "path trace", pathTraceSource(programs, subsurface, volumes, bevel, portals, grass));
58
- return this.device.createComputePipeline({ layout: "auto", compute: { module, entryPoint: "main" } });
71
+ /**
72
+ * The kernel is large, and on Windows the browser compiles it through the D3D shader compiler, which can take many
73
+ * seconds. Compiled synchronously that blocks the GPU process long enough for its watchdog to kill it, and the device
74
+ * is lost before the first sample; the async path compiles off that thread.
75
+ */
76
+ build(programs, subsurface, volumes, bevel, portals, grass, instances) {
77
+ const module = createShaderModule(this.device, "path trace", pathTraceSource(programs, subsurface, volumes, bevel, portals, grass, instances));
78
+ return this.device.createComputePipelineAsync({ label: "path trace", layout: "auto", compute: { module, entryPoint: "main" } });
59
79
  }
60
80
  /** Rebinds after the scene or the accumulation buffer was replaced. */
61
81
  setBindings(scene, accumulation) {
82
+ if (!this.pipeline)
83
+ throw new Error("GPU renderer: the path tracing kernel is not compiled yet.");
62
84
  this.bindGroup = this.device.createBindGroup({
63
85
  layout: this.pipeline.getBindGroupLayout(0),
64
86
  entries: [
@@ -75,7 +97,7 @@ export class PathTracePass {
75
97
  });
76
98
  }
77
99
  encode(encoder, frame) {
78
- if (!this.bindGroup)
100
+ if (!this.bindGroup || !this.pipeline)
79
101
  throw new Error("GPU renderer: the path tracing pass has no scene bound.");
80
102
  new Uint32Array(this.values).fill(0);
81
103
  writeStruct(FRAME_LAYOUT, this.values, 0, frame);
@@ -1 +1 @@
1
- {"version":3,"file":"pathTracePass.js","sourceRoot":"","sources":["../src/pathTracePass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pathTracePass.js","sourceRoot":"","sources":["../src/pathTracePass.ts"],"names":[],"mappings":"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"}
@@ -199,8 +199,19 @@ export declare class GpuRenderer extends EventEmitter<GpuRendererEvents> {
199
199
  * without a frame in flight.
200
200
  */
201
201
  cancel(): void;
202
+ /**
203
+ * Lets go of what the network denoiser holds from the last frame before a new one starts, so its buffers and the
204
+ * network's activations are not held on the device while the next scene is uploaded beside them. It waits for a run
205
+ * still in flight, which a replaced frame may have left.
206
+ */
207
+ private releaseDenoiser;
202
208
  /** Releases the device. A frame in flight rejects with an `AbortError`. */
203
209
  dispose(): void;
210
+ /**
211
+ * The device was lost: everything that lived on it is gone with it. The next frame asks for a new device and uploads
212
+ * the scene again; the scene's own assets (serialized meshes, translated shaders, the baked sky) are kept.
213
+ */
214
+ private dropDevice;
204
215
  /** Takes the frame in flight, if any, so it can be settled after the events go out. */
205
216
  private settle;
206
217
  /** Settles the frame in flight, if any, with an `AbortError`. */
@@ -214,6 +225,8 @@ export declare class GpuRenderer extends EventEmitter<GpuRendererEvents> {
214
225
  private check;
215
226
  /** Uploads what changed and makes sure the passes point at the current buffers. */
216
227
  private prepare;
228
+ /** The memory log's account of a packed scene: what repeats, what it takes, and which meshes took longest. */
229
+ private logPacking;
217
230
  /** Packs and uploads one scene: its textures, geometry, hierarchy, lights and every extra word they point at. */
218
231
  private packScene;
219
232
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}