rayzee 11.13.0 → 11.14.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 (59) hide show
  1. package/README.md +59 -4
  2. package/dist/{ArchiveImporter-DQU55mit.js → ArchiveImporter-DBMmDG98.js} +97 -92
  3. package/dist/{BidirectionalIntegrator-CLmFjSN3.js → BidirectionalIntegrator-D6rcU7N1.js} +199 -198
  4. package/dist/{ColorManagement-3xw0xXRg.js → ColorManagement-D9eYhssc.js} +1083 -547
  5. package/dist/DepthPass-D4Zh108s.js +68 -0
  6. package/dist/{EngineIssues-CfJiBaNj.js → EngineIssues-B14FGIHX.js} +1 -0
  7. package/dist/{NeuralRetouch-CEkBhI1M.js → NeuralRetouch-Cyh0AwUT.js} +3 -3
  8. package/dist/{NeuralSuperRes-Drjws9nE.js → NeuralSuperRes-BPp05Ipu.js} +3 -3
  9. package/dist/{SolarLimb-ZYl-Pwl0.js → PackedRayBuffer-BtJJxs43.js} +3 -7
  10. package/dist/{PathTracer-7a7L3cGF.js → PathTracer-BLV2bVqi.js} +3372 -4160
  11. package/dist/{PhysicalSky-DUIbTE93.js → PhysicalSky-VonV_lAD.js} +46 -45
  12. package/dist/{RayzeeRenderer-CjjGT2e0.js → RayzeeRenderer-D1NeGoVA.js} +787 -453
  13. package/dist/{SceneMetadata-CoAHTAmo.js → SceneMetadata-BBx6k2EY.js} +1 -1
  14. package/dist/SolarLimb-DSig_M0f.js +8 -0
  15. package/dist/TextureBuckets-CcSAhgVc.js +308 -0
  16. package/dist/TextureSampling-C4Sg4Yw_.js +901 -0
  17. package/dist/{ToneMapGPU-4GPwoG_c.js → ToneMapGPU-l_79riZd.js} +21 -11
  18. package/dist/addons/archives.es.js +2 -2
  19. package/dist/addons/bidirectional.es.js +1 -1
  20. package/dist/addons/color.es.js +3 -3
  21. package/dist/addons/formats.es.js +1 -1
  22. package/dist/addons/physical-sky.es.js +1 -1
  23. package/dist/addons/storage.es.js +2 -2
  24. package/dist/encoders.es.js +942 -0
  25. package/dist/{openStorage-CdyVjmps.js → openStorage-D6DBv9_I.js} +3 -3
  26. package/dist/rayzee-core.es.js +12 -11
  27. package/dist/rayzee.es.js +179 -176
  28. package/dist/rayzee.umd.js +149 -107
  29. package/dist/{sceneCachePolicy-DavHt6Ii.js → sceneCachePolicy-DcEWCTKO.js} +179 -485
  30. package/package.json +4 -1
  31. package/src/Color/BakedViews.js +5 -1
  32. package/src/Color/BasicColor.js +7 -0
  33. package/src/Color/ColorManagement.js +64 -42
  34. package/src/Color/Displays.js +35 -0
  35. package/src/Color/LutBake.js +163 -9
  36. package/src/Color/OcioViews.js +508 -55
  37. package/src/EngineIssues.js +1 -0
  38. package/src/Processor/ImageEncoders.js +1306 -0
  39. package/src/Processor/SceneProcessor.js +1 -1
  40. package/src/Processor/TextureCreator.js +154 -48
  41. package/src/Processor/ToneMapCPU.js +35 -9
  42. package/src/Processor/ToneMapGPU.js +52 -6
  43. package/src/Processor/Workers/TexturesWorker.js +10 -13
  44. package/src/RayzeeRenderer.js +303 -36
  45. package/src/Stages/Compositor.js +112 -18
  46. package/src/Stages/PathTracer.js +22 -0
  47. package/src/Stages/PathTracerStage.js +63 -1
  48. package/src/Storage/SceneGraphCodec.js +17 -2
  49. package/src/TSL/DepthPass.js +146 -0
  50. package/src/managers/VideoRenderManager.js +6 -2
  51. /package/dist/{ActiveColor-YvuQq44O.js → ActiveColor-7CZdmrsz.js} +0 -0
  52. /package/dist/{AssetConfig-DSEntE65.js → AssetConfig-BY4jDfTH.js} +0 -0
  53. /package/dist/{BufferLayout-BROyMqO1.js → BufferLayout-SvkefbAs.js} +0 -0
  54. /package/dist/{FileFormats-sPGJeCRc.js → FileFormats-B_VqIVDq.js} +0 -0
  55. /package/dist/{ViewTransforms-CYN7bq2w.js → ViewTransforms-Crdom11t.js} +0 -0
  56. /package/dist/{WorkingMatrix-C6y233hT.js → WorkingMatrix-DWJV2JM2.js} +0 -0
  57. /package/dist/{ZipReader-gDSWr0I5.js → ZipReader-Bva4oiva.js} +0 -0
  58. /package/dist/{identity-C1cLD1C0.js → identity-CtOwEU7N.js} +0 -0
  59. /package/dist/{shared-BGBcSxBQ.js → shared-ubP8eJlr.js} +0 -0
@@ -1,7 +1,8 @@
1
- import { F as e, I as t, It as n, J as r, K as i, L as a, Mt as o, Nt as s, R as c, Tt as l, U as u, Vt as d, X as f, Xt as p, Y as m, Z as h, c as ee, ct as te, dt as ne, en as g, et as _, ft as re, hn as ie, i as v, j as ae, k as oe, lt as se, mn as y, nn as ce, q as le, r as ue, y as de } from "./SolarLimb-ZYl-Pwl0.js";
2
- import { A as fe, C as b, Ct as pe, D as me, E as x, Et as he, G as S, K as ge, L as _e, M as C, N as w, O as ve, P as T, R as ye, S as be, St as xe, T as Se, Tt as E, U as D, X as O, Y as Ce, Z as k, _ as A, a as we, b as j, c as Te, ct as M, d as Ee, f as N, g as De, h as Oe, j as ke, k as Ae, l as je, m as Me, o as Ne, ot as P, p as Pe, q as Fe, s as Ie, st as Le, t as Re, u as ze, v as Be, w as Ve, wt as He, x as Ue, xt as We, y as F } from "./PathTracer-7a7L3cGF.js";
3
- import { W as Ge } from "./sceneCachePolicy-DavHt6Ii.js";
4
- import { r as Ke } from "./BufferLayout-BROyMqO1.js";
1
+ import { $ as e, $t as t, A as n, Bt as r, F as i, Ft as a, G as o, H as s, I as c, J as l, K as u, L as d, Mt as f, O as p, P as m, X as h, Y as ee, Yt as te, ct as ne, dt as re, jt as g, mn as _, n as v, pn as ie, q as ae, r as y, s as oe, st as se, tn as b, ut as ce, v as le, wt as ue } from "./PackedRayBuffer-BtJJxs43.js";
2
+ import { A as de, B as x, C as S, D as fe, E as C, F as pe, H as w, I as me, M as he, N as T, O as ge, P as _e, S as ve, T as ye, V as E, _ as D, a as be, b as xe, c as Se, d as Ce, f as we, g as O, h as k, it as A, j, k as Te, l as M, m as Ee, o as De, p as Oe, s as ke, t as N, u as Ae, v as P, w as je, x as Me, y as Ne } from "./PathTracer-BLV2bVqi.js";
3
+ import { F as Pe, L as Fe, M as Ie, P as Le, S as Re, a as ze, b as Be, c as Ve, j as He, p as Ue, t as We, x as F } from "./TextureSampling-C4Sg4Yw_.js";
4
+ import { o as Ge } from "./TextureBuckets-CcSAhgVc.js";
5
+ import { r as Ke } from "./BufferLayout-SvkefbAs.js";
5
6
  import { Break as qe, Fn as I, If as L, Loop as Je, Return as R, abs as z, atomicAdd as Ye, atomicFunc as Xe, atomicLoad as B, atomicStore as Ze, bool as Qe, cos as $e, cross as et, dot as V, exp2 as tt, float as H, floor as nt, instanceIndex as U, int as W, ivec2 as rt, ivec3 as it, length as at, localId as ot, log2 as st, max as G, min as ct, mix as lt, normalize as ut, sampler as dt, select as K, sin as ft, sqrt as pt, storage as mt, texture as ht, uint as q, uniform as J, uniformArray as gt, vec2 as _t, vec3 as Y, vec4 as vt, workgroupId as yt } from "three/tsl";
6
7
  import { DataTexture as bt, FloatType as xt, RedFormat as St, Vector3 as Ct } from "three";
7
8
  //#region \0rolldown/runtime.js
@@ -21,7 +22,7 @@ var wt = Object.defineProperty, Tt = (e, t) => {
21
22
  lampTypeAt: () => kt,
22
23
  pickLamp: () => Mt,
23
24
  spotConeSolidAngle: () => Pt
24
- }), Dt = ie({
25
+ }), Dt = _({
25
26
  kind: "int",
26
27
  index: "int",
27
28
  pdf: "float",
@@ -37,15 +38,15 @@ var wt = Object.defineProperty, Tt = (e, t) => {
37
38
  i(W(e), t, n(t).toVar());
38
39
  });
39
40
  });
40
- a(0, e.numDirectional, (t) => Oe(Ue.wrap(Se(e.directional, t)), n, r, W(0))), a(1, e.numArea, (i) => {
41
- let a = j.wrap(Ve(e.area, i));
42
- return K(a.intensity.greaterThan(0), Be(a, t, n, r), H(0));
43
- }), a(2, e.numPoint, (i) => De(be.wrap(x(e.point, i)), t, n, r)), a(3, e.numSpot, (i) => A(b.wrap(ve(e.spot, i)), t, n, r));
41
+ a(0, e.numDirectional, (t) => k(Me.wrap(ye(e.directional, t)), n, r, W(0))), a(1, e.numArea, (i) => {
42
+ let a = xe.wrap(je(e.area, i));
43
+ return K(a.intensity.greaterThan(0), P(a, t, n, r), H(0));
44
+ }), a(2, e.numPoint, (i) => O(ve.wrap(C(e.point, i)), t, n, r)), a(3, e.numSpot, (i) => D(S.wrap(ge(e.spot, i)), t, n, r));
44
45
  };
45
46
  function Mt(e, t, n, r, i, a) {
46
47
  let o = W(-1).toVar(), s = W(-1).toVar(), c = H(0).toVar(), l = H(0).toVar();
47
48
  jt(e, t, n, r, (t, n, r) => {
48
- l.addAssign(r), L(r.greaterThan(0).and(a(W(xe + 64).add(At(e, t)).add(n)).mul(l).lessThan(r)), () => {
49
+ l.addAssign(r), L(r.greaterThan(0).and(a(W(He + 64).add(At(e, t)).add(n)).mul(l).lessThan(r)), () => {
49
50
  o.assign(t), s.assign(n), c.assign(r);
50
51
  });
51
52
  });
@@ -68,8 +69,8 @@ function Nt(e, t, n, r, i, a) {
68
69
  });
69
70
  }), K(o.greaterThan(0), s.div(o), H(1).div(G(H(Ot(e)), 1)));
70
71
  }
71
- var Pt = (e) => H(2 * se).mul(G(H(1).sub($e(e.angle)), 1e-10)), Ft = (e) => H(2 * se).mul(G(H(1).sub($e(e.angle.mul(.5))), 1e-10)), It = (e, t, n, r) => {
72
- let i = C(t, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2)).toVar();
72
+ var Pt = (e) => H(2 * ne).mul(G(H(1).sub($e(e.angle)), 1e-10)), Ft = (e) => H(2 * ne).mul(G(H(1).sub($e(e.angle.mul(.5))), 1e-10)), It = (e, t, n, r) => {
73
+ let i = he(t, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2)).toVar();
73
74
  return K(e.shape.lessThan(.5).and(i.greaterThan(1e-5)), H(1).div(i), n.mul(n).div(G(e.area.mul(G(r, .001)), 1e-10)));
74
75
  }, Lt = /* @__PURE__ */ Tt({
75
76
  DIM_CONNECT_PATH: () => 16,
@@ -104,7 +105,7 @@ var Pt = (e) => H(2 * se).mul(G(H(1).sub($e(e.angle)), 1e-10)), Ft = (e) => H(2
104
105
  sourcePick: () => on,
105
106
  strategyWeight: () => en,
106
107
  sunEmissionPdf: () => rn
107
- }), X = xe + 2048, Rt = 65536, zt = 16384, Bt = 4096, Vt = 2147483648, Ht = 1e30, Z = (e) => K(e.equal(e), e, H(0)).clamp(0, Ht), Ut = (e, t) => {
108
+ }), X = He + 2048, Rt = 65536, zt = 16384, Bt = 4096, Vt = 2147483648, Ht = 1e30, Z = (e) => K(e.equal(e), e, H(0)).clamp(0, Ht), Ut = (e, t) => {
108
109
  let n = q(t.x);
109
110
  return _t(H(q(e).mod(n)).add(.5), H(q(e).div(n).add(q(Rt))).add(.5));
110
111
  }, Q = (e) => e.mul(e), Wt = (e, t, n) => {
@@ -128,7 +129,7 @@ var Pt = (e) => H(2 * se).mul(G(H(1).sub($e(e.angle)), 1e-10)), Ft = (e) => H(2
128
129
  CONNECT: 3,
129
130
  LIGHT_TRACE: 4,
130
131
  MERGE: 5
131
- }, en = (e, t, n, r = H(1)) => K(e.equal(q($t.ALL)).or(e.equal(q(t))), n, K(e.equal(q(t + 8)), r, H(0))), tn = (e, t) => K(e.equal(W(2)), H(.5), K(e.equal(W(1)), K(t.lessThan(0), H(1), H(0)), K(t.greaterThan(0), H(1), H(0)))), nn = (e, t, n = 1) => G(V(e, ne), 0).div(G(t, 1e-10)).mul(n), rn = (e, t, n) => e.sunPick.mul(n).div(G(t.y, 1e-30)), an = {
132
+ }, en = (e, t, n, r = H(1)) => K(e.equal(q($t.ALL)).or(e.equal(q(t))), n, K(e.equal(q(t + 8)), r, H(0))), tn = (e, t) => K(e.equal(W(2)), H(.5), K(e.equal(W(1)), K(t.lessThan(0), H(1), H(0)), K(t.greaterThan(0), H(1), H(0)))), nn = (e, t, n = 1) => G(V(e, ce), 0).div(G(t, 1e-10)).mul(n), rn = (e, t, n) => e.sunPick.mul(n).div(G(t.y, 1e-30)), an = {
132
133
  SUN: 0,
133
134
  EMITTERS: 1,
134
135
  ENVIRONMENT: 2,
@@ -137,23 +138,23 @@ var Pt = (e) => H(2 * se).mul(G(H(1).sub($e(e.angle)), 1e-10)), Ft = (e) => H(2
137
138
  let n = W(t);
138
139
  return e.sourceCdf.element(n).sub(K(n.greaterThan(W(0)), e.sourceCdf.element(G(n.sub(W(1)), W(0))), H(0)));
139
140
  }, sn = (e, t, n) => K(t.equal(W(0)), W(e.sourceOffsets[0]), K(t.equal(W(1)), W(e.sourceOffsets[1]), K(t.equal(W(2)), W(e.sourceOffsets[2]), W(e.sourceOffsets[3])))).add(n), cn = (e, t) => K(t.lessThan(W(e.sourceOffsets[1])), W(0), K(t.lessThan(W(e.sourceOffsets[2])), W(1), K(t.lessThan(W(e.sourceOffsets[3])), W(2), W(3)))), ln = (e, t, n) => t.sub(K(n.equal(W(0)), W(e.sourceOffsets[0]), K(n.equal(W(1)), W(e.sourceOffsets[1]), K(n.equal(W(2)), W(e.sourceOffsets[2]), W(e.sourceOffsets[3])))));
140
- function un(e, t, n, r) {
141
- let i = ce.wrap(l(W(e), r)).toVar();
142
- i.normalMapIndex.assign(W(-1)), i.bumpMapIndex.assign(W(-1)), i.displacementMapIndex.assign(W(-1));
143
- let a = g.wrap(D(i, t, n, vt(0))).toVar(), o = a.roughness.toVar();
144
- i.color.assign(a.albedo), i.metalness.assign(a.metalness.clamp(0, 1)), i.roughness.assign(a.roughness.clamp(te, 1)), i.sheenRoughness.assign(i.sheenRoughness.clamp(.05, 1));
145
- let s = _e({
146
- uv: t,
147
- transform: i.albedoTransform
141
+ function un(e, n, r, i) {
142
+ let a = b.wrap(ue(W(e), i)).toVar();
143
+ a.normalMapIndex.assign(W(-1)), a.bumpMapIndex.assign(W(-1)), a.displacementMapIndex.assign(W(-1));
144
+ let o = t.wrap(Ue(a, n, r, vt(0))).toVar(), s = o.roughness.toVar();
145
+ a.color.assign(o.albedo), a.metalness.assign(o.metalness.clamp(0, 1)), a.roughness.assign(o.roughness.clamp(se, 1)), a.sheenRoughness.assign(a.sheenRoughness.clamp(.05, 1));
146
+ let c = ze({
147
+ uv: n,
148
+ transform: a.albedoTransform
148
149
  }).toVar();
149
- L(i.anisotropyMapIndex.greaterThanEqual(W(0)), () => {
150
- let e = ye(i, s).toVar();
151
- i.anisotropy.assign(e.x), i.anisotropyRotation.assign(e.y);
150
+ L(a.anisotropyMapIndex.greaterThanEqual(W(0)), () => {
151
+ let e = Ve(a, c).toVar();
152
+ a.anisotropy.assign(e.x), a.anisotropyRotation.assign(e.y);
152
153
  });
153
- let c = p.wrap(T(i, s)).toVar();
154
- return i.transmission.assign(c.transmission), i.clearcoat.assign(c.clearcoat), i.clearcoatRoughness.assign(c.clearcoatRoughness), i.sheenColor.assign(c.sheenColor), i.sheenRoughness.assign(c.sheenRoughness), i.iridescence.assign(c.iridescence), i.iridescenceThicknessRange.assign(_t(i.iridescenceThicknessRange.x, c.iridescenceThickness)), i.specularIntensity.assign(c.specularIntensity), i.specularColor.assign(c.specularColor), i.diffuseTransmission.assign(c.diffuseTransmission), i.diffuseTransmissionColor.assign(c.diffuseTransmissionColor), L(o.lessThan(te).and(i.anisotropy.equal(0)).and(i.clearcoat.equal(0)).and(i.transmission.equal(0)).and(i.subsurface.equal(0)), () => {
155
- i.roughness.assign(0);
156
- }), i;
154
+ let l = te.wrap(We(a, c)).toVar();
155
+ return a.transmission.assign(l.transmission), a.clearcoat.assign(l.clearcoat), a.clearcoatRoughness.assign(l.clearcoatRoughness), a.sheenColor.assign(l.sheenColor), a.sheenRoughness.assign(l.sheenRoughness), a.iridescence.assign(l.iridescence), a.iridescenceThicknessRange.assign(_t(a.iridescenceThicknessRange.x, l.iridescenceThickness)), a.specularIntensity.assign(l.specularIntensity), a.specularColor.assign(l.specularColor), a.diffuseTransmission.assign(l.diffuseTransmission), a.diffuseTransmissionColor.assign(l.diffuseTransmissionColor), L(s.lessThan(se).and(a.anisotropy.equal(0)).and(a.clearcoat.equal(0)).and(a.transmission.equal(0)).and(a.subsurface.equal(0)), () => {
156
+ a.roughness.assign(0);
157
+ }), a;
157
158
  }
158
159
  var dn = (e, t, n) => K(n.diffuseTransmission.greaterThan(0).and(V(e, t).lessThan(0)), e.negate(), e), fn = (e, t, n, r) => z(V(e, t)).mul(z(V(r, n))).div(G(z(V(e, n)), 1e-4)), pn = 4096, mn = pn + 1, hn = Math.ceil(mn * 4 / 256) * 64, gn = .2, _n = (e) => {
159
160
  let t = ut(et(K(z(e.x).greaterThan(.9), Y(0, 1, 0), Y(1, 0, 0)), e)).toVar();
@@ -198,7 +199,7 @@ var dn = (e, t, n) => K(n.diffuseTransmission.greaterThan(0).and(V(e, t).lessTha
198
199
  }, wn = (e, t, n, r) => {
199
200
  let i = bn(yn(t, n, r)).toVar();
200
201
  L(t.guideLearning.greaterThan(q(0)).and(i.greaterThanEqual(W(0))), () => {
201
- Ye(e.element(q(P.GUIDE).add(q(vn(n).mul(W(pn)).add(i)))), q(1));
202
+ Ye(e.element(q(x.GUIDE).add(q(vn(n).mul(W(pn)).add(i)))), q(1));
202
203
  });
203
204
  };
204
205
  function Tn({ counters: e, out: t }) {
@@ -207,7 +208,7 @@ function Tn({ counters: e, out: t }) {
207
208
  L(n.greaterThanEqual(q(16)), () => {
208
209
  R();
209
210
  });
210
- let r = q(P.GUIDE).add(n.mul(q(pn))).toVar(), i = H(0).toVar();
211
+ let r = q(x.GUIDE).add(n.mul(q(pn))).toVar(), i = H(0).toVar();
211
212
  Je({
212
213
  start: W(0),
213
214
  end: W(pn),
@@ -229,144 +230,144 @@ function Tn({ counters: e, out: t }) {
229
230
  }
230
231
  function En({ counters: e }) {
231
232
  return I(() => {
232
- L(U.lessThan(q(Le)), () => {
233
- Ze(e.element(q(P.GUIDE).add(U)), q(0));
233
+ L(U.lessThan(q(E)), () => {
234
+ Ze(e.element(q(x.GUIDE).add(U)), q(0));
234
235
  });
235
- })().compute(Le, [256]);
236
+ })().compute(E, [256]);
236
237
  }
237
238
  //#endregion
238
239
  //#region src/TSL/LightGenerateKernel.js
239
240
  function Dn(e) {
240
- let { rayBufferRW: t, hitBufferRW: n, activeIndicesRW: a, counters: o, lightBuffer: c, triangleBuffer: l, bvhBuffer: p, emissiveTriangleCount: ee, emissiveVec4Offset: te, emissiveTotalPower: ne, emissiveBoost: g, sunDirection: _, sunRadiance: re, sunParams: ie, environmentIntensity: v, envTexture: ae, envCDFTexture: oe, envMatrix: se, envResolution: y, directionalLightsBuffer: ce, areaLightsBuffer: ue, pointLightsBuffer: de, spotLightsBuffer: _e, bidirectional: C, resolution: w, frame: T, transmissiveBounces: ye } = e, { lightPaths: xe } = C;
241
+ let { rayBufferRW: t, hitBufferRW: n, activeIndicesRW: i, counters: a, lightBuffer: c, triangleBuffer: d, bvhBuffer: p, emissiveTriangleCount: m, emissiveVec4Offset: te, emissiveTotalPower: ne, emissiveBoost: re, sunDirection: g, sunRadiance: _, sunParams: v, environmentIntensity: ie, envTexture: y, envCDFTexture: oe, envMatrix: se, envResolution: b, directionalLightsBuffer: ce, areaLightsBuffer: le, pointLightsBuffer: ue, spotLightsBuffer: he, bidirectional: T, resolution: E, frame: D, transmissiveBounces: we } = e, { lightPaths: O } = T;
241
242
  return I(() => {
242
243
  let e = U;
243
244
  L(e.equal(q(0)), () => {
244
- Ze(o.element(q(P.ACTIVE_RAY_COUNT)), xe), Ze(o.element(q(P.ENTERING_COUNT)), xe);
245
- }), L(e.greaterThanEqual(xe), () => {
245
+ Ze(a.element(q(x.ACTIVE_RAY_COUNT)), O), Ze(a.element(q(x.ENTERING_COUNT)), O);
246
+ }), L(e.greaterThanEqual(O), () => {
246
247
  R();
247
- }), a.element(e).assign(e);
248
- let D = Ut(e, w).toVar(), O = he({ state: pe({
249
- pixelCoord: D,
248
+ }), i.element(e).assign(e);
249
+ let k = Ut(e, E).toVar(), A = Fe({ state: Ie({
250
+ pixelCoord: k,
250
251
  rayIndex: W(3),
251
- frame: T
252
- }) }).toVar(), Ce = Y(0).toVar(), A = Y(0, 1, 0).toVar(), N = Y(0).toVar(), De = H(0).toVar(), Oe = H(0).toVar(), je = W(-1).toVar(), Le = W(0).toVar(), Re = H(1).toVar(), Be = Qe(!1).toVar(), We = He(D, W(0), W(X + 4), O, w, T).toVar(), F = W(0).toVar(), Ge = W(C.sourceCount - 1).toVar();
252
+ frame: D
253
+ }) }).toVar(), M = Y(0).toVar(), N = Y(0, 1, 0).toVar(), P = Y(0).toVar(), Ne = H(0).toVar(), ze = H(0).toVar(), Be = W(-1).toVar(), Ve = W(0).toVar(), He = H(1).toVar(), Ue = Qe(!1).toVar(), We = Le(k, W(0), W(X + 4), A, E, D).toVar(), F = W(0).toVar(), Ge = W(T.sourceCount - 1).toVar();
253
254
  Je(F.lessThan(Ge), () => {
254
255
  let e = F.add(Ge).div(2).toVar();
255
- L(C.sourceCdf.element(e).lessThanEqual(We), () => {
256
+ L(T.sourceCdf.element(e).lessThanEqual(We), () => {
256
257
  F.assign(e.add(1));
257
258
  }).Else(() => {
258
259
  Ge.assign(e);
259
260
  });
260
261
  });
261
- let Ke = C.guideTexture, qe = (e) => {
262
- let t = Cn(C, Ke, e, He(D, W(0), W(X + 7), O, w, T), E(D, W(0), W(X + 6), O, w, T)).toVar();
262
+ let Ke = T.guideTexture, qe = (e) => {
263
+ let t = Cn(T, Ke, e, Le(k, W(0), W(X + 7), A, E, D), Pe(k, W(0), W(X + 6), A, E, D)).toVar();
263
264
  return {
264
265
  start: t,
265
- pdf: Sn(C, Ke, e, t)
266
+ pdf: Sn(T, Ke, e, t)
266
267
  };
267
268
  };
268
269
  L(F.equal(W(an.SUN)), () => {
269
- let e = Pe(_, ie, E(D, W(0), W(X + 5), O, w, T)).toVar(), t = Me(e, _, re, ie).mul(v).toVar(), n = qe(e), r = rn(C, ie, n.pdf).toVar();
270
+ let e = Oe(g, v, Pe(k, W(0), W(X + 5), A, E, D)).toVar(), t = Ee(e, g, _, v).mul(ie).toVar(), n = qe(e), r = rn(T, v, n.pdf).toVar();
270
271
  L(t.x.add(t.y).add(t.z).greaterThan(0).and(r.greaterThan(0)), () => {
271
- Ce.assign(n.start), A.assign(e.negate()), N.assign(t.div(r)), De.assign(Q(H(1).div(ie.y.mul(r)))), Oe.assign(Q(H(1).div(r))), Be.assign(!0);
272
+ M.assign(n.start), N.assign(e.negate()), P.assign(t.div(r)), Ne.assign(Q(H(1).div(v.y.mul(r)))), ze.assign(Q(H(1).div(r))), Ue.assign(!0);
272
273
  });
273
274
  }).ElseIf(F.equal(W(an.EMITTERS)), () => {
274
- let e = Ne(c, te, ee, He(D, W(0), W(X), O, w, T)).toVar(), t = te.add(e.mul(W(2))), n = c.element(t).toVar(), r = c.element(t.add(W(1))).toVar();
275
- je.assign(W(n.x)), Le.assign(W(n.w));
276
- let i = we.wrap(Ie(je, l, p, Le)).toVar(), a = Te(i.v0, i.v1, i.v2, E(D, W(0), W(X + 1), O, w, T)).toVar(), o = ut(et(i.v1.sub(i.v0), i.v2.sub(i.v0))).toVar(), u = k(d(l, je, 4).z).toVar(), f = K(u.equal(W(1)).or(u.equal(W(2)).and(He(D, W(0), W(X + 3), O, w, T).lessThan(.5))).toVar(), o.negate(), o).toVar();
277
- A.assign(S(f, E(D, W(0), W(X + 2), O, w, T)));
278
- let m = V(A, f).toVar(), h = G(n.y, 0).div(G(ne, 1e-10)).div(G(r.w, 1e-20)).mul(K(u.equal(W(2)), H(.5), H(1))).mul(C.emitterPick).toVar(), _ = h.mul(m).div(Math.PI).toVar();
279
- L(m.greaterThan(1e-6).and(_.greaterThan(0)), () => {
280
- Ce.assign(s(a, f)), N.assign(r.xyz.mul(g).mul(Math.PI).div(h)), De.assign(Q(H(1).div(_))), Oe.assign(Q(m.div(_))), Re.assign(m), Be.assign(!0);
275
+ let e = De(c, te, m, Le(k, W(0), W(X), A, E, D)).toVar(), t = te.add(e.mul(W(2))), n = c.element(t).toVar(), i = c.element(t.add(W(1))).toVar();
276
+ Be.assign(W(n.x)), Ve.assign(W(n.w));
277
+ let a = be.wrap(ke(Be, d, p, Ve)).toVar(), o = Se(a.v0, a.v1, a.v2, Pe(k, W(0), W(X + 1), A, E, D)).toVar(), s = ut(et(a.v1.sub(a.v0), a.v2.sub(a.v0))).toVar(), l = Re(r(d, Be, 4).z).toVar(), u = K(l.equal(W(1)).or(l.equal(W(2)).and(Le(k, W(0), W(X + 3), A, E, D).lessThan(.5))).toVar(), s.negate(), s).toVar();
278
+ N.assign(_e(u, Pe(k, W(0), W(X + 2), A, E, D)));
279
+ let h = V(N, u).toVar(), ee = G(n.y, 0).div(G(ne, 1e-10)).div(G(i.w, 1e-20)).mul(K(l.equal(W(2)), H(.5), H(1))).mul(T.emitterPick).toVar(), g = ee.mul(h).div(Math.PI).toVar();
280
+ L(h.greaterThan(1e-6).and(g.greaterThan(0)), () => {
281
+ M.assign(f(o, u)), P.assign(i.xyz.mul(re).mul(Math.PI).div(ee)), Ne.assign(Q(H(1).div(g))), ze.assign(Q(h.div(g))), He.assign(h), Ue.assign(!0);
281
282
  });
282
283
  }).ElseIf(F.equal(W(an.ENVIRONMENT)), () => {
283
- let e = Fe(oe, se, y, E(D, W(0), W(X + 5), O, w, T)), t = e.direction.toVar(), n = e.pdf.toVar(), r = ge({
284
- tex: ae,
285
- samp: dt(ae),
284
+ let e = me(oe, se, b, Pe(k, W(0), W(X + 5), A, E, D)), t = e.direction.toVar(), n = e.pdf.toVar(), r = pe({
285
+ tex: y,
286
+ samp: dt(y),
286
287
  direction: t,
287
288
  environmentMatrix: se,
288
- environmentIntensity: v,
289
+ environmentIntensity: ie,
289
290
  enableEnvironmentLight: H(1)
290
- }).xyz.toVar(), i = qe(t), a = C.envPick.mul(n).mul(i.pdf).toVar();
291
+ }).xyz.toVar(), i = qe(t), a = T.envPick.mul(n).mul(i.pdf).toVar();
291
292
  L(r.x.add(r.y).add(r.z).greaterThan(0).and(a.greaterThan(0)), () => {
292
- Ce.assign(i.start), A.assign(t.negate()), N.assign(r.div(a)), De.assign(Q(n.div(a))), Oe.assign(Q(H(1).div(a))), je.assign(W(-1 - an.ENVIRONMENT)), Be.assign(!0);
293
+ M.assign(i.start), N.assign(t.negate()), P.assign(r.div(a)), Ne.assign(Q(n.div(a))), ze.assign(Q(H(1).div(a))), Be.assign(W(-1 - an.ENVIRONMENT)), Ue.assign(!0);
293
294
  });
294
295
  }).ElseIf(F.greaterThanEqual(W(an.LAMPS)), () => {
295
- let e = on(C, F).toVar(), t = cn(C, F).toVar(), n = ln(C, F, t).toVar();
296
- je.assign(W(-1).sub(F));
297
- let r = H(0).toVar(), i = Y(0).toVar(), a = E(D, W(0), W(X + 2), O, w, T).toVar();
296
+ let e = on(T, F).toVar(), t = cn(T, F).toVar(), n = ln(T, F, t).toVar();
297
+ Be.assign(W(-1).sub(F));
298
+ let r = H(0).toVar(), i = Y(0).toVar(), a = Pe(k, W(0), W(X + 2), A, E, D).toVar();
298
299
  L(t.equal(W(0)), () => {
299
- let t = Ue.wrap(Se(ce, n)), a = ut(t.direction).toVar();
300
+ let t = Me.wrap(ye(ce, n)), a = ut(t.direction).toVar();
300
301
  i.assign(t.color.mul(t.intensity)), r.assign(e), L(t.angle.greaterThan(0), () => {
301
302
  let e = Ft(t).toVar();
302
- a.assign(Ae(a, t.angle.mul(.5), E(D, W(0), W(X + 5), O, w, T))), i.divAssign(e), r.divAssign(e);
303
+ a.assign(Te(a, t.angle.mul(.5), Pe(k, W(0), W(X + 5), A, E, D))), i.divAssign(e), r.divAssign(e);
303
304
  });
304
305
  let o = qe(a);
305
- r.mulAssign(o.pdf), Ce.assign(o.start), A.assign(a.negate());
306
+ r.mulAssign(o.pdf), M.assign(o.start), N.assign(a.negate());
306
307
  }).ElseIf(t.equal(W(1)), () => {
307
- let t = j.wrap(Ve(ue, n)), o = t.shape.greaterThan(.5), s = E(D, W(0), W(X + 1), O, w, T).toVar(), c = pt(s.x), l = s.y.mul(2 * Math.PI);
308
- Ce.assign(t.position.add(t.u.mul(K(o, c.mul($e(l)), s.x.mul(2).sub(1)))).add(t.v.mul(K(o, c.mul(ft(l)), s.y.mul(2).sub(1))))), A.assign(S(t.normal, a));
309
- let u = V(A, t.normal).toVar();
310
- i.assign(K(t.area.greaterThan(0).and(u.greaterThan(1e-6)), ze(t).mul(Ee(u, t.spread)).mul(u), Y(0))), r.assign(e.div(G(t.area, 1e-20)).mul(u).div(Math.PI)), Oe.assign(Q(u.div(G(r, 1e-30))));
308
+ let t = xe.wrap(je(le, n)), o = t.shape.greaterThan(.5), s = Pe(k, W(0), W(X + 1), A, E, D).toVar(), c = pt(s.x), l = s.y.mul(2 * Math.PI);
309
+ M.assign(t.position.add(t.u.mul(K(o, c.mul($e(l)), s.x.mul(2).sub(1)))).add(t.v.mul(K(o, c.mul(ft(l)), s.y.mul(2).sub(1))))), N.assign(_e(t.normal, a));
310
+ let u = V(N, t.normal).toVar();
311
+ i.assign(K(t.area.greaterThan(0).and(u.greaterThan(1e-6)), Ae(t).mul(Ce(u, t.spread)).mul(u), Y(0))), r.assign(e.div(G(t.area, 1e-20)).mul(u).div(Math.PI)), ze.assign(Q(u.div(G(r, 1e-30))));
311
312
  }).ElseIf(t.equal(W(2)), () => {
312
- let t = be.wrap(x(de, n));
313
- Ce.assign(t.position), A.assign(Ae(Y(0, 1, 0), H(Math.PI), a)), i.assign(t.color.mul(t.intensity)), r.assign(e.div(4 * Math.PI));
313
+ let t = ve.wrap(C(ue, n));
314
+ M.assign(t.position), N.assign(Te(Y(0, 1, 0), H(Math.PI), a)), i.assign(t.color.mul(t.intensity)), r.assign(e.div(4 * Math.PI));
314
315
  }).Else(() => {
315
- let t = b.wrap(ve(_e, n));
316
- Ce.assign(t.position), A.assign(Ae(t.direction, t.angle, a));
317
- let o = A.negate();
318
- i.assign(t.color.mul(t.intensity).mul(me({
316
+ let t = S.wrap(ge(he, n));
317
+ M.assign(t.position), N.assign(Te(t.direction, t.angle, a));
318
+ let o = N.negate();
319
+ i.assign(t.color.mul(t.intensity).mul(fe({
319
320
  coneCosine: $e(t.angle),
320
321
  blend: t.penumbra,
321
- angleCosine: V(A, t.direction)
322
- })).mul(ke(t, o)).mul(fe(t, o))), r.assign(e.div(Pt(t)));
322
+ angleCosine: V(N, t.direction)
323
+ })).mul(j(t, o)).mul(de(t, o))), r.assign(e.div(Pt(t)));
323
324
  }), L(i.x.add(i.y).add(i.z).greaterThan(0).and(r.greaterThan(0)), () => {
324
- N.assign(i.div(r)), De.assign(Q(H(1).div(r))), Be.assign(!0);
325
+ P.assign(i.div(r)), Ne.assign(Q(H(1).div(r))), Ue.assign(!0);
325
326
  });
326
- }), L(Be.not(), () => {
327
- le(t, e, A, q(0)), R();
327
+ }), L(Ue.not(), () => {
328
+ u(t, e, N, q(0)), R();
328
329
  });
329
- let I = G(G(G(N.x, N.y), N.z), 1e-20).toVar();
330
- r(t, e, Ce, W(0), W(0)), le(t, e, A, q(M.ACTIVE | M.REDIRECTED | M.LIGHT_PATH | M.LIGHT_EMITTED)), f(t, e, N.div(I), H(0)), m(t, e, vt(Y(0), H(1))), i(t, e, q(0), q(ye), H(1), H(1), H(1)), h(n, e, O, De, Oe), u(n, e, je, Le, Re, I);
330
+ let I = G(G(G(P.x, P.y), P.z), 1e-20).toVar();
331
+ ae(t, e, M, W(0), W(0)), u(t, e, N, q(w.ACTIVE | w.REDIRECTED | w.LIGHT_PATH | w.LIGHT_EMITTED)), ee(t, e, P.div(I), H(0)), l(t, e, vt(Y(0), H(1))), o(t, e, q(0), q(we), H(1), H(1), H(1)), h(n, e, A, Ne, ze), s(n, e, Be, Ve, He, I);
331
332
  });
332
333
  }
333
334
  //#endregion
334
335
  //#region src/TSL/ConnectKernel.js
335
336
  function On(e) {
336
- let { rayBufferRW: t, hitBufferRO: n, activeIndicesRO: r, counters: i, bvhBuffer: l, triangleBuffer: u, materialBuffer: d, resolution: f, frame: p, accumFrame: h, currentBounce: te, chunkRowBase: ne, lightPaths: g, slotsPerPath: _, lightTag: ie, passTag: v, strategyView: se, maxBounceCount: y, globalIlluminationIntensity: ce, fireflyThreshold: le, mergeVm: fe = null, diffuseTransmission: b = !0 } = e;
337
+ let { rayBufferRW: t, hitBufferRO: r, activeIndicesRO: i, counters: a, bvhBuffer: o, triangleBuffer: s, materialBuffer: u, resolution: m, frame: h, accumFrame: ee, currentBounce: te, chunkRowBase: ne, lightPaths: _, slotsPerPath: ie, lightTag: ae, passTag: y, strategyView: se, maxBounceCount: b, globalIlluminationIntensity: ce, fireflyThreshold: ue, mergeVm: de = null, diffuseTransmission: S = !0 } = e;
337
338
  return I(() => {
338
339
  let e = U;
339
- L(e.greaterThanEqual(B(i.element(q(P.ENTERING_COUNT)))), () => {
340
+ L(e.greaterThanEqual(B(a.element(q(x.ENTERING_COUNT)))), () => {
340
341
  R();
341
342
  });
342
- let pe = r.element(e).toVar(), me = ee(pe);
343
- L(c(n, me).notEqual(v), () => {
343
+ let fe = i.element(e).toVar(), C = oe(fe);
344
+ L(d(r, C).notEqual(y), () => {
344
345
  R();
345
346
  });
346
- let x = a(n, me), S = {
347
- ...x,
348
- vm: fe?.(x.position) ?? null
349
- }, ge = W(S.extra).add(W(1)).toVar(), _e = W(f.x), C = W(pe).add(ne.mul(_e)), ve = _t(H(C.mod(_e)).add(.5), H(C.div(_e)).add(.5)).toVar(), T = W(te).mul(W(32)), ye = he({ state: ae(n, pe).bitXor(q(2654435769)) }).toVar(), be = He(ve, W(0), T.add(W(16)), ye, f, p).toVar(), xe = He(ve, W(0), T.add(W(17)), ye, f, p).toVar(), Se = ct(q(H(g).mul(be)), g.sub(q(1))).toVar().mul(_).toVar(), E = ct(W(de(n, ue(Se), ie)), W(y).add(W(1)).sub(ge)).toVar();
350
- L(E.lessThan(W(1)), () => {
347
+ let pe = c(r, C), w = {
348
+ ...pe,
349
+ vm: de?.(pe.position) ?? null
350
+ }, me = W(w.extra).add(W(1)).toVar(), he = W(m.x), ge = W(fe).add(ne.mul(he)), _e = _t(H(ge.mod(he)).add(.5), H(ge.div(he)).add(.5)).toVar(), ve = W(te).mul(W(32)), ye = Fe({ state: n(r, fe).bitXor(q(2654435769)) }).toVar(), E = Le(_e, W(0), ve.add(W(16)), ye, m, h).toVar(), D = Le(_e, W(0), ve.add(W(17)), ye, m, h).toVar(), be = ct(q(H(_).mul(E)), _.sub(q(1))).toVar().mul(ie).toVar(), xe = ct(W(le(r, v(be), ae)), W(b).add(W(1)).sub(me)).toVar();
351
+ L(xe.lessThan(W(1)), () => {
351
352
  R();
352
353
  });
353
- let D = ct(W(H(E).mul(xe)), E.sub(W(1))).toVar(), O = a(n, ue(Se.add(q(D)))), k = {
354
- ...O,
355
- vm: fe?.(O.position) ?? null
356
- }, A = k.position.sub(S.position).toVar(), we = G(V(A, A), 1e-12).toVar(), j = A.div(pt(we)).toVar(), Te = V(j, S.N).toVar(), M = V(j, S.facetN).toVar(), Ee = V(j, k.facetN).negate().toVar(), De = Te.greaterThan(0).and(M.greaterThan(0)).and(Ee.greaterThan(0)), Oe = Te.lessThan(0).and(M.lessThan(0)), ke = Ee.lessThan(0);
357
- L((b ? Oe.or(Te.greaterThan(0).and(M.greaterThan(0))).and(ke.or(Ee.greaterThan(0))) : De).not(), () => {
354
+ let Se = ct(W(H(xe).mul(D)), xe.sub(W(1))).toVar(), Ce = c(r, v(be.add(q(Se)))), O = {
355
+ ...Ce,
356
+ vm: de?.(Ce.position) ?? null
357
+ }, k = O.position.sub(w.position).toVar(), A = G(V(k, k), 1e-12).toVar(), j = k.div(pt(A)).toVar(), Te = V(j, w.N).toVar(), Ee = V(j, w.facetN).toVar(), De = V(j, O.facetN).negate().toVar(), Oe = Te.greaterThan(0).and(Ee.greaterThan(0)).and(De.greaterThan(0)), ke = Te.lessThan(0).and(Ee.lessThan(0)), N = De.lessThan(0);
358
+ L((S ? ke.or(Te.greaterThan(0).and(Ee.greaterThan(0))).and(N.or(De.greaterThan(0))) : Oe).not(), () => {
358
359
  R();
359
360
  });
360
- let Ae = un(S.materialIndex, S.uv, S.N, d), Me = un(k.materialIndex, k.uv, k.N, d), Ne = j.negate();
361
- b && L(Oe.and(Ae.diffuseTransmission.lessThanEqual(0)).or(ke.and(Me.diffuseTransmission.lessThanEqual(0))), () => {
361
+ let Ae = un(w.materialIndex, w.uv, w.N, u), P = un(O.materialIndex, O.uv, O.N, u), je = j.negate();
362
+ S && L(ke.and(Ae.diffuseTransmission.lessThanEqual(0)).or(N.and(P.diffuseTransmission.lessThanEqual(0))), () => {
362
363
  R();
363
364
  });
364
- let Pe = (e) => b ? dn(S.N, e, Ae) : S.N, Fe = (e) => b ? dn(k.N, e, Me) : k.N, Ie = w(S.V, j, S.N, Ae).toVar(), Le = w(Ne, k.V, Fe(Ne), Me).toVar(), Re = (b ? z(Te) : Te).mul(fn(k.V, k.N, k.facetN, Ne)).div(we), ze = N(S.V, j, S.N, Ae), Be = N(j, S.V, Pe(j), Ae), Ve = N(k.V, Ne, k.N, Me), Ue = N(Ne, k.V, Fe(Ne), Me), We = qt(ze.mul(b ? z(Ee) : Ee).div(we), k, Ue), Ge = qt(Ve.mul(b ? z(M) : M).div(we), S, Be), Ke = ge.add(D).add(W(1)), qe = en(se, $t.CONNECT, Qt(We, Ge), H(1).div(H(Ke.sub(W(1))))), I = je(S.throughput.mul(Ie).mul(Le).mul(k.throughput).mul(Re.mul(qe).mul(H(E)).mul(ce)), H(Ke.sub(W(1))), le, W(h)).toVar();
365
- L(o(I).greaterThan(0), () => {
366
- let e = s(S.position, b ? K(Oe, S.facetN.negate(), S.facetN) : S.facetN).toVar(), n = s(k.position, b ? K(ke, k.facetN.negate(), k.facetN) : k.facetN).sub(e).toVar(), r = at(n).toVar(), i = F(e, n.div(r), r.mul(re), Ce, l, u, d);
365
+ let Me = (e) => S ? dn(w.N, e, Ae) : w.N, Pe = (e) => S ? dn(O.N, e, P) : O.N, Ie = T(w.V, j, w.N, Ae).toVar(), Re = T(je, O.V, Pe(je), P).toVar(), ze = (S ? z(Te) : Te).mul(fn(O.V, O.N, O.facetN, je)).div(A), Ve = we(w.V, j, w.N, Ae), He = we(j, w.V, Me(j), Ae), Ue = we(O.V, je, O.N, P), We = we(je, O.V, Pe(je), P), F = qt(Ve.mul(S ? z(De) : De).div(A), O, We), Ge = qt(Ue.mul(S ? z(Ee) : Ee).div(A), w, He), Ke = me.add(Se).add(W(1)), qe = en(se, $t.CONNECT, Qt(F, Ge), H(1).div(H(Ke.sub(W(1))))), I = M(w.throughput.mul(Ie).mul(Re).mul(O.throughput).mul(ze.mul(qe).mul(H(xe)).mul(ce)), H(Ke.sub(W(1))), ue, W(ee)).toVar();
366
+ L(g(I).greaterThan(0), () => {
367
+ let e = f(w.position, S ? K(ke, w.facetN.negate(), w.facetN) : w.facetN).toVar(), n = f(O.position, S ? K(N, O.facetN.negate(), O.facetN) : O.facetN).sub(e).toVar(), r = at(n).toVar(), i = Ne(e, n.div(r), r.mul(re), Be, o, s, u);
367
368
  L(i.greaterThan(0), () => {
368
- let e = oe(t, pe).toVar();
369
- m(t, pe, vt(e.xyz.add(I.mul(i)), e.w));
369
+ let e = p(t, fe).toVar();
370
+ l(t, fe, vt(e.xyz.add(I.mul(i)), e.w));
370
371
  });
371
372
  });
372
373
  });
@@ -385,101 +386,101 @@ function In({ head: e, hashSize: t }) {
385
386
  });
386
387
  })().compute(Math.ceil(t / 256) * 256, [256]);
387
388
  }
388
- function Ln({ hitBufferRW: e, head: n, bidirectional: r }) {
389
- let { lightPaths: i, slotsPerPath: a, lightTag: o, hashMask: s } = r;
389
+ function Ln({ hitBufferRW: t, head: n, bidirectional: r }) {
390
+ let { lightPaths: a, slotsPerPath: o, lightTag: s, hashMask: c } = r;
390
391
  return I(() => {
391
- let c = U.toVar();
392
- L(c.greaterThanEqual(i.mul(a)), () => {
392
+ let l = U.toVar();
393
+ L(l.greaterThanEqual(a.mul(o)), () => {
393
394
  R();
394
395
  });
395
- let l = c.mod(a).toVar();
396
- L(l.greaterThanEqual(de(e, ue(c.sub(l)), o)), () => {
396
+ let u = l.mod(o).toVar();
397
+ L(u.greaterThanEqual(le(t, v(l.sub(u)), s)), () => {
397
398
  R();
398
399
  });
399
- let u = ue(c), { shell: d, cell: f } = Fn(r, t(e, u)), p = Pn(d, f, s);
400
- _(e, u, Xe("atomicExchange", n.element(p), c));
400
+ let d = v(l), { shell: f, cell: p } = Fn(r, i(t, d)), m = Pn(f, p, c);
401
+ e(t, d, Xe("atomicExchange", n.element(m), l));
401
402
  });
402
403
  }
403
- function Rn(n) {
404
- let { rayBufferRW: r, hitBufferRO: i, activeIndicesRO: s, counters: l, head: u, materialBuffer: d, bidirectional: f, maxBounceCount: p, globalIlluminationIntensity: h, fireflyThreshold: te, accumFrame: ne, diffuseTransmission: g = !0 } = n, { passTag: _, slotsPerPath: re, strategyView: ie, hashMask: v } = f;
404
+ function Rn(e) {
405
+ let { rayBufferRW: t, hitBufferRO: n, activeIndicesRO: r, counters: a, head: o, materialBuffer: s, bidirectional: u, maxBounceCount: f, globalIlluminationIntensity: h, fireflyThreshold: ee, accumFrame: te, diffuseTransmission: ne = !0 } = e, { passTag: re, slotsPerPath: _, strategyView: ie, hashMask: ae } = u;
405
406
  return I(() => {
406
- let n = U;
407
- L(n.greaterThanEqual(B(l.element(q(P.ENTERING_COUNT)))), () => {
407
+ let e = U;
408
+ L(e.greaterThanEqual(B(a.element(q(x.ENTERING_COUNT)))), () => {
408
409
  R();
409
410
  });
410
- let ae = s.element(n).toVar(), se = ee(ae);
411
- L(c(i, se).notEqual(_), () => {
411
+ let y = r.element(e).toVar(), se = oe(y);
412
+ L(d(n, se).notEqual(re), () => {
412
413
  R();
413
414
  });
414
- let y = a(i, se), ce = W(y.extra).toVar(), le = W(p).add(W(1)).sub(ce).toVar(), de = un(y.materialIndex, y.uv, y.N, d), fe = Y(0).toVar(), b = Jt(f, y.position).toVar(), pe = b.mul(b).toVar(), me = Yt(f, b).toVar(), x = me.mul(f.mergeTrust), he = H(1).div(G(x.mul(x), 1e-30)).toVar(), S = at(y.position.sub(f.cameraPosition)).toVar(), ge = Mn(f, G(f.mergeConst.add(f.mergeSlope.mul(G(S.sub(b), 0))), f.mergeMin)).toVar(), _e = ct(Mn(f, f.mergeConst.add(f.mergeSlope.mul(S.add(b)))), ge.add(W(1))).toVar();
415
+ let b = c(n, se), ce = W(b.extra).toVar(), le = W(f).add(W(1)).sub(ce).toVar(), ue = un(b.materialIndex, b.uv, b.N, s), de = Y(0).toVar(), S = Jt(u, b.position).toVar(), fe = S.mul(S).toVar(), C = Yt(u, S).toVar(), pe = C.mul(u.mergeTrust), w = H(1).div(G(pe.mul(pe), 1e-30)).toVar(), me = at(b.position.sub(u.cameraPosition)).toVar(), he = Mn(u, G(u.mergeConst.add(u.mergeSlope.mul(G(me.sub(S), 0))), u.mergeMin)).toVar(), ge = ct(Mn(u, u.mergeConst.add(u.mergeSlope.mul(me.add(S)))), he.add(W(1))).toVar();
415
416
  Je({
416
417
  start: W(0),
417
418
  end: W(16),
418
419
  type: "int",
419
420
  condition: "<"
420
- }, ({ i: n }) => {
421
- let r = ge.add(n.shiftRight(W(3))).toVar();
422
- L(r.greaterThan(_e), () => {
421
+ }, ({ i: e }) => {
422
+ let t = he.add(e.shiftRight(W(3))).toVar();
423
+ L(t.greaterThan(ge), () => {
423
424
  qe();
424
425
  });
425
- let o = Nn(f, r).toVar(), s = n.bitAnd(W(7)), c = it(nt(y.position.div(o).sub(.5))).add(it(s.bitAnd(W(1)), s.shiftRight(W(1)).bitAnd(W(1)), s.shiftRight(W(2)))).toVar(), l = B(u.element(Pn(r, c, v))).toVar(), d = W(0).toVar();
426
+ let r = Nn(u, t).toVar(), a = e.bitAnd(W(7)), s = it(nt(b.position.div(r).sub(.5))).add(it(a.bitAnd(W(1)), a.shiftRight(W(1)).bitAnd(W(1)), a.shiftRight(W(2)))).toVar(), l = B(o.element(Pn(t, s, ae))).toVar(), d = W(0).toVar();
426
427
  Je(l.notEqual(q(kn)).and(d.lessThan(W(An))), () => {
427
- let n = ue(l), o = t(i, n).toVar(), s = o.sub(y.position), u = W(l.mod(re)).add(W(1)).toVar();
428
- L(V(s, s).lessThan(pe).and(u.lessThanEqual(le)), () => {
429
- let e = Fn(f, o);
430
- L(e.shell.equal(r).and(e.cell.x.equal(c.x)).and(e.cell.y.equal(c.y)).and(e.cell.z.equal(c.z)), () => {
431
- let e = a(i, n), t = V(e.V, y.N).toVar(), r = V(e.V, y.facetN).toVar(), o = t.greaterThan(0).and(r.greaterThan(0)), s = de.diffuseTransmission.greaterThan(0).and(t.lessThan(0)).and(r.lessThan(0));
432
- L(g ? o.or(s) : o, () => {
433
- let n = w(y.V, e.V, y.N, de), i = Zt(e, N(y.V, e.V, y.N, de), he), a = g ? dn(y.N, e.V, de) : y.N, o = Zt(y, N(e.V, y.V, a, de), he), s = ce.add(u), c = en(ie, $t.MERGE, Qt(i, o), H(1).div(H(s))), l = K(s.greaterThan(W(1)), h, H(1)), d = g ? z(t).div(G(z(r), 1e-4)) : t.div(G(r, 1e-4));
434
- fe.addAssign(je(y.throughput.mul(n).mul(e.throughput).mul(c.mul(d).div(me).mul(l)), H(s.sub(W(1))), te, W(ne)));
428
+ let e = v(l), r = i(n, e).toVar(), a = r.sub(b.position), o = W(l.mod(_)).add(W(1)).toVar();
429
+ L(V(a, a).lessThan(fe).and(o.lessThanEqual(le)), () => {
430
+ let i = Fn(u, r);
431
+ L(i.shell.equal(t).and(i.cell.x.equal(s.x)).and(i.cell.y.equal(s.y)).and(i.cell.z.equal(s.z)), () => {
432
+ let t = c(n, e), r = V(t.V, b.N).toVar(), i = V(t.V, b.facetN).toVar(), a = r.greaterThan(0).and(i.greaterThan(0)), s = ue.diffuseTransmission.greaterThan(0).and(r.lessThan(0)).and(i.lessThan(0));
433
+ L(ne ? a.or(s) : a, () => {
434
+ let e = T(b.V, t.V, b.N, ue), n = Zt(t, we(b.V, t.V, b.N, ue), w), a = ne ? dn(b.N, t.V, ue) : b.N, s = Zt(b, we(t.V, b.V, a, ue), w), c = ce.add(o), l = en(ie, $t.MERGE, Qt(n, s), H(1).div(H(c))), u = K(c.greaterThan(W(1)), h, H(1)), d = ne ? z(r).div(G(z(i), 1e-4)) : r.div(G(i, 1e-4));
435
+ de.addAssign(M(b.throughput.mul(e).mul(t.throughput).mul(l.mul(d).div(C).mul(u)), H(c.sub(W(1))), ee, W(te)));
435
436
  });
436
437
  });
437
- }), l.assign(e(i, n)), d.addAssign(W(1));
438
+ }), l.assign(m(n, e)), d.addAssign(W(1));
438
439
  });
439
- }), L(o(fe).greaterThan(0), () => {
440
- let e = oe(r, ae).toVar();
441
- m(r, ae, vt(e.xyz.add(fe), e.w));
440
+ }), L(g(de).greaterThan(0), () => {
441
+ let e = p(t, y).toVar();
442
+ l(t, y, vt(e.xyz.add(de), e.w));
442
443
  });
443
444
  });
444
445
  }
445
446
  function zn(e) {
446
- let { hitBufferRO: t, splatBuffer: r, bvhBuffer: i, triangleBuffer: o, materialBuffer: c, lightPaths: l, slotsPerPath: u, lightTag: d, strategyView: f, cameraPosition: p, cameraForward: m, cameraClipStart: h, cameraViewMatrix: ee, cameraProjectionMatrix: te, pixelArea: ne, renderWidth: g, renderHeight: _, globalIlluminationIntensity: ie, fireflyThreshold: v, accumFrame: ae, frame: oe, mergeVm: se = null, diffuseTransmission: y = !0 } = e;
447
+ let { hitBufferRO: t, splatBuffer: n, bvhBuffer: r, triangleBuffer: i, materialBuffer: o, lightPaths: s, slotsPerPath: l, lightTag: u, strategyView: d, cameraPosition: p, cameraForward: m, cameraClipStart: h, cameraViewMatrix: ee, cameraProjectionMatrix: te, pixelArea: ne, renderWidth: g, renderHeight: _, globalIlluminationIntensity: ie, fireflyThreshold: ae, accumFrame: y, frame: oe, mergeVm: se = null, diffuseTransmission: b = !0 } = e;
447
448
  return I(() => {
448
449
  let e = U.toVar();
449
- L(e.greaterThanEqual(l.mul(u)), () => {
450
+ L(e.greaterThanEqual(s.mul(l)), () => {
450
451
  R();
451
452
  });
452
- let ce = e.mod(u).toVar(), le = de(t, ue(e.sub(ce)), d);
453
- L(ce.greaterThanEqual(le), () => {
453
+ let ce = e.mod(l).toVar(), ue = le(t, v(e.sub(ce)), u);
454
+ L(ce.greaterThanEqual(ue), () => {
454
455
  R();
455
456
  });
456
- let fe = a(t, ue(e)), b = {
457
- ...fe,
458
- vm: se?.(fe.position) ?? null
459
- }, pe = p.sub(b.position).toVar(), me = G(V(pe, pe), 1e-12).toVar(), x = pe.div(pt(me)).toVar(), S = V(x, b.facetN).toVar(), ge = V(x, m).negate().toVar(), _e = S.lessThan(0), C = y ? K(_e, b.extra.bitAnd(q(2)), b.extra.bitAnd(q(1))).notEqual(q(0)) : b.extra.notEqual(q(0)), ve = h.div(G(ge, 1e-6)).toVar();
460
- L((y ? S.equal(0) : S.lessThanEqual(0)).or(ge.lessThanEqual(1e-6)).or(C).or(me.lessThanEqual(ve.mul(ve))), () => {
457
+ let de = c(t, v(e)), x = {
458
+ ...de,
459
+ vm: se?.(de.position) ?? null
460
+ }, S = p.sub(x.position).toVar(), fe = G(V(S, S), 1e-12).toVar(), C = S.div(pt(fe)).toVar(), pe = V(C, x.facetN).toVar(), w = V(C, m).negate().toVar(), me = pe.lessThan(0), he = b ? K(me, x.extra.bitAnd(q(2)), x.extra.bitAnd(q(1))).notEqual(q(0)) : x.extra.notEqual(q(0)), ge = h.div(G(w, 1e-6)).toVar();
461
+ L((b ? pe.equal(0) : pe.lessThanEqual(0)).or(w.lessThanEqual(1e-6)).or(he).or(fe.lessThanEqual(ge.mul(ge))), () => {
461
462
  R();
462
463
  });
463
- let T = te.mul(ee.mul(vt(b.position, 1))).toVar();
464
- L(T.w.lessThanEqual(0), () => {
464
+ let _e = te.mul(ee.mul(vt(x.position, 1))).toVar();
465
+ L(_e.w.lessThanEqual(0), () => {
465
466
  R();
466
467
  });
467
- let ye = nt(T.x.div(T.w).mul(.5).add(.5).mul(H(g))).toVar(), be = nt(H(.5).sub(T.y.div(T.w).mul(.5)).mul(H(_))).toVar();
468
- L(ye.lessThan(0).or(be.lessThan(0)).or(ye.greaterThanEqual(H(g))).or(be.greaterThanEqual(H(_))), () => {
468
+ let ve = nt(_e.x.div(_e.w).mul(.5).add(.5).mul(H(g))).toVar(), ye = nt(H(.5).sub(_e.y.div(_e.w).mul(.5)).mul(H(_))).toVar();
469
+ L(ve.lessThan(0).or(ye.lessThan(0)).or(ve.greaterThanEqual(H(g))).or(ye.greaterThanEqual(H(_))), () => {
469
470
  R();
470
471
  });
471
- let xe = un(b.materialIndex, b.uv, b.N, c);
472
- y && L(_e.and(xe.diffuseTransmission.lessThanEqual(0)), () => {
472
+ let E = un(x.materialIndex, x.uv, x.N, o);
473
+ b && L(me.and(E.diffuseTransmission.lessThanEqual(0)), () => {
473
474
  R();
474
475
  });
475
- let Se = y ? dn(b.N, x, xe) : b.N, E = w(x, b.V, Se, xe).toVar(), D = H(1).div(ne.mul(ge).mul(ge).mul(ge)).div(me).toVar(), Ce = qt(D.mul(y ? z(S) : S).div(H(l)), b, N(x, b.V, Se, xe)), k = ce.add(q(1)), A = H(1).toVar();
476
- L(k.greaterThan(q(1)), () => {
477
- A.assign(ie);
476
+ let D = b ? dn(x.N, C, E) : x.N, be = T(C, x.V, D, E).toVar(), xe = H(1).div(ne.mul(w).mul(w).mul(w)).div(fe).toVar(), Se = qt(xe.mul(b ? z(pe) : pe).div(H(s)), x, we(C, x.V, D, E)), Ce = ce.add(q(1)), O = H(1).toVar();
477
+ L(Ce.greaterThan(q(1)), () => {
478
+ O.assign(ie);
478
479
  });
479
- let we = je(b.throughput.mul(E).mul(fn(b.V, b.N, b.facetN, x)).mul(D.div(H(l)).mul(en(f, $t.LIGHT_TRACE, Qt(Ce, H(0)))).mul(A)), H(ce), v, W(ae)).toVar(), j = s(b.position, y ? K(_e, b.facetN.negate(), b.facetN) : b.facetN).toVar(), Te = p.sub(j).toVar(), M = at(Te).toVar(), Ee = F(j, Te.div(M), M.sub(ve).mul(re), O, i, o, c);
480
+ let k = M(x.throughput.mul(be).mul(fn(x.V, x.N, x.facetN, C)).mul(xe.div(H(s)).mul(en(d, $t.LIGHT_TRACE, Qt(Se, H(0)))).mul(O)), H(ce), ae, W(y)).toVar(), A = f(x.position, b ? K(me, x.facetN.negate(), x.facetN) : x.facetN).toVar(), j = p.sub(A).toVar(), Te = at(j).toVar(), Ee = Ne(A, j.div(Te), Te.sub(ge).mul(re), F, r, i, o);
480
481
  L(Ee.greaterThan(0), () => {
481
- let t = ct(n(we.mul(Ee)), Y(Bt)).mul(zt).toVar(), i = H(he({ state: e.bitXor(q(oe).mul(q(2654435769))) }).shiftRight(q(8))).mul(1 / 16777216).toVar(), a = q(be).mul(q(g)).add(q(ye)).mul(q(3)).toVar();
482
- Ye(r.element(a), q(nt(t.x.add(i)))), Ye(r.element(a.add(q(1))), q(nt(t.y.add(i)))), Ye(r.element(a.add(q(2))), q(nt(t.z.add(i))));
482
+ let t = ct(a(k.mul(Ee)), Y(Bt)).mul(zt).toVar(), r = H(Fe({ state: e.bitXor(q(oe).mul(q(2654435769))) }).shiftRight(q(8))).mul(1 / 16777216).toVar(), i = q(ye).mul(q(g)).add(q(ve)).mul(q(3)).toVar();
483
+ Ye(n.element(i), q(nt(t.x.add(r)))), Ye(n.element(i.add(q(1))), q(nt(t.y.add(r)))), Ye(n.element(i.add(q(2))), q(nt(t.z.add(r))));
483
484
  });
484
485
  });
485
486
  }
@@ -488,11 +489,11 @@ function Bn(e) {
488
489
  return I(() => {
489
490
  let e = W(yt.x).mul(16).add(W(ot.x)), o = W(yt.y).mul(16).add(W(ot.y));
490
491
  L(e.lessThan(r).and(o.lessThan(a)), () => {
491
- let a = q(o.mul(r).add(e)), s = q(o.add(i).mul(r).add(e)).mul(q(3)).toVar(), c = B(n.element(s)).toVar(), l = B(n.element(s.add(q(1)))).toVar(), u = B(n.element(s.add(q(2)))).toVar();
492
- L(c.bitOr(l).bitOr(u).notEqual(q(0)), () => {
492
+ let a = q(o.mul(r).add(e)), s = q(o.add(i).mul(r).add(e)).mul(q(3)).toVar(), c = B(n.element(s)).toVar(), u = B(n.element(s.add(q(1)))).toVar(), d = B(n.element(s.add(q(2)))).toVar();
493
+ L(c.bitOr(u).bitOr(d).notEqual(q(0)), () => {
493
494
  Ze(n.element(s), q(0)), Ze(n.element(s.add(q(1))), q(0)), Ze(n.element(s.add(q(2))), q(0));
494
- let e = oe(t, a).toVar();
495
- m(t, a, vt(e.xyz.add(Y(H(c), H(l), H(u)).div(zt)), e.w));
495
+ let e = p(t, a).toVar();
496
+ l(t, a, vt(e.xyz.add(Y(H(c), H(u), H(d)).div(zt)), e.w));
496
497
  });
497
498
  });
498
499
  });
@@ -562,17 +563,17 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
562
563
  this._sizeSourceTable();
563
564
  }
564
565
  allocate(e) {
565
- (!this._splatAttr || this._splatAttr.count < e * 3) && (v(this.pt.renderer, this._splatAttr), this._splatAttr = y(e * 3, 1, Uint32Array));
566
+ (!this._splatAttr || this._splatAttr.count < e * 3) && (y(this.pt.renderer, this._splatAttr), this._splatAttr = ie(e * 3, 1, Uint32Array));
566
567
  let t = this.merging ? 2 ** Math.ceil(Math.log2(Math.max(this._lightCacheSlots, 1024))) : 0;
567
- this._mergeHeadAttr?.count !== t && (v(this.pt.renderer, this._mergeHeadAttr), this._mergeHeadAttr = t > 0 ? y(t, 1, Uint32Array) : null), this.uniforms.hashMask.value = Math.max(t - 1, 0), this._guideTexture || (this._guideTexture = new bt(null, mn, 16, St, xt), this._guideTexture.source.dataReady = !1, this._guideTexture.needsUpdate = !0, this._guideBuildAttr = y(hn * 16, 1, Float32Array)), this.uniforms.guideTexture = ht(this._guideTexture), this.uniforms.guide.value = 0;
568
+ this._mergeHeadAttr?.count !== t && (y(this.pt.renderer, this._mergeHeadAttr), this._mergeHeadAttr = t > 0 ? ie(t, 1, Uint32Array) : null), this.uniforms.hashMask.value = Math.max(t - 1, 0), this._guideTexture || (this._guideTexture = new bt(null, mn, 16, St, xt), this._guideTexture.source.dataReady = !1, this._guideTexture.needsUpdate = !0, this._guideBuildAttr = ie(hn * 16, 1, Float32Array)), this.uniforms.guideTexture = ht(this._guideTexture), this.uniforms.guide.value = 0;
568
569
  }
569
570
  registerKernels(e) {
570
- let { km: t, qm: n, pb: r, counters: i, bounceCountsBuf: a, wfCurrentBounce: o, copyReadB: s, copyWriteA: c, maxRays: l, w: u, own: d, freshLight: f, freshTri: p, freshBvh: m, freshMat: h, freshEnvTex: ee, freshEnvCDF: te, materialLayers: ne } = e, g = ne?.diffuseTransmission ?? !0, _ = this.uniforms, re = n.MAX_BOUNCE_SNAPSHOTS, ie = (e) => {
571
- let t = q(o).clamp(q(0), q(re - 1));
572
- a.element(t.add(q(2 * re))).assign(e), a.element(t.add(q(3 * re))).assign(B(i.element(q(P.ACTIVE_ENERGY)))), Ze(i.element(q(P.ENTERING_COUNT)), e);
571
+ let { km: t, qm: n, pb: r, counters: i, bounceCountsBuf: a, wfCurrentBounce: o, copyReadB: s, copyWriteA: c, maxRays: l, w: u, own: d, freshLight: f, freshTri: p, freshBvh: m, freshMat: h, freshEnvTex: ee, freshEnvCDF: te, materialLayers: ne } = e, re = ne?.diffuseTransmission ?? !0, g = this.uniforms, _ = n.MAX_BOUNCE_SNAPSHOTS, v = (e) => {
572
+ let t = q(o).clamp(q(0), q(_ - 1));
573
+ a.element(t.add(q(2 * _))).assign(e), a.element(t.add(q(3 * _))).assign(B(i.element(q(x.ACTIVE_ENERGY)))), Ze(i.element(q(x.ENTERING_COUNT)), e);
573
574
  };
574
575
  if (t.register("lightSnapshot", I(() => {
575
- ie(B(i.element(q(P.ACTIVE_RAY_COUNT))));
576
+ v(B(i.element(q(x.ACTIVE_RAY_COUNT))));
576
577
  })().compute([
577
578
  1,
578
579
  1,
@@ -582,9 +583,9 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
582
583
  1,
583
584
  1
584
585
  ])), t.register("lightCopyback", I(() => {
585
- let e = U, t = B(i.element(q(P.ACTIVE_RAY_COUNT)));
586
+ let e = U, t = B(i.element(q(x.ACTIVE_RAY_COUNT)));
586
587
  L(e.equal(q(0)), () => {
587
- ie(t);
588
+ v(t);
588
589
  }), L(e.greaterThanEqual(t), () => {
589
590
  R();
590
591
  }), c.element(e).assign(s.element(e));
@@ -623,7 +624,7 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
623
624
  areaLightsBuffer: this.pt.areaLightsBufferNode,
624
625
  pointLightsBuffer: this.pt.pointLightsBufferNode,
625
626
  spotLightsBuffer: this.pt.spotLightsBufferNode,
626
- bidirectional: _,
627
+ bidirectional: g,
627
628
  resolution: this.pt.resolution,
628
629
  frame: this.pt.seedFrame,
629
630
  transmissiveBounces: this.pt.transmissiveBounces
@@ -648,16 +649,16 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
648
649
  accumFrame: this.pt.frame,
649
650
  currentBounce: this.pt._wfCurrentBounce,
650
651
  chunkRowBase: this.pt._wfChunkRowBase,
651
- lightPaths: _.lightPaths,
652
- slotsPerPath: _.slotsPerPath,
653
- lightTag: _.lightTag,
654
- passTag: _.passTag,
655
- strategyView: _.strategyView,
652
+ lightPaths: g.lightPaths,
653
+ slotsPerPath: g.slotsPerPath,
654
+ lightTag: g.lightTag,
655
+ passTag: g.passTag,
656
+ strategyView: g.strategyView,
656
657
  maxBounceCount: this.pt.maxBounces,
657
658
  globalIlluminationIntensity: this.pt.globalIlluminationIntensity,
658
659
  fireflyThreshold: this.pt.fireflyThreshold,
659
- mergeVm: _.merging ? (e) => Wn(_, e) : null,
660
- diffuseTransmission: g
660
+ mergeVm: g.merging ? (e) => Wn(g, e) : null,
661
+ diffuseTransmission: re
661
662
  })()).compute([
662
663
  Math.ceil(l / 256),
663
664
  1,
@@ -666,7 +667,7 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
666
667
  256,
667
668
  1,
668
669
  1
669
- ])), _.merging) {
670
+ ])), g.merging) {
670
671
  let e = mt(this._mergeHeadAttr, "uint").toAtomic();
671
672
  t.register("mergeClear", In({
672
673
  head: e,
@@ -674,7 +675,7 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
674
675
  })), t.register("mergeInsert", Ln({
675
676
  hitBufferRW: r.hitBuffer.rw,
676
677
  head: e,
677
- bidirectional: _
678
+ bidirectional: g
678
679
  })().compute([
679
680
  Math.ceil(this._lightCacheSlots / 256),
680
681
  1,
@@ -690,12 +691,12 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
690
691
  counters: i,
691
692
  head: e,
692
693
  materialBuffer: h,
693
- bidirectional: _,
694
+ bidirectional: g,
694
695
  maxBounceCount: this.pt.maxBounces,
695
696
  globalIlluminationIntensity: this.pt.globalIlluminationIntensity,
696
697
  fireflyThreshold: this.pt.fireflyThreshold,
697
698
  accumFrame: this.pt.frame,
698
- diffuseTransmission: g
699
+ diffuseTransmission: re
699
700
  })()).compute([
700
701
  Math.ceil(l / 256),
701
702
  1,
@@ -706,31 +707,31 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
706
707
  1
707
708
  ]));
708
709
  }
709
- let v = mt(this._splatAttr, "uint").toAtomic();
710
+ let ie = mt(this._splatAttr, "uint").toAtomic();
710
711
  t.register("lightSplat", d(zn({
711
712
  hitBufferRO: r.hitBuffer.ro,
712
- splatBuffer: v,
713
+ splatBuffer: ie,
713
714
  bvhBuffer: m,
714
715
  triangleBuffer: p,
715
716
  materialBuffer: h,
716
- lightPaths: _.lightPaths,
717
- slotsPerPath: _.slotsPerPath,
718
- lightTag: _.lightTag,
719
- strategyView: _.strategyView,
720
- cameraPosition: _.cameraPosition,
721
- cameraForward: _.cameraForward,
717
+ lightPaths: g.lightPaths,
718
+ slotsPerPath: g.slotsPerPath,
719
+ lightTag: g.lightTag,
720
+ strategyView: g.strategyView,
721
+ cameraPosition: g.cameraPosition,
722
+ cameraForward: g.cameraForward,
722
723
  cameraClipStart: this.pt.cameraClipStart,
723
724
  cameraViewMatrix: this.pt.cameraViewMatrix,
724
725
  cameraProjectionMatrix: this.pt.cameraProjectionMatrix,
725
- pixelArea: _.pixelArea,
726
+ pixelArea: g.pixelArea,
726
727
  renderWidth: this.pt._wfRenderWidth,
727
728
  renderHeight: this.pt._wfRenderHeight,
728
729
  globalIlluminationIntensity: this.pt.globalIlluminationIntensity,
729
730
  fireflyThreshold: this.pt.fireflyThreshold,
730
731
  accumFrame: this.pt.frame,
731
732
  frame: this.pt.seedFrame,
732
- mergeVm: _.merging ? (e) => Wn(_, e) : null,
733
- diffuseTransmission: g
733
+ mergeVm: g.merging ? (e) => Wn(g, e) : null,
734
+ diffuseTransmission: re
734
735
  })()).compute([
735
736
  Math.ceil(this._lightCacheSlots / 256),
736
737
  1,
@@ -741,7 +742,7 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
741
742
  1
742
743
  ])), t.register("splatResolve", Bn({
743
744
  rayBufferRW: r.rayBuffer.rw,
744
- splatBuffer: v,
745
+ splatBuffer: ie,
745
746
  renderWidth: this.pt._wfRenderWidth,
746
747
  chunkRowBase: this.pt._wfChunkRowBase,
747
748
  chunkRows: this.pt._wfChunkRows
@@ -781,7 +782,7 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
781
782
  return this._splatAttr ? [this._splatAttr, this._mergeHeadAttr].filter(Boolean) : null;
782
783
  }
783
784
  dispose() {
784
- v(this.pt.renderer, this._splatAttr), this._splatAttr = null, v(this.pt.renderer, this._mergeHeadAttr), this._mergeHeadAttr = null, this._disposeLightGuide();
785
+ y(this.pt.renderer, this._splatAttr), this._splatAttr = null, y(this.pt.renderer, this._mergeHeadAttr), this._mergeHeadAttr = null, this._disposeLightGuide();
785
786
  }
786
787
  setBidirectionalStrategy(e = "all", { alone: t = !1 } = {}) {
787
788
  let n = {
@@ -823,14 +824,14 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
823
824
  "point",
824
825
  "spot"
825
826
  ].forEach((n, r) => {
826
- e.sourceOffsets[r] = t, t += this.pt[`${n}LightsBufferNode`].array.length / We[n];
827
+ e.sourceOffsets[r] = t, t += this.pt[`${n}LightsBufferNode`].array.length / A[n];
827
828
  }), e.sourceCount = t, e.sourceCdf.array.length !== t && (e.sourceCdf.array = new Float32Array(t));
828
829
  }
829
830
  _updateSourceTable() {
830
831
  let e = this.uniforms, t = e.sourceCdf.array, n = new Float64Array(t.length), r = (e, t) => Math.max(.2126 * e[t] + .7152 * e[t + 1] + .0722 * e[t + 2], 0), i = (e) => ({
831
832
  a: this.pt[`${e}LightsBufferNode`].array,
832
833
  n: this.pt[`num${e[0].toUpperCase()}${e.slice(1)}Lights`].value,
833
- f: We[e]
834
+ f: A[e]
834
835
  }), a = i("directional"), o = this.pt.enableEnvironment.value > 0, s = this.pt.environment.exactTable;
835
836
  e.envTable.value = +!!s;
836
837
  let c = o && (this.pt.hasSun.value > 0 || s) || a.n > 0, l = c || this.merging ? this._sceneDisc() : 0, u = c ? l * qn : 0;
@@ -933,7 +934,7 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
933
934
  }, { texture: r.get(this._guideTexture).texture }, [mn, 16]), r.device.queue.submit([i.finish()]), e.guide.value = 1;
934
935
  }
935
936
  _disposeLightGuide() {
936
- v(this.pt.renderer, this._guideBuildAttr), this._guideTexture?.dispose(), this._guideTexture = this._guideBuildAttr = null, this.uniforms.guideTexture = null;
937
+ y(this.pt.renderer, this._guideBuildAttr), this._guideTexture?.dispose(), this._guideTexture = this._guideBuildAttr = null, this.uniforms.guideTexture = null;
937
938
  }
938
939
  _nextPassTag() {
939
940
  return this._passTag = this._passTag + 1 & 2147483647, (Vn | this._passTag) >>> 0;
@@ -945,7 +946,7 @@ var { PASS_TAG_BIT: Vn, STRATEGY: Hn, STRATEGY_ALONE: Un, SOURCE: $, mergeVmAt:
945
946
  for (let i = 0; i <= e; i++) {
946
947
  this.pt._wfCurrentBounce.value = i;
947
948
  let c = i > 0 ? a?.[i - 1] : void 0, l = r && c > 0 ? Math.min(n, Math.ceil(c * 1.5) + 1024) : n;
948
- for (let e of Re) t.setDispatchForCount(e, l);
949
+ for (let e of N) t.setDispatchForCount(e, l);
949
950
  if (r || t.dispatch("enterFull"), t.dispatch("extend"), this.pt._sortMaterials && (t.dispatch("resetGlobalHist"), t.dispatch("globalHist"), t.dispatch("globalPrefix"), t.dispatch("globalScatter")), t.dispatch("shade"), t.dispatch("compact"), t.dispatch(r ? "lightCopyback" : "lightSnapshot"), s >= 0 && i < e && o?.[i] !== void 0 && o[i] <= s) break;
950
951
  }
951
952
  this.uniforms.lightTrace.value > 0 && (t.setDispatchForCount("lightSplat", n * this.uniforms.slotsPerPath.value), t.dispatch("lightSplat")), this.merging && (t.dispatch("mergeClear"), t.setDispatchForCount("mergeInsert", n * this.uniforms.slotsPerPath.value), t.dispatch("mergeInsert"));