@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
@@ -1 +1 @@
1
- {"version":3,"file":"dispatchScheduler.d.ts","sourceRoot":"","sources":["../src/dispatchScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,oGAAoG;IACpG,OAAO,CAAC,UAAU,CAAK;gBAEX,OAAO,EAAE,wBAAwB;IAO7C,uEAAuE;IACvE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI/B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAWvC,kEAAkE;IAClE,KAAK;CAIN"}
1
+ {"version":3,"file":"dispatchScheduler.d.ts","sourceRoot":"","sources":["../src/dispatchScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,2GAA2G;IAC3G,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,kEAAkE;IAClE,OAAO,CAAC,IAAI,CAAS;IACrB,mHAAmH;IACnH,OAAO,CAAC,UAAU,CAAK;gBAEX,OAAO,EAAE,wBAAwB;IAQ7C;;;OAGG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,MAAM;IAI5C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI;IAYpD,kEAAkE;IAClE,KAAK;CAIN"}
@@ -6,18 +6,24 @@ export class DispatchScheduler {
6
6
  targetMs;
7
7
  initialRows;
8
8
  maxRows;
9
+ maxSamples;
10
+ /** The work of the next submit, in rows times paths per pixel. */
9
11
  rows;
10
- /** Rows a millisecond, as far as anything has shown. Zero until the first submit says something. */
12
+ /** Rows a millisecond, one path each, as far as anything has shown. Zero until the first submit says something. */
11
13
  throughput = 0;
12
14
  constructor(options) {
13
15
  this.targetMs = options.targetMs ?? 12;
14
16
  this.maxRows = Math.max(1, Math.floor(options.maxRows));
17
+ this.maxSamples = Math.max(1, Math.floor(options.maxSamples ?? 1));
15
18
  this.initialRows = Math.max(1, Math.min(this.maxRows, Math.floor(options.initialRows ?? 16)));
16
19
  this.rows = this.initialRows;
17
20
  }
18
- /** Rows the next submit should cover, never more than what is left. */
19
- next(remaining) {
20
- return Math.max(1, Math.min(Math.floor(this.rows), Math.floor(remaining)));
21
+ /**
22
+ * Rows the next submit should cover, never more than what is left. A submit that takes several paths per pixel
23
+ * covers that many times fewer rows, so it still takes about the target time.
24
+ */
25
+ next(remaining, samples = 1) {
26
+ return Math.max(1, Math.min(Math.floor(this.rows / Math.max(1, samples)), Math.floor(remaining)));
21
27
  }
22
28
  /**
23
29
  * Feeds back how long the last submit took, which moves the band towards the target time.
@@ -31,14 +37,15 @@ export class DispatchScheduler {
31
37
  * The rate is measured from the rows actually submitted rather than from the current guess, so one band clamped by
32
38
  * what was left of the image does not stop the next one from growing.
33
39
  */
34
- record(durationMs, rows) {
40
+ record(durationMs, rows, samples = 1) {
35
41
  if (!Number.isFinite(durationMs) || durationMs <= 0 || rows <= 0)
36
42
  return;
37
- const observed = rows / durationMs;
43
+ const work = rows * Math.max(1, samples);
44
+ const observed = work / durationMs;
38
45
  // Good news is believed at once, since it can only mean the band was cheaper than the clock suggested. Bad news
39
46
  // is taken gradually, so one submit that happened to land behind something else does not collapse the band.
40
47
  this.throughput = observed > this.throughput ? observed : this.throughput * DECAY + observed * (1 - DECAY);
41
- this.rows = Math.max(1, Math.min(this.maxRows, rows * GROW, this.targetMs * this.throughput));
48
+ this.rows = Math.max(1, Math.min(this.maxRows * this.maxSamples, work * GROW, this.targetMs * this.throughput));
42
49
  }
43
50
  /** Back to the unmeasured band, for a new scene or a new size. */
44
51
  reset() {
@@ -1 +1 @@
1
- {"version":3,"file":"dispatchScheduler.js","sourceRoot":"","sources":["../src/dispatchScheduler.ts"],"names":[],"mappings":"AAiBA,0GAA0G;AAC1G,MAAM,IAAI,GAAG,CAAC,CAAC;AACf,6FAA6F;AAC7F,MAAM,KAAK,GAAG,GAAG,CAAC;AAElB,MAAM,OAAO,iBAAiB;IACX,QAAQ,CAAS;IACjB,WAAW,CAAS;IACpB,OAAO,CAAS;IACzB,IAAI,CAAS;IACrB,oGAAoG;IAC5F,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,OAAiC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,uEAAuE;IACvE,IAAI,CAAC,SAAiB;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,UAAkB,EAAE,IAAY;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO;QAEzE,MAAM,QAAQ,GAAG,IAAI,GAAG,UAAU,CAAC;QAEnC,gHAAgH;QAChH,4GAA4G;QAC5G,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAC3G,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,kEAAkE;IAClE,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"dispatchScheduler.js","sourceRoot":"","sources":["../src/dispatchScheduler.ts"],"names":[],"mappings":"AAmBA,0GAA0G;AAC1G,MAAM,IAAI,GAAG,CAAC,CAAC;AACf,6FAA6F;AAC7F,MAAM,KAAK,GAAG,GAAG,CAAC;AAElB,MAAM,OAAO,iBAAiB;IACX,QAAQ,CAAS;IACjB,WAAW,CAAS;IACpB,OAAO,CAAS;IAChB,UAAU,CAAS;IACpC,kEAAkE;IAC1D,IAAI,CAAS;IACrB,mHAAmH;IAC3G,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,OAAiC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,SAAiB,EAAE,OAAO,GAAG,CAAC;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,UAAkB,EAAE,IAAY,EAAE,OAAO,GAAG,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO;QAEzE,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,UAAU,CAAC;QAEnC,gHAAgH;QAChH,4GAA4G;QAC5G,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAC3G,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClH,CAAC;IAED,kEAAkE;IAClE,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"frameLayout.d.ts","sourceRoot":"","sources":["../src/frameLayout.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,eAAO,MAAM,YAAY,0CAqDvB,CAAC;AAEH,eAAO,MAAM,WAAW,QAAqB,CAAC"}
1
+ {"version":3,"file":"frameLayout.d.ts","sourceRoot":"","sources":["../src/frameLayout.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,eAAO,MAAM,YAAY,0CAwDvB,CAAC;AAEH,eAAO,MAAM,WAAW,QAAqB,CAAC"}
@@ -29,11 +29,14 @@ export const FRAME_LAYOUT = layoutStruct("Frame", [
29
29
  { name: "triangleCount", type: "u32" },
30
30
  { name: "lightCount", type: "u32" },
31
31
  { name: "areaLightCount", type: "u32", doc: "How many leading lights are emissive triangles." },
32
+ { name: "lightCdf", type: "u32", doc: "Where every light's cumulative probability starts in the texture buffer." },
33
+ { name: "lightTriangles", type: "u32", doc: "Where every emissive light's triangle starts in the texture buffer." },
32
34
  { name: "clampIndirect", type: "f32", doc: "Maximum luminance one indirect contribution may add; zero leaves it." },
33
35
  { name: "shadowSpread", type: "f32", doc: "Tangent of half the angular diameter shadow rays spread over." },
34
36
  { name: "shadowsEnabled", type: "u32" },
35
37
  { name: "uvOffset", type: "u32", doc: "Where the UV sets start inside the attribute buffer." },
36
38
  { name: "orderOffset", type: "u32", doc: "Where the hierarchy's triangle order starts inside the index buffer." },
39
+ { name: "leafOffset", type: "u32", doc: "Where each triangle's position in that order starts inside the index buffer." },
37
40
  { name: "colorOffset", type: "u32", doc: "Where vertex colours start inside the attribute buffer." },
38
41
  { name: "hasColors", type: "u32" },
39
42
  { name: "varyingOffset", type: "u32", doc: "Where shader varyings start inside the attribute buffer." },
@@ -1 +1 @@
1
- {"version":3,"file":"frameLayout.js","sourceRoot":"","sources":["../src/frameLayout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frameLayout.js","sourceRoot":"","sources":["../src/frameLayout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { RenderToneMapping } from "./upstream.js";
2
+ /**
3
+ * The finished image, resolved on the device: the presentation pass's display transform, run as a compute pass that
4
+ * writes straight-alpha sRGB bytes, four per pixel. Reading those back is a sixth of the float accumulation and needs
5
+ * no loop over the pixels on the page, which is what held it for seconds at the end of a large frame.
6
+ *
7
+ * It follows the image `render()` has always resolved: no grain, and the vignette measured from each pixel's corner.
8
+ */
9
+ export declare const IMAGE_RESOLVE_WGSL = "\nstruct Present {\n resolution: vec2<u32>,\n exposure: f32,\n toneMapping: u32,\n vignette: f32,\n grain: f32,\n frameIndex: u32,\n // A transparent background: the canvas gets the coverage as alpha, premultiplied as it is configured.\n transparent: u32,\n // Whether the colour comes from the denoiser's output rather than straight from the accumulation.\n denoised: u32,\n};\n\n@group(0) @binding(0) var<uniform> present: Present;\n@group(0) @binding(1) var<storage, read> accumulation: array<vec4<f32>>;\n@group(0) @binding(2) var<storage, read> denoised: array<vec4<f32>>;\n\n@vertex\nfn vertexMain(@builtin(vertex_index) index: u32) -> @builtin(position) vec4<f32> {\n // One oversized triangle covers the viewport with no vertex buffer.\n let x = f32(index / 2u) * 4.0 - 1.0;\n let y = f32(index & 1u) * 4.0 - 1.0;\n\n return vec4<f32>(x, y, 0.0, 1.0);\n}\n\nfn toneMapAces(color: vec3<f32>) -> vec3<f32> {\n let toAces = mat3x3<f32>(\n vec3<f32>(0.59719, 0.076, 0.0284),\n vec3<f32>(0.35458, 0.90834, 0.13383),\n vec3<f32>(0.04823, 0.01566, 0.83777));\n let fromAces = mat3x3<f32>(\n vec3<f32>(1.60475, -0.10208, -0.00327),\n vec3<f32>(-0.53108, 1.10813, -0.07276),\n vec3<f32>(-0.07367, -0.00605, 1.07602));\n let v = toAces * (color / 0.6);\n\n return fromAces * ((v * (v + 0.0245786) - 0.000090537) / (v * (0.983729 * v + 0.432951) + 0.238081));\n}\n\nfn toneMapAgx(color: vec3<f32>) -> vec3<f32> {\n let toAgx = mat3x3<f32>(\n vec3<f32>(0.6274, 0.0691, 0.0164),\n vec3<f32>(0.3293, 0.9195, 0.088),\n vec3<f32>(0.0433, 0.0113, 0.8956));\n let inset = mat3x3<f32>(\n vec3<f32>(0.856627153315983, 0.137318972929847, 0.11189821299995),\n vec3<f32>(0.0951212405381588, 0.761241990602591, 0.0767994186031903),\n vec3<f32>(0.0482516061458583, 0.101439036467562, 0.811302368396859));\n let outset = mat3x3<f32>(\n vec3<f32>(1.1271005818144368, -0.1413297634984383, -0.14132976349843826),\n vec3<f32>(-0.11060664309660323, 1.157823702216272, -0.11060664309660294),\n vec3<f32>(-0.016493938717834573, -0.016493938717834257, 1.2519364065950405));\n let fromAgx = mat3x3<f32>(\n vec3<f32>(1.6605, -0.1246, -0.0182),\n vec3<f32>(-0.5876, 1.1329, -0.1006),\n vec3<f32>(-0.0728, -0.0083, 1.1187));\n let logged = inset * (toAgx * color);\n let x = clamp((log2(max(logged, vec3<f32>(1e-10))) + 12.47393) / 16.499999, vec3<f32>(0.0), vec3<f32>(1.0));\n let curved = 15.5 * pow(x, vec3<f32>(6.0)) - 40.14 * pow(x, vec3<f32>(5.0)) + 31.96 * pow(x, vec3<f32>(4.0))\n - 6.868 * pow(x, vec3<f32>(3.0)) + 0.4298 * x * x + 0.1191 * x - 0.00232;\n\n return fromAgx * pow(max(outset * curved, vec3<f32>(0.0)), vec3<f32>(2.2));\n}\n\nfn toneMapNeutral(color: vec3<f32>) -> vec3<f32> {\n let low = min(color.r, min(color.g, color.b));\n let offset = select(0.04, low - 6.25 * low * low, low < 0.08);\n let shifted = color - offset;\n let peak = max(shifted.r, max(shifted.g, shifted.b));\n\n if (peak < 0.76) {\n return shifted;\n }\n\n let newPeak = 1.0 - 0.24 * 0.24 / (peak + 0.24 - 0.76);\n let g = 1.0 - 1.0 / (0.15 * (peak - newPeak) + 1.0);\n\n return shifted * (newPeak / peak) * (1.0 - g) + newPeak * g;\n}\n\nfn toneMap(color: vec3<f32>) -> vec3<f32> {\n let exposed = max(color * present.exposure, vec3<f32>(0.0));\n var mapped = exposed;\n\n if (present.toneMapping == 0u) {\n mapped = toneMapAces(exposed);\n } else if (present.toneMapping == 1u) {\n mapped = toneMapAgx(exposed);\n } else if (present.toneMapping == 2u) {\n mapped = toneMapNeutral(exposed);\n }\n\n return clamp(mapped, vec3<f32>(0.0), vec3<f32>(1.0));\n}\n\nfn linearToSrgb(color: vec3<f32>) -> vec3<f32> {\n let low = color * 12.92;\n let high = 1.055 * pow(max(color, vec3<f32>(0.0)), vec3<f32>(1.0 / 2.4)) - 0.055;\n\n return select(high, low, color <= vec3<f32>(0.0031308));\n}\n\nfn hash(value: u32) -> f32 {\n var state = value * 747796405u + 2891336453u;\n state = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n\n return f32((state >> 22u) ^ state) * 2.3283064365386963e-10;\n}\n\n@fragment\nfn fragmentMain(@builtin(position) position: vec4<f32>) -> @location(0) vec4<f32> {\n let pixel = vec2<u32>(position.xy);\n let index = pixel.y * present.resolution.x + pixel.x;\n let stored = accumulation[index];\n\n // Nothing has been traced into this pixel yet: it stays see-through, so whatever is under the canvas shows.\n if (stored.w <= 0.0) {\n return vec4<f32>(0.0);\n }\n\n var color = select(stored.rgb / stored.w, vec3<f32>(0.0), stored.w <= 0.0);\n\n if (present.denoised != 0u) {\n color = denoised[index].rgb;\n }\n var alpha = 1.0;\n\n if (present.transparent != 0u) {\n let coverage = accumulation[present.resolution.x * present.resolution.y + index].x;\n alpha = select(clamp(coverage / stored.w, 0.0, 1.0), 0.0, stored.w <= 0.0);\n // The radiance is premultiplied by the coverage; the tone curve applies to the colour itself.\n color = select(color / alpha, vec3<f32>(0.0), alpha <= 0.0);\n }\n\n let centred = position.xy / vec2<f32>(present.resolution) - 0.5;\n let falloff = 1.0 - present.vignette * dot(centred, centred) * 2.0;\n var output = linearToSrgb(toneMap(color * max(falloff, 0.0)));\n\n if (present.grain > 0.0) {\n let noise = hash(index * 9781u + present.frameIndex * 6151u) - 0.5;\n output = clamp(output + noise * present.grain * 0.1, vec3<f32>(0.0), vec3<f32>(1.0));\n }\n\n return vec4<f32>(output * alpha, alpha);\n}\n\n@group(0) @binding(3) var<storage, read_write> pixels: array<u32>;\n\nfn encodeByte(value: f32) -> u32 {\n return u32(round(clamp(value, 0.0, 1.0) * 255.0));\n}\n\n@compute @workgroup_size(8, 8)\nfn resolveMain(@builtin(global_invocation_id) id: vec3<u32>) {\n let width = present.resolution.x;\n let height = present.resolution.y;\n\n if (id.x >= width || id.y >= height) {\n return;\n }\n\n let index = id.y * width + id.x;\n let stored = accumulation[index];\n let samples = stored.w;\n var alpha = 1.0;\n\n if (present.transparent != 0u) {\n alpha = select(0.0, clamp(accumulation[width * height + index].x / samples, 0.0, 1.0), samples > 0.0);\n }\n\n var color = vec3<f32>(0.0);\n\n if (samples > 0.0 && alpha > 0.0) {\n let mean = select(stored.rgb / samples, denoised[index].rgb, present.denoised != 0u);\n let centred = vec2<f32>(f32(id.x) / f32(width), f32(id.y) / f32(height)) - 0.5;\n let falloff = max(0.0, 1.0 - present.vignette * dot(centred, centred) * 2.0);\n\n color = mean / alpha * falloff;\n }\n\n let encoded = linearToSrgb(toneMap(color));\n\n pixels[index] = encodeByte(encoded.r) | (encodeByte(encoded.g) << 8u) | (encodeByte(encoded.b) << 16u)\n | (encodeByte(alpha) << 24u);\n}\n";
10
+ export interface ResolveSettings {
11
+ exposure: number;
12
+ toneMapping: RenderToneMapping;
13
+ vignette: number;
14
+ transparent: boolean;
15
+ }
16
+ export declare class ImageResolvePass {
17
+ private readonly device;
18
+ private readonly pipeline;
19
+ private readonly uniforms;
20
+ private readonly values;
21
+ constructor(device: GPUDevice);
22
+ /** The image as RGBA bytes, straight alpha, row by row from the top. */
23
+ read(accumulation: GPUBuffer, denoised: GPUBuffer | null, width: number, height: number, settings: ResolveSettings): Promise<Uint8ClampedArray<ArrayBuffer>>;
24
+ dispose(): void;
25
+ }
26
+ //# sourceMappingURL=imageResolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageResolve.d.ts","sourceRoot":"","sources":["../src/imageResolve.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUvD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,0lNAwC9B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,gBAAgB;IAKf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;gBAE5B,MAAM,EAAE,SAAS;IAS9C,wEAAwE;IAClE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC3F,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAiDrE,OAAO;CAGR"}
@@ -0,0 +1,114 @@
1
+ import { createShaderModule } from "./shaderModule.js";
2
+ import { PRESENT_WGSL } from "./wgsl/present.wgsl.js";
3
+ /** The order the presentation shader's `toneMapping` switch expects. */
4
+ const TONE_MAPPING = ["aces", "agx", "neutral", "linear"];
5
+ const UNIFORM_BYTES = 48;
6
+ const WORKGROUP = 8;
7
+ /**
8
+ * The finished image, resolved on the device: the presentation pass's display transform, run as a compute pass that
9
+ * writes straight-alpha sRGB bytes, four per pixel. Reading those back is a sixth of the float accumulation and needs
10
+ * no loop over the pixels on the page, which is what held it for seconds at the end of a large frame.
11
+ *
12
+ * It follows the image `render()` has always resolved: no grain, and the vignette measured from each pixel's corner.
13
+ */
14
+ export const IMAGE_RESOLVE_WGSL = /* wgsl */ `${PRESENT_WGSL}
15
+ @group(0) @binding(3) var<storage, read_write> pixels: array<u32>;
16
+
17
+ fn encodeByte(value: f32) -> u32 {
18
+ return u32(round(clamp(value, 0.0, 1.0) * 255.0));
19
+ }
20
+
21
+ @compute @workgroup_size(${WORKGROUP}, ${WORKGROUP})
22
+ fn resolveMain(@builtin(global_invocation_id) id: vec3<u32>) {
23
+ let width = present.resolution.x;
24
+ let height = present.resolution.y;
25
+
26
+ if (id.x >= width || id.y >= height) {
27
+ return;
28
+ }
29
+
30
+ let index = id.y * width + id.x;
31
+ let stored = accumulation[index];
32
+ let samples = stored.w;
33
+ var alpha = 1.0;
34
+
35
+ if (present.transparent != 0u) {
36
+ alpha = select(0.0, clamp(accumulation[width * height + index].x / samples, 0.0, 1.0), samples > 0.0);
37
+ }
38
+
39
+ var color = vec3<f32>(0.0);
40
+
41
+ if (samples > 0.0 && alpha > 0.0) {
42
+ let mean = select(stored.rgb / samples, denoised[index].rgb, present.denoised != 0u);
43
+ let centred = vec2<f32>(f32(id.x) / f32(width), f32(id.y) / f32(height)) - 0.5;
44
+ let falloff = max(0.0, 1.0 - present.vignette * dot(centred, centred) * 2.0);
45
+
46
+ color = mean / alpha * falloff;
47
+ }
48
+
49
+ let encoded = linearToSrgb(toneMap(color));
50
+
51
+ pixels[index] = encodeByte(encoded.r) | (encodeByte(encoded.g) << 8u) | (encodeByte(encoded.b) << 16u)
52
+ | (encodeByte(alpha) << 24u);
53
+ }
54
+ `;
55
+ export class ImageResolvePass {
56
+ device;
57
+ pipeline;
58
+ uniforms;
59
+ values = new ArrayBuffer(UNIFORM_BYTES);
60
+ constructor(device) {
61
+ this.device = device;
62
+ const module = createShaderModule(device, "image resolve", IMAGE_RESOLVE_WGSL);
63
+ this.pipeline = device.createComputePipeline({ layout: "auto", compute: { module, entryPoint: "resolveMain" } });
64
+ this.uniforms = device.createBuffer({
65
+ size: UNIFORM_BYTES, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
66
+ });
67
+ }
68
+ /** The image as RGBA bytes, straight alpha, row by row from the top. */
69
+ async read(accumulation, denoised, width, height, settings) {
70
+ const floats = new Float32Array(this.values), integers = new Uint32Array(this.values);
71
+ integers.fill(0);
72
+ integers[0] = width;
73
+ integers[1] = height;
74
+ floats[2] = settings.exposure;
75
+ integers[3] = Math.max(0, TONE_MAPPING.indexOf(settings.toneMapping));
76
+ floats[4] = settings.vignette;
77
+ integers[7] = settings.transparent ? 1 : 0;
78
+ integers[8] = denoised ? 1 : 0;
79
+ this.device.queue.writeBuffer(this.uniforms, 0, this.values);
80
+ const bytes = width * height * 4;
81
+ const output = this.device.createBuffer({ size: bytes, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC });
82
+ const staging = this.device.createBuffer({ size: bytes, usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST });
83
+ try {
84
+ const encoder = this.device.createCommandEncoder({ label: "image resolve" });
85
+ const pass = encoder.beginComputePass({ label: "image resolve" });
86
+ pass.setPipeline(this.pipeline);
87
+ pass.setBindGroup(0, this.device.createBindGroup({
88
+ layout: this.pipeline.getBindGroupLayout(0),
89
+ entries: [
90
+ { binding: 0, resource: { buffer: this.uniforms } },
91
+ { binding: 1, resource: { buffer: accumulation } },
92
+ { binding: 2, resource: { buffer: denoised ?? accumulation } },
93
+ { binding: 3, resource: { buffer: output } },
94
+ ],
95
+ }));
96
+ pass.dispatchWorkgroups(Math.ceil(width / WORKGROUP), Math.ceil(height / WORKGROUP));
97
+ pass.end();
98
+ encoder.copyBufferToBuffer(output, 0, staging, 0, bytes);
99
+ this.device.queue.submit([encoder.finish()]);
100
+ await staging.mapAsync(GPUMapMode.READ);
101
+ const data = new Uint8ClampedArray(staging.getMappedRange().slice(0));
102
+ staging.unmap();
103
+ return data;
104
+ }
105
+ finally {
106
+ output.destroy();
107
+ staging.destroy();
108
+ }
109
+ }
110
+ dispose() {
111
+ this.uniforms.destroy();
112
+ }
113
+ }
114
+ //# sourceMappingURL=imageResolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageResolve.js","sourceRoot":"","sources":["../src/imageResolve.ts"],"names":[],"mappings":"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"}
package/dist/lights.d.ts CHANGED
@@ -49,8 +49,16 @@ export interface PackedLights {
49
49
  };
50
50
  /** How often direct sampling picks the environment rather than a light. Zero when there is nothing to aim at. */
51
51
  environmentPick: number;
52
- /** Words to append to the texture buffer: a spot light's map index and the matrix that projects it. */
52
+ /**
53
+ * Words to append to the texture buffer: a spot light's map index and the matrix that projects it, then the
54
+ * cumulative probability of every entry and the triangle of every emissive one, packed tight so the two searches the
55
+ * shader makes over them read four bytes a step instead of a whole entry.
56
+ */
53
57
  extraWords: Uint32Array;
58
+ /** Where the cumulative probabilities start in the texture buffer, one float per entry. */
59
+ cdfAt: number;
60
+ /** Where the emissive entries' triangles start in the texture buffer, one word per emissive entry. */
61
+ trianglesAt: number;
54
62
  }
55
63
  /**
56
64
  * Everything the integrator may aim a shadow ray at, with the cumulative distribution that picks one. The weights mix
@@ -1 +1 @@
1
- {"version":3,"file":"lights.d.ts","sourceRoot":"","sources":["../src/lights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU;IACrB,oDAAoD;;;;;IAKpD,oGAAoG;;IAEpG,4DAA4D;;CAEpD,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,iHAAiH;AACjH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,gHAAgH;IAChH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7D,iHAAiH;IACjH,eAAe,EAAE,MAAM,CAAC;IACxB,uGAAuG;IACvG,UAAU,EAAE,WAAW,CAAC;CACzB;AA2PD;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,SAAS,eAAe,EAAO,EACvC,WAAW,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EACtC,OAAO,GAAE,gBAAqB,GAAG,YAAY,CAiD9C"}
1
+ {"version":3,"file":"lights.d.ts","sourceRoot":"","sources":["../src/lights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU;IACrB,oDAAoD;;;;;IAKpD,oGAAoG;;IAEpG,4DAA4D;;CAEpD,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,iHAAiH;AACjH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,gHAAgH;IAChH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7D,iHAAiH;IACjH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,UAAU,EAAE,WAAW,CAAC;IACxB,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd,sGAAsG;IACtG,WAAW,EAAE,MAAM,CAAC;CACrB;AA2PD;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,SAAS,eAAe,EAAO,EACvC,WAAW,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EACtC,OAAO,GAAE,gBAAqB,GAAG,YAAY,CA2D9C"}
package/dist/lights.js CHANGED
@@ -252,7 +252,16 @@ export function packLights(geometry, lights = [], environment, options = {}) {
252
252
  floats[at + 2] = probability * (candidate.density ?? 1);
253
253
  });
254
254
  const environmentPick = surrounding.length ? surrounding[0].weight / total : 0;
255
+ const base = options.extraBase ?? 0;
256
+ const cdfAt = base + extra.length;
257
+ for (let index = 0; index < candidates.length; index++)
258
+ extra.push(words[index * LIGHT_WORDS + 1]);
259
+ const trianglesAt = base + extra.length;
260
+ for (let index = 0; index < areas.length; index++)
261
+ extra.push(words[index * LIGHT_WORDS + 3]);
255
262
  return {
263
+ cdfAt,
264
+ trianglesAt,
256
265
  entries,
257
266
  count: candidates.length,
258
267
  areaCount: areas.length,
@@ -1 +1 @@
1
- {"version":3,"file":"lights.js","sourceRoot":"","sources":["../src/lights.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lights.js","sourceRoot":"","sources":["../src/lights.ts"],"names":[],"mappings":"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"}
@@ -94,6 +94,7 @@ export declare class GpuRenderer extends EventEmitter<GpuRendererEvents> {
94
94
  private present;
95
95
  private buffers;
96
96
  private packed;
97
+ private imageResolve;
97
98
  private sceneDirty;
98
99
  private assets;
99
100
  private packedView;
@@ -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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"}