@tinypoly/gpu-renderer 0.0.3 → 0.0.5

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 (81) hide show
  1. package/ARCHITECTURE.md +22 -7
  2. package/README.md +1 -1
  3. package/dist/bvh.d.ts +11 -6
  4. package/dist/bvh.d.ts.map +1 -1
  5. package/dist/bvh.js +64 -11
  6. package/dist/bvh.js.map +1 -1
  7. package/dist/denoise.d.ts +7 -2
  8. package/dist/denoise.d.ts.map +1 -1
  9. package/dist/denoise.js +61 -21
  10. package/dist/denoise.js.map +1 -1
  11. package/dist/dispatchScheduler.d.ts +11 -4
  12. package/dist/dispatchScheduler.d.ts.map +1 -1
  13. package/dist/dispatchScheduler.js +14 -7
  14. package/dist/dispatchScheduler.js.map +1 -1
  15. package/dist/frameLayout.d.ts.map +1 -1
  16. package/dist/frameLayout.js +3 -0
  17. package/dist/frameLayout.js.map +1 -1
  18. package/dist/imageResolve.d.ts +26 -0
  19. package/dist/imageResolve.d.ts.map +1 -0
  20. package/dist/imageResolve.js +114 -0
  21. package/dist/imageResolve.js.map +1 -0
  22. package/dist/lights.d.ts +9 -1
  23. package/dist/lights.d.ts.map +1 -1
  24. package/dist/lights.js +9 -0
  25. package/dist/lights.js.map +1 -1
  26. package/dist/renderer.d.ts +1 -0
  27. package/dist/renderer.d.ts.map +1 -1
  28. package/dist/renderer.js +97 -62
  29. package/dist/renderer.js.map +1 -1
  30. package/dist/sceneUpload.d.ts +14 -1
  31. package/dist/sceneUpload.d.ts.map +1 -1
  32. package/dist/sceneUpload.js +21 -3
  33. package/dist/sceneUpload.js.map +1 -1
  34. package/dist/texturePack.d.ts +16 -4
  35. package/dist/texturePack.d.ts.map +1 -1
  36. package/dist/texturePack.js +61 -8
  37. package/dist/texturePack.js.map +1 -1
  38. package/dist/wgsl/bvh.wgsl.d.ts +8 -2
  39. package/dist/wgsl/bvh.wgsl.d.ts.map +1 -1
  40. package/dist/wgsl/bvh.wgsl.js +167 -96
  41. package/dist/wgsl/bvh.wgsl.js.map +1 -1
  42. package/dist/wgsl/common.wgsl.d.ts.map +1 -1
  43. package/dist/wgsl/common.wgsl.js +20 -7
  44. package/dist/wgsl/common.wgsl.js.map +1 -1
  45. package/dist/wgsl/lights.wgsl.d.ts +1 -1
  46. package/dist/wgsl/lights.wgsl.d.ts.map +1 -1
  47. package/dist/wgsl/lights.wgsl.js +3 -2
  48. package/dist/wgsl/lights.wgsl.js.map +1 -1
  49. package/dist/wgsl/pathTrace.wgsl.d.ts +1 -1
  50. package/dist/wgsl/pathTrace.wgsl.d.ts.map +1 -1
  51. package/dist/wgsl/pathTrace.wgsl.js +15 -1
  52. package/dist/wgsl/pathTrace.wgsl.js.map +1 -1
  53. package/dist/wgsl/random.wgsl.d.ts +1 -1
  54. package/dist/wgsl/random.wgsl.d.ts.map +1 -1
  55. package/dist/wgsl/random.wgsl.js +9 -17
  56. package/dist/wgsl/random.wgsl.js.map +1 -1
  57. package/dist/wgsl/surface.wgsl.d.ts +1 -1
  58. package/dist/wgsl/surface.wgsl.d.ts.map +1 -1
  59. package/dist/wgsl/surface.wgsl.js +26 -3
  60. package/dist/wgsl/surface.wgsl.js.map +1 -1
  61. package/dist/wgsl/texture.wgsl.d.ts +1 -1
  62. package/dist/wgsl/texture.wgsl.d.ts.map +1 -1
  63. package/dist/wgsl/texture.wgsl.js +10 -11
  64. package/dist/wgsl/texture.wgsl.js.map +1 -1
  65. package/package.json +1 -1
  66. package/src/bvh.ts +81 -12
  67. package/src/denoise.ts +66 -21
  68. package/src/dispatchScheduler.ts +16 -7
  69. package/src/frameLayout.ts +3 -0
  70. package/src/imageResolve.ts +136 -0
  71. package/src/lights.ts +19 -1
  72. package/src/renderer.ts +123 -77
  73. package/src/sceneUpload.ts +32 -4
  74. package/src/texturePack.ts +80 -13
  75. package/src/wgsl/bvh.wgsl.ts +167 -96
  76. package/src/wgsl/common.wgsl.ts +20 -7
  77. package/src/wgsl/lights.wgsl.ts +3 -2
  78. package/src/wgsl/pathTrace.wgsl.ts +15 -1
  79. package/src/wgsl/random.wgsl.ts +9 -17
  80. package/src/wgsl/surface.wgsl.ts +26 -3
  81. package/src/wgsl/texture.wgsl.ts +10 -11
package/dist/renderer.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { PerspectiveCamera } from "three";
2
2
  import { Accumulator } from "./accumulator.js";
3
- import {} from "./bvh.js";
4
3
  import { BvhBuilder, createDefaultBvhWorker } from "./bvhBuilder.js";
5
4
  import { cameraMatrices } from "./camera.js";
6
5
  import { requestRenderDevice } from "./device.js";
@@ -9,15 +8,16 @@ import { DispatchScheduler } from "./dispatchScheduler.js";
9
8
  import { packGeometry } from "./geometry.js";
10
9
  import { packLights } from "./lights.js";
11
10
  import { NO_PROGRAM } from "./materialLayout.js";
12
- import { NO_TEXTURE, planTextures, writeTextures } from "./texturePack.js";
11
+ import { NO_TEXTURE, planTextures, textureEntry, writeTextures } from "./texturePack.js";
13
12
  import { PathTracePass } from "./pathTracePass.js";
13
+ import { ImageResolvePass } from "./imageResolve.js";
14
14
  import { PresentPass } from "./presentPass.js";
15
15
  import { CONVERGED_ERROR, DEFAULT_DENOISER, DenoisePass, mergeDenoiser, } from "./denoise.js";
16
16
  import { CaptureResolvePass, planarCaptures } from "./planarCapture.js";
17
17
  import { prepareSceneAssets } from "./sceneAssets.js";
18
18
  import { packVolumetricLights, VOLUMETRIC_WORDS } from "./volumetric.js";
19
19
  import { environmentPower, uploadScene } from "./sceneUpload.js";
20
- import { DEFAULT_RENDER_ENVIRONMENT, DEFAULT_RENDER_SETTINGS, encodeColor, EventEmitter, mergeSettings, serializeCamera, serializeScene, srgbToLinear, } from "./upstream.js";
20
+ import { DEFAULT_RENDER_ENVIRONMENT, DEFAULT_RENDER_SETTINGS, EventEmitter, mergeSettings, serializeCamera, serializeScene, srgbToLinear, } from "./upstream.js";
21
21
  function abortError(message) {
22
22
  return Object.assign(new Error(message), { name: "AbortError" });
23
23
  }
@@ -38,6 +38,27 @@ const yieldToPage = () => new Promise(resolve => setTimeout(resolve, 0));
38
38
  * Waiting for an animation frame after every band would leave the device idle for most of each one.
39
39
  */
40
40
  const SHOW_EVERY_MS = 16;
41
+ /**
42
+ * Submits on the device at once. Two keep it busy: the next band is queued while the last one runs, and each submit
43
+ * still stays short enough for the watchdog on its own.
44
+ */
45
+ const BANDS_IN_FLIGHT = 2;
46
+ /** How often the canvas takes a freshly denoised image while a frame traces. */
47
+ const DENOISE_EVERY_MS = 200;
48
+ /** The most paths per pixel one dispatch takes, while no pixel can stop yet. */
49
+ const BATCH_PATHS = 4;
50
+ /**
51
+ * Paths per pixel the next pass takes. The first takes one, so the canvas shows something at once. Until adaptive
52
+ * sampling may stop a pixel, every pixel takes every path anyway, so a pass takes several and pays for reading and
53
+ * writing the accumulation once; from then on one at a time, so a pixel stops as soon as it has converged.
54
+ */
55
+ function pathsPerDispatch(taken, until, adaptive) {
56
+ if (taken === 0)
57
+ return 1;
58
+ if (adaptive && taken >= until)
59
+ return 1;
60
+ return Math.max(1, Math.min(BATCH_PATHS, until - taken));
61
+ }
41
62
  const EMPTY_SCENE = { meshes: [], lights: [], textures: [] };
42
63
  /** Paths every pixel takes before adaptive sampling may stop it: below this its variance says too little. */
43
64
  const ADAPTIVE_MIN = 32;
@@ -94,6 +115,7 @@ export class GpuRenderer extends EventEmitter {
94
115
  present = null;
95
116
  buffers = null;
96
117
  packed = null;
118
+ imageResolve = null;
97
119
  sceneDirty = true;
98
120
  // Compute bakes, the procedural sky and translated shaders: prepared once per scene.
99
121
  assets = null;
@@ -131,7 +153,7 @@ export class GpuRenderer extends EventEmitter {
131
153
  this.current = mergeSettings(DEFAULT_RENDER_SETTINGS, options.settings);
132
154
  this.denoiserSettings = mergeDenoiser(DEFAULT_DENOISER, options.denoiser);
133
155
  this.environment = DEFAULT_RENDER_ENVIRONMENT;
134
- this.scheduler = new DispatchScheduler({ maxRows: this.renderHeight });
156
+ this.scheduler = new DispatchScheduler({ maxRows: this.renderHeight, maxSamples: BATCH_PATHS });
135
157
  this.setEnvironment(options.environment ?? DEFAULT_RENDER_ENVIRONMENT);
136
158
  if (options.scene)
137
159
  this.setScene(options.scene);
@@ -325,6 +347,8 @@ export class GpuRenderer extends EventEmitter {
325
347
  this.buffers?.destroy();
326
348
  this.accumulator?.destroy();
327
349
  this.denoisePass?.destroy();
350
+ this.imageResolve?.dispose();
351
+ this.imageResolve = null;
328
352
  this.gpu?.device.destroy();
329
353
  this.buffers = null;
330
354
  this.accumulator = null;
@@ -375,25 +399,48 @@ export class GpuRenderer extends EventEmitter {
375
399
  this.output = { width, height, data: new Uint8ClampedArray(width * height * 4) };
376
400
  this.emit("start", { width, height });
377
401
  const target = Math.max(1, Math.round(this.current.samples));
378
- // Adaptive sampling: the frame has the work of `target` passes over the whole image to spend. Pixels that have
402
+ // Adaptive sampling: the frame has the work of `target` paths over the whole image to spend. Pixels that have
379
403
  // converged stop taking samples, and a row with none left stops being dispatched, so what they would have used goes
380
404
  // to the rows that still need it, up to a few times `target` paths in the noisiest pixels.
381
405
  const adaptive = target > ADAPTIVE_MIN;
382
- const maxPasses = adaptive ? target * ADAPTIVE_REACH : target;
406
+ const maxPaths = adaptive ? target * ADAPTIVE_REACH : target;
407
+ // In rows times paths, the unit the scheduler measures work in.
383
408
  const budget = target * height;
384
409
  const accumulator = this.accumulator;
385
410
  let active = Array.from({ length: height }, (_, row) => row);
386
- let spent = 0, band = 0, pass = 0;
411
+ // Paths every pixel still in the running has taken so far, which is also the next sample index.
412
+ let taken = 0;
413
+ let spent = 0, band = 0;
387
414
  let shown = performance.now();
415
+ let denoisedAt = -Infinity;
388
416
  const denoise = this.current.globalIllumination.denoise;
417
+ // Bands on the device, oldest first. The next one is encoded and queued while the last one runs, so the device
418
+ // never waits for the page to hear that a band finished.
419
+ const flight = [];
420
+ let settledAt = 0;
421
+ const settle = async () => {
422
+ const oldest = flight.shift();
423
+ if (!oldest)
424
+ return;
425
+ await oldest.done;
426
+ const now = performance.now();
427
+ // A band starts on the device when the one before it ends, or when it was submitted if the device was idle. The
428
+ // page may hear of that end late, which would make this band look shorter than it ran; since it was submitted it
429
+ // has waited for at most the bands ahead of it, so its share of that wait bounds it from below.
430
+ const ran = Math.max(now - Math.max(oldest.submitted, settledAt), (now - oldest.submitted) / BANDS_IN_FLIGHT);
431
+ this.scheduler.record(ran, oldest.rows, oldest.samples);
432
+ settledAt = now;
433
+ };
389
434
  this.denoised = false;
390
435
  this.finished = null;
391
436
  const matrices = cameraMatrices(camera, width, height);
437
+ const uniforms = this.frameUniforms(camera, width, height, assets);
392
438
  // Two over the projection's vertical scale and the height: one pixel's extent, per unit of depth in perspective.
393
439
  this.denoiseView = { pixelScale: 2 / (matrices.projection[5] * height), orthographic: matrices.orthographic };
394
- while (pass < maxPasses && spent < budget && active.length) {
440
+ while (taken < maxPaths && spent < budget && active.length) {
395
441
  // Only a pass whose pixels may stop needs its rows flagged; before that every row is busy anyway.
396
- const flagging = adaptive && pass >= ADAPTIVE_MIN;
442
+ const flagging = adaptive && taken >= ADAPTIVE_MIN;
443
+ const samples = pathsPerDispatch(taken, adaptive ? ADAPTIVE_MIN : target, adaptive);
397
444
  if (flagging) {
398
445
  const clear = gpu.device.createCommandEncoder();
399
446
  clear.clearBuffer(accumulator.buffer, accumulator.rowFlagsOffset, accumulator.rowFlagsLength);
@@ -405,16 +452,16 @@ export class GpuRenderer extends EventEmitter {
405
452
  if (this.isPaused)
406
453
  await this.unpaused;
407
454
  this.check(revision);
408
- const rows = this.scheduler.next(end - row);
455
+ const rows = this.scheduler.next(end - row, samples);
409
456
  const started = performance.now();
410
457
  const encoder = gpu.device.createCommandEncoder();
411
458
  this.emit("bucket", { worker: 0, bucket: { x: 0, y: row, width, height: rows, index: band++ }, width, height });
412
459
  this.pathTrace?.encode(encoder, {
413
- ...this.frameUniforms(camera, width, height, assets),
460
+ ...uniforms,
414
461
  bandOrigin: [0, row],
415
462
  bandSize: [width, rows],
416
- sampleIndex: pass,
417
- sampleCount: 1,
463
+ sampleIndex: taken,
464
+ sampleCount: samples,
418
465
  adaptiveMin: adaptive ? ADAPTIVE_MIN : 0,
419
466
  adaptiveThreshold: ADAPTIVE_THRESHOLD,
420
467
  });
@@ -423,10 +470,11 @@ export class GpuRenderer extends EventEmitter {
423
470
  if (show)
424
471
  this.encodePresent(encoder, width, height);
425
472
  gpu.device.queue.submit([encoder.finish()]);
426
- await gpu.device.queue.onSubmittedWorkDone();
427
- this.scheduler.record(performance.now() - started, rows);
473
+ flight.push({ done: gpu.device.queue.onSubmittedWorkDone(), submitted: performance.now(), rows, samples });
474
+ while (flight.length >= BANDS_IN_FLIGHT)
475
+ await settle();
428
476
  row += rows;
429
- spent += rows;
477
+ spent += rows * samples;
430
478
  this.emit("progress", { completed: Math.min(spent, budget), total: budget, phase: "shade" });
431
479
  if (show) {
432
480
  shown = performance.now();
@@ -434,20 +482,29 @@ export class GpuRenderer extends EventEmitter {
434
482
  }
435
483
  }
436
484
  }
437
- pass++;
485
+ taken += samples;
438
486
  this.frameIndex++;
439
- // The canvas shows the denoised image from the end of each pass on, and the bands of the next pass refine
440
- // underneath it until it is denoised again.
441
- if (denoise && this.canvas && this.context) {
487
+ // The rows this pass still traced in are copied out before anything else is queued, so they can be read while
488
+ // the device goes on with the denoiser.
489
+ const rowsRead = flagging ? this.activeRows(gpu, accumulator) : null;
490
+ // The canvas shows the denoised image, refreshed a few times a second while the bands refine underneath it:
491
+ // filtering the whole image after every pass would cost a cheap scene as much as tracing it.
492
+ if (denoise && this.canvas && this.context && performance.now() - denoisedAt >= DENOISE_EVERY_MS) {
442
493
  const encoder = gpu.device.createCommandEncoder();
443
494
  this.encodeDenoise(gpu, encoder, width, height);
444
495
  this.encodePresent(encoder, width, height);
445
496
  gpu.device.queue.submit([encoder.finish()]);
497
+ denoisedAt = performance.now();
446
498
  }
447
499
  this.emit("sample", { samples: Math.min(target, Math.round(spent / height)), target });
448
- if (flagging)
449
- active = await this.activeRows(gpu, accumulator);
500
+ if (rowsRead) {
501
+ while (flight.length)
502
+ await settle();
503
+ active = await rowsRead;
504
+ }
450
505
  }
506
+ while (flight.length)
507
+ await settle();
451
508
  // Converged early, or spent: either way the image is as finished as this frame makes it.
452
509
  this.emit("progress", { completed: budget, total: budget, phase: "shade" });
453
510
  this.emit("sample", { samples: target, target });
@@ -497,13 +554,17 @@ export class GpuRenderer extends EventEmitter {
497
554
  const environment = assets.sky?.environment ?? image;
498
555
  const matrices = cameraMatrices(camera, width, height);
499
556
  const view = `${JSON.stringify(camera)}|${width}|${height}`;
500
- const moved = (!!this.packed?.geometry.cameraDependent || this.planar) && view !== this.packedView;
557
+ const moved = (!!this.packed?.cameraDependent || this.planar) && view !== this.packedView;
501
558
  if (this.sceneDirty || !this.buffers || moved) {
502
559
  // Planar surfaces need their captures, from this camera, before the scene that samples them is packed.
503
560
  const planar = planarCaptures(assets.scene, camera, width, height);
561
+ // The scene on the device is replaced: letting it go first keeps the two from being held at once.
562
+ this.buffers?.destroy();
563
+ this.buffers = null;
564
+ this.target = null;
565
+ this.packed = null;
504
566
  const packed = await this.packScene(gpu, revision, planar?.scene ?? assets.scene, assets, matrices, width, height, environment);
505
567
  this.packed = packed.packed;
506
- this.buffers?.destroy();
507
568
  this.buffers = packed.buffers;
508
569
  this.target = packed;
509
570
  this.sceneDirty = false;
@@ -516,7 +577,7 @@ export class GpuRenderer extends EventEmitter {
516
577
  const resized = !this.accumulator || this.accumulator.resize(width, height);
517
578
  this.accumulator ??= new Accumulator(gpu.device, width, height);
518
579
  if (resized)
519
- this.scheduler = new DispatchScheduler({ maxRows: height });
580
+ this.scheduler = new DispatchScheduler({ maxRows: height, maxSamples: BATCH_PATHS });
520
581
  this.pathTrace.setBindings(this.buffers, this.accumulator.buffer);
521
582
  this.configureCanvas(gpu, width, height);
522
583
  // Every frame starts from nothing: the camera, the scene or the settings may have moved since the last one. The
@@ -567,8 +628,10 @@ export class GpuRenderer extends EventEmitter {
567
628
  const bvh = await this.bvh.build(geometry.positions, geometry.triangleCount);
568
629
  // Nothing is on the device yet, so a frame replaced while the hierarchy was built has nothing to give back.
569
630
  this.check(revision);
570
- const packed = { geometry, bvh, textures };
571
- const buffers = uploadScene(gpu.device, geometry, packed.bvh, textures, lights, environment, cdf);
631
+ const buffers = uploadScene(gpu.device, geometry, bvh, textures, lights, environment, cdf);
632
+ const textureOffsets = new Map([...textures.indexOf]
633
+ .map(([id, index]) => [id, textures.data[textureEntry(index) + 2]]));
634
+ const packed = { cameraDependent: geometry.cameraDependent, textureOffsets };
572
635
  if (buffers.bytes.largest > gpu.maxStorageBufferBindingSize) {
573
636
  buffers.destroy();
574
637
  throw new Error("GPU renderer: this scene needs a larger storage buffer than the device allows.");
@@ -620,8 +683,7 @@ export class GpuRenderer extends EventEmitter {
620
683
  gpu.device.queue.submit([encoder.finish()]);
621
684
  }
622
685
  const offset = (id) => {
623
- const index = id === undefined ? undefined : main.packed.textures.indexOf.get(id);
624
- return index === undefined ? NO_TEXTURE : main.packed.textures.data[index * 16 + 2];
686
+ return (id === undefined ? undefined : main.packed.textureOffsets.get(id)) ?? NO_TEXTURE;
625
687
  };
626
688
  const encoder = gpu.device.createCommandEncoder();
627
689
  this.resolve.encode(encoder, accumulator.buffer, main.buffers.textures, width, height, offset(capture.texture), offset(capture.depth));
@@ -717,12 +779,15 @@ export class GpuRenderer extends EventEmitter {
717
779
  triangleCount: buffers?.triangleCount ?? 0,
718
780
  lightCount: buffers?.lightCount ?? 0,
719
781
  areaLightCount: buffers?.areaLightCount ?? 0,
782
+ lightCdf: buffers?.lightCdf ?? 0,
783
+ lightTriangles: buffers?.lightTriangles ?? 0,
720
784
  clampIndirect: Math.max(0, this.current.globalIllumination.clamp),
721
785
  // The setting is the angular diameter a light covers, in degrees, as it is for the CPU renderer's shadow blur.
722
786
  shadowSpread: shadows.enabled ? Math.tan(Math.max(0, shadows.softness) * Math.PI / 360) : 0,
723
787
  shadowsEnabled: shadows.enabled,
724
788
  uvOffset: buffers?.uvOffset ?? 0,
725
789
  orderOffset: buffers?.orderOffset ?? 0,
790
+ leafOffset: buffers?.leafOffset ?? 0,
726
791
  colorOffset: buffers?.colorOffset ?? 0,
727
792
  hasColors: buffers?.hasColors ?? false,
728
793
  varyingOffset: buffers?.varyingOffset ?? 0,
@@ -748,41 +813,11 @@ export class GpuRenderer extends EventEmitter {
748
813
  */
749
814
  async readImage(gpu, width, height, denoised) {
750
815
  const accumulator = this.accumulator;
751
- // The radiance and the coverage; the guides and the row flags after them are not part of the image.
752
- const length = width * height * 32;
753
- const read = async (buffer, bytes) => {
754
- const usage = GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST;
755
- const staging = gpu.device.createBuffer({ size: bytes, usage });
756
- const encoder = gpu.device.createCommandEncoder();
757
- encoder.copyBufferToBuffer(buffer, 0, staging, 0, bytes);
758
- gpu.device.queue.submit([encoder.finish()]);
759
- await staging.mapAsync(GPUMapMode.READ);
760
- const floats = new Float32Array(staging.getMappedRange().slice(0));
761
- staging.unmap();
762
- staging.destroy();
763
- return floats;
764
- };
765
- const floats = await read(accumulator.buffer, length);
766
- // The denoiser's output is the mean radiance itself, one vec4 per pixel.
767
- const filtered = denoised ? await read(denoised, width * height * 16) : null;
768
- const data = new Uint8ClampedArray(width * height * 4);
769
816
  const { exposure, toneMapping, vignette } = this.current;
770
817
  const transparent = this.current.background.mode === "transparent";
771
- const coverage = width * height * 4;
772
- for (let pixel = 0; pixel < width * height; pixel++) {
773
- const samples = floats[pixel * 4 + 3];
774
- const x = (pixel % width) / width - 0.5, y = Math.floor(pixel / width) / height - 0.5;
775
- const falloff = Math.max(0, 1 - vignette * (x * x + y * y) * 2);
776
- // The radiance is premultiplied by the coverage, which a transparent background makes the alpha.
777
- const alpha = !transparent ? 1
778
- : samples > 0 ? Math.min(1, Math.max(0, floats[coverage + pixel * 4] / samples)) : 0;
779
- const mean = (channel) => (filtered ? filtered[pixel * 4 + channel] : floats[pixel * 4 + channel] / samples);
780
- const color = samples > 0 && alpha > 0
781
- ? [0, 1, 2].map(channel => mean(channel) / alpha * falloff)
782
- : [0, 0, 0];
783
- const [r, g, b] = encodeColor(color, exposure, toneMapping);
784
- data.set([r, g, b, Math.round(alpha * 255)], pixel * 4);
785
- }
818
+ // Resolved on the device, so the page only copies the bytes of the image.
819
+ this.imageResolve ??= new ImageResolvePass(gpu.device);
820
+ const data = await this.imageResolve.read(accumulator.buffer, denoised, width, height, { exposure, toneMapping, vignette, transparent });
786
821
  return { width, height, data };
787
822
  }
788
823
  }
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export interface SceneByteLength {
9
9
  materials: number;
10
10
  /** Vertex normals, the UV sets, vertex colours and shader varyings, in one buffer. */
11
11
  attributes: number;
12
- /** One material index per triangle and then the hierarchy's triangle order, in one buffer. */
12
+ /** One material index per triangle, then the hierarchy's triangle order and its inverse, in one buffer. */
13
13
  indices: number;
14
14
  nodes: number;
15
15
  lights: number;
@@ -34,11 +34,16 @@ export interface SceneBuffers {
34
34
  varyingOffset: number;
35
35
  hasColors: boolean;
36
36
  orderOffset: number;
37
+ /** Where each triangle's position in the leaf order starts inside `indices`. */
38
+ leafOffset: number;
37
39
  triangleCount: number;
38
40
  /** Everything the integrator can aim a shadow ray at. */
39
41
  lightCount: number;
40
42
  /** How many of those are emissive triangles, which lead the buffer. */
41
43
  areaLightCount: number;
44
+ /** Where the lights' cumulative probabilities and the emissive ones' triangles sit in `textures`. */
45
+ lightCdf: number;
46
+ lightTriangles: number;
42
47
  /** Radiance an ambient or hemisphere light adds, which no shadow ray can reach. */
43
48
  ambient: PackedLights["ambient"];
44
49
  /** Where the surrounding image and its distributions ended up, for the frame uniform. */
@@ -57,5 +62,13 @@ export declare function sceneByteLength(geometry: PackedGeometry, bvh: PackedBvh
57
62
  export declare function packMaterials(geometry: PackedGeometry): ArrayBuffer;
58
63
  /** The power a surrounding image radiates over the whole sphere, which is what weighs it against the scene's lights. */
59
64
  export declare function environmentPower(environment: PackedEnvironment | null): number;
65
+ /**
66
+ * The positions in the hierarchy's leaf order, which is the order its traversal reads them in, so a leaf is one run of
67
+ * the buffer; and where each triangle went, for everything that reads a triangle by its own number.
68
+ */
69
+ export declare function leafOrder(positions: Float32Array, order: Uint32Array): {
70
+ positions: Float32Array;
71
+ inverse: Uint32Array;
72
+ };
60
73
  export declare function uploadScene(device: GPUDevice, geometry: PackedGeometry, bvh: PackedBvh, textures?: PackedTextures, lights?: PackedLights, environment?: PackedEnvironment | null, environmentCdf?: number): SceneBuffers;
61
74
  //# sourceMappingURL=sceneUpload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sceneUpload.d.ts","sourceRoot":"","sources":["../src/sceneUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,oHAAoH;AACpH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,gGAAgG;IAChG,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,wHAAwH;IACxH,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,yFAAyF;IACzF,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,IAAI,IAAI,CAAC;CACjB;AAcD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,SAAS,EACd,MAAM,GAAE,YAAmC,EAC3C,QAAQ,GAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAgC,GAAG,eAAe,CAkBxF;AAED,uGAAuG;AACvG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,WAAW,CAUnE;AAED,wHAAwH;AACxH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAE9E;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,SAAS,EACd,QAAQ,GAAE,cAAuE,EACjF,MAAM,GAAE,YAAmC,EAC3C,WAAW,GAAE,iBAAiB,GAAG,IAAW,EAC5C,cAAc,SAAuB,GAAG,YAAY,CAiErD"}
1
+ {"version":3,"file":"sceneUpload.d.ts","sourceRoot":"","sources":["../src/sceneUpload.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export function sceneByteLength(geometry, bvh, lights = packLights(geometry), te
13
13
  const lengths = {
14
14
  positions: sized(geometry.positions.byteLength),
15
15
  attributes: sized(attributeBytes(geometry)),
16
- indices: sized(geometry.materials.byteLength + bvh.order.byteLength),
16
+ indices: sized(geometry.materials.byteLength + 2 * bvh.order.byteLength),
17
17
  materials: sized(Math.max(1, geometry.materialCount) * MATERIAL_WORDS * 4),
18
18
  nodes: sized(bvh.nodes.byteLength),
19
19
  lights: sized(lights.entries.byteLength),
@@ -39,6 +39,20 @@ export function packMaterials(geometry) {
39
39
  export function environmentPower(environment) {
40
40
  return environment ? environment.total * 2 * Math.PI ** 2 / (environment.width * environment.height) : 0;
41
41
  }
42
+ /**
43
+ * The positions in the hierarchy's leaf order, which is the order its traversal reads them in, so a leaf is one run of
44
+ * the buffer; and where each triangle went, for everything that reads a triangle by its own number.
45
+ */
46
+ export function leafOrder(positions, order) {
47
+ const ordered = new Float32Array(order.length * 9);
48
+ const inverse = new Uint32Array(order.length);
49
+ for (let at = 0; at < order.length; at++) {
50
+ const triangle = order[at];
51
+ ordered.set(positions.subarray(triangle * 9, triangle * 9 + 9), at * 9);
52
+ inverse[triangle] = at;
53
+ }
54
+ return { positions: ordered, inverse };
55
+ }
42
56
  export function uploadScene(device, geometry, bvh, textures = packTextures({ meshes: [], lights: [], textures: [] }), lights = packLights(geometry), environment = null, environmentCdf = textures.extraOffset) {
43
57
  const lengths = sceneByteLength(geometry, bvh, lights, textures);
44
58
  const create = (size) => device.createBuffer({ size, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });
@@ -60,10 +74,11 @@ export function uploadScene(device, geometry, bvh, textures = packTextures({ mes
60
74
  };
61
75
  const colors = geometry.colors ?? new Float32Array(0);
62
76
  const varyings = geometry.varyings ?? new Float32Array(0);
77
+ const leaves = leafOrder(geometry.positions, bvh.order);
63
78
  const buffers = {
64
- positions: write(geometry.positions, lengths.positions),
79
+ positions: write(leaves.positions, lengths.positions),
65
80
  attributes: join([geometry.normals, geometry.uvs, colors, varyings], lengths.attributes),
66
- indices: join([geometry.materials, bvh.order], lengths.indices),
81
+ indices: join([geometry.materials, bvh.order, leaves.inverse], lengths.indices),
67
82
  materials: write(new Uint8Array(packMaterials(geometry)), lengths.materials),
68
83
  nodes: write(new Uint8Array(bvh.nodes), lengths.nodes),
69
84
  lights: write(new Uint8Array(lights.entries), lengths.lights),
@@ -77,9 +92,12 @@ export function uploadScene(device, geometry, bvh, textures = packTextures({ mes
77
92
  varyingOffset: geometry.normals.length + geometry.uvs.length + colors.length,
78
93
  hasColors: colors.length > 0,
79
94
  orderOffset: geometry.materials.length,
95
+ leafOffset: geometry.materials.length + bvh.order.length,
80
96
  triangleCount: geometry.triangleCount,
81
97
  lightCount: lights.count,
82
98
  areaLightCount: lights.areaCount,
99
+ lightCdf: lights.cdfAt,
100
+ lightTriangles: lights.trianglesAt,
83
101
  ambient: lights.ambient,
84
102
  environment: {
85
103
  texture: environment ? textures.indexOf.get(environment.texture.id) ?? NO_TEXTURE : NO_TEXTURE,