rayzee 5.6.1 → 5.7.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.
package/dist/rayzee.es.js CHANGED
@@ -485,7 +485,8 @@ var on = j(.7548776662466927), sn = j(.5698402909980532), cn = /* @__PURE__ */ K
485
485
  ANIMATION_STOPPED: "engine:animationStopped",
486
486
  ANIMATION_FINISHED: "engine:animationFinished",
487
487
  VIDEO_RENDER_PROGRESS: "engine:videoRenderProgress",
488
- VIDEO_RENDER_COMPLETE: "engine:videoRenderComplete"
488
+ VIDEO_RENDER_COMPLETE: "engine:videoRenderComplete",
489
+ DISPOSE: "engine:dispose"
489
490
  }, Tn = null;
490
491
  function En(e) {
491
492
  Tn = e;
@@ -1115,7 +1116,7 @@ var zn = class {
1115
1116
  let r = H(t, n);
1116
1117
  return this._uniforms.set(e, r), r;
1117
1118
  }, r = (e, t) => (this._booleans.add(e), n(e, +!!t, "int"));
1118
- n("frame", 0, "uint"), n("maxBounces", X.bounces, "int"), n("samplesPerPixel", X.samplesPerPixel, "int"), n("maxSamples", X.maxSamples, "int"), n("transmissiveBounces", X.transmissiveBounces, "int"), n("visMode", X.debugMode, "int"), n("debugVisScale", X.debugVisScale, "float"), r("enableAccumulation", !0), n("accumulationAlpha", 0, "float"), r("cameraIsMoving", !1), r("hasPreviousAccumulated", !1), n("environmentIntensity", X.environmentIntensity, "float"), n("backgroundIntensity", X.backgroundIntensity, "float"), r("showBackground", X.showBackground), r("transparentBackground", X.transparentBackground), r("enableEnvironment", X.enableEnvironment), n("environmentMatrix", new tt(), "mat4"), r("useEnvMapIS", X.useImportanceSampledEnvironment), n("envTotalSum", 0, "float"), n("envResolution", new jt(1, 1), "vec2"), n("sunDirection", new Mt(0, 1, 0), "vec3"), n("sunAngularSize", .0087, "float"), r("hasSun", !1), n("globalIlluminationIntensity", X.globalIlluminationIntensity, "float"), n("exposure", X.exposure, "float"), n("numDirectionalLights", 0, "int"), n("numAreaLights", 0, "int"), n("numPointLights", 0, "int"), n("numSpotLights", 0, "int"), this._lightBuffers = {
1119
+ n("frame", 0, "uint"), n("maxBounces", X.bounces, "int"), n("samplesPerPixel", X.samplesPerPixel, "int"), n("maxSamples", X.maxSamples, "int"), n("transmissiveBounces", X.transmissiveBounces, "int"), n("visMode", X.debugMode, "int"), n("debugVisScale", X.debugVisScale, "float"), r("enableAccumulation", !0), n("accumulationAlpha", 0, "float"), r("cameraIsMoving", !1), r("hasPreviousAccumulated", !1), n("environmentIntensity", X.environmentIntensity, "float"), n("backgroundIntensity", X.backgroundIntensity, "float"), r("showBackground", X.showBackground), r("transparentBackground", X.transparentBackground), r("enableEnvironment", X.enableEnvironment), n("environmentMatrix", new tt(), "mat4"), r("useEnvMapIS", X.useImportanceSampledEnvironment), n("envTotalSum", 0, "float"), n("envCompensationDelta", 0, "float"), n("envResolution", new jt(1, 1), "vec2"), n("sunDirection", new Mt(0, 1, 0), "vec3"), n("sunAngularSize", .0087, "float"), r("hasSun", !1), n("globalIlluminationIntensity", X.globalIlluminationIntensity, "float"), n("exposure", X.exposure, "float"), n("numDirectionalLights", 0, "int"), n("numAreaLights", 0, "int"), n("numPointLights", 0, "int"), n("numSpotLights", 0, "int"), this._lightBuffers = {
1119
1120
  directional: be(new Float32Array(128), "float"),
1120
1121
  area: be(new Float32Array(208), "float"),
1121
1122
  point: be(new Float32Array(144), "float"),
@@ -1427,7 +1428,7 @@ async function or(e) {
1427
1428
  }
1428
1429
  //#endregion
1429
1430
  //#region src/Processor/Workers/CDFWorker.js?worker&url
1430
- var sr = "" + new URL("assets/CDFWorker-2MoynL4F.js", import.meta.url).href;
1431
+ var sr = "" + new URL("assets/CDFWorker-BFQUr3By.js", import.meta.url).href;
1431
1432
  //#endregion
1432
1433
  //#region src/Processor/EquirectHDRInfo.js
1433
1434
  function cr(e, t, n = 0, r = e.length) {
@@ -1482,14 +1483,14 @@ var fr = class e {
1482
1483
  0,
1483
1484
  1,
1484
1485
  1
1485
- ]), this.totalSum = 0, this.width = 0, this.height = 0, this._worker = null;
1486
+ ]), this.totalSum = 0, this.compensationDelta = 0, this.width = 0, this.height = 0, this._worker = null;
1486
1487
  }
1487
1488
  dispose() {
1488
1489
  this.marginalData = null, this.conditionalData = null, this._worker &&= (this._worker.terminate(), null);
1489
1490
  }
1490
1491
  updateFrom(t) {
1491
1492
  let { floatData: n, width: r, height: i } = dr(t), a = e.computeCDF(n, r, i);
1492
- this.marginalData = a.marginalData, this.conditionalData = a.conditionalData, this.totalSum = a.totalSum, this.width = r, this.height = i;
1493
+ this.marginalData = a.marginalData, this.conditionalData = a.conditionalData, this.totalSum = a.totalSum, this.compensationDelta = a.compensationDelta, this.width = r, this.height = i;
1493
1494
  }
1494
1495
  async updateFromAsync(e) {
1495
1496
  let { floatData: t, width: n, height: r } = dr(e);
@@ -1509,33 +1510,52 @@ var fr = class e {
1509
1510
  height: r
1510
1511
  }, [t.buffer]);
1511
1512
  });
1512
- this.marginalData = e.marginalData, this.conditionalData = e.conditionalData, this.totalSum = e.totalSum, this.width = e.width, this.height = e.height;
1513
+ this.marginalData = e.marginalData, this.conditionalData = e.conditionalData, this.totalSum = e.totalSum, this.compensationDelta = e.compensationDelta, this.width = e.width, this.height = e.height;
1513
1514
  } finally {
1514
1515
  this._worker &&= (this._worker.terminate(), null);
1515
1516
  }
1516
1517
  }
1517
1518
  static computeCDF(e, t, n) {
1518
- let r = new Float32Array(t * n), i = new Float32Array(n), a = 0, o = 0;
1519
- for (let s = 0; s < n; s++) {
1519
+ let r = t * n, i = new Float32Array(r), a = 0;
1520
+ for (let r = 0; r < n; r++) {
1521
+ let o = Math.sin(Math.PI * (r + .5) / n);
1522
+ for (let n = 0; n < t; n++) {
1523
+ let s = r * t + n, c = lr(e[4 * s], e[4 * s + 1], e[4 * s + 2]) * o;
1524
+ i[s] = c, a += c;
1525
+ }
1526
+ }
1527
+ let o = a / r, s = 0;
1528
+ for (let e = 0; e < r; e++) i[e] = Math.max(0, i[e] - o), s += i[e];
1529
+ let c = s > 0, l = c ? s : a, u = c ? o : 0;
1530
+ if (!c) for (let r = 0; r < n; r++) {
1531
+ let a = Math.sin(Math.PI * (r + .5) / n);
1532
+ for (let n = 0; n < t; n++) {
1533
+ let o = r * t + n;
1534
+ i[o] = lr(e[4 * o], e[4 * o + 1], e[4 * o + 2]) * a;
1535
+ }
1536
+ }
1537
+ let d = new Float32Array(r), f = new Float32Array(n), p = 0;
1538
+ for (let e = 0; e < n; e++) {
1520
1539
  let n = 0;
1521
- for (let i = 0; i < t; i++) {
1522
- let o = s * t + i, c = e[4 * o], l = e[4 * o + 1], u = e[4 * o + 2], d = lr(c, l, u);
1523
- n += d, a += d, r[o] = n;
1540
+ for (let r = 0; r < t; r++) {
1541
+ let a = e * t + r;
1542
+ n += i[a], d[a] = n;
1524
1543
  }
1525
- if (n !== 0) for (let e = s * t, i = s * t + t; e < i; e++) r[e] /= n;
1526
- o += n, i[s] = o;
1544
+ if (n !== 0) for (let r = e * t, i = e * t + t; r < i; r++) d[r] /= n;
1545
+ p += n, f[e] = p;
1527
1546
  }
1528
- if (o !== 0) for (let e = 0, t = i.length; e < t; e++) i[e] /= o;
1529
- let s = new Float32Array(n), c = new Float32Array(t * n);
1530
- for (let e = 0; e < n; e++) s[e] = (cr(i, (e + 1) / n) + .5) / n;
1547
+ if (p !== 0) for (let e = 0, t = f.length; e < t; e++) f[e] /= p;
1548
+ let m = new Float32Array(n), h = new Float32Array(r);
1549
+ for (let e = 0; e < n; e++) m[e] = (cr(f, (e + 1) / n) + .5) / n;
1531
1550
  for (let e = 0; e < n; e++) for (let n = 0; n < t; n++) {
1532
- let i = e * t + n;
1533
- c[i] = (cr(r, (n + 1) / t, e * t, t) + .5) / t;
1551
+ let r = e * t + n;
1552
+ h[r] = (cr(d, (n + 1) / t, e * t, t) + .5) / t;
1534
1553
  }
1535
1554
  return {
1536
- marginalData: s,
1537
- conditionalData: c,
1538
- totalSum: a
1555
+ marginalData: m,
1556
+ conditionalData: h,
1557
+ totalSum: l,
1558
+ compensationDelta: u
1539
1559
  };
1540
1560
  }
1541
1561
  }, pr = Math.PI, mr = Math.PI * 2, hr = Math.E, gr = [
@@ -1785,20 +1805,20 @@ var Pr = class {
1785
1805
  }
1786
1806
  async buildEnvironmentCDF({ useWorker: e = !0 } = {}) {
1787
1807
  if (!this.scene.environment) {
1788
- this._updateCDFStorageBuffers(), this.uniforms.set("envTotalSum", 0), this.uniforms.set("useEnvMapIS", 0);
1808
+ this._updateCDFStorageBuffers(), this.uniforms.set("envTotalSum", 0), this.uniforms.set("envCompensationDelta", 0), this.uniforms.set("useEnvMapIS", 0);
1789
1809
  return;
1790
1810
  }
1791
1811
  try {
1792
1812
  let t = performance.now(), n = this.scene.environment;
1793
1813
  if (!n.image) {
1794
- this._updateCDFStorageBuffers(), this.uniforms.set("envTotalSum", 0), this.uniforms.set("useEnvMapIS", 0);
1814
+ this._updateCDFStorageBuffers(), this.uniforms.set("envTotalSum", 0), this.uniforms.set("envCompensationDelta", 0), this.uniforms.set("useEnvMapIS", 0);
1795
1815
  return;
1796
1816
  }
1797
- e ? await this.equirectHdrInfo.updateFromAsync(n) : this.equirectHdrInfo.updateFrom(n), this.cdfBuildTime = performance.now() - t, this._updateCDFStorageBuffers(), this.uniforms.set("envTotalSum", this.equirectHdrInfo.totalSum), this.uniforms.set("useEnvMapIS", 1);
1817
+ e ? await this.equirectHdrInfo.updateFromAsync(n) : this.equirectHdrInfo.updateFrom(n), this.cdfBuildTime = performance.now() - t, this._updateCDFStorageBuffers(), this.uniforms.set("envTotalSum", this.equirectHdrInfo.totalSum), this.uniforms.set("envCompensationDelta", this.equirectHdrInfo.compensationDelta), this.uniforms.set("useEnvMapIS", 1);
1798
1818
  let { width: r, height: i } = this.equirectHdrInfo;
1799
1819
  r && i && this.uniforms.get("envResolution").value.set(r, i), console.log(`Environment CDF built in ${this.cdfBuildTime.toFixed(2)}ms (worker: ${e})`);
1800
1820
  } catch (e) {
1801
- console.error("Error building environment CDF:", e), this.uniforms.set("useEnvMapIS", 0), this.uniforms.set("envTotalSum", 0);
1821
+ console.error("Error building environment CDF:", e), this.uniforms.set("useEnvMapIS", 0), this.uniforms.set("envTotalSum", 0), this.uniforms.set("envCompensationDelta", 0);
1802
1822
  }
1803
1823
  }
1804
1824
  applyCDFResults() {
@@ -1806,7 +1826,7 @@ var Pr = class {
1806
1826
  t && e && t.envTex && (t.envTex.value = e), e && !e._isGeneratedProcedural && this.uniforms.set("hasSun", 0);
1807
1827
  }
1808
1828
  async setEnvironmentMap(e) {
1809
- this.scene.environment = e, this.setEnvironmentTexture(e), e ? await this.buildEnvironmentCDF() : (this._updateCDFStorageBuffers(), this.uniforms.set("envTotalSum", 0), this.uniforms.set("useEnvMapIS", 0));
1829
+ this.scene.environment = e, this.setEnvironmentTexture(e), e ? await this.buildEnvironmentCDF() : (this._updateCDFStorageBuffers(), this.uniforms.set("envTotalSum", 0), this.uniforms.set("envCompensationDelta", 0), this.uniforms.set("useEnvMapIS", 0));
1810
1830
  let t = this.callbacks.getSceneTextureNodes?.();
1811
1831
  t && e && t.envTex && (t.envTex.value = e), e && !e._isGeneratedProcedural && this.uniforms.set("hasSun", 0), this._notifyReset();
1812
1832
  }
@@ -1859,7 +1879,7 @@ var Pr = class {
1859
1879
  this.callbacks.onReset && this.callbacks.onReset();
1860
1880
  }
1861
1881
  dispose() {
1862
- this.proceduralSkyRenderer = null, this.simpleSkyRenderer = null, this.envCDFStorageAttr = null, this.envCDFStorageNode = null, this._envPlaceholder?.dispose(), this._envPlaceholder = null, this.environmentTexture = null;
1882
+ this.proceduralSkyRenderer = null, this.simpleSkyRenderer = null, this.envCDFStorageAttr?.dispose?.(), this.envCDFStorageAttr = null, this.envCDFStorageNode = null, this.environmentTexture && this.environmentTexture !== this._envPlaceholder && this.environmentTexture.dispose?.(), this._envPlaceholder?.dispose(), this._envPlaceholder = null, this.environmentTexture = null, this._previousHDRI = null;
1863
1883
  }
1864
1884
  }, Lr = Xt({
1865
1885
  origin: "vec3",
@@ -2071,10 +2091,16 @@ var fi = K("\n fn luminance( color: vec3f ) -> f32 {\n\n return dot( color, vec
2071
2091
  let p2 = pdf2 * pdf2;
2072
2092
  return p1 / max( p1 + p2, ${ii} );
2073
2093
 
2094
+ }
2095
+ `), mi = K(`
2096
+ fn balanceHeuristic( pdf1: f32, pdf2: f32 ) -> f32 {
2097
+
2098
+ return pdf1 / max( pdf1 + pdf2, ${ii} );
2099
+
2074
2100
  }
2075
2101
  `);
2076
2102
  K("\n fn applyDithering( color: vec3f, uv: vec2f, ditheringAmount: f32, resolution: vec2f ) -> vec3f {\n\n let bayerRow0 = vec4f( 0.0 / 16.0, 8.0 / 16.0, 2.0 / 16.0, 10.0 / 16.0 );\n let bayerRow1 = vec4f( 12.0 / 16.0, 4.0 / 16.0, 14.0 / 16.0, 6.0 / 16.0 );\n let bayerRow2 = vec4f( 3.0 / 16.0, 11.0 / 16.0, 1.0 / 16.0, 9.0 / 16.0 );\n let bayerRow3 = vec4f( 15.0 / 16.0, 7.0 / 16.0, 13.0 / 16.0, 5.0 / 16.0 );\n let bayer = mat4x4f( bayerRow0, bayerRow1, bayerRow2, bayerRow3 );\n\n let pixelCoord = vec2i( uv * resolution );\n let dither = bayer[ pixelCoord.x % 4 ][ pixelCoord.y % 4 ];\n\n return color + ( dither - 0.5 ) * ditheringAmount / 255.0;\n\n }\n"), K("\n fn reduceFireflies( color: vec3f, maxValue: f32 ) -> vec3f {\n\n let lum = dot( color, vec3f( 0.2126, 0.7152, 0.0722 ) );\n if ( lum > maxValue ) {\n return color * ( maxValue / lum );\n }\n return color;\n\n }\n");
2077
- var mi = K("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3f;\n if ( abs( N.x ) < 0.999 ) {\n majorAxis = vec3f( 1.0, 0.0, 0.0 );\n } else {\n majorAxis = vec3f( 0.0, 1.0, 0.0 );\n }\n let T = normalize( cross( N, majorAxis ) );\n let B = normalize( cross( N, T ) );\n return mat3x3f( T, B, N );\n\n }\n"), hi = f(([e, t, n]) => {
2103
+ var hi = K("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3f;\n if ( abs( N.x ) < 0.999 ) {\n majorAxis = vec3f( 1.0, 0.0, 0.0 );\n } else {\n majorAxis = vec3f( 0.0, 1.0, 0.0 );\n }\n let T = normalize( cross( N, majorAxis ) );\n let B = normalize( cross( N, T ) );\n return mat3x3f( T, B, N );\n\n }\n"), gi = f(([e, t, n]) => {
2078
2104
  let r = t.add(n).toVar(), i = k(r, r).toVar();
2079
2105
  return r.assign(i.greaterThan(ti).select(r.div(i.sqrt()), W(0, 0, 1))), Wr({
2080
2106
  NoL: I(k(e, n), .001),
@@ -2083,7 +2109,7 @@ var mi = K("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2083
2109
  VoH: I(k(t, r), .001),
2084
2110
  LoH: I(k(n, r), .001)
2085
2111
  });
2086
- }), gi = K("\n fn calculateFireflyThreshold( baseThreshold: f32, bounceIndex: i32, frame: i32 ) -> f32 {\n\n let depthFactor = 1.0 / ( 1.0 + f32( bounceIndex ) * 0.1 );\n let relaxation = sqrt( f32( frame + 1 ) );\n return baseThreshold * depthFactor * relaxation;\n\n }\n"), _i = K("\n fn applySoftSuppression( value: f32, threshold: f32, dampingFactor: f32 ) -> f32 {\n\n if ( value <= threshold ) {\n return value;\n }\n let excess = value - threshold;\n let suppressionFactor = threshold / ( threshold + excess * dampingFactor );\n return value * suppressionFactor;\n\n }\n"), vi = K(`
2112
+ }), _i = K("\n fn calculateFireflyThreshold( baseThreshold: f32, bounceIndex: i32, frame: i32 ) -> f32 {\n\n let depthFactor = 1.0 / ( 1.0 + f32( bounceIndex ) * 0.1 );\n let relaxation = sqrt( f32( frame + 1 ) );\n return baseThreshold * depthFactor * relaxation;\n\n }\n"), vi = K("\n fn applySoftSuppression( value: f32, threshold: f32, dampingFactor: f32 ) -> f32 {\n\n if ( value <= threshold ) {\n return value;\n }\n let excess = value - threshold;\n let suppressionFactor = threshold / ( threshold + excess * dampingFactor );\n return value * suppressionFactor;\n\n }\n"), yi = K(`
2087
2113
  fn applySoftSuppressionRGB( color: vec3f, threshold: f32, dampingFactor: f32 ) -> vec3f {
2088
2114
 
2089
2115
  let lum = dot( color, vec3f( 0.2126, 0.7152, 0.0722 ) );
@@ -2097,7 +2123,7 @@ var mi = K("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2097
2123
  return color;
2098
2124
 
2099
2125
  }
2100
- `, [_i]), yi = f(([e, t, n, r, i]) => {
2126
+ `, [vi]), bi = f(([e, t, n, r, i]) => {
2101
2127
  let a = e.greaterThan(.7).toVar(), o = t.greaterThan(.8).toVar(), s = t.lessThan(.3).toVar(), c = n.greaterThan(.5).toVar(), l = r.greaterThan(.5).toVar(), u = i.x.add(i.y).add(i.z).greaterThan(0).toVar(), d = j(.15).mul(j(a)).add(j(.25).mul(j(s))).add(j(.45).mul(j(c))).add(j(.35).mul(j(l))).add(j(.3).mul(j(u))).toVar(), f = j(0).toVar();
2102
2128
  return p(a.and(s), () => {
2103
2129
  f.addAssign(.15);
@@ -2114,7 +2140,7 @@ var mi = K("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2114
2140
  isEmissive: u,
2115
2141
  complexityScore: T(d.add(f), 0, 1)
2116
2142
  });
2117
- }), bi = f(([e, t, n, r, i]) => {
2143
+ }), xi = f(([e, t, n, r, i]) => {
2118
2144
  let a = di({ v: i }).toVar(), o = j(.5).toVar(), s = j(.5).toVar(), c = w(!0), l = a.greaterThan(.01).toVar();
2119
2145
  return p(e.lessThan(.1).and(t.greaterThan(.8)), () => {
2120
2146
  o.assign(.7), s.assign(.3);
@@ -2133,7 +2159,7 @@ var mi = K("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2133
2159
  }), $ = f(([e, t, n, r]) => {
2134
2160
  let i = t.mul(r).add(n);
2135
2161
  return e.element(i);
2136
- }), xi = K("\n fn arrayToMat3( data1: vec4f, data2: vec4f ) -> mat3x3f {\n\n return mat3x3f(\n data1.xyz,\n vec3f( data1.w, data2.xy ),\n vec3f( data2.zw, 1.0 )\n );\n\n }\n"), Si = f(([e, t]) => {
2162
+ }), Si = K("\n fn arrayToMat3( data1: vec4f, data2: vec4f ) -> mat3x3f {\n\n return mat3x3f(\n data1.xyz,\n vec3f( data1.w, data2.xy ),\n vec3f( data2.zw, 1.0 )\n );\n\n }\n"), Ci = f(([e, t]) => {
2137
2163
  let n = $(t, e, N(ci.COLOR_METALNESS), N(oi)).toVar(), r = $(t, e, N(ci.EMISSIVE_ROUGHNESS), N(oi)).toVar(), i = $(t, e, N(ci.IOR_TRANSMISSION), N(oi)).toVar(), a = $(t, e, N(ci.ATTENUATION), N(oi)).toVar(), o = $(t, e, N(ci.DISPERSION_SHEEN), N(oi)).toVar(), s = $(t, e, N(ci.SHEEN_COLOR), N(oi)).toVar(), c = $(t, e, N(ci.SPECULAR), N(oi)).toVar(), l = $(t, e, N(ci.IRIDESCENCE), N(oi)).toVar(), u = $(t, e, N(ci.MAP_INDICES_A), N(oi)).toVar(), d = $(t, e, N(ci.MAP_INDICES_B), N(oi)).toVar(), f = $(t, e, N(ci.OPACITY_ALPHA), N(oi)).toVar(), p = $(t, e, N(ci.ALPHA_MODE), N(oi)).toVar(), m = $(t, e, N(ci.BUMP_DISPLACEMENT), N(oi)).toVar(), h = $(t, e, N(ci.ALBEDO_TRANSFORM_A), N(oi)).toVar(), g = $(t, e, N(ci.ALBEDO_TRANSFORM_B), N(oi)).toVar(), _ = $(t, e, N(ci.NORMAL_TRANSFORM_A), N(oi)).toVar(), v = $(t, e, N(ci.NORMAL_TRANSFORM_B), N(oi)).toVar(), y = $(t, e, N(ci.ROUGHNESS_TRANSFORM_A), N(oi)).toVar(), b = $(t, e, N(ci.ROUGHNESS_TRANSFORM_B), N(oi)).toVar(), x = $(t, e, N(ci.METALNESS_TRANSFORM_A), N(oi)).toVar(), S = $(t, e, N(ci.METALNESS_TRANSFORM_B), N(oi)).toVar(), C = $(t, e, N(ci.EMISSIVE_TRANSFORM_A), N(oi)).toVar(), w = $(t, e, N(ci.EMISSIVE_TRANSFORM_B), N(oi)).toVar(), T = $(t, e, N(ci.BUMP_TRANSFORM_A), N(oi)).toVar(), E = $(t, e, N(ci.BUMP_TRANSFORM_B), N(oi)).toVar(), D = $(t, e, N(ci.DISPLACEMENT_TRANSFORM_A), N(oi)).toVar(), O = $(t, e, N(ci.DISPLACEMENT_TRANSFORM_B), N(oi)).toVar();
2138
2164
  return Rr({
2139
2165
  color: G(n.rgb, 1),
@@ -2173,36 +2199,36 @@ var mi = K("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2173
2199
  bumpScale: m.r,
2174
2200
  displacementScale: m.g,
2175
2201
  displacementMapIndex: N(m.b),
2176
- albedoTransform: xi({
2202
+ albedoTransform: Si({
2177
2203
  data1: h,
2178
2204
  data2: g
2179
2205
  }),
2180
- normalTransform: xi({
2206
+ normalTransform: Si({
2181
2207
  data1: _,
2182
2208
  data2: v
2183
2209
  }),
2184
- roughnessTransform: xi({
2210
+ roughnessTransform: Si({
2185
2211
  data1: y,
2186
2212
  data2: b
2187
2213
  }),
2188
- metalnessTransform: xi({
2214
+ metalnessTransform: Si({
2189
2215
  data1: x,
2190
2216
  data2: S
2191
2217
  }),
2192
- emissiveTransform: xi({
2218
+ emissiveTransform: Si({
2193
2219
  data1: C,
2194
2220
  data2: w
2195
2221
  }),
2196
- bumpTransform: xi({
2222
+ bumpTransform: Si({
2197
2223
  data1: T,
2198
2224
  data2: E
2199
2225
  }),
2200
- displacementTransform: xi({
2226
+ displacementTransform: Si({
2201
2227
  data1: D,
2202
2228
  data2: O
2203
2229
  })
2204
2230
  });
2205
- }), Ci = f(([e, t]) => {
2231
+ }), wi = f(([e, t]) => {
2206
2232
  let n = $(t, e, N(ci.IOR_TRANSMISSION), N(oi)).toVar(), r = $(t, e, N(ci.ATTENUATION), N(oi)).toVar(), i = $(t, e, N(ci.MAP_INDICES_A), N(oi)).toVar(), a = $(t, e, N(ci.OPACITY_ALPHA), N(oi)).toVar(), o = $(t, e, N(ci.ALPHA_MODE), N(oi)).toVar(), s = $(t, e, N(ci.ALBEDO_TRANSFORM_A), N(oi)).toVar(), c = $(t, e, N(ci.ALBEDO_TRANSFORM_B), N(oi)).toVar();
2207
2233
  return zr({
2208
2234
  color: G(1),
@@ -2215,17 +2241,17 @@ var mi = K("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2215
2241
  transparent: a.b,
2216
2242
  alphaTest: a.a,
2217
2243
  alphaMode: N(o.r),
2218
- albedoTransform: xi({
2244
+ albedoTransform: Si({
2219
2245
  data1: s,
2220
2246
  data2: c
2221
2247
  })
2222
2248
  });
2223
- }), wi = /* @__PURE__ */ K("\n fn normalDepthWeight(\n n1: vec3f, n2: vec3f,\n d1: f32, d2: f32,\n phiN: f32, phiD: f32\n ) -> f32 {\n\n let normalW = pow( clamp( dot( n1, n2 ), 0.0, 1.0 ), phiN );\n let depthW = exp( -abs( d1 - d2 ) / max( phiD, 0.001 ) );\n return normalW * depthW;\n\n }\n"), Ti = 32, Ei = 512, Di = 4, Oi = 8, ki = 1e8, Ai = () => v("int", Ti).toVar(), ji = K("\n fn RayTriangleGeometry( rayOrigin: vec3f, rayDir: vec3f, pA: vec3f, pB: vec3f, pC: vec3f, closestHitDst: f32 ) -> vec4f {\n\n // Returns vec4(t, u, v, hit) where hit > 0.5 means intersection\n var result = vec4f( 1e20f, 0.0f, 0.0f, 0.0f );\n\n let edge1 = pB - pA;\n let edge2 = pC - pA;\n let h = cross( rayDir, edge2 );\n let a = dot( edge1, h );\n\n if ( abs( a ) >= 1e-8f ) {\n\n let f = 1.0f / a;\n let s = rayOrigin - pA;\n let u = f * dot( s, h );\n\n if ( u >= 0.0f && u <= 1.0f ) {\n\n let q = cross( s, edge1 );\n let v = f * dot( rayDir, q );\n\n if ( v >= 0.0f && ( u + v ) <= 1.0f ) {\n\n let t = f * dot( edge2, q );\n\n if ( t > 0.0f && t < closestHitDst ) {\n\n result = vec4f( t, u, v, 1.0f );\n\n }\n\n }\n\n }\n\n }\n\n return result;\n\n }\n"), Mi = K("\n fn fastRayAABBDst( rayOrigin: vec3f, invDir: vec3f, boxMin: vec3f, boxMax: vec3f ) -> f32 {\n\n let t1 = ( boxMin - rayOrigin ) * invDir;\n let t2 = ( boxMax - rayOrigin ) * invDir;\n\n let tmin = min( t1, t2 );\n let tmax = max( t1, t2 );\n\n let tNear = max( max( tmin.x, tmin.y ), tmin.z );\n let tFar = min( min( tmax.x, tmax.y ), tmax.z ) * 1.00000024f; // Robust traversal: 2 ULP padding (Ize 2013)\n\n let isHit = tNear <= tFar && tFar > 0.0f;\n return select( 1e20f, max( tNear, 0.0f ), isHit );\n\n }\n");
2249
+ }), Ti = /* @__PURE__ */ K("\n fn normalDepthWeight(\n n1: vec3f, n2: vec3f,\n d1: f32, d2: f32,\n phiN: f32, phiD: f32\n ) -> f32 {\n\n let normalW = pow( clamp( dot( n1, n2 ), 0.0, 1.0 ), phiN );\n let depthW = exp( -abs( d1 - d2 ) / max( phiD, 0.001 ) );\n return normalW * depthW;\n\n }\n"), Ei = 32, Di = 512, Oi = 4, ki = 8, Ai = 1e8, ji = () => v("int", Ei).toVar(), Mi = K("\n fn RayTriangleGeometry( rayOrigin: vec3f, rayDir: vec3f, pA: vec3f, pB: vec3f, pC: vec3f, closestHitDst: f32 ) -> vec4f {\n\n // Returns vec4(t, u, v, hit) where hit > 0.5 means intersection\n var result = vec4f( 1e20f, 0.0f, 0.0f, 0.0f );\n\n let edge1 = pB - pA;\n let edge2 = pC - pA;\n let h = cross( rayDir, edge2 );\n let a = dot( edge1, h );\n\n if ( abs( a ) >= 1e-8f ) {\n\n let f = 1.0f / a;\n let s = rayOrigin - pA;\n let u = f * dot( s, h );\n\n if ( u >= 0.0f && u <= 1.0f ) {\n\n let q = cross( s, edge1 );\n let v = f * dot( rayDir, q );\n\n if ( v >= 0.0f && ( u + v ) <= 1.0f ) {\n\n let t = f * dot( edge2, q );\n\n if ( t > 0.0f && t < closestHitDst ) {\n\n result = vec4f( t, u, v, 1.0f );\n\n }\n\n }\n\n }\n\n }\n\n return result;\n\n }\n"), Ni = K("\n fn fastRayAABBDst( rayOrigin: vec3f, invDir: vec3f, boxMin: vec3f, boxMax: vec3f ) -> f32 {\n\n let t1 = ( boxMin - rayOrigin ) * invDir;\n let t2 = ( boxMax - rayOrigin ) * invDir;\n\n let tmin = min( t1, t2 );\n let tmax = max( t1, t2 );\n\n let tNear = max( max( tmin.x, tmin.y ), tmin.z );\n let tFar = min( min( tmax.x, tmax.y ), tmax.z ) * 1.00000024f; // Robust traversal: 2 ULP padding (Ize 2013)\n\n let isHit = tNear <= tFar && tFar > 0.0f;\n return select( 1e20f, max( tNear, 0.0f ), isHit );\n\n }\n");
2224
2250
  f(([e, t, n, r]) => {
2225
2251
  let i = N($(r, e, N(si.OPACITY_ALPHA), N(oi)).g), a = t.dot(n), o = i.equal(N(2)), s = i.equal(N(0)).and(a.lessThan(-1e-4)), c = i.equal(N(1)).and(a.greaterThan(1e-4));
2226
2252
  return o.or(s).or(c);
2227
2253
  });
2228
- var Ni = f(([e, t, n, r]) => {
2254
+ var Pi = f(([e, t, n, r]) => {
2229
2255
  let i = Br({
2230
2256
  didHit: !1,
2231
2257
  dst: j(0x56bc75e2d63100000),
@@ -2236,12 +2262,12 @@ var Ni = f(([e, t, n, r]) => {
2236
2262
  meshIndex: N(-1),
2237
2263
  boxTests: N(0),
2238
2264
  triTests: N(0)
2239
- }).toVar(), a = N(-1).toVar(), o = j(0).toVar(), s = j(0).toVar(), c = Ai(), l = N(1).toVar();
2265
+ }).toVar(), a = N(-1).toVar(), o = j(0).toVar(), s = j(0).toVar(), c = ji(), l = N(1).toVar();
2240
2266
  c.element(N(0)).assign(N(0));
2241
- let d = L(W(1), fe(e.direction), se(e.direction, W(0))), f = L(W(1).div(e.direction), W(ki).mul(d), ne(g(e.direction), W(1e-8))).toVar(), h = e.origin, _ = e.direction, v = N(0).toVar();
2242
- return m(l.greaterThan(N(0)).and(v.lessThan(N(Ei))), () => {
2267
+ let d = L(W(1), fe(e.direction), se(e.direction, W(0))), f = L(W(1).div(e.direction), W(Ai).mul(d), ne(g(e.direction), W(1e-8))).toVar(), h = e.origin, _ = e.direction, v = N(0).toVar();
2268
+ return m(l.greaterThan(N(0)).and(v.lessThan(N(Di))), () => {
2243
2269
  v.addAssign(1), l.subAssign(1);
2244
- let e = c.element(l).toVar(), r = $(t, e, N(0), N(Di));
2270
+ let e = c.element(l).toVar(), r = $(t, e, N(0), N(Oi));
2245
2271
  i.boxTests.addAssign(1), p(r.w.lessThan(0), () => {
2246
2272
  p(r.w.greaterThan(j(-1.5)), () => {
2247
2273
  let e = N(r.x).toVar(), t = N(r.y).toVar();
@@ -2250,7 +2276,7 @@ var Ni = f(([e, t, n, r]) => {
2250
2276
  end: t
2251
2277
  }, ({ i: t }) => {
2252
2278
  i.triTests.addAssign(1);
2253
- let r = e.add(t).toVar(), c = $(n, r, N(0), N(Oi)).xyz, l = $(n, r, N(1), N(Oi)).xyz, u = $(n, r, N(2), N(Oi)).xyz, d = ji({
2279
+ let r = e.add(t).toVar(), c = $(n, r, N(0), N(ki)).xyz, l = $(n, r, N(1), N(ki)).xyz, u = $(n, r, N(2), N(ki)).xyz, d = Mi({
2254
2280
  rayOrigin: h,
2255
2281
  rayDir: _,
2256
2282
  pA: c,
@@ -2259,7 +2285,7 @@ var Ni = f(([e, t, n, r]) => {
2259
2285
  closestHitDst: i.dst
2260
2286
  });
2261
2287
  p(d.w.greaterThan(.5), () => {
2262
- let e = d.x, t = d.y, c = d.z, l = $(n, r, N(3), N(Oi)).xyz, u = $(n, r, N(4), N(Oi)).xyz, f = $(n, r, N(5), N(Oi)), m = f.xyz, h = N(f.w).toVar(), g = j(1).sub(t).sub(c), v = R(l.mul(g).add(u.mul(t)).add(m.mul(c))).toVar(), y = _.dot(v);
2288
+ let e = d.x, t = d.y, c = d.z, l = $(n, r, N(3), N(ki)).xyz, u = $(n, r, N(4), N(ki)).xyz, f = $(n, r, N(5), N(ki)), m = f.xyz, h = N(f.w).toVar(), g = j(1).sub(t).sub(c), v = R(l.mul(g).add(u.mul(t)).add(m.mul(c))).toVar(), y = _.dot(v);
2263
2289
  p(h.equal(N(2)).or(h.equal(N(0)).and(y.lessThan(-1e-4))).or(h.equal(N(1)).and(y.greaterThan(1e-4))), () => {
2264
2290
  i.didHit.assign(!0), i.dst.assign(e), i.normal.assign(v), a.assign(r), o.assign(t), s.assign(c);
2265
2291
  });
@@ -2269,17 +2295,17 @@ var Ni = f(([e, t, n, r]) => {
2269
2295
  });
2270
2296
  }).Else(() => {
2271
2297
  let e = N(r.x).toVar();
2272
- p(r.z.greaterThan(.5).and(l.lessThan(N(Ti))), () => {
2298
+ p(r.z.greaterThan(.5).and(l.lessThan(N(Ei))), () => {
2273
2299
  c.element(l).assign(e), l.addAssign(1);
2274
2300
  });
2275
2301
  });
2276
2302
  }).Else(() => {
2277
- let n = $(t, e, N(1), N(Di)), a = $(t, e, N(2), N(Di)), o = $(t, e, N(3), N(Di)), s = N(r.w).toVar(), u = N(n.w).toVar(), d = Mi({
2303
+ let n = $(t, e, N(1), N(Oi)), a = $(t, e, N(2), N(Oi)), o = $(t, e, N(3), N(Oi)), s = N(r.w).toVar(), u = N(n.w).toVar(), d = Ni({
2278
2304
  rayOrigin: h,
2279
2305
  invDir: f,
2280
2306
  boxMin: r.xyz,
2281
2307
  boxMax: n.xyz
2282
- }).toVar(), m = Mi({
2308
+ }).toVar(), m = Ni({
2283
2309
  rayOrigin: h,
2284
2310
  invDir: f,
2285
2311
  boxMin: a.xyz,
@@ -2287,19 +2313,19 @@ var Ni = f(([e, t, n, r]) => {
2287
2313
  }).toVar();
2288
2314
  p(ae(d, m).lessThan(i.dst), () => {
2289
2315
  let e = d.lessThan(m), t = z(e, s, u).toVar(), n = z(e, u, s).toVar();
2290
- p(z(e, m, d).toVar().lessThan(i.dst).and(l.lessThan(N(Ti))), () => {
2316
+ p(z(e, m, d).toVar().lessThan(i.dst).and(l.lessThan(N(Ei))), () => {
2291
2317
  c.element(l).assign(n), l.addAssign(1);
2292
- }), p(l.lessThan(N(Ti)), () => {
2318
+ }), p(l.lessThan(N(Ei)), () => {
2293
2319
  c.element(l).assign(t), l.addAssign(1);
2294
2320
  });
2295
2321
  });
2296
2322
  });
2297
2323
  }), p(i.didHit, () => {
2298
2324
  i.hitPoint.assign(e.origin.add(e.direction.mul(i.dst)));
2299
- let t = j(1).sub(o).sub(s), r = $(n, a, N(6), N(Oi)), c = $(n, a, N(7), N(Oi));
2325
+ let t = j(1).sub(o).sub(s), r = $(n, a, N(6), N(ki)), c = $(n, a, N(7), N(ki));
2300
2326
  i.uv.assign(r.xy.mul(t).add(r.zw.mul(o)).add(c.xy.mul(s))), i.materialIndex.assign(N(c.z)), i.meshIndex.assign(N(c.w)), i.triangleIndex.assign(a);
2301
2327
  }), i;
2302
- }), Pi = f(([e, t, n, r, i]) => {
2328
+ }), Fi = f(([e, t, n, r, i]) => {
2303
2329
  let a = Br({
2304
2330
  didHit: !1,
2305
2331
  dst: i,
@@ -2310,12 +2336,12 @@ var Ni = f(([e, t, n, r]) => {
2310
2336
  meshIndex: N(-1),
2311
2337
  boxTests: N(0),
2312
2338
  triTests: N(0)
2313
- }).toVar(), o = Ai(), s = N(1).toVar();
2339
+ }).toVar(), o = ji(), s = N(1).toVar();
2314
2340
  o.element(N(0)).assign(N(0));
2315
- let c = L(W(1), fe(e.direction), se(e.direction, W(0))), l = L(W(1).div(e.direction), W(ki).mul(c), ne(g(e.direction), W(1e-8))).toVar(), d = N(0).toVar();
2316
- return m(s.greaterThan(N(0)).and(a.didHit.not()).and(d.lessThan(N(Ei))), () => {
2341
+ let c = L(W(1), fe(e.direction), se(e.direction, W(0))), l = L(W(1).div(e.direction), W(Ai).mul(c), ne(g(e.direction), W(1e-8))).toVar(), d = N(0).toVar();
2342
+ return m(s.greaterThan(N(0)).and(a.didHit.not()).and(d.lessThan(N(Di))), () => {
2317
2343
  d.addAssign(1), s.subAssign(1);
2318
- let r = o.element(s).toVar(), i = $(t, r, N(0), N(Di));
2344
+ let r = o.element(s).toVar(), i = $(t, r, N(0), N(Oi));
2319
2345
  p(i.w.lessThan(0), () => {
2320
2346
  p(i.w.greaterThan(j(-1.5)), () => {
2321
2347
  let t = N(i.x).toVar(), r = N(i.y).toVar();
@@ -2323,7 +2349,7 @@ var Ni = f(([e, t, n, r]) => {
2323
2349
  start: N(0),
2324
2350
  end: r
2325
2351
  }, ({ i: r }) => {
2326
- let i = t.add(r).toVar(), o = $(n, i, N(0), N(Oi)).xyz, s = $(n, i, N(1), N(Oi)).xyz, c = $(n, i, N(2), N(Oi)).xyz, l = ji({
2352
+ let i = t.add(r).toVar(), o = $(n, i, N(0), N(ki)).xyz, s = $(n, i, N(1), N(ki)).xyz, c = $(n, i, N(2), N(ki)).xyz, l = Mi({
2327
2353
  rayOrigin: e.origin,
2328
2354
  rayDir: e.direction,
2329
2355
  pA: o,
@@ -2332,23 +2358,23 @@ var Ni = f(([e, t, n, r]) => {
2332
2358
  closestHitDst: a.dst
2333
2359
  });
2334
2360
  p(l.w.greaterThan(.5), () => {
2335
- let t = $(n, i, N(7), N(Oi));
2361
+ let t = $(n, i, N(7), N(ki));
2336
2362
  a.didHit.assign(!0), a.dst.assign(l.x), a.materialIndex.assign(N(t.z)), a.meshIndex.assign(N(t.w)), a.hitPoint.assign(e.origin.add(e.direction.mul(l.x))), a.normal.assign(R(D(s.sub(o), c.sub(o)))), a.uv.assign(U(l.y, l.z)), a.triangleIndex.assign(i), u();
2337
2363
  });
2338
2364
  });
2339
2365
  }).Else(() => {
2340
2366
  let e = N(i.x).toVar();
2341
- p(i.z.greaterThan(.5).and(s.lessThan(N(Ti))), () => {
2367
+ p(i.z.greaterThan(.5).and(s.lessThan(N(Ei))), () => {
2342
2368
  o.element(s).assign(e), s.addAssign(1);
2343
2369
  });
2344
2370
  });
2345
2371
  }).Else(() => {
2346
- let n = $(t, r, N(1), N(Di)), c = $(t, r, N(2), N(Di)), u = $(t, r, N(3), N(Di)), d = N(i.w).toVar(), f = N(n.w).toVar(), m = Mi({
2372
+ let n = $(t, r, N(1), N(Oi)), c = $(t, r, N(2), N(Oi)), u = $(t, r, N(3), N(Oi)), d = N(i.w).toVar(), f = N(n.w).toVar(), m = Ni({
2347
2373
  rayOrigin: e.origin,
2348
2374
  invDir: l,
2349
2375
  boxMin: i.xyz,
2350
2376
  boxMax: n.xyz
2351
- }).toVar(), h = Mi({
2377
+ }).toVar(), h = Ni({
2352
2378
  rayOrigin: e.origin,
2353
2379
  invDir: l,
2354
2380
  boxMin: c.xyz,
@@ -2356,15 +2382,15 @@ var Ni = f(([e, t, n, r]) => {
2356
2382
  }).toVar();
2357
2383
  p(ae(m, h).lessThan(a.dst), () => {
2358
2384
  let e = m.lessThan(h), t = z(e, d, f).toVar(), n = z(e, f, d).toVar();
2359
- p(z(e, h, m).toVar().lessThan(a.dst).and(s.lessThan(N(Ti))), () => {
2385
+ p(z(e, h, m).toVar().lessThan(a.dst).and(s.lessThan(N(Ei))), () => {
2360
2386
  o.element(s).assign(n), s.addAssign(1);
2361
- }), p(s.lessThan(N(Ti)), () => {
2387
+ }), p(s.lessThan(N(Ei)), () => {
2362
2388
  o.element(s).assign(t), s.addAssign(1);
2363
2389
  });
2364
2390
  });
2365
2391
  });
2366
2392
  }), a;
2367
- }), Fi = f(([e, t, n, r, i, a, o, s, c, l, u]) => {
2393
+ }), Ii = f(([e, t, n, r, i, a, o, s, c, l, u]) => {
2368
2394
  let d = W(e.xy, 1), f = r.mul(G(d, 1)), m = R(ie(n[0].xyz, n[1].xyz, n[2].xyz).mul(f.xyz.div(f.w))).toVar(), h = W(n[3]).toVar(), g = h.toVar(), _ = m.toVar();
2369
2395
  return p(i.and(a.greaterThan(0)).and(o.lessThan(64)).and(s.greaterThan(.001)), () => {
2370
2396
  let e = h.add(m.mul(s)).toVar(), r = a.div(o).mul(.001).mul(c).mul(l), i = fn(t), d = i.x.mul(u.max(.01)), f = i.y, p = R(W(n[0])), v = R(W(n[1])), y = p.mul(d).add(v.mul(f)).mul(r);
@@ -2373,52 +2399,52 @@ var Ni = f(([e, t, n, r]) => {
2373
2399
  origin: g,
2374
2400
  direction: _
2375
2401
  });
2376
- }), Ii = /* @__PURE__ */ K("\n fn equirectDirectionToUv( direction: vec3f, environmentMatrix: mat4x4f ) -> vec2f {\n let d = normalize( ( environmentMatrix * vec4f( direction, 0.0f ) ).xyz );\n var uv = vec2f( atan2( d.z, d.x ), acos( d.y ) );\n uv = uv / vec2f( 6.28318530717958647692f, 3.14159265358979323846f );\n uv.x = uv.x + 0.5f;\n uv.y = 1.0f - uv.y;\n return uv;\n }\n"), Li = /* @__PURE__ */ K("\n fn equirectUvToDirection( uv: vec2f, environmentMatrix: mat4x4f ) -> vec3f {\n let adjustedUv = vec2f( uv.x - 0.5f, 1.0f - uv.y );\n let theta = adjustedUv.x * 6.28318530717958647692f;\n let phi = adjustedUv.y * 3.14159265358979323846f;\n let sinPhi = sin( phi );\n let localDir = vec3f( sinPhi * cos( theta ), cos( phi ), sinPhi * sin( theta ) );\n return normalize( ( transpose( environmentMatrix ) * vec4f( localDir, 0.0f ) ).xyz );\n }\n");
2377
- f(([e, t, n]) => ve(e, Ii({
2402
+ }), Li = /* @__PURE__ */ K("\n fn equirectDirectionToUv( direction: vec3f, environmentMatrix: mat4x4f ) -> vec2f {\n let d = normalize( ( environmentMatrix * vec4f( direction, 0.0f ) ).xyz );\n var uv = vec2f( atan2( d.z, d.x ), acos( d.y ) );\n uv = uv / vec2f( 6.28318530717958647692f, 3.14159265358979323846f );\n uv.x = uv.x + 0.5f;\n uv.y = 1.0f - uv.y;\n return uv;\n }\n"), Ri = /* @__PURE__ */ K("\n fn equirectUvToDirection( uv: vec2f, environmentMatrix: mat4x4f ) -> vec3f {\n let adjustedUv = vec2f( uv.x - 0.5f, 1.0f - uv.y );\n let theta = adjustedUv.x * 6.28318530717958647692f;\n let phi = adjustedUv.y * 3.14159265358979323846f;\n let sinPhi = sin( phi );\n let localDir = vec3f( sinPhi * cos( theta ), cos( phi ), sinPhi * sin( theta ) );\n return normalize( ( transpose( environmentMatrix ) * vec4f( localDir, 0.0f ) ).xyz );\n }\n");
2403
+ f(([e, t, n]) => ve(e, Li({
2378
2404
  direction: t,
2379
2405
  environmentMatrix: n
2380
2406
  }), 0).rgb);
2381
- var Ri = /* @__PURE__ */ K("\n fn equirectDirectionPdf( direction: vec3f, environmentMatrix: mat4x4f ) -> f32 {\n let uv = equirectDirectionToUv( direction, environmentMatrix );\n let theta = uv.y * 3.14159265358979323846f;\n let sinTheta = sin( theta );\n if ( sinTheta == 0.0f ) { return 0.0f; }\n return 1.0f / ( 6.28318530717958647692f * 3.14159265358979323846f * sinTheta );\n }\n", [Ii]), zi = f(([e, t, n, r, i]) => {
2382
- let a = G(0).toVar();
2407
+ var zi = /* @__PURE__ */ K("\n fn equirectDirectionPdf( direction: vec3f, environmentMatrix: mat4x4f ) -> f32 {\n let uv = equirectDirectionToUv( direction, environmentMatrix );\n let theta = uv.y * 3.14159265358979323846f;\n let sinTheta = sin( theta );\n if ( sinTheta == 0.0f ) { return 0.0f; }\n return 1.0f / ( 6.28318530717958647692f * 3.14159265358979323846f * sinTheta );\n }\n", [Li]), Bi = f(([e, t, n, r, i, a]) => {
2408
+ let o = G(0).toVar();
2383
2409
  return p(r.equal(0), () => {
2384
- a.assign(G(0));
2410
+ o.assign(G(0));
2385
2411
  }).Else(() => {
2386
- let o = ve(e, Ii({
2412
+ let s = Li({
2387
2413
  direction: t,
2388
2414
  environmentMatrix: n
2389
- }).toVar(), 0).rgb.toVar(), s = k(o, ai).toVar().div(r).toVar(), c = Ri({
2415
+ }).toVar(), c = ve(e, s, 0).rgb.toVar(), l = pe(s.y.mul(Math.PI)).toVar(), u = k(c, ai).toVar().mul(l).toVar(), d = I(j(0), u.sub(i)).toVar().div(r).toVar(), f = zi({
2390
2416
  direction: t,
2391
2417
  environmentMatrix: n
2392
- }).toVar(), l = j(i.x).mul(j(i.y)).mul(s).mul(c).toVar();
2393
- a.assign(G(o, l));
2394
- }), a;
2395
- }), Bi = f(([e, t, n, r, i, a, o, s]) => {
2396
- let c = N(a.y).toVar(), l = a.y, u = T(o.x.mul(l.sub(1)), 0, l.sub(1)), d = N(M(u)), f = ae(d.add(1), N(l).sub(1)), p = ee(u), m = L(t.element(d), t.element(f), p).toVar(), h = a.x, g = a.y, _ = T(o.y.mul(h.sub(1)), 0, h.sub(1)), v = T(m.mul(g.sub(1)), 0, g.sub(1)), y = N(M(_)), b = N(M(v)), x = ae(y.add(1), N(h).sub(1)), S = ae(b.add(1), N(g).sub(1)), C = ee(_), w = ee(v), E = N(h), D = t.element(c.add(b.mul(E).add(y))), O = t.element(c.add(b.mul(E).add(x))), A = t.element(c.add(S.mul(E).add(y))), P = t.element(c.add(S.mul(E).add(x))), te = U(L(L(D, O, C), L(A, P, C), w).toVar(), m).toVar(), ne = Li({
2397
- uv: te,
2418
+ }).toVar(), p = j(a.x).mul(j(a.y)).mul(d).mul(f).toVar();
2419
+ o.assign(G(c, p));
2420
+ }), o;
2421
+ }), Vi = f(([e, t, n, r, i, a, o, s, c]) => {
2422
+ let l = N(o.y).toVar(), u = o.y, d = T(s.x.mul(u.sub(1)), 0, u.sub(1)), f = N(M(d)), p = ae(f.add(1), N(u).sub(1)), m = ee(d), h = L(t.element(f), t.element(p), m).toVar(), g = o.x, _ = o.y, v = T(s.y.mul(g.sub(1)), 0, g.sub(1)), y = T(h.mul(_.sub(1)), 0, _.sub(1)), b = N(M(v)), x = N(M(y)), S = ae(b.add(1), N(g).sub(1)), C = ae(x.add(1), N(_).sub(1)), w = ee(v), E = ee(y), D = N(g), O = t.element(l.add(x.mul(D).add(b))), A = t.element(l.add(x.mul(D).add(S))), P = t.element(l.add(C.mul(D).add(b))), te = t.element(l.add(C.mul(D).add(S))), ne = U(L(L(O, A, w), L(P, te, w), E).toVar(), h).toVar(), F = Ri({
2423
+ uv: ne,
2398
2424
  environmentMatrix: n
2399
- }).toVar(), F = ve(e, te, 0).rgb.mul(r).toVar();
2400
- s.assign(F);
2401
- let re = k(F.div(r), ai).toVar().div(i).toVar(), ie = Ri({
2402
- direction: ne,
2425
+ }).toVar(), re = ve(e, ne, 0).rgb.mul(r).toVar();
2426
+ c.assign(re);
2427
+ let ie = pe(ne.y.mul(Math.PI)).toVar(), oe = k(re.div(r), ai).toVar().mul(ie).toVar(), R = I(j(0), oe.sub(a)).toVar().div(i).toVar(), se = zi({
2428
+ direction: F,
2403
2429
  environmentMatrix: n
2404
2430
  }).toVar();
2405
- return G(ne, j(a.x).mul(j(a.y)).mul(re).mul(ie).toVar());
2406
- }), Vi = /* @__PURE__ */ K("\n fn sampleEnvironment(\n tex: texture_2d<f32>,\n samp: sampler,\n direction: vec3f,\n environmentMatrix: mat4x4f,\n environmentIntensity: f32,\n enableEnvironmentLight: f32\n ) -> vec4f {\n if ( enableEnvironmentLight < 0.5 ) { return vec4f( 0.0 ); }\n let uv = equirectDirectionToUv( direction, environmentMatrix );\n let texSample = textureSampleLevel( tex, samp, uv, 0.0 );\n return texSample * environmentIntensity;\n }\n", [Ii]), Hi = /* @__PURE__ */ K("\n fn getTransformedUV( uv: vec2f, transform: mat3x3f ) -> vec2f {\n if ( !isIdentityTransform( transform ) ) {\n return fract( vec2f(\n transform[0][0] * uv.x + transform[1][0] * uv.y + transform[2][0],\n transform[0][1] * uv.x + transform[1][1] * uv.y + transform[2][1]\n ) );\n }\n return uv;\n }\n", [/* @__PURE__ */ K("\n fn isIdentityTransform( transform: mat3x3f ) -> bool {\n return transform[0][0] == 1.0f\n && transform[1][1] == 1.0f\n && transform[0][1] == 0.0f\n && transform[1][0] == 0.0f\n && transform[2][0] == 0.0f\n && transform[2][1] == 0.0f;\n }\n")]), Ui = f(([e]) => e.albedoMapIndex.greaterThanEqual(N(0)).or(e.normalMapIndex.greaterThanEqual(N(0))).or(e.roughnessMapIndex.greaterThanEqual(N(0))).or(e.metalnessMapIndex.greaterThanEqual(N(0))).or(e.emissiveMapIndex.greaterThanEqual(N(0))).or(e.bumpMapIndex.greaterThanEqual(N(0))).or(e.displacementMapIndex.greaterThanEqual(N(0)))), Wi = /* @__PURE__ */ K("\n fn hashTransform( t: mat3x3f ) -> f32 {\n return t[0][0] + t[1][1] * 7.0f + t[2][0] * 13.0f + t[2][1] * 17.0f;\n }\n"), Gi = f(([e, t]) => {
2407
- let n = Wi({ t: t.albedoTransform }).toVar(), r = Wi({ t: t.normalTransform }).toVar(), i = Wi({ t: t.metalnessTransform }).toVar(), a = Wi({ t: t.roughnessTransform }).toVar(), o = Wi({ t: t.emissiveTransform }).toVar(), s = Wi({ t: t.bumpTransform }).toVar(), c = .001, l = g(n.sub(r)).lessThan(c).toVar(), u = g(r.sub(s)).lessThan(c).toVar(), d = g(i.sub(a)).lessThan(c).toVar(), f = g(n.sub(o)).lessThan(c).toVar(), m = l.and(g(n.sub(i)).lessThan(c)).and(g(n.sub(o)).lessThan(c)).and(g(n.sub(s)).lessThan(c)).toVar(), h = U(0).toVar(), _ = U(0).toVar(), v = U(0).toVar(), y = U(0).toVar(), b = U(0).toVar(), x = U(0).toVar(), S = u.or(m).toVar(), C = d.or(m).toVar(), w = f.or(m).toVar();
2431
+ return G(F, j(o.x).mul(j(o.y)).mul(R).mul(se).toVar());
2432
+ }), Hi = /* @__PURE__ */ K("\n fn sampleEnvironment(\n tex: texture_2d<f32>,\n samp: sampler,\n direction: vec3f,\n environmentMatrix: mat4x4f,\n environmentIntensity: f32,\n enableEnvironmentLight: f32\n ) -> vec4f {\n if ( enableEnvironmentLight < 0.5 ) { return vec4f( 0.0 ); }\n let uv = equirectDirectionToUv( direction, environmentMatrix );\n let texSample = textureSampleLevel( tex, samp, uv, 0.0 );\n return texSample * environmentIntensity;\n }\n", [Li]), Ui = /* @__PURE__ */ K("\n fn getTransformedUV( uv: vec2f, transform: mat3x3f ) -> vec2f {\n if ( !isIdentityTransform( transform ) ) {\n return fract( vec2f(\n transform[0][0] * uv.x + transform[1][0] * uv.y + transform[2][0],\n transform[0][1] * uv.x + transform[1][1] * uv.y + transform[2][1]\n ) );\n }\n return uv;\n }\n", [/* @__PURE__ */ K("\n fn isIdentityTransform( transform: mat3x3f ) -> bool {\n return transform[0][0] == 1.0f\n && transform[1][1] == 1.0f\n && transform[0][1] == 0.0f\n && transform[1][0] == 0.0f\n && transform[2][0] == 0.0f\n && transform[2][1] == 0.0f;\n }\n")]), Wi = f(([e]) => e.albedoMapIndex.greaterThanEqual(N(0)).or(e.normalMapIndex.greaterThanEqual(N(0))).or(e.roughnessMapIndex.greaterThanEqual(N(0))).or(e.metalnessMapIndex.greaterThanEqual(N(0))).or(e.emissiveMapIndex.greaterThanEqual(N(0))).or(e.bumpMapIndex.greaterThanEqual(N(0))).or(e.displacementMapIndex.greaterThanEqual(N(0)))), Gi = /* @__PURE__ */ K("\n fn hashTransform( t: mat3x3f ) -> f32 {\n return t[0][0] + t[1][1] * 7.0f + t[2][0] * 13.0f + t[2][1] * 17.0f;\n }\n"), Ki = f(([e, t]) => {
2433
+ let n = Gi({ t: t.albedoTransform }).toVar(), r = Gi({ t: t.normalTransform }).toVar(), i = Gi({ t: t.metalnessTransform }).toVar(), a = Gi({ t: t.roughnessTransform }).toVar(), o = Gi({ t: t.emissiveTransform }).toVar(), s = Gi({ t: t.bumpTransform }).toVar(), c = .001, l = g(n.sub(r)).lessThan(c).toVar(), u = g(r.sub(s)).lessThan(c).toVar(), d = g(i.sub(a)).lessThan(c).toVar(), f = g(n.sub(o)).lessThan(c).toVar(), m = l.and(g(n.sub(i)).lessThan(c)).and(g(n.sub(o)).lessThan(c)).and(g(n.sub(s)).lessThan(c)).toVar(), h = U(0).toVar(), _ = U(0).toVar(), v = U(0).toVar(), y = U(0).toVar(), b = U(0).toVar(), x = U(0).toVar(), S = u.or(m).toVar(), C = d.or(m).toVar(), w = f.or(m).toVar();
2408
2434
  return p(m, () => {
2409
- let n = Hi({
2435
+ let n = Ui({
2410
2436
  uv: e,
2411
2437
  transform: t.albedoTransform
2412
2438
  });
2413
2439
  h.assign(n), _.assign(n), v.assign(n), y.assign(n), b.assign(n), x.assign(n);
2414
2440
  }).Else(() => {
2415
- h.assign(Hi({
2441
+ h.assign(Ui({
2416
2442
  uv: e,
2417
2443
  transform: t.albedoTransform
2418
- })), _.assign(l.select(h, Hi({
2444
+ })), _.assign(l.select(h, Ui({
2419
2445
  uv: e,
2420
2446
  transform: t.normalTransform
2421
- }))), b.assign(f.select(h, Hi({
2447
+ }))), b.assign(f.select(h, Ui({
2422
2448
  uv: e,
2423
2449
  transform: t.emissiveTransform
2424
2450
  }))), p(u, () => {
@@ -2426,12 +2452,12 @@ var Ri = /* @__PURE__ */ K("\n fn equirectDirectionPdf( direction: vec3f, enviro
2426
2452
  }).ElseIf(g(s.sub(n)).lessThan(c), () => {
2427
2453
  x.assign(h);
2428
2454
  }).Else(() => {
2429
- x.assign(Hi({
2455
+ x.assign(Ui({
2430
2456
  uv: e,
2431
2457
  transform: t.bumpTransform
2432
2458
  }));
2433
2459
  }), p(d, () => {
2434
- v.assign(Hi({
2460
+ v.assign(Ui({
2435
2461
  uv: e,
2436
2462
  transform: t.metalnessTransform
2437
2463
  })), y.assign(v);
@@ -2441,7 +2467,7 @@ var Ri = /* @__PURE__ */ K("\n fn equirectDirectionPdf( direction: vec3f, enviro
2441
2467
  }).ElseIf(g(i.sub(r)).lessThan(c), () => {
2442
2468
  v.assign(_);
2443
2469
  }).Else(() => {
2444
- v.assign(Hi({
2470
+ v.assign(Ui({
2445
2471
  uv: e,
2446
2472
  transform: t.metalnessTransform
2447
2473
  }));
@@ -2452,7 +2478,7 @@ var Ri = /* @__PURE__ */ K("\n fn equirectDirectionPdf( direction: vec3f, enviro
2452
2478
  }).ElseIf(g(a.sub(i)).lessThan(c), () => {
2453
2479
  y.assign(v);
2454
2480
  }).Else(() => {
2455
- y.assign(Hi({
2481
+ y.assign(Ui({
2456
2482
  uv: e,
2457
2483
  transform: t.roughnessTransform
2458
2484
  }));
@@ -2470,13 +2496,13 @@ var Ri = /* @__PURE__ */ K("\n fn equirectDirectionPdf( direction: vec3f, enviro
2470
2496
  metalRoughSameUV: C,
2471
2497
  albedoEmissiveSameUV: w
2472
2498
  });
2473
- }), Ki = f(([e, t, n]) => {
2499
+ }), qi = f(([e, t, n]) => {
2474
2500
  let r = t.color.toVar();
2475
2501
  return p(t.albedoMapIndex.greaterThanEqual(N(0)), () => {
2476
2502
  let i = ve(e, n.albedoUV).depth(N(t.albedoMapIndex)).toVar();
2477
2503
  r.assign(G(t.color.rgb.mul(i.rgb), t.color.a.mul(i.a)));
2478
2504
  }), r;
2479
- }), qi = f(([e, t, n, r]) => {
2505
+ }), Ji = f(([e, t, n, r]) => {
2480
2506
  let i = n.metalness.toVar(), a = n.roughness.toVar();
2481
2507
  return p(n.metalnessMapIndex.greaterThanEqual(N(0)).and(n.metalnessMapIndex.equal(n.roughnessMapIndex)), () => {
2482
2508
  let t = ve(e, r.metalnessUV).depth(N(n.metalnessMapIndex));
@@ -2490,7 +2516,7 @@ var Ri = /* @__PURE__ */ K("\n fn equirectDirectionPdf( direction: vec3f, enviro
2490
2516
  a.assign(n.roughness.mul(e.g));
2491
2517
  });
2492
2518
  }), U(i, a);
2493
- }), Ji = f(([e, t, n, r]) => {
2519
+ }), Yi = f(([e, t, n, r]) => {
2494
2520
  let i = t.toVar();
2495
2521
  return p(n.normalMapIndex.greaterThanEqual(N(0)), () => {
2496
2522
  let a = ve(e, r.normalUV).depth(N(n.normalMapIndex)).xyz.mul(2).sub(1).toVar();
@@ -2498,27 +2524,27 @@ var Ri = /* @__PURE__ */ K("\n fn equirectDirectionPdf( direction: vec3f, enviro
2498
2524
  let o = R(D(g(t.z).lessThan(.999).select(W(0, 0, 1), W(1, 0, 0)), t)), s = D(t, o);
2499
2525
  i.assign(R(o.mul(a.x).add(s.mul(a.y)).add(t.mul(a.z))));
2500
2526
  }), i;
2501
- }), Yi = f(([e, t, n, r]) => {
2527
+ }), Xi = f(([e, t, n, r]) => {
2502
2528
  let i = t.toVar();
2503
2529
  return p(n.bumpMapIndex.greaterThanEqual(N(0)).and(n.bumpScale.greaterThan(0)), () => {
2504
2530
  let a = U(1 / 1024).toVar(), o = ve(e, r.bumpUV).depth(N(n.bumpMapIndex)).r, s = ve(e, U(r.bumpUV.x.add(a.x), r.bumpUV.y)).depth(N(n.bumpMapIndex)).r, c = ve(e, U(r.bumpUV.x, r.bumpUV.y.add(a.y))).depth(N(n.bumpMapIndex)).r, l = U(s.sub(o), c.sub(o)).mul(n.bumpScale), u = R(W(l.x.negate(), l.y.negate(), 1)), d = R(D(g(t.z).lessThan(.999).select(W(0, 0, 1), W(1, 0, 0)), t)), f = D(t, d), p = d.mul(u.x).add(f.mul(u.y)).add(t.mul(u.z));
2505
2531
  i.assign(R(L(t, p, T(n.bumpScale, 0, 1))));
2506
2532
  }), i;
2507
- }), Xi = f(([e, t, n, r]) => {
2533
+ }), Zi = f(([e, t, n, r]) => {
2508
2534
  let i = t.emissive.mul(t.emissiveIntensity).toVar();
2509
2535
  return p(t.emissiveMapIndex.greaterThanEqual(N(0)), () => {
2510
2536
  let n = ve(e, r.emissiveUV).depth(N(t.emissiveMapIndex)).toVar();
2511
2537
  i.assign(i.mul(n.rgb));
2512
2538
  }), i;
2513
- }), Zi = f(([e, t, n, r, i, a, o, s, c]) => {
2514
- let l = G(0).toVar(), u = W(0).toVar(), d = j(0).toVar(), f = j(0).toVar(), m = W(0).toVar(), h = Ui(o).toVar();
2539
+ }), Qi = f(([e, t, n, r, i, a, o, s, c]) => {
2540
+ let l = G(0).toVar(), u = W(0).toVar(), d = j(0).toVar(), f = j(0).toVar(), m = W(0).toVar(), h = Wi(o).toVar();
2515
2541
  return l.assign(o.color), u.assign(o.emissive.mul(o.emissiveIntensity)), d.assign(o.metalness), f.assign(o.roughness), m.assign(c), p(h, () => {
2516
- let p = qr.wrap(Gi(s, o)).toVar();
2517
- l.assign(Ki(e, o, p));
2518
- let h = qi(r, i, o, p);
2542
+ let p = qr.wrap(Ki(s, o)).toVar();
2543
+ l.assign(qi(e, o, p));
2544
+ let h = Ji(r, i, o, p);
2519
2545
  d.assign(h.x), f.assign(h.y);
2520
- let g = Ji(t, c, o, p).toVar();
2521
- m.assign(Yi(n, g, o, p)), u.assign(Xi(a, o, l, p));
2546
+ let g = Yi(t, c, o, p).toVar();
2547
+ m.assign(Xi(n, g, o, p)), u.assign(Zi(a, o, l, p));
2522
2548
  }), Gr({
2523
2549
  albedo: l,
2524
2550
  emissive: u,
@@ -2528,27 +2554,27 @@ var Ri = /* @__PURE__ */ K("\n fn equirectDirectionPdf( direction: vec3f, enviro
2528
2554
  hasTextures: h
2529
2555
  });
2530
2556
  });
2531
- f(([e, t, n, r, i, a, o, s]) => Gr.wrap(Zi(e, t, n, r, i, a, o, s, W(0, 1, 0))).albedo), f(([e, t, n, r, i, a, o, s]) => Gr.wrap(Zi(e, t, n, r, i, a, o, s, W(0, 1, 0))).emissive), f(([e, t, n, r, i, a, o, s]) => Gr.wrap(Zi(e, t, n, r, i, a, o, s, W(0, 1, 0))).metalness), f(([e, t, n, r, i, a, o, s]) => Gr.wrap(Zi(e, t, n, r, i, a, o, s, W(0, 1, 0))).roughness), f(([e, t, n, r, i, a, o, s, c]) => Gr.wrap(Zi(e, t, n, r, i, a, o, s, c)).normal);
2532
- var Qi = f(([e, t, n, r]) => {
2557
+ f(([e, t, n, r, i, a, o, s]) => Gr.wrap(Qi(e, t, n, r, i, a, o, s, W(0, 1, 0))).albedo), f(([e, t, n, r, i, a, o, s]) => Gr.wrap(Qi(e, t, n, r, i, a, o, s, W(0, 1, 0))).emissive), f(([e, t, n, r, i, a, o, s]) => Gr.wrap(Qi(e, t, n, r, i, a, o, s, W(0, 1, 0))).metalness), f(([e, t, n, r, i, a, o, s]) => Gr.wrap(Qi(e, t, n, r, i, a, o, s, W(0, 1, 0))).roughness), f(([e, t, n, r, i, a, o, s, c]) => Gr.wrap(Qi(e, t, n, r, i, a, o, s, c)).normal);
2558
+ var $i = f(([e, t, n, r]) => {
2533
2559
  let i = j(0).toVar();
2534
2560
  return p(t.greaterThanEqual(N(0)), () => {
2535
- let a = Hi({
2561
+ let a = Ui({
2536
2562
  uv: n,
2537
2563
  transform: r
2538
2564
  });
2539
2565
  i.assign(ve(e, a).depth(N(t)).r);
2540
2566
  }), i;
2541
- }), $i = 32, ea = 16, ta = 5, na = 1 / 1024, ra = 8, ia = Xt({
2567
+ }), ea = 32, ta = 16, na = 5, ra = 1 / 1024, ia = 8, aa = Xt({
2542
2568
  hitPoint: "vec3",
2543
2569
  uv: "vec2",
2544
2570
  normal: "vec3",
2545
2571
  height: "float"
2546
- }), aa = f(([e, t, n, r, i, a]) => {
2547
- let o = t.hitPoint.toVar(), s = t.uv.toVar(), c = t.normal.toVar(), l = j(0).toVar(), u = t.triangleIndex, d = $(n, u, N(0), N(ra)).xyz.toVar(), f = $(n, u, N(1), N(ra)).xyz.toVar(), h = $(n, u, N(2), N(ra)).xyz.toVar(), _ = $(n, u, N(6), N(ra)).toVar(), v = $(n, u, N(7), N(ra)).toVar(), y = _.xy.toVar(), b = _.zw.toVar(), x = v.xy.toVar(), S = f.sub(d).toVar(), C = h.sub(d).toVar(), w = b.sub(y).toVar(), T = x.sub(y).toVar(), E = w.x.mul(T.y).sub(T.x.mul(w.y)).toVar();
2572
+ }), oa = f(([e, t, n, r, i, a]) => {
2573
+ let o = t.hitPoint.toVar(), s = t.uv.toVar(), c = t.normal.toVar(), l = j(0).toVar(), u = t.triangleIndex, d = $(n, u, N(0), N(ia)).xyz.toVar(), f = $(n, u, N(1), N(ia)).xyz.toVar(), h = $(n, u, N(2), N(ia)).xyz.toVar(), _ = $(n, u, N(6), N(ia)).toVar(), v = $(n, u, N(7), N(ia)).toVar(), y = _.xy.toVar(), b = _.zw.toVar(), x = v.xy.toVar(), S = f.sub(d).toVar(), C = h.sub(d).toVar(), w = b.sub(y).toVar(), T = x.sub(y).toVar(), E = w.x.mul(T.y).sub(T.x.mul(w.y)).toVar();
2548
2574
  return p(g(E).greaterThan(1e-8), () => {
2549
2575
  let n = j(1).div(E), u = S.mul(T.y).sub(C.mul(w.y)).mul(n).toVar(), d = C.mul(w.x).sub(S.mul(T.x)).mul(n).toVar(), f = t.normal.toVar(), h = i.displacementScale.div(j(10)), _ = e.direction, v = k(_, f).toVar(), y = _.sub(f.mul(v)).toVar(), b = k(u, u), x = k(u, d), D = k(d, d), O = b.mul(D).sub(x.mul(x)).toVar();
2550
2576
  p(g(O).greaterThan(1e-10), () => {
2551
- let e = j(1).div(O), n = k(y, u), S = k(y, d), C = U(D.mul(n).sub(x.mul(S)).mul(e).toVar(), b.mul(S).sub(x.mul(n)).mul(e).toVar()).toVar(), w = v.toVar(), T = I(g(w), .001).toVar(), E = h.div(T).toVar(), A = N(a.equal(N(0)).select(N($i), N(ea))).toVar(), M = E.negate().toVar(), ee = E.toVar().sub(M).div(j(A)).toVar(), P = M.toVar(), te = M.toVar(), ne = N(0).toVar();
2577
+ let e = j(1).div(O), n = k(y, u), S = k(y, d), C = U(D.mul(n).sub(x.mul(S)).mul(e).toVar(), b.mul(S).sub(x.mul(n)).mul(e).toVar()).toVar(), w = v.toVar(), T = I(g(w), .001).toVar(), E = h.div(T).toVar(), A = N(a.equal(N(0)).select(N(ea), N(ta))).toVar(), M = E.negate().toVar(), ee = E.toVar().sub(M).div(j(A)).toVar(), P = M.toVar(), te = M.toVar(), ne = N(0).toVar();
2552
2578
  m({
2553
2579
  start: N(0),
2554
2580
  end: A,
@@ -2556,7 +2582,7 @@ var Qi = f(([e, t, n, r]) => {
2556
2582
  condition: "<"
2557
2583
  }, ({ i: e }) => {
2558
2584
  p(ne.equal(N(0)), () => {
2559
- let n = M.add(ee.mul(j(e))).toVar(), a = t.uv.add(C.mul(n)).toVar(), o = n.mul(w).toVar(), s = Qi(r, i.displacementMapIndex, a, i.displacementTransform).sub(.5).mul(h);
2585
+ let n = M.add(ee.mul(j(e))).toVar(), a = t.uv.add(C.mul(n)).toVar(), o = n.mul(w).toVar(), s = $i(r, i.displacementMapIndex, a, i.displacementTransform).sub(.5).mul(h);
2560
2586
  p(o.lessThanEqual(s).and(e.greaterThan(N(0))), () => {
2561
2587
  ne.assign(1), te.assign(n);
2562
2588
  }).Else(() => {
@@ -2567,80 +2593,80 @@ var Qi = f(([e, t, n, r]) => {
2567
2593
  let e = P.toVar(), n = te.toVar();
2568
2594
  m({
2569
2595
  start: N(0),
2570
- end: N(ta),
2596
+ end: N(na),
2571
2597
  type: "int",
2572
2598
  condition: "<"
2573
2599
  }, () => {
2574
- let a = e.add(n).mul(.5).toVar(), o = t.uv.add(C.mul(a)).toVar(), s = a.mul(w), c = Qi(r, i.displacementMapIndex, o, i.displacementTransform).sub(.5).mul(h);
2600
+ let a = e.add(n).mul(.5).toVar(), o = t.uv.add(C.mul(a)).toVar(), s = a.mul(w), c = $i(r, i.displacementMapIndex, o, i.displacementTransform).sub(.5).mul(h);
2575
2601
  p(s.lessThanEqual(c), () => {
2576
2602
  n.assign(a);
2577
2603
  }).Else(() => {
2578
2604
  e.assign(a);
2579
2605
  });
2580
2606
  });
2581
- let a = e.add(n).mul(.5).toVar(), g = t.uv.add(C.mul(a)).toVar(), v = t.hitPoint.add(_.mul(a)).toVar(), y = Qi(r, i.displacementMapIndex, g, i.displacementTransform), b = y.sub(.5).mul(h), x = j(na), S = y, T = Qi(r, i.displacementMapIndex, g.add(U(x, 0)), i.displacementTransform), E = Qi(r, i.displacementMapIndex, g.add(U(0, x)), i.displacementTransform), D = R(u).toVar(), O = R(d).toVar(), k = T.sub(S).mul(h), A = E.sub(S).mul(h), M = R(f.sub(D.mul(k)).sub(O.mul(A)));
2607
+ let a = e.add(n).mul(.5).toVar(), g = t.uv.add(C.mul(a)).toVar(), v = t.hitPoint.add(_.mul(a)).toVar(), y = $i(r, i.displacementMapIndex, g, i.displacementTransform), b = y.sub(.5).mul(h), x = j(ra), S = y, T = $i(r, i.displacementMapIndex, g.add(U(x, 0)), i.displacementTransform), E = $i(r, i.displacementMapIndex, g.add(U(0, x)), i.displacementTransform), D = R(u).toVar(), O = R(d).toVar(), k = T.sub(S).mul(h), A = E.sub(S).mul(h), M = R(f.sub(D.mul(k)).sub(O.mul(A)));
2582
2608
  o.assign(v), s.assign(g), c.assign(M), l.assign(b);
2583
2609
  });
2584
2610
  });
2585
- }), ia({
2611
+ }), aa({
2586
2612
  hitPoint: o,
2587
2613
  uv: s,
2588
2614
  normal: c,
2589
2615
  height: l
2590
2616
  });
2591
- }), oa = 1e-6;
2617
+ }), sa = 1e-6;
2592
2618
  f(([e, t, n]) => {
2593
2619
  let r = I(W(j(1).sub(n)), e);
2594
2620
  return e.add(r.sub(e).mul(ce(j(1).sub(t), 5)));
2595
2621
  });
2596
- var sa = f(([e, t]) => {
2622
+ var ca = f(([e, t]) => {
2597
2623
  let n = T(e, 0, 1);
2598
2624
  return t.add(j(1).sub(t).mul(ce(j(1).sub(n), 5)));
2599
- }), ca = f(([e, t]) => {
2625
+ }), la = f(([e, t]) => {
2600
2626
  let n = T(e, 0, 1);
2601
2627
  return t.add(W(1).sub(t).mul(ce(j(1).sub(n), 5)));
2602
- }), la = f(([e]) => {
2628
+ }), ua = f(([e]) => {
2603
2629
  let t = he(e);
2604
- return W(1).add(t).div(I(W(1).sub(t), W(oa)));
2605
- }), ua = f(([e, t]) => {
2606
- let n = e.sub(W(t)), r = I(e.add(W(t)), W(oa)), i = n.div(r);
2607
- return i.mul(i);
2630
+ return W(1).add(t).div(I(W(1).sub(t), W(sa)));
2608
2631
  }), da = f(([e, t]) => {
2609
- let n = e.sub(t), r = I(e.add(t), oa), i = n.div(r);
2632
+ let n = e.sub(W(t)), r = I(e.add(W(t)), W(sa)), i = n.div(r);
2610
2633
  return i.mul(i);
2611
- }), fa = (e) => W(da(e, j(1))), pa = f(([e, t]) => {
2634
+ }), fa = f(([e, t]) => {
2635
+ let n = e.sub(t), r = I(e.add(t), sa), i = n.div(r);
2636
+ return i.mul(i);
2637
+ }), pa = (e) => W(fa(e, j(1))), ma = f(([e, t]) => {
2612
2638
  let n = t.mul(t), r = n.mul(n), i = e.mul(e).mul(r.sub(1)).add(1);
2613
2639
  return r.div(I(j(Qr).mul(i).mul(i), ti));
2614
- }), ma = f(([e, t]) => {
2640
+ }), ha = f(([e, t]) => {
2615
2641
  let n = I(t, ni), r = n.mul(n), i = j(1).div(r), a = e.mul(e).mul(i.mul(i).sub(1)).add(1);
2616
2642
  return ae(i.mul(i).div(I(j(Qr).mul(a).mul(a), ti)), 100);
2617
- }), ha = f(([e, t]) => {
2643
+ }), ga = f(([e, t]) => {
2618
2644
  let n = t.add(1), r = n.mul(n).div(8);
2619
2645
  return e.div(I(e.mul(j(1).sub(r)).add(r), ti));
2620
- }), ga = f(([e, t, n]) => {
2621
- let r = ha(e, n);
2622
- return ha(t, n).mul(r);
2623
2646
  }), _a = f(([e, t, n]) => {
2647
+ let r = ga(e, n);
2648
+ return ga(t, n).mul(r);
2649
+ }), va = f(([e, t, n]) => {
2624
2650
  let r = j(1).sub(n), i = n.mul(-.0275).add(.0425), a = n.mul(-.572).add(1.04), o = n.mul(.022).sub(.04), s = ae(r.mul(r), A(j(-6.4308).mul(t))).mul(r).add(i), c = j(-1.04).mul(s).add(a), l = j(1.04).mul(s).add(o), u = I(c.add(l), .1);
2625
2651
  return W(1).add(e.mul(j(1).div(u).sub(1)));
2626
- }), va = f(([e, t, n]) => {
2652
+ }), ya = f(([e, t, n]) => {
2627
2653
  let r = j(1).sub(n), i = n.mul(-.0275).add(.0425), a = n.mul(-.572).add(1.04), o = n.mul(.022).sub(.04), s = ae(r.mul(r), A(j(-6.4308).mul(t))).mul(r).add(i), c = j(-1.04).mul(s).add(a), l = j(1.04).mul(s).add(o), u = I(e.mul(c).add(W(l)), W(0)), d = I(c.add(l), .1), f = W(1).add(e.mul(j(1).div(d).sub(1)));
2628
2654
  return T(u.mul(f), W(0), W(1));
2629
- }), ya = f(([e, t, n]) => pa(e, n).mul(e).div(I(j(4).mul(t), ti))), ba = f(([e, t, n]) => {
2630
- let r = pa(e, n), i = ha(t, n);
2655
+ }), ba = f(([e, t, n]) => ma(e, n).mul(e).div(I(j(4).mul(t), ti))), xa = f(([e, t, n]) => {
2656
+ let r = ma(e, n), i = ga(t, n);
2631
2657
  return r.mul(i).div(I(t.mul(4), ti));
2632
- }), xa = f(([e, t]) => {
2658
+ }), Sa = f(([e, t]) => {
2633
2659
  let n = j(ei).mul(e).mul(1e-9), r = W(54856e-17, 44201e-17, 52481e-17), i = W(1681e3, 1795300, 2208400), a = W(43278e5, 93046e5, 66121e5), o = r.mul(he(j(ei).mul(a))).mul(E(i.mul(n).add(t))).mul(A(ui({ x: n }).negate().mul(a))).toVar();
2634
2660
  return o.x.addAssign(j(9747e-17).mul(he(j(ei).mul(45282e5))).mul(E(j(2239900).mul(n).add(t.x))).mul(A(j(-45282e5).mul(ui({ x: n }))))), li.mul(o.div(1.0685e-7));
2635
- }), Sa = f(([e, t, n, r, i]) => {
2661
+ }), Ca = f(([e, t, n, r, i]) => {
2636
2662
  let a = L(e, t, me(0, .03, r)).toVar(), o = ui({ x: e.div(a) }).mul(j(1).sub(ui({ x: n }))).toVar(), s = j(1).sub(o).toVar(), c = W(0).toVar();
2637
2663
  return p(s.lessThan(0), () => {
2638
2664
  c.assign(W(1));
2639
2665
  }).Else(() => {
2640
- let t = he(s).toVar(), o = sa(n, da(a, e).toVar()).toVar(), l = j(1).sub(o).toVar(), u = a.lessThan(e).select(j(Qr), j(0)).toVar(), d = j(Qr).sub(u).toVar(), f = la(T(i, 0, .9999)).toVar(), p = ua(f, a).toVar(), m = W(sa(t, p.x), sa(t, p.y), sa(t, p.z)).toVar(), h = W(f.x.lessThan(a).select(j(Qr), j(0)), f.y.lessThan(a).select(j(Qr), j(0)), f.z.lessThan(a).select(j(Qr), j(0))).toVar(), g = j(2).mul(a).mul(r).mul(t).toVar(), _ = W(d).add(h).toVar(), v = T(W(o).mul(m), 1e-5, .9999).toVar(), y = he(v).toVar(), b = W(l.mul(l)).mul(m).div(W(1).sub(v)).toVar(), x = W(o).add(b).toVar().toVar(), S = b.sub(W(l)).toVar();
2641
- S.mulAssign(y), x.addAssign(S.mul(j(2).mul(xa(j(1).mul(g), j(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(j(2).mul(xa(j(2).mul(g), j(2).mul(_))))), c.assign(I(x, W(0)));
2666
+ let t = he(s).toVar(), o = ca(n, fa(a, e).toVar()).toVar(), l = j(1).sub(o).toVar(), u = a.lessThan(e).select(j(Qr), j(0)).toVar(), d = j(Qr).sub(u).toVar(), f = ua(T(i, 0, .9999)).toVar(), p = da(f, a).toVar(), m = W(ca(t, p.x), ca(t, p.y), ca(t, p.z)).toVar(), h = W(f.x.lessThan(a).select(j(Qr), j(0)), f.y.lessThan(a).select(j(Qr), j(0)), f.z.lessThan(a).select(j(Qr), j(0))).toVar(), g = j(2).mul(a).mul(r).mul(t).toVar(), _ = W(d).add(h).toVar(), v = T(W(o).mul(m), 1e-5, .9999).toVar(), y = he(v).toVar(), b = W(l.mul(l)).mul(m).div(W(1).sub(v)).toVar(), x = W(o).add(b).toVar().toVar(), S = b.sub(W(l)).toVar();
2667
+ S.mulAssign(y), x.addAssign(S.mul(j(2).mul(Sa(j(1).mul(g), j(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(j(2).mul(Sa(j(2).mul(g), j(2).mul(_))))), c.assign(I(x, W(0)));
2642
2668
  }), c;
2643
- }), Ca = f(([e, t, n]) => {
2669
+ }), wa = f(([e, t, n]) => {
2644
2670
  let r = n.invRoughness, i = n.metalFactor, a = j(0).toVar();
2645
2671
  p(t.isMetallic, () => {
2646
2672
  a.assign(I(r.mul(i), .7));
@@ -2699,9 +2725,9 @@ f(([e, t]) => {
2699
2725
  n.assign(T(o, 0, 1));
2700
2726
  }), n;
2701
2727
  });
2702
- var wa = f(([e, t, n, r, i, a]) => {
2728
+ var Ta = f(([e, t, n, r, i, a]) => {
2703
2729
  let o = j(1).sub(e.roughness), s = j(.5).add(j(.5).mul(e.metalness)), c = ae(j(2).div(e.ior), 1), l = I(e.sheenColor.r, I(e.sheenColor.g, e.sheenColor.b)), u = Jr({
2704
- F0: fa(e.ior),
2730
+ F0: pa(e.ior),
2705
2731
  NoV: j(.5),
2706
2732
  diffuseColor: e.color.rgb,
2707
2733
  isPurelyDiffuse: !1,
@@ -2712,7 +2738,7 @@ var wa = f(([e, t, n, r, i, a]) => {
2712
2738
  metalFactor: s,
2713
2739
  iorFactor: c,
2714
2740
  maxSheenColor: l
2715
- }), d = Hr.wrap(Ca(e, n, u)), f = d.diffuse.toVar(), m = d.specular.toVar(), h = d.transmission.toVar(), g = d.clearcoat.toVar();
2741
+ }), d = Hr.wrap(wa(e, n, u)), f = d.diffuse.toVar(), m = d.specular.toVar(), h = d.transmission.toVar(), g = d.clearcoat.toVar();
2716
2742
  p(t.greaterThan(N(2)), () => {
2717
2743
  let e = j(1).div(j(t).sub(1));
2718
2744
  m.mulAssign(j(.8).add(e.mul(.2))), g.mulAssign(j(.7).add(e.mul(.3))), f.mulAssign(j(1).add(e.mul(.2)));
@@ -2736,10 +2762,10 @@ var wa = f(([e, t, n, r, i, a]) => {
2736
2762
  clearcoatImportance: g,
2737
2763
  envmapImportance: j(0)
2738
2764
  });
2739
- }), Ta = f(([e, t, n, r, i]) => {
2765
+ }), Ea = f(([e, t, n, r, i]) => {
2740
2766
  let a = I(k(e, t), .001).toVar(), o = i.isRough.and(i.isMetallic.not()).and(n.transmission.equal(0)).and(n.clearcoat.equal(0)).toVar(), s = r.roughness.mul(r.roughness).toVar(), c = s.mul(s).toVar(), l = r.roughness.add(1), u = l.mul(l).div(8).toVar();
2741
2767
  return Jr({
2742
- F0: L(fa(n.ior).mul(n.specularColor), r.albedo.rgb, r.metalness).mul(n.specularIntensity).toVar(),
2768
+ F0: L(pa(n.ior).mul(n.specularColor), r.albedo.rgb, r.metalness).mul(n.specularIntensity).toVar(),
2743
2769
  NoV: a,
2744
2770
  diffuseColor: r.albedo.rgb.mul(j(1).sub(r.metalness)).toVar(),
2745
2771
  isPurelyDiffuse: o,
@@ -2751,11 +2777,11 @@ var wa = f(([e, t, n, r, i, a]) => {
2751
2777
  iorFactor: ae(j(2).div(n.ior), 1).toVar(),
2752
2778
  maxSheenColor: I(n.sheenColor.r, I(n.sheenColor.g, n.sheenColor.b)).toVar()
2753
2779
  });
2754
- }), Ea = /* @__PURE__ */ K("\n fn ImportanceSampleGGX( N: vec3f, roughness: f32, Xi: vec2f ) -> vec3f {\n let alpha = roughness * roughness;\n let phi = 6.28318530717958647692f * Xi.x;\n let cosTheta = sqrt( ( 1.0f - Xi.y ) / ( 1.0f + ( alpha * alpha - 1.0f ) * Xi.y ) );\n let sinTheta = sqrt( max( 0.0f, 1.0f - cosTheta * cosTheta ) );\n let H = vec3f( cos( phi ) * sinTheta, sin( phi ) * sinTheta, cosTheta );\n // TBN construction\n let up = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( 0.0f, 0.0f, 1.0f ), abs( N.z ) < 0.999f );\n let tangent = normalize( cross( up, N ) );\n let bitangent = cross( N, tangent );\n return normalize( tangent * H.x + bitangent * H.y + N * H.z );\n }\n"), Da = /* @__PURE__ */ K("\n fn ImportanceSampleCosine( N: vec3f, xi: vec2f ) -> vec3f {\n let T = normalize( cross( N, N.yzx + vec3f( 0.1f, 0.2f, 0.3f ) ) );\n let B = cross( N, T );\n let phi = 6.28318530717958647692f * xi.x;\n let cosTheta = sqrt( 1.0f - xi.y );\n let sinTheta = sqrt( xi.y );\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( T * localDir.x + B * localDir.y + N * localDir.z );\n }\n"), Oa = /* @__PURE__ */ K("\n fn cosineWeightedSample( N: vec3f, xi: vec2f ) -> vec3f {\n let T = normalize( cross( N, N.yzx + vec3f( 0.1f, 0.2f, 0.3f ) ) );\n let B = cross( N, T );\n let phi = 6.28318530717958647692f * xi.y;\n let cosTheta = sqrt( 1.0f - xi.x );\n let sinTheta = sqrt( xi.x );\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( T * localDir.x + B * localDir.y + N * localDir.z );\n }\n");
2780
+ }), Da = /* @__PURE__ */ K("\n fn ImportanceSampleGGX( N: vec3f, roughness: f32, Xi: vec2f ) -> vec3f {\n let alpha = roughness * roughness;\n let phi = 6.28318530717958647692f * Xi.x;\n let cosTheta = sqrt( ( 1.0f - Xi.y ) / ( 1.0f + ( alpha * alpha - 1.0f ) * Xi.y ) );\n let sinTheta = sqrt( max( 0.0f, 1.0f - cosTheta * cosTheta ) );\n let H = vec3f( cos( phi ) * sinTheta, sin( phi ) * sinTheta, cosTheta );\n // TBN construction\n let up = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( 0.0f, 0.0f, 1.0f ), abs( N.z ) < 0.999f );\n let tangent = normalize( cross( up, N ) );\n let bitangent = cross( N, tangent );\n return normalize( tangent * H.x + bitangent * H.y + N * H.z );\n }\n"), Oa = /* @__PURE__ */ K("\n fn ImportanceSampleCosine( N: vec3f, xi: vec2f ) -> vec3f {\n let T = normalize( cross( N, N.yzx + vec3f( 0.1f, 0.2f, 0.3f ) ) );\n let B = cross( N, T );\n let phi = 6.28318530717958647692f * xi.x;\n let cosTheta = sqrt( 1.0f - xi.y );\n let sinTheta = sqrt( xi.y );\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( T * localDir.x + B * localDir.y + N * localDir.z );\n }\n"), ka = /* @__PURE__ */ K("\n fn cosineWeightedSample( N: vec3f, xi: vec2f ) -> vec3f {\n let T = normalize( cross( N, N.yzx + vec3f( 0.1f, 0.2f, 0.3f ) ) );\n let B = cross( N, T );\n let phi = 6.28318530717958647692f * xi.y;\n let cosTheta = sqrt( 1.0f - xi.x );\n let sinTheta = sqrt( xi.x );\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( T * localDir.x + B * localDir.y + N * localDir.z );\n }\n");
2755
2781
  f(([e]) => I(e, ii).mul($r));
2756
- var ka = /* @__PURE__ */ K("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: vec2f ) -> vec3f {\n let alpha = roughness * roughness;\n // Transform view direction to local space\n let Vh = normalize( vec3f( alpha * V.x, alpha * V.y, V.z ) );\n // Construct orthonormal basis around view direction\n let lensq = Vh.x * Vh.x + Vh.y * Vh.y;\n let T1 = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( -Vh.y, Vh.x, 0.0f ) / sqrt( lensq ), lensq > 1e-8f );\n let T2 = cross( Vh, T1 );\n // Sample point with polar coordinates (r, phi)\n let r = sqrt( Xi.x );\n let phi = 6.28318530717958647692f * Xi.y;\n let t1 = r * cos( phi );\n let t2tmp = r * sin( phi );\n let s = 0.5f * ( 1.0f + Vh.z );\n let t2 = ( 1.0f - s ) * sqrt( 1.0f - t1 * t1 ) + s * t2tmp;\n // Compute normal\n let Nh = T1 * t1 + T2 * t2 + Vh * sqrt( max( 0.0f, 1.0f - t1 * t1 - t2 * t2 ) );\n // Transform the normal back to the ellipsoid configuration\n return normalize( vec3f( alpha * Nh.x, alpha * Nh.y, max( 0.0f, Nh.z ) ) );\n }\n"), Aa = f(([e, t, n]) => {
2757
- let r = Kr.wrap(yi(n)), i = j(1).sub(n.roughness), a = j(.5).add(j(.5).mul(n.metalness)), o = ae(j(2).div(n.ior), 1), s = I(n.sheenColor.r, I(n.sheenColor.g, n.sheenColor.b)), c = Jr({
2758
- F0: fa(n.ior),
2782
+ var Aa = /* @__PURE__ */ K("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: vec2f ) -> vec3f {\n let alpha = roughness * roughness;\n // Transform view direction to local space\n let Vh = normalize( vec3f( alpha * V.x, alpha * V.y, V.z ) );\n // Construct orthonormal basis around view direction\n let lensq = Vh.x * Vh.x + Vh.y * Vh.y;\n let T1 = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( -Vh.y, Vh.x, 0.0f ) / sqrt( lensq ), lensq > 1e-8f );\n let T2 = cross( Vh, T1 );\n // Sample point with polar coordinates (r, phi)\n let r = sqrt( Xi.x );\n let phi = 6.28318530717958647692f * Xi.y;\n let t1 = r * cos( phi );\n let t2tmp = r * sin( phi );\n let s = 0.5f * ( 1.0f + Vh.z );\n let t2 = ( 1.0f - s ) * sqrt( 1.0f - t1 * t1 ) + s * t2tmp;\n // Compute normal\n let Nh = T1 * t1 + T2 * t2 + Vh * sqrt( max( 0.0f, 1.0f - t1 * t1 - t2 * t2 ) );\n // Transform the normal back to the ellipsoid configuration\n return normalize( vec3f( alpha * Nh.x, alpha * Nh.y, max( 0.0f, Nh.z ) ) );\n }\n"), ja = f(([e, t, n]) => {
2783
+ let r = Kr.wrap(bi(n)), i = j(1).sub(n.roughness), a = j(.5).add(j(.5).mul(n.metalness)), o = ae(j(2).div(n.ior), 1), s = I(n.sheenColor.r, I(n.sheenColor.g, n.sheenColor.b)), c = Jr({
2784
+ F0: pa(n.ior),
2759
2785
  NoV: j(.5),
2760
2786
  diffuseColor: n.color.rgb,
2761
2787
  isPurelyDiffuse: !1,
@@ -2766,7 +2792,7 @@ var ka = /* @__PURE__ */ K("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: v
2766
2792
  metalFactor: a,
2767
2793
  iorFactor: o,
2768
2794
  maxSheenColor: s
2769
- }), l = BRDFWeights.wrap(Ca(n, r, c)), u = I(k(t, e), 0), d = ce(j(1).sub(u), 5), f = l.diffuse.mul(d), p = l.diffuse.sub(f).toVar(), m = l.specular.add(f).toVar(), h = l.clearcoat.toVar(), g = l.transmission.mul(o).toVar(), _ = l.sheen.toVar(), v = l.iridescence.toVar(), y = I(p.add(m).add(h).add(g).add(_).add(v), 1e-6).toVar(), b = j(1).div(y);
2795
+ }), l = BRDFWeights.wrap(wa(n, r, c)), u = I(k(t, e), 0), d = ce(j(1).sub(u), 5), f = l.diffuse.mul(d), p = l.diffuse.sub(f).toVar(), m = l.specular.add(f).toVar(), h = l.clearcoat.toVar(), g = l.transmission.mul(o).toVar(), _ = l.sheen.toVar(), v = l.iridescence.toVar(), y = I(p.add(m).add(h).add(g).add(_).add(v), 1e-6).toVar(), b = j(1).div(y);
2770
2796
  return Zr({
2771
2797
  diffuse: p.mul(b),
2772
2798
  specular: m.mul(b),
@@ -2776,15 +2802,15 @@ var ka = /* @__PURE__ */ K("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: v
2776
2802
  iridescence: v.mul(b),
2777
2803
  totalWeight: y
2778
2804
  });
2779
- }), ja = f(([e, t, n, r, i, a]) => {
2805
+ }), Ma = f(([e, t, n, r, i, a]) => {
2780
2806
  let o = j(0).toVar(), s = j(0).toVar(), c = j(0).toVar(), l = j(0).toVar(), u = j(0).toVar(), d = k(n, e);
2781
2807
  p(d.greaterThan(0), () => {
2782
2808
  o.assign(d.div(Qr));
2783
2809
  });
2784
2810
  let f = R(t.add(e)).toVar(), m = I(k(n, f), 0), h = I(k(t, f), 0), _ = I(k(n, t), 0);
2785
2811
  p(m.greaterThan(0).and(h.greaterThan(0)).and(_.greaterThan(0)), () => {
2786
- s.assign(ya(m, h, r.roughness)), p(r.clearcoat.greaterThan(0), () => {
2787
- c.assign(ya(m, h, r.clearcoatRoughness));
2812
+ s.assign(ba(m, h, r.roughness)), p(r.clearcoat.greaterThan(0), () => {
2813
+ c.assign(ba(m, h, r.clearcoatRoughness));
2788
2814
  });
2789
2815
  }), p(r.transmission.greaterThan(0).and(d.lessThan(0)), () => {
2790
2816
  l.assign(g(d).div(Qr));
@@ -2798,34 +2824,34 @@ var ka = /* @__PURE__ */ K("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: v
2798
2824
  }), T;
2799
2825
  });
2800
2826
  f(([e, t, n, r, i, a]) => {
2801
- let o = Aa(e, t, n), s = J(i), c = o.diffuse, l = c.add(o.specular), u = l.add(o.clearcoat), d = u.add(o.transmission), f = W(0).toVar(), m = j(0).toVar(), h = j(0).toVar();
2827
+ let o = ja(e, t, n), s = J(i), c = o.diffuse, l = c.add(o.specular), u = l.add(o.clearcoat), d = u.add(o.transmission), f = W(0).toVar(), m = j(0).toVar(), h = j(0).toVar();
2802
2828
  p(s.lessThan(c), () => {
2803
- f.assign(Da({
2829
+ f.assign(Oa({
2804
2830
  N: t,
2805
2831
  xi: r
2806
2832
  })), m.assign(I(k(t, f), 0).div(Qr)), h.assign(m.mul(o.diffuse));
2807
2833
  }).ElseIf(s.lessThan(l), () => {
2808
- let i = Ea({
2834
+ let i = Da({
2809
2835
  N: t,
2810
2836
  roughness: n.roughness,
2811
2837
  Xi: r
2812
2838
  }).toVar();
2813
2839
  f.assign(le(e.negate(), i)), p(k(t, f).greaterThan(0), () => {
2814
2840
  let r = I(k(t, i), 0), a = I(k(e, i), 0);
2815
- m.assign(ya(r, a, n.roughness));
2841
+ m.assign(ba(r, a, n.roughness));
2816
2842
  }), h.assign(m.mul(o.specular));
2817
2843
  }).ElseIf(s.lessThan(u).and(n.clearcoat.greaterThan(0)), () => {
2818
- let i = Ea({
2844
+ let i = Da({
2819
2845
  N: t,
2820
2846
  roughness: n.clearcoatRoughness,
2821
2847
  Xi: r
2822
2848
  }).toVar();
2823
2849
  f.assign(le(e.negate(), i)), p(k(t, f).greaterThan(0), () => {
2824
2850
  let r = I(k(t, i), 0), a = I(k(e, i), 0);
2825
- m.assign(ya(r, a, n.clearcoatRoughness));
2851
+ m.assign(ba(r, a, n.clearcoatRoughness));
2826
2852
  }), h.assign(m.mul(o.clearcoat));
2827
2853
  }).ElseIf(s.lessThan(d).and(n.transmission.greaterThan(0)), () => {
2828
- let i = Ea({
2854
+ let i = Da({
2829
2855
  N: t,
2830
2856
  roughness: n.roughness,
2831
2857
  Xi: r
@@ -2833,17 +2859,17 @@ f(([e, t, n, r, i, a]) => {
2833
2859
  p(k(a, a).greaterThan(.001), () => {
2834
2860
  f.assign(R(a));
2835
2861
  let r = I(k(t, i), 0), o = I(k(e, i), 0);
2836
- m.assign(ya(r, o, n.roughness));
2862
+ m.assign(ba(r, o, n.roughness));
2837
2863
  }).Else(() => {
2838
2864
  f.assign(le(e.negate(), i)), m.assign(.1);
2839
2865
  }), h.assign(m.mul(o.transmission));
2840
2866
  }).Else(() => {
2841
- f.assign(Da({
2867
+ f.assign(Oa({
2842
2868
  N: t,
2843
2869
  xi: r
2844
2870
  })), m.assign(I(k(t, f), 0).div(Qr)), h.assign(m.mul(o.sheen.add(o.iridescence)));
2845
2871
  });
2846
- let g = ja(f, e, t, n, o, h), _ = a(e, f, t, n).toVar();
2872
+ let g = Ma(f, e, t, n, o, h), _ = a(e, f, t, n).toVar();
2847
2873
  return _.mulAssign(g), Vr({
2848
2874
  direction: f,
2849
2875
  value: _,
@@ -2852,11 +2878,11 @@ f(([e, t, n, r, i, a]) => {
2852
2878
  });
2853
2879
  //#endregion
2854
2880
  //#region src/TSL/MaterialTransmission.js
2855
- var Ma = Xt({
2881
+ var Na = Xt({
2856
2882
  direction: "vec3",
2857
2883
  throughput: "vec3",
2858
2884
  didReflect: "bool"
2859
- }), Na = Xt({
2885
+ }), Pa = Xt({
2860
2886
  continueRay: "bool",
2861
2887
  isTransmissive: "bool",
2862
2888
  isAlphaSkip: "bool",
@@ -2872,11 +2898,11 @@ Xt({
2872
2898
  attenuationDistance: "float",
2873
2899
  dispersion: "float"
2874
2900
  });
2875
- var Pa = Xt({
2901
+ var Fa = Xt({
2876
2902
  wavelength: "float",
2877
2903
  ior: "float",
2878
2904
  colorWeight: "vec3"
2879
- }), Fa = Xt({
2905
+ }), Ia = Xt({
2880
2906
  direction: "vec3",
2881
2907
  halfVector: "vec3",
2882
2908
  didReflect: "bool",
@@ -2912,7 +2938,7 @@ Xt({
2912
2938
  });
2913
2939
  }), t;
2914
2940
  });
2915
- var Ia = f(([e, t, n]) => {
2941
+ var La = f(([e, t, n]) => {
2916
2942
  let r = L(j(380), j(700), n).toVar(), i = r.div(1e3), a = e, o = t.mul(.03), s = a.add(o.div(i.mul(i))).toVar(), c = W(0).toVar();
2917
2943
  return p(r.greaterThanEqual(380).and(r.lessThan(420)), () => {
2918
2944
  c.assign(W(.9, 0, 1));
@@ -2928,17 +2954,17 @@ var Ia = f(([e, t, n]) => {
2928
2954
  c.assign(W(1, .5, 0));
2929
2955
  }), p(r.greaterThanEqual(620).and(r.lessThanEqual(700)), () => {
2930
2956
  c.assign(W(1, 0, 0));
2931
- }), c.assign(ce(c, W(.4))), c.assign(T(c, W(0), W(2))), Pa({
2957
+ }), c.assign(ce(c, W(.4))), c.assign(T(c, W(0), W(2))), Fa({
2932
2958
  wavelength: r,
2933
2959
  ior: s,
2934
2960
  colorWeight: c
2935
2961
  });
2936
- }), La = /* @__PURE__ */ K("\n fn calculateBeerLawAbsorption( attenuationColor: vec3f, attenuationDistance: f32, thickness: f32 ) -> vec3f {\n if ( attenuationDistance <= 0.0f ) { return vec3f( 1.0f ); }\n // Convert RGB attenuation color to absorption coefficients\n let absorption = -log( max( attenuationColor, vec3f( 0.001f ) ) ) / attenuationDistance;\n // Apply Beer's law\n return exp( -absorption * thickness );\n }\n"), Ra = f(([e, t, n, r]) => {
2962
+ }), Ra = /* @__PURE__ */ K("\n fn calculateBeerLawAbsorption( attenuationColor: vec3f, attenuationDistance: f32, thickness: f32 ) -> vec3f {\n if ( attenuationDistance <= 0.0f ) { return vec3f( 1.0f ); }\n // Convert RGB attenuation color to absorption coefficients\n let absorption = -log( max( attenuationColor, vec3f( 0.001f ) ) ) / attenuationDistance;\n // Apply Beer's law\n return exp( -absorption * thickness );\n }\n"), za = f(([e, t, n, r]) => {
2937
2963
  let i = z(r, j(1), n.ior).toVar(), a = z(r, n.ior, j(1)).toVar(), o = g(k(t, e)), s = i.mul(i).div(a.mul(a)).mul(j(1).sub(o.mul(o))), c = j(0).toVar();
2938
2964
  return p(s.lessThanEqual(1), () => {
2939
- let e = sa(o, da(a, i)), t = j(1).sub(e).mul(n.transmission).toVar();
2965
+ let e = ca(o, fa(a, i)), t = j(1).sub(e).mul(n.transmission).toVar();
2940
2966
  p(r.not().and(n.attenuationDistance.greaterThan(0)), () => {
2941
- let e = La({
2967
+ let e = Ra({
2942
2968
  attenuationColor: n.attenuationColor,
2943
2969
  attenuationDistance: n.attenuationDistance,
2944
2970
  thickness: n.thickness
@@ -2946,8 +2972,8 @@ var Ia = f(([e, t, n]) => {
2946
2972
  t.assign(t.mul(e.x.add(e.y).add(e.z).div(3)));
2947
2973
  }), c.assign(T(t, 0, 1));
2948
2974
  }), c;
2949
- }), za = f(([e, t, n, r, i, a, o, s]) => {
2950
- let c = Fa({
2975
+ }), Ba = f(([e, t, n, r, i, a, o, s]) => {
2976
+ let c = Ia({
2951
2977
  direction: W(0),
2952
2978
  halfVector: W(0),
2953
2979
  didReflect: !1,
@@ -2955,7 +2981,7 @@ var Ia = f(([e, t, n]) => {
2955
2981
  }).toVar();
2956
2982
  return p(r.lessThanEqual(.05).and(a.greaterThan(0)), () => {
2957
2983
  c.halfVector.assign(t), c.didReflect.assign(!1);
2958
- let r = n, o = z(i, j(1).div(r), r).toVar(), l = Pa.wrap(Ia(n, a, J(s)));
2984
+ let r = n, o = z(i, j(1).div(r), r).toVar(), l = Fa.wrap(La(n, a, J(s)));
2959
2985
  o.assign(z(i, j(1).div(l.ior), l.ior));
2960
2986
  let u = ue(e.negate(), t, o).toVar();
2961
2987
  p(k(u, u).lessThan(.001), () => {
@@ -2964,7 +2990,7 @@ var Ia = f(([e, t, n]) => {
2964
2990
  c.direction.assign(u), c.pdf.assign(1);
2965
2991
  });
2966
2992
  }).Else(() => {
2967
- let l = I(ni, r), u = Ea({
2993
+ let l = I(ni, r), u = Da({
2968
2994
  N: t,
2969
2995
  roughness: l,
2970
2996
  Xi: o
@@ -2972,26 +2998,26 @@ var Ia = f(([e, t, n]) => {
2972
2998
  c.halfVector.assign(u);
2973
2999
  let d = z(i, j(1).div(n), n).toVar();
2974
3000
  p(a.greaterThan(0), () => {
2975
- let e = Pa.wrap(Ia(n, a, J(s)));
3001
+ let e = Fa.wrap(La(n, a, J(s)));
2976
3002
  d.assign(z(i, j(1).div(e.ior), e.ior));
2977
3003
  });
2978
3004
  let f = T(k(u, e), .001, 1), m = ue(e.negate(), u, d).toVar();
2979
3005
  p(k(m, m).lessThan(.001), () => {
2980
3006
  c.direction.assign(le(e.negate(), u)), c.didReflect.assign(!0);
2981
3007
  let n = T(k(t, u), .001, 1), r = T(k(e, u), .001, 1);
2982
- c.pdf.assign(ya(n, r, l));
3008
+ c.pdf.assign(ba(n, r, l));
2983
3009
  }).Else(() => {
2984
3010
  c.direction.assign(m), c.didReflect.assign(!1);
2985
- let e = T(k(t, u), .001, 1), n = T(k(u, m), .001, 1), r = pa(e, l), i = f.add(d.mul(n)), a = g(n).div(i.mul(i));
3011
+ let e = T(k(t, u), .001, 1), n = T(k(u, m), .001, 1), r = ma(e, l), i = f.add(d.mul(n)), a = g(n).div(i.mul(i));
2986
3012
  c.pdf.assign(r.mul(e).mul(a));
2987
3013
  });
2988
3014
  }), c;
2989
- }), Ba = f(([e, t, n, r, i, a, o]) => {
2990
- let s = Ma({
3015
+ }), Va = f(([e, t, n, r, i, a, o]) => {
3016
+ let s = Na({
2991
3017
  direction: W(0),
2992
3018
  throughput: W(1),
2993
3019
  didReflect: !1
2994
- }).toVar(), c = z(r, t, t.negate()).toVar(), l = e.negate().toVar(), u = z(r, a, n.ior).toVar(), d = z(r, n.ior, o).toVar(), f = g(k(c, e)), m = u.mul(u).div(d.mul(d)).mul(j(1).sub(f.mul(f))).greaterThan(1).toVar(), h = da(d, u), v = z(m, j(1), sa(f, h)).toVar(), y = j(0).toVar();
3020
+ }).toVar(), c = z(r, t, t.negate()).toVar(), l = e.negate().toVar(), u = z(r, a, n.ior).toVar(), d = z(r, n.ior, o).toVar(), f = g(k(c, e)), m = u.mul(u).div(d.mul(d)).mul(j(1).sub(f.mul(f))).greaterThan(1).toVar(), h = fa(d, u), v = z(m, j(1), ca(f, h)).toVar(), y = j(0).toVar();
2995
3021
  p(m, () => {
2996
3022
  y.assign(1);
2997
3023
  }).Else(() => {
@@ -3003,14 +3029,14 @@ var Ia = f(([e, t, n]) => {
3003
3029
  let x = U(J(i).toVar(), J(i).toVar());
3004
3030
  return p(b, () => {
3005
3031
  p(n.roughness.greaterThan(.05), () => {
3006
- let e = Fa.wrap(za(l, c, n.ior, n.roughness, r, j(0), x, i));
3032
+ let e = Ia.wrap(Ba(l, c, n.ior, n.roughness, r, j(0), x, i));
3007
3033
  s.direction.assign(e.direction);
3008
3034
  }).Else(() => {
3009
3035
  s.direction.assign(le(e, c));
3010
3036
  }), s.throughput.assign(n.color.xyz.mul(v).div(I(y, .05)));
3011
3037
  }).Else(() => {
3012
3038
  p(n.roughness.greaterThan(.05).or(n.dispersion.greaterThan(0)), () => {
3013
- let t = Fa.wrap(za(l, c, n.ior, n.roughness, r, n.dispersion, x, i));
3039
+ let t = Ia.wrap(Ba(l, c, n.ior, n.roughness, r, n.dispersion, x, i));
3014
3040
  p(t.didReflect, () => {
3015
3041
  s.direction.assign(t.direction), s.didReflect.assign(!0), s.throughput.assign(n.color.xyz.div(I(j(1).sub(y), .05)));
3016
3042
  }).Else(() => {
@@ -3048,7 +3074,7 @@ var Ia = f(([e, t, n]) => {
3048
3074
  s.direction.assign(ue(e, c, u.div(d))), s.throughput.assign(W(1));
3049
3075
  }), p(s.didReflect.not(), () => {
3050
3076
  s.throughput.mulAssign(n.color.xyz), s.throughput.mulAssign(u.mul(u).div(I(d.mul(d), ti))), p(r.and(n.attenuationDistance.greaterThan(0)), () => {
3051
- s.throughput.mulAssign(La({
3077
+ s.throughput.mulAssign(Ra({
3052
3078
  attenuationColor: n.attenuationColor,
3053
3079
  attenuationDistance: n.attenuationDistance,
3054
3080
  thickness: n.thickness
@@ -3056,8 +3082,8 @@ var Ia = f(([e, t, n]) => {
3056
3082
  }), s.throughput.mulAssign(j(1).sub(v).div(I(j(1).sub(y), .05)));
3057
3083
  });
3058
3084
  }), s;
3059
- }), Va = f(([e, t, n, r, i, a, o, s]) => {
3060
- let c = Na({
3085
+ }), Ha = f(([e, t, n, r, i, a, o, s]) => {
3086
+ let c = Pa({
3061
3087
  continueRay: !1,
3062
3088
  isTransmissive: !1,
3063
3089
  isAlphaSkip: !1,
@@ -3085,17 +3111,17 @@ var Ia = f(([e, t, n]) => {
3085
3111
  });
3086
3112
  }), p(d.not().and(r.transmission.greaterThan(0)).and(a.greaterThan(N(0))), () => {
3087
3113
  p(l.lessThan(r.transmission), () => {
3088
- let t = k(e.direction, n).lessThan(0), i = Ma.wrap(Ba(e.direction, n, r, t, u, o, s));
3114
+ let t = k(e.direction, n).lessThan(0), i = Na.wrap(Va(e.direction, n, r, t, u, o, s));
3089
3115
  c.direction.assign(i.direction), c.throughput.assign(i.throughput), c.continueRay.assign(!0), c.isTransmissive.assign(!0), c.didReflect.assign(i.didReflect), c.entering.assign(t), c.alpha.assign(j(1).sub(r.transmission));
3090
3116
  });
3091
3117
  });
3092
3118
  }), c;
3093
- }), Ha = f(([e, t, n, r]) => {
3119
+ }), Ua = f(([e, t, n, r]) => {
3094
3120
  let i = W(0).toVar();
3095
3121
  return p(r.roughness.greaterThan(.98).and(r.metalness.lessThan(.02)).and(r.transmission.equal(0)).and(r.clearcoat.equal(0)).and(r.iridescence.equal(0)), () => {
3096
3122
  i.assign(r.color.rgb.mul(j(1).sub(r.metalness)).mul($r));
3097
3123
  }).Else(() => {
3098
- let a = Wr.wrap(hi(n, e, t)), o = T(L(fa(r.ior).mul(r.specularColor), r.color.rgb, r.metalness).mul(r.specularIntensity), W(0), W(1)).toVar(), s = r.color.rgb.toVar();
3124
+ let a = Wr.wrap(gi(n, e, t)), o = T(L(pa(r.ior).mul(r.specularColor), r.color.rgb, r.metalness).mul(r.specularIntensity), W(0), W(1)).toVar(), s = r.color.rgb.toVar();
3099
3125
  p(r.dispersion.greaterThan(0).and(r.transmission.greaterThan(.5)), () => {
3100
3126
  let e = T(r.dispersion.mul(.1), 0, .8), t = I(I(s.r, s.g), s.b), n = ae(ae(s.r, s.g), s.b);
3101
3127
  p(t.greaterThan(n), () => {
@@ -3103,12 +3129,12 @@ var Ia = f(([e, t, n]) => {
3103
3129
  s.assign(L(s, r, e.mul(.3)));
3104
3130
  });
3105
3131
  }), p(r.iridescence.greaterThan(0), () => {
3106
- let e = r.iridescenceThicknessRange.y, t = Sa(j(1), r.iridescenceIOR, a.VoH, e, o);
3132
+ let e = r.iridescenceThicknessRange.y, t = Ca(j(1), r.iridescenceIOR, a.VoH, e, o);
3107
3133
  o.assign(L(o, t, r.iridescence));
3108
3134
  });
3109
- let c = pa(a.NoH, r.roughness), l = ga(a.NoV, a.NoL, r.roughness), u = ca(a.VoH, o).toVar(), d = c.mul(l).mul(u).div(I(j(4).mul(a.NoV).mul(a.NoL), ti)).mul(_a(o, a.NoV, r.roughness)), f = va(o, a.NoV, r.roughness), m = W(1).sub(f).mul(j(1).sub(r.metalness)).mul(s).mul($r).add(d).toVar();
3135
+ let c = ma(a.NoH, r.roughness), l = _a(a.NoV, a.NoL, r.roughness), u = la(a.VoH, o).toVar(), d = c.mul(l).mul(u).div(I(j(4).mul(a.NoV).mul(a.NoL), ti)).mul(va(o, a.NoV, r.roughness)), f = ya(o, a.NoV, r.roughness), m = W(1).sub(f).mul(j(1).sub(r.metalness)).mul(s).mul($r).add(d).toVar();
3110
3136
  p(r.sheen.greaterThan(0), () => {
3111
- let e = ma(a.NoH, r.sheenRoughness), t = r.sheenColor.mul(r.sheen).mul(e).mul(a.NoL), n = j(1).sub(r.sheenRoughness).mul(.5).add(.25), o = T(r.sheenColor.mul(r.sheen).mul(n), W(0), W(1)), s = W(1).sub(o);
3137
+ let e = ha(a.NoH, r.sheenRoughness), t = r.sheenColor.mul(r.sheen).mul(e).mul(a.NoL), n = j(1).sub(r.sheenRoughness).mul(.5).add(.25), o = T(r.sheenColor.mul(r.sheen).mul(n), W(0), W(1)), s = W(1).sub(o);
3112
3138
  i.assign(m.mul(s).add(t));
3113
3139
  }).Else(() => {
3114
3140
  i.assign(m);
@@ -3124,16 +3150,16 @@ f(([e, t, n, r, i]) => {
3124
3150
  o.assign(s.greaterThan(ti).select(o.div(he(s)), W(0, 0, 1)));
3125
3151
  let c = I(k(n, t), ti), l = I(k(n, o), ti), u = I(k(e, o), ti);
3126
3152
  p(i.NoV.mul(c).lessThan(0).and(r.transmission.greaterThan(0)), () => {
3127
- a.assign(Ha(e, t, n, r));
3153
+ a.assign(Ua(e, t, n, r));
3128
3154
  }).Else(() => {
3129
3155
  let e = i.F0.toVar();
3130
3156
  p(r.iridescence.greaterThan(0), () => {
3131
- let t = r.iridescenceThicknessRange.y, n = Sa(j(1), r.iridescenceIOR, u, t, e);
3157
+ let t = r.iridescenceThicknessRange.y, n = Ca(j(1), r.iridescenceIOR, u, t, e);
3132
3158
  e.assign(T(L(e, n, r.iridescence), W(0), W(1)));
3133
3159
  });
3134
- let t = l.mul(l).mul(i.alpha2.sub(1)).add(1), n = i.alpha2.div(I(j(Qr).mul(t).mul(t), ti)), o = c.div(c.mul(j(1).sub(i.k)).add(i.k)), s = i.NoV.div(i.NoV.mul(j(1).sub(i.k)).add(i.k)), d = o.mul(s), f = ca(u, e).toVar(), m = I(j(4).mul(i.NoV).mul(c), ti), h = n.mul(d).mul(f).div(m).mul(_a(e, i.NoV, r.roughness)), g = va(e, i.NoV, r.roughness), _ = W(1).sub(g).mul(j(1).sub(r.metalness)).mul(r.color.rgb).mul($r).add(h).toVar();
3160
+ let t = l.mul(l).mul(i.alpha2.sub(1)).add(1), n = i.alpha2.div(I(j(Qr).mul(t).mul(t), ti)), o = c.div(c.mul(j(1).sub(i.k)).add(i.k)), s = i.NoV.div(i.NoV.mul(j(1).sub(i.k)).add(i.k)), d = o.mul(s), f = la(u, e).toVar(), m = I(j(4).mul(i.NoV).mul(c), ti), h = n.mul(d).mul(f).div(m).mul(va(e, i.NoV, r.roughness)), g = ya(e, i.NoV, r.roughness), _ = W(1).sub(g).mul(j(1).sub(r.metalness)).mul(r.color.rgb).mul($r).add(h).toVar();
3135
3161
  p(r.sheen.greaterThan(0), () => {
3136
- let e = ma(l, r.sheenRoughness), t = r.sheenColor.mul(r.sheen).mul(e).mul(c), n = j(1).sub(r.sheenRoughness).mul(.5).add(.25), i = T(r.sheenColor.mul(r.sheen).mul(n), W(0), W(1)), o = W(1).sub(i);
3162
+ let e = ha(l, r.sheenRoughness), t = r.sheenColor.mul(r.sheen).mul(e).mul(c), n = j(1).sub(r.sheenRoughness).mul(.5).add(.25), i = T(r.sheenColor.mul(r.sheen).mul(n), W(0), W(1)), o = W(1).sub(i);
3137
3163
  a.assign(_.mul(o).add(t));
3138
3164
  }).Else(() => {
3139
3165
  a.assign(_);
@@ -3141,50 +3167,50 @@ f(([e, t, n, r, i]) => {
3141
3167
  });
3142
3168
  }), a;
3143
3169
  }), f(([e, t]) => {
3144
- let n = sa(t, j(.04));
3170
+ let n = ca(t, j(.04));
3145
3171
  return j(1).sub(e.mul(n).mul(j(2).sub(n)));
3146
3172
  });
3147
- var Ua = f(([e, t]) => {
3148
- let n = T(L(fa(t.ior).mul(t.specularColor), t.color.rgb, t.metalness).mul(t.specularIntensity), W(0), W(1)).toVar(), r = pa(e.NoH, t.roughness), i = ga(e.NoV, e.NoL, t.roughness), a = ca(e.VoH, n).toVar(), o = r.mul(i).mul(a).div(I(j(4).mul(e.NoV).mul(e.NoL), ti)).mul(_a(n, e.NoV, t.roughness)), s = va(n, e.NoV, t.roughness), c = W(1).sub(s).mul(j(1).sub(t.metalness)).mul(t.color.rgb).div(Qr).add(o), l = I(t.clearcoatRoughness, ri), u = pa(e.NoH, l), d = ga(e.NoV, e.NoL, l), f = sa(e.VoH, j(.04)), p = u.mul(d).mul(f).div(I(j(4).mul(e.NoV).mul(e.NoL), ti)), m = j(1).sub(t.clearcoat.mul(f).mul(j(2).sub(f)));
3173
+ var Wa = f(([e, t]) => {
3174
+ let n = T(L(pa(t.ior).mul(t.specularColor), t.color.rgb, t.metalness).mul(t.specularIntensity), W(0), W(1)).toVar(), r = ma(e.NoH, t.roughness), i = _a(e.NoV, e.NoL, t.roughness), a = la(e.VoH, n).toVar(), o = r.mul(i).mul(a).div(I(j(4).mul(e.NoV).mul(e.NoL), ti)).mul(va(n, e.NoV, t.roughness)), s = ya(n, e.NoV, t.roughness), c = W(1).sub(s).mul(j(1).sub(t.metalness)).mul(t.color.rgb).div(Qr).add(o), l = I(t.clearcoatRoughness, ri), u = ma(e.NoH, l), d = _a(e.NoV, e.NoL, l), f = ca(e.VoH, j(.04)), p = u.mul(d).mul(f).div(I(j(4).mul(e.NoV).mul(e.NoL), ti)), m = j(1).sub(t.clearcoat.mul(f).mul(j(2).sub(f)));
3149
3175
  return c.mul(m).add(W(p).mul(t.clearcoat));
3150
- }), Wa = Xt({
3176
+ }), Ga = Xt({
3151
3177
  brdf: "vec3",
3152
3178
  L: "vec3",
3153
3179
  pdf: "float"
3154
- }), Ga = f(([e, t, n, r, i]) => {
3180
+ }), Ka = f(([e, t, n, r, i]) => {
3155
3181
  let a = t.normal, o = e.direction.negate(), s = I(n.clearcoatRoughness, ri), c = I(n.roughness, ri), l = j(1).sub(c).mul(j(.5).add(j(.5).mul(n.metalness))).toVar(), u = n.clearcoat.mul(j(1).sub(s)).toVar(), d = j(1).sub(l).mul(j(1).sub(n.metalness)).toVar(), f = l.add(u).add(d);
3156
3182
  l.divAssign(f), u.divAssign(f), d.divAssign(f);
3157
3183
  let m = J(i), h = W(0).toVar(), g = W(0).toVar();
3158
3184
  p(m.lessThan(u), () => {
3159
- g.assign(Ea({
3185
+ g.assign(Da({
3160
3186
  N: a,
3161
3187
  roughness: s,
3162
3188
  Xi: r
3163
3189
  })), h.assign(le(o.negate(), g));
3164
3190
  }).ElseIf(m.lessThan(u.add(l)), () => {
3165
- g.assign(Ea({
3191
+ g.assign(Da({
3166
3192
  N: a,
3167
3193
  roughness: c,
3168
3194
  Xi: r
3169
3195
  })), h.assign(le(o.negate(), g));
3170
3196
  }).Else(() => {
3171
- h.assign(Da({
3197
+ h.assign(Oa({
3172
3198
  N: a,
3173
3199
  xi: r
3174
3200
  })), g.assign(R(o.add(h)));
3175
3201
  });
3176
- let _ = Wr.wrap(hi(a, o, h)), v = pa(_.NoH, s).mul(_.NoH).div(j(4).mul(_.VoH)).mul(u), y = pa(_.NoH, c).mul(_.NoH).div(j(4).mul(_.VoH)).mul(l), b = _.NoL.div(Qr).mul(d), x = I(v.add(y).add(b), .001);
3177
- return Wa({
3178
- brdf: Ua(_, n),
3202
+ let _ = Wr.wrap(gi(a, o, h)), v = ma(_.NoH, s).mul(_.NoH).div(j(4).mul(_.VoH)).mul(u), y = ma(_.NoH, c).mul(_.NoH).div(j(4).mul(_.VoH)).mul(l), b = _.NoL.div(Qr).mul(d), x = I(v.add(y).add(b), .001);
3203
+ return Ga({
3204
+ brdf: Wa(_, n),
3179
3205
  L: h,
3180
3206
  pdf: x
3181
3207
  });
3182
- }), Ka = Xt({
3208
+ }), qa = Xt({
3183
3209
  direction: "vec3",
3184
3210
  color: "vec3",
3185
3211
  intensity: "float",
3186
3212
  angle: "float"
3187
- }), qa = Xt({
3213
+ }), Ja = Xt({
3188
3214
  position: "vec3",
3189
3215
  u: "vec3",
3190
3216
  v: "vec3",
@@ -3192,13 +3218,13 @@ var Ua = f(([e, t]) => {
3192
3218
  intensity: "float",
3193
3219
  normal: "vec3",
3194
3220
  area: "float"
3195
- }), Ja = Xt({
3221
+ }), Ya = Xt({
3196
3222
  position: "vec3",
3197
3223
  color: "vec3",
3198
3224
  intensity: "float",
3199
3225
  distance: "float",
3200
3226
  decay: "float"
3201
- }), Ya = Xt({
3227
+ }), Xa = Xt({
3202
3228
  position: "vec3",
3203
3229
  direction: "vec3",
3204
3230
  color: "vec3",
@@ -3207,30 +3233,30 @@ var Ua = f(([e, t]) => {
3207
3233
  penumbra: "float",
3208
3234
  distance: "float",
3209
3235
  decay: "float"
3210
- }), Xa = Xt({
3236
+ }), Za = Xt({
3211
3237
  direction: "vec3",
3212
3238
  emission: "vec3",
3213
3239
  pdf: "float",
3214
3240
  distance: "float",
3215
3241
  lightType: "int",
3216
3242
  valid: "bool"
3217
- }), Za = Xt({
3243
+ }), Qa = Xt({
3218
3244
  direction: "vec3",
3219
3245
  throughput: "vec3",
3220
3246
  misWeight: "float",
3221
3247
  pdf: "float",
3222
3248
  combinedPdf: "float"
3223
- }), Qa = f(([e, t]) => {
3249
+ }), $a = f(([e, t]) => {
3224
3250
  let n = t.mul(8);
3225
- return Ka({
3251
+ return qa({
3226
3252
  direction: R(W(e.element(n), e.element(n.add(1)), e.element(n.add(2)))),
3227
3253
  color: W(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
3228
3254
  intensity: e.element(n.add(6)),
3229
3255
  angle: e.element(n.add(7))
3230
3256
  });
3231
- }), $a = f(([e, t]) => {
3257
+ }), eo = f(([e, t]) => {
3232
3258
  let n = t.mul(13), r = W(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = W(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a = D(r, i);
3233
- return qa({
3259
+ return Ja({
3234
3260
  position: W(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
3235
3261
  u: r,
3236
3262
  v: i,
@@ -3239,18 +3265,18 @@ var Ua = f(([e, t]) => {
3239
3265
  normal: R(a),
3240
3266
  area: te(a).mul(4)
3241
3267
  });
3242
- }), eo = f(([e, t]) => {
3268
+ }), to = f(([e, t]) => {
3243
3269
  let n = t.mul(9);
3244
- return Ja({
3270
+ return Ya({
3245
3271
  position: W(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
3246
3272
  color: W(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
3247
3273
  intensity: e.element(n.add(6)),
3248
3274
  distance: e.element(n.add(7)),
3249
3275
  decay: e.element(n.add(8))
3250
3276
  });
3251
- }), to = f(([e, t]) => {
3277
+ }), no = f(([e, t]) => {
3252
3278
  let n = t.mul(14);
3253
- return Ya({
3279
+ return Xa({
3254
3280
  position: W(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
3255
3281
  direction: R(W(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5)))),
3256
3282
  color: W(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))),
@@ -3260,7 +3286,7 @@ var Ua = f(([e, t]) => {
3260
3286
  distance: e.element(n.add(12)),
3261
3287
  decay: e.element(n.add(13))
3262
3288
  });
3263
- }), no = /* @__PURE__ */ K("\n fn isDirectionValid( direction: vec3f, surfaceNormal: vec3f ) -> bool {\n return dot( direction, surfaceNormal ) > 0.0f;\n }\n"), ro = /* @__PURE__ */ K("\n fn getDistanceAttenuation( lightDistance: f32, cutoffDistance: f32, decayExponent: f32 ) -> f32 {\n var distanceFalloff = 1.0f / max( pow( lightDistance, decayExponent ), 0.01f );\n if ( cutoffDistance > 0.0f ) {\n let ratio = pow( lightDistance / cutoffDistance, 4.0f );\n distanceFalloff *= pow( clamp( 1.0f - ratio, 0.0f, 1.0f ), 2.0f );\n }\n return distanceFalloff;\n }\n"), io = /* @__PURE__ */ K("\n fn getSpotAttenuation( coneCosine: f32, penumbraCosine: f32, angleCosine: f32 ) -> f32 {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n }\n"), ao = /* @__PURE__ */ K("\n fn sampleCone( direction: vec3f, halfAngle: f32, xi: vec2f ) -> vec3f {\n let cosHalfAngle = cos( halfAngle );\n let cosTheta = cosHalfAngle + xi.x * ( 1.0f - cosHalfAngle );\n let sinTheta = sqrt( 1.0f - cosTheta * cosTheta );\n let phi = 6.28318530717958647692f * xi.y;\n // Create local coordinate system\n let up = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( 0.0f, 0.0f, 1.0f ), abs( direction.z ) < 0.999f );\n let tangent = normalize( cross( up, direction ) );\n let bitangent = cross( direction, tangent );\n // Convert to world space\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( tangent * localDir.x + bitangent * localDir.y + direction * localDir.z );\n }\n"), oo = f(([e, t, n]) => {
3289
+ }), ro = /* @__PURE__ */ K("\n fn isDirectionValid( direction: vec3f, surfaceNormal: vec3f ) -> bool {\n return dot( direction, surfaceNormal ) > 0.0f;\n }\n"), io = /* @__PURE__ */ K("\n fn getDistanceAttenuation( lightDistance: f32, cutoffDistance: f32, decayExponent: f32 ) -> f32 {\n var distanceFalloff = 1.0f / max( pow( lightDistance, decayExponent ), 0.01f );\n if ( cutoffDistance > 0.0f ) {\n let ratio = pow( lightDistance / cutoffDistance, 4.0f );\n distanceFalloff *= pow( clamp( 1.0f - ratio, 0.0f, 1.0f ), 2.0f );\n }\n return distanceFalloff;\n }\n"), ao = /* @__PURE__ */ K("\n fn getSpotAttenuation( coneCosine: f32, penumbraCosine: f32, angleCosine: f32 ) -> f32 {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n }\n"), oo = /* @__PURE__ */ K("\n fn sampleCone( direction: vec3f, halfAngle: f32, xi: vec2f ) -> vec3f {\n let cosHalfAngle = cos( halfAngle );\n let cosTheta = cosHalfAngle + xi.x * ( 1.0f - cosHalfAngle );\n let sinTheta = sqrt( 1.0f - cosTheta * cosTheta );\n let phi = 6.28318530717958647692f * xi.y;\n // Create local coordinate system\n let up = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( 0.0f, 0.0f, 1.0f ), abs( direction.z ) < 0.999f );\n let tangent = normalize( cross( up, direction ) );\n let bitangent = cross( direction, tangent );\n // Convert to world space\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( tangent * localDir.x + bitangent * localDir.y + direction * localDir.z );\n }\n"), so = f(([e, t, n]) => {
3264
3290
  let r = e.normal, i = k(r, n), a = j(-1).toVar();
3265
3291
  return p(i.lessThan(-1e-4), () => {
3266
3292
  let o = j(1).div(i), s = k(e.position.sub(t), r).mul(o).toVar();
@@ -3271,23 +3297,23 @@ var Ua = f(([e, t]) => {
3271
3297
  });
3272
3298
  });
3273
3299
  }), a;
3274
- }), so = null, co = null;
3275
- function lo(e) {
3276
- so = e;
3277
- }
3300
+ }), co = null, lo = null;
3278
3301
  function uo(e) {
3279
3302
  co = e;
3280
3303
  }
3304
+ function fo(e) {
3305
+ lo = e;
3306
+ }
3281
3307
  f(([e, t, n]) => {
3282
3308
  let r = j(1).toVar();
3283
3309
  return p(e.material.transmission.greaterThan(0), () => {
3284
- let n = k(t, e.normal).lessThan(0), i = Ra(t, e.normal, e.material, n);
3310
+ let n = k(t, e.normal).lessThan(0), i = za(t, e.normal, e.material, n);
3285
3311
  r.assign(j(1).sub(i));
3286
3312
  }).ElseIf(e.material.transparent, () => {
3287
3313
  r.assign(e.material.opacity);
3288
3314
  }), r;
3289
3315
  });
3290
- var fo = f(([e, t, n, r, i, a, o, s]) => {
3316
+ var po = f(([e, t, n, r, i, a, o, s]) => {
3291
3317
  let c = j(1).toVar(), l = e.toVar(), d = j(n).toVar();
3292
3318
  return m({
3293
3319
  start: N(0),
@@ -3304,15 +3330,15 @@ var fo = f(([e, t, n, r, i, a, o, s]) => {
3304
3330
  p(f.greaterThan(.5), () => {
3305
3331
  c.assign(0), u();
3306
3332
  });
3307
- let m = zr.wrap(Ci(n.materialIndex, s)), h = w(!1).toVar();
3308
- co && p(co.equal(N(1)), () => {
3333
+ let m = zr.wrap(wi(n.materialIndex, s)), h = w(!1).toVar();
3334
+ lo && p(lo.equal(N(1)), () => {
3309
3335
  let e = j(1).toVar();
3310
- so && p(m.albedoMapIndex.greaterThanEqual(N(0)), () => {
3311
- let t = n.uv.x, r = n.uv.y, i = j(1).sub(t).sub(r), a = N(8), s = $(o, n.triangleIndex, N(6), a), c = $(o, n.triangleIndex, N(7), a), l = Hi({
3336
+ co && p(m.albedoMapIndex.greaterThanEqual(N(0)), () => {
3337
+ let t = n.uv.x, r = n.uv.y, i = j(1).sub(t).sub(r), a = N(8), s = $(o, n.triangleIndex, N(6), a), c = $(o, n.triangleIndex, N(7), a), l = Ui({
3312
3338
  uv: s.xy.mul(i).add(s.zw.mul(t)).add(c.xy.mul(r)),
3313
3339
  transform: m.albedoTransform
3314
3340
  });
3315
- e.assign(ve(so, l).depth(N(m.albedoMapIndex)).a);
3341
+ e.assign(ve(co, l).depth(N(m.albedoMapIndex)).a);
3316
3342
  }), p(m.alphaMode.equal(N(1)), () => {
3317
3343
  let t = m.color.a.mul(e), n = z(m.alphaTest.greaterThan(0), m.alphaTest, j(.5));
3318
3344
  p(t.lessThan(n), () => {
@@ -3330,10 +3356,10 @@ var fo = f(([e, t, n, r, i, a, o, s]) => {
3330
3356
  }).ElseIf(m.transmission.greaterThan(0), () => {
3331
3357
  let e = k(t, n.normal).lessThan(0), r = z(e, n.normal, n.normal.negate());
3332
3358
  p(e.not().and(m.attenuationDistance.greaterThan(0)), () => {
3333
- let e = te(n.hitPoint.sub(l)), t = La(m.attenuationColor, m.attenuationDistance, e);
3359
+ let e = te(n.hitPoint.sub(l)), t = Ra(m.attenuationColor, m.attenuationDistance, e);
3334
3360
  c.mulAssign(t.x.add(t.y).add(t.z).div(3));
3335
3361
  });
3336
- let i = sa(g(k(t, r)), da(m.ior, j(1))), a = j(1).sub(i).mul(m.transmission);
3362
+ let i = ca(g(k(t, r)), fa(m.ior, j(1))), a = j(1).sub(i).mul(m.transmission);
3337
3363
  c.mulAssign(a), p(c.lessThan(.005), () => {
3338
3364
  c.assign(0), u();
3339
3365
  }), l.assign(n.hitPoint.add(t.mul(.001))), d.subAssign(n.dst.add(.001));
@@ -3345,14 +3371,14 @@ var fo = f(([e, t, n, r, i, a, o, s]) => {
3345
3371
  c.assign(0), u();
3346
3372
  });
3347
3373
  }), c;
3348
- }), po = f(([e, t, n]) => {
3374
+ }), mo = f(([e, t, n]) => {
3349
3375
  let r = I(j(1e-4), te(e).mul(1e-6)).toVar().toVar();
3350
3376
  return p(n.transmission.greaterThan(0), () => {
3351
3377
  r.mulAssign(2);
3352
3378
  }), p(n.roughness.lessThan(.1), () => {
3353
3379
  r.mulAssign(1.5);
3354
3380
  }), t.mul(r);
3355
- }), mo = f(([e, t, n, r, i]) => {
3381
+ }), ho = f(([e, t, n, r, i]) => {
3356
3382
  let a = I(j(0), k(n, e.direction)), o = j(0).toVar();
3357
3383
  return p(a.greaterThan(0), () => {
3358
3384
  let t = e.intensity.mul(k(e.color, ai)), n = j(1).toVar();
@@ -3364,7 +3390,7 @@ var fo = f(([e, t, n, r, i, a, o, s]) => {
3364
3390
  let s = j(1).div(j(1).add(j(i).mul(.5)));
3365
3391
  o.assign(t.mul(a).mul(n).mul(s));
3366
3392
  }), o;
3367
- }), ho = f(([e, t, n, r]) => {
3393
+ }), go = f(([e, t, n, r]) => {
3368
3394
  let i = e.position.sub(t), a = te(i), o = a.mul(a), s = i.div(a), c = I(k(n, s), 0), l = j(0).toVar();
3369
3395
  return p(c.greaterThan(0), () => {
3370
3396
  let t = I(k(s, e.normal).negate(), 0);
@@ -3382,7 +3408,7 @@ var fo = f(([e, t, n, r, i, a, o, s]) => {
3382
3408
  }), l.assign(i.mul(n).mul(c).mul(t).mul(a));
3383
3409
  });
3384
3410
  }), l;
3385
- }), go = f(([e, t, n, r]) => {
3411
+ }), _o = f(([e, t, n, r]) => {
3386
3412
  let i = e.position.sub(t), a = k(i, i), o = j(0).toVar();
3387
3413
  return p(a.greaterThanEqual(.001), () => {
3388
3414
  let t = he(a), s = i.div(t), c = I(j(0), k(n, s));
@@ -3399,7 +3425,7 @@ var fo = f(([e, t, n, r, i, a, o, s]) => {
3399
3425
  }), o.assign(n.mul(t).mul(c).mul(i));
3400
3426
  });
3401
3427
  }), o;
3402
- }), _o = f(([e, t, n, r]) => {
3428
+ }), vo = f(([e, t, n, r]) => {
3403
3429
  let i = e.position.sub(t), a = k(i, i), o = j(0).toVar();
3404
3430
  return p(a.greaterThanEqual(.001), () => {
3405
3431
  let t = i.div(he(a)), s = I(j(0), k(n, t));
@@ -3411,7 +3437,7 @@ var fo = f(([e, t, n, r, i, a, o, s]) => {
3411
3437
  });
3412
3438
  });
3413
3439
  }), o;
3414
- }), vo = f(([e, t, n, r]) => {
3440
+ }), yo = f(([e, t, n, r]) => {
3415
3441
  let i = I(j(0), k(t, e.direction)), a = w(!1).toVar();
3416
3442
  return p(e.intensity.lessThanEqual(.001).or(i.lessThanEqual(.001)), () => {
3417
3443
  a.assign(!0);
@@ -3427,11 +3453,11 @@ var fo = f(([e, t, n, r, i, a, o, s]) => {
3427
3453
  });
3428
3454
  f(([e, t, n, r, i, a, o, s, c, l, u]) => {
3429
3455
  let d = W(0).toVar();
3430
- return p(vo(e, n, i, s).not(), () => {
3431
- let f = po(t, n, i), m = t.add(f), h = W(0).toVar(), g = j(1e6).toVar();
3456
+ return p(yo(e, n, i, s).not(), () => {
3457
+ let f = mo(t, n, i), m = t.add(f), h = W(0).toVar(), g = j(1e6).toVar();
3432
3458
  p(e.angle.greaterThan(.001), () => {
3433
3459
  let t = U(J(c).toVar(), J(c).toVar()), n = e.angle.mul(.5);
3434
- h.assign(ao({
3460
+ h.assign(oo({
3435
3461
  direction: e.direction,
3436
3462
  halfAngle: n,
3437
3463
  xi: t
@@ -3463,9 +3489,9 @@ f(([e, t, n, r, i, a, o, s, c, l, u]) => {
3463
3489
  });
3464
3490
  }), d;
3465
3491
  }), f(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
3466
- let m = W(0).toVar(), h = ho(e, t, n, i);
3492
+ let m = W(0).toVar(), h = go(e, t, n, i);
3467
3493
  return p(h.greaterThanEqual(.001), () => {
3468
- let g = po(t, n, i), _ = t.add(g), v = i.roughness.greaterThan(.7).and(i.metalness.lessThan(.3)), y = i.roughness.lessThan(.3).or(i.metalness.greaterThan(.7)), b = c.equal(N(0));
3494
+ let g = mo(t, n, i), _ = t.add(g), v = i.roughness.greaterThan(.7).and(i.metalness.lessThan(.3)), y = i.roughness.lessThan(.3).or(i.metalness.greaterThan(.7)), b = c.equal(N(0));
3469
3495
  p(b.or(v).or(h.greaterThan(.1).and(y.not())), () => {
3470
3496
  let h = f(s, c, l), g = e.position.add(e.u.mul(h.x.sub(.5))).add(e.v.mul(h.y.sub(.5))).sub(t), v = k(g, g), y = he(v), x = g.div(y), S = I(j(0), k(n, x)), C = I(j(0), k(x, e.normal).negate());
3471
3497
  p(S.greaterThan(0).and(C.greaterThan(0)), () => {
@@ -3480,7 +3506,7 @@ f(([e, t, n, r, i, a, o, s, c, l, u]) => {
3480
3506
  });
3481
3507
  }), p(b.or(y).and(o.pdf.greaterThan(0)), () => {
3482
3508
  p(k(e.position.sub(_), o.direction).greaterThan(0), () => {
3483
- let t = oo(e, _, o.direction);
3509
+ let t = so(e, _, o.direction);
3484
3510
  p(t.greaterThan(0), () => {
3485
3511
  let r = u(_, o.direction, t, l);
3486
3512
  p(r.greaterThan(0), () => {
@@ -3502,7 +3528,7 @@ f(([e, t, n, r, i, a, o, s, c, l, u]) => {
3502
3528
  return p(m.lessThanEqual(1e3), () => {
3503
3529
  let a = f.div(m), o = k(n, a);
3504
3530
  p(o.greaterThan(0), () => {
3505
- let s = j(1).div(m.mul(m)), f = e.color.mul(e.intensity).mul(s), h = po(t, n, i), g = l(t.add(h), a, m.sub(.001), c);
3531
+ let s = j(1).div(m.mul(m)), f = e.color.mul(e.intensity).mul(s), h = mo(t, n, i), g = l(t.add(h), a, m.sub(.001), c);
3506
3532
  p(g.greaterThan(0), () => {
3507
3533
  let e = u(r, a, n, i);
3508
3534
  d.assign(e.mul(f).mul(o).mul(g));
@@ -3516,7 +3542,7 @@ f(([e, t, n, r, i, a, o, s, c, l, u]) => {
3516
3542
  p(o.greaterThan(0), () => {
3517
3543
  let s = k(a.negate(), e.direction), f = E(e.angle);
3518
3544
  p(s.greaterThanEqual(f), () => {
3519
- let h = me(f, f.add(.1), s), g = j(1).div(m.mul(m)), _ = e.color.mul(e.intensity).mul(g).mul(h), v = po(t, n, i), y = l(t.add(v), a, m.sub(.001), c);
3545
+ let h = me(f, f.add(.1), s), g = j(1).div(m.mul(m)), _ = e.color.mul(e.intensity).mul(g).mul(h), v = mo(t, n, i), y = l(t.add(v), a, m.sub(.001), c);
3520
3546
  p(y.greaterThan(0), () => {
3521
3547
  let e = u(r, a, n, i);
3522
3548
  d.assign(e.mul(_).mul(o).mul(y));
@@ -3527,8 +3553,8 @@ f(([e, t, n, r, i, a, o, s, c, l, u]) => {
3527
3553
  });
3528
3554
  //#endregion
3529
3555
  //#region src/TSL/LightsSampling.js
3530
- var yo = 2 * Qr;
3531
- f(() => Xa({
3556
+ var bo = 2 * Qr;
3557
+ f(() => Za({
3532
3558
  valid: w(!1),
3533
3559
  direction: W(0, 1, 0),
3534
3560
  emission: W(0),
@@ -3536,7 +3562,7 @@ f(() => Xa({
3536
3562
  pdf: j(0),
3537
3563
  lightType: N(2)
3538
3564
  }));
3539
- var bo = f(([e, t, n, r]) => {
3565
+ var xo = f(([e, t, n, r]) => {
3540
3566
  let i = w(!1).toVar(), a = W(0, 1, 0).toVar(), o = W(0).toVar(), s = j(0).toVar(), c = j(0).toVar(), l = N(2).toVar();
3541
3567
  return p(e.area.greaterThan(0), () => {
3542
3568
  let u = e.position.add(e.u.mul(n.x.mul(2).sub(1))).add(e.v.mul(n.y.mul(2).sub(1))).toVar().sub(t).toVar(), d = k(u, u).toVar();
@@ -3544,7 +3570,7 @@ var bo = f(([e, t, n, r]) => {
3544
3570
  let t = he(d).toVar(), n = u.div(t).toVar(), f = R(D(e.u, e.v)).toVar(), p = k(n.negate(), f).toVar();
3545
3571
  l.assign(N(1)), o.assign(e.color.mul(e.intensity)), s.assign(t), a.assign(n), c.assign(d.div(I(e.area.mul(I(p, .001)), 1e-10)).mul(r)), i.assign(p.greaterThan(0));
3546
3572
  });
3547
- }), Xa({
3573
+ }), Za({
3548
3574
  valid: i,
3549
3575
  direction: a,
3550
3576
  emission: o,
@@ -3556,12 +3582,12 @@ var bo = f(([e, t, n, r]) => {
3556
3582
  f(([e, t, n, r]) => {
3557
3583
  let i = w(!1).toVar(), a = W(0, 1, 0).toVar(), o = W(0).toVar(), s = j(0).toVar(), c = j(0).toVar(), l = N(2).toVar();
3558
3584
  return p(e.area.greaterThan(0), () => {
3559
- let u = j(.5).mul(he(n.x)).toVar(), d = n.y.mul(yo).toVar(), f = u.mul(E(d)).toVar(), m = u.mul(pe(d)).toVar(), h = e.position.add(e.u.mul(f)).add(e.v.mul(m)).toVar().sub(t).toVar(), g = k(h, h).toVar();
3585
+ let u = j(.5).mul(he(n.x)).toVar(), d = n.y.mul(bo).toVar(), f = u.mul(E(d)).toVar(), m = u.mul(pe(d)).toVar(), h = e.position.add(e.u.mul(f)).add(e.v.mul(m)).toVar().sub(t).toVar(), g = k(h, h).toVar();
3560
3586
  p(g.greaterThanEqual(1e-10), () => {
3561
3587
  let t = he(g).toVar(), n = h.div(t).toVar(), u = R(D(e.u, e.v)).toVar(), d = k(n.negate(), u).toVar();
3562
3588
  l.assign(N(1)), o.assign(e.color.mul(e.intensity)), s.assign(t), a.assign(n), c.assign(g.div(I(e.area.mul(I(d, .001)), 1e-10)).mul(r)), i.assign(d.greaterThan(0));
3563
3589
  });
3564
- }), Xa({
3590
+ }), Za({
3565
3591
  valid: i,
3566
3592
  direction: a,
3567
3593
  emission: o,
@@ -3570,23 +3596,23 @@ f(([e, t, n, r]) => {
3570
3596
  lightType: l
3571
3597
  });
3572
3598
  });
3573
- var xo = f(([e, t, n, r]) => {
3599
+ var So = f(([e, t, n, r]) => {
3574
3600
  let i = w(!1).toVar(), a = W(0, 1, 0).toVar(), o = W(0).toVar(), s = j(0).toVar(), c = j(0).toVar(), l = N(3).toVar(), u = e.position.sub(t).toVar(), d = te(u).toVar();
3575
3601
  return p(d.greaterThanEqual(1e-10), () => {
3576
3602
  let t = u.div(d).toVar(), n = k(t.negate(), e.direction).toVar(), l = E(e.angle).toVar();
3577
3603
  a.assign(t), s.assign(d), c.assign(r), i.assign(n.greaterThanEqual(l)), p(i, () => {
3578
- let t = io({
3604
+ let t = ao({
3579
3605
  coneCosine: l,
3580
3606
  penumbraCosine: E(e.angle.mul(j(1).sub(e.penumbra))).max(l.add(1e-5)).toVar(),
3581
3607
  angleCosine: n
3582
- }), r = ro({
3608
+ }), r = io({
3583
3609
  lightDistance: d,
3584
3610
  cutoffDistance: e.distance,
3585
3611
  decayExponent: e.decay
3586
3612
  });
3587
3613
  o.assign(e.color.mul(e.intensity).mul(r).mul(t));
3588
3614
  });
3589
- }), Xa({
3615
+ }), Za({
3590
3616
  valid: i,
3591
3617
  direction: a,
3592
3618
  emission: o,
@@ -3594,16 +3620,16 @@ var xo = f(([e, t, n, r]) => {
3594
3620
  pdf: c,
3595
3621
  lightType: l
3596
3622
  });
3597
- }), So = f(([e, t, n]) => {
3623
+ }), Co = f(([e, t, n]) => {
3598
3624
  let r = w(!1).toVar(), i = W(0, 1, 0).toVar(), a = W(0).toVar(), o = j(0).toVar(), s = j(0).toVar(), c = N(2).toVar(), l = e.position.sub(t).toVar(), u = te(l).toVar();
3599
3625
  return p(u.greaterThanEqual(1e-10), () => {
3600
- let t = l.div(u).toVar(), d = ro({
3626
+ let t = l.div(u).toVar(), d = io({
3601
3627
  lightDistance: u,
3602
3628
  cutoffDistance: e.distance,
3603
3629
  decayExponent: e.decay
3604
3630
  });
3605
3631
  c.assign(N(2)), i.assign(t), o.assign(u), a.assign(e.color.mul(e.intensity).mul(d)), s.assign(n), r.assign(w(!0));
3606
- }), Xa({
3632
+ }), Za({
3607
3633
  valid: r,
3608
3634
  direction: i,
3609
3635
  emission: a,
@@ -3611,7 +3637,7 @@ var xo = f(([e, t, n, r]) => {
3611
3637
  pdf: s,
3612
3638
  lightType: c
3613
3639
  });
3614
- }), Co = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h]) => {
3640
+ }), wo = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h]) => {
3615
3641
  let _ = w(!1).toVar(), v = W(0, 1, 0).toVar(), y = W(0).toVar(), b = j(0).toVar(), x = j(0).toVar(), S = N(2).toVar(), C = s.add(l).add(d).add(h).toVar();
3616
3642
  return p(C.greaterThan(N(0)), () => {
3617
3643
  let T = j(0).toVar(), O = N(0).toVar();
@@ -3623,8 +3649,8 @@ var xo = f(([e, t, n, r]) => {
3623
3649
  condition: "<"
3624
3650
  }, ({ i: r }) => {
3625
3651
  p(O.lessThan(N(16)), () => {
3626
- let a = Ka.wrap(Qa(o, r));
3627
- T.addAssign(mo(a, e, t, n, i)), O.addAssign(1);
3652
+ let a = qa.wrap($a(o, r));
3653
+ T.addAssign(ho(a, e, t, n, i)), O.addAssign(1);
3628
3654
  });
3629
3655
  });
3630
3656
  }), p(l.greaterThan(N(0)), () => {
@@ -3635,7 +3661,7 @@ var xo = f(([e, t, n, r]) => {
3635
3661
  condition: "<"
3636
3662
  }, ({ i: r }) => {
3637
3663
  p(O.lessThan(N(16)), () => {
3638
- let i = qa.wrap($a(c, r)), a = z(i.intensity.greaterThan(0), ho(i, e, t, n), j(0));
3664
+ let i = Ja.wrap(eo(c, r)), a = z(i.intensity.greaterThan(0), go(i, e, t, n), j(0));
3639
3665
  T.addAssign(a), O.addAssign(1);
3640
3666
  });
3641
3667
  });
@@ -3647,8 +3673,8 @@ var xo = f(([e, t, n, r]) => {
3647
3673
  condition: "<"
3648
3674
  }, ({ i: r }) => {
3649
3675
  p(O.lessThan(N(16)), () => {
3650
- let i = Ja.wrap(eo(u, r));
3651
- T.addAssign(go(i, e, t, n)), O.addAssign(1);
3676
+ let i = Ya.wrap(to(u, r));
3677
+ T.addAssign(_o(i, e, t, n)), O.addAssign(1);
3652
3678
  });
3653
3679
  });
3654
3680
  }), p(h.greaterThan(N(0)), () => {
@@ -3659,8 +3685,8 @@ var xo = f(([e, t, n, r]) => {
3659
3685
  condition: "<"
3660
3686
  }, ({ i: r }) => {
3661
3687
  p(O.lessThan(N(16)), () => {
3662
- let i = Ya.wrap(to(f, r));
3663
- T.addAssign(_o(i, e, t, n)), O.addAssign(1);
3688
+ let i = Xa.wrap(no(f, r));
3689
+ T.addAssign(vo(i, e, t, n)), O.addAssign(1);
3664
3690
  });
3665
3691
  });
3666
3692
  }), p(T.lessThanEqual(0), () => {
@@ -3669,32 +3695,32 @@ var xo = f(([e, t, n, r]) => {
3669
3695
  let i = w(!1).toVar(), m = N(0).toVar();
3670
3696
  p(s.greaterThan(N(0)), () => {
3671
3697
  p(i.not().and(t.greaterThanEqual(m)).and(t.lessThan(m.add(s))), () => {
3672
- let e = Ka.wrap(Qa(o, t.sub(m)));
3698
+ let e = qa.wrap($a(o, t.sub(m)));
3673
3699
  p(e.intensity.greaterThan(0), () => {
3674
3700
  v.assign(R(e.direction)), y.assign(e.color.mul(e.intensity)), b.assign(1e6), S.assign(N(0)), _.assign(w(!0)), i.assign(w(!0));
3675
3701
  });
3676
3702
  }), m.addAssign(s);
3677
3703
  }), p(l.greaterThan(N(0)), () => {
3678
3704
  p(i.not().and(t.greaterThanEqual(m)).and(t.lessThan(m.add(l))), () => {
3679
- let o = qa.wrap($a(c, t.sub(m)));
3705
+ let o = Ja.wrap(eo(c, t.sub(m)));
3680
3706
  p(o.intensity.greaterThan(0), () => {
3681
- let t = U(r.y, J(a)).toVar(), s = Xa.wrap(bo(o, e, t, n));
3707
+ let t = U(r.y, J(a)).toVar(), s = Za.wrap(xo(o, e, t, n));
3682
3708
  _.assign(s.valid), v.assign(s.direction), y.assign(s.emission), b.assign(s.distance), x.assign(s.pdf), S.assign(s.lightType), i.assign(w(!0));
3683
3709
  });
3684
3710
  }), m.addAssign(l);
3685
3711
  }), p(d.greaterThan(N(0)), () => {
3686
3712
  p(i.not().and(t.greaterThanEqual(m)).and(t.lessThan(m.add(d))), () => {
3687
- let r = Ja.wrap(eo(u, t.sub(m)));
3713
+ let r = Ya.wrap(to(u, t.sub(m)));
3688
3714
  p(r.intensity.greaterThan(0), () => {
3689
- let t = Xa.wrap(So(r, e, n));
3715
+ let t = Za.wrap(Co(r, e, n));
3690
3716
  _.assign(t.valid), v.assign(t.direction), y.assign(t.emission), b.assign(t.distance), x.assign(t.pdf), S.assign(t.lightType), i.assign(w(!0));
3691
3717
  });
3692
3718
  }), m.addAssign(d);
3693
3719
  }), p(h.greaterThan(N(0)), () => {
3694
3720
  p(i.not().and(t.greaterThanEqual(m)).and(t.lessThan(m.add(h))), () => {
3695
- let o = Ya.wrap(to(f, t.sub(m)));
3721
+ let o = Xa.wrap(no(f, t.sub(m)));
3696
3722
  p(o.intensity.greaterThan(0), () => {
3697
- let t = U(r.y, J(a)).toVar(), s = Xa.wrap(xo(o, e, t, n));
3723
+ let t = U(r.y, J(a)).toVar(), s = Za.wrap(So(o, e, t, n));
3698
3724
  _.assign(s.valid), v.assign(s.direction), y.assign(s.emission), b.assign(s.distance), x.assign(s.pdf), S.assign(s.lightType), i.assign(w(!0));
3699
3725
  });
3700
3726
  });
@@ -3711,7 +3737,7 @@ var xo = f(([e, t, n, r]) => {
3711
3737
  condition: "<"
3712
3738
  }, ({ i: r }) => {
3713
3739
  p(O.lessThan(N(16)).and(A.lessThan(N(0))), () => {
3714
- let a = mo(Ka.wrap(Qa(o, r)), e, t, n, i).toVar(), s = k.toVar();
3740
+ let a = ho(qa.wrap($a(o, r)), e, t, n, i).toVar(), s = k.toVar();
3715
3741
  k.addAssign(a), p(C.greaterThan(s).and(C.lessThanEqual(k)), () => {
3716
3742
  A.assign(0), M.assign(r), ee.assign(a);
3717
3743
  });
@@ -3725,7 +3751,7 @@ var xo = f(([e, t, n, r]) => {
3725
3751
  condition: "<"
3726
3752
  }, ({ i: r }) => {
3727
3753
  p(O.lessThan(N(16)).and(A.lessThan(N(0))), () => {
3728
- let i = qa.wrap($a(c, r)), a = z(i.intensity.greaterThan(0), ho(i, e, t, n), j(0)).toVar(), o = k.toVar();
3754
+ let i = Ja.wrap(eo(c, r)), a = z(i.intensity.greaterThan(0), go(i, e, t, n), j(0)).toVar(), o = k.toVar();
3729
3755
  k.addAssign(a), p(C.greaterThan(o).and(C.lessThanEqual(k)), () => {
3730
3756
  A.assign(1), M.assign(r), ee.assign(a);
3731
3757
  });
@@ -3739,7 +3765,7 @@ var xo = f(([e, t, n, r]) => {
3739
3765
  condition: "<"
3740
3766
  }, ({ i: r }) => {
3741
3767
  p(O.lessThan(N(16)).and(A.lessThan(N(0))), () => {
3742
- let i = go(Ja.wrap(eo(u, r)), e, t, n).toVar(), a = k.toVar();
3768
+ let i = _o(Ya.wrap(to(u, r)), e, t, n).toVar(), a = k.toVar();
3743
3769
  k.addAssign(i), p(C.greaterThan(a).and(C.lessThanEqual(k)), () => {
3744
3770
  A.assign(2), M.assign(r), ee.assign(i);
3745
3771
  });
@@ -3753,7 +3779,7 @@ var xo = f(([e, t, n, r]) => {
3753
3779
  condition: "<"
3754
3780
  }, ({ i: r }) => {
3755
3781
  p(O.lessThan(N(16)).and(A.lessThan(N(0))), () => {
3756
- let i = _o(Ya.wrap(to(f, r)), e, t, n).toVar(), a = k.toVar();
3782
+ let i = vo(Xa.wrap(no(f, r)), e, t, n).toVar(), a = k.toVar();
3757
3783
  k.addAssign(i), p(C.greaterThan(a).and(C.lessThanEqual(k)), () => {
3758
3784
  A.assign(3), M.assign(r), ee.assign(i);
3759
3785
  });
@@ -3762,25 +3788,25 @@ var xo = f(([e, t, n, r]) => {
3762
3788
  });
3763
3789
  let P = ee.div(I(T, 1e-10)).toVar();
3764
3790
  p(A.equal(N(0)).and(M.greaterThanEqual(N(0))), () => {
3765
- let e = Ka.wrap(Qa(o, M)), t = R(e.direction).toVar(), n = j(1).toVar();
3791
+ let e = qa.wrap($a(o, M)), t = R(e.direction).toVar(), n = j(1).toVar();
3766
3792
  p(e.angle.greaterThan(0), () => {
3767
- let i = E(e.angle.mul(.5)).toVar(), o = L(i, j(1), r.y).toVar(), s = he(I(j(0), j(1).sub(o.mul(o)))).toVar(), c = j(yo).mul(J(a)).toVar(), l = R(e.direction).toVar(), u = R(D(z(g(l.x).greaterThan(.9), W(0, 1, 0), W(1, 0, 0)), l)).toVar(), d = D(l, u).toVar();
3793
+ let i = E(e.angle.mul(.5)).toVar(), o = L(i, j(1), r.y).toVar(), s = he(I(j(0), j(1).sub(o.mul(o)))).toVar(), c = j(bo).mul(J(a)).toVar(), l = R(e.direction).toVar(), u = R(D(z(g(l.x).greaterThan(.9), W(0, 1, 0), W(1, 0, 0)), l)).toVar(), d = D(l, u).toVar();
3768
3794
  t.assign(R(l.mul(o).add(u.mul(E(c)).add(d.mul(pe(c))).mul(s))));
3769
- let f = j(yo).mul(I(j(1).sub(i), 1e-10)).toVar();
3795
+ let f = j(bo).mul(I(j(1).sub(i), 1e-10)).toVar();
3770
3796
  n.assign(j(1).div(f));
3771
3797
  }), v.assign(t), y.assign(e.color.mul(e.intensity)), b.assign(1e6), x.assign(n.mul(P)), S.assign(N(0)), _.assign(w(!0));
3772
3798
  }), p(A.equal(N(1)).and(M.greaterThanEqual(N(0))), () => {
3773
- let t = qa.wrap($a(c, M)), n = U(r.y, J(a)).toVar(), i = Xa.wrap(bo(t, e, n, P));
3799
+ let t = Ja.wrap(eo(c, M)), n = U(r.y, J(a)).toVar(), i = Za.wrap(xo(t, e, n, P));
3774
3800
  _.assign(i.valid), v.assign(i.direction), y.assign(i.emission), b.assign(i.distance), x.assign(i.pdf), S.assign(i.lightType);
3775
3801
  }), p(A.equal(N(2)).and(M.greaterThanEqual(N(0))), () => {
3776
- let t = Ja.wrap(eo(u, M)), n = Xa.wrap(So(t, e, P));
3802
+ let t = Ya.wrap(to(u, M)), n = Za.wrap(Co(t, e, P));
3777
3803
  _.assign(n.valid), v.assign(n.direction), y.assign(n.emission), b.assign(n.distance), x.assign(n.pdf), S.assign(n.lightType);
3778
3804
  }), p(A.equal(N(3)).and(M.greaterThanEqual(N(0))), () => {
3779
- let t = Ya.wrap(to(f, M)), n = U(r.y, J(a)).toVar(), i = Xa.wrap(xo(t, e, n, P));
3805
+ let t = Xa.wrap(no(f, M)), n = U(r.y, J(a)).toVar(), i = Za.wrap(So(t, e, n, P));
3780
3806
  _.assign(i.valid), v.assign(i.direction), y.assign(i.emission), b.assign(i.distance), x.assign(i.pdf), S.assign(i.lightType);
3781
3807
  });
3782
3808
  });
3783
- }), Xa({
3809
+ }), Za({
3784
3810
  valid: _,
3785
3811
  direction: v,
3786
3812
  emission: y,
@@ -3788,7 +3814,7 @@ var xo = f(([e, t, n, r]) => {
3788
3814
  pdf: x,
3789
3815
  lightType: S
3790
3816
  });
3791
- }), wo = f(([e, t, n, r]) => {
3817
+ }), To = f(([e, t, n, r]) => {
3792
3818
  let i = I(j(0), k(n, e)).toVar(), a = I(j(0), k(n, t)).toVar(), o = R(e.add(t)).toVar(), s = I(j(0), k(n, o)).toVar();
3793
3819
  I(j(0), k(e, o)).toVar();
3794
3820
  let c = j(1).sub(r.metalness).mul(j(1).sub(r.transmission)).toVar(), l = j(1).sub(c.mul(j(1).sub(r.metalness))).toVar(), u = c.add(l).toVar(), d = j(0).toVar();
@@ -3798,7 +3824,7 @@ var xo = f(([e, t, n, r]) => {
3798
3824
  d.addAssign(c.mul(a).mul($r));
3799
3825
  }), p(l.greaterThan(0).and(a.greaterThan(0)), () => {
3800
3826
  let e = I(r.roughness, .02).toVar();
3801
- d.addAssign(l.mul(ba(s, i, e)));
3827
+ d.addAssign(l.mul(xa(s, i, e)));
3802
3828
  });
3803
3829
  }), I(d, 1e-8);
3804
3830
  });
@@ -3809,13 +3835,13 @@ f(([e, t, n, r, i, a, o, s, c, l, u]) => {
3809
3835
  p(g.greaterThan(0), () => {
3810
3836
  let f = k(r, o).toVar();
3811
3837
  p(f.greaterThan(0), () => {
3812
- p(no({
3838
+ p(ro({
3813
3839
  direction: o,
3814
3840
  surfaceNormal: r
3815
3841
  }), () => {
3816
- let m = fo(a, o, n.sub(.001), s, Pi, c, l, u);
3842
+ let m = po(a, o, n.sub(.001), s, Fi, c, l, u);
3817
3843
  p(m.greaterThan(0), () => {
3818
- let n = Ha(t, o, r, i), a = h.div(I(e.area.mul(g), ti)).toVar(), s = wo(t, o, r, i).toVar(), c = z(s.greaterThan(0), pi({
3844
+ let n = Ua(t, o, r, i), a = h.div(I(e.area.mul(g), ti)).toVar(), s = To(t, o, r, i).toVar(), c = z(s.greaterThan(0), pi({
3819
3845
  pdf1: a,
3820
3846
  pdf2: s
3821
3847
  }), j(1)).toVar(), l = e.color.mul(e.intensity).toVar();
@@ -3826,37 +3852,37 @@ f(([e, t, n, r, i, a, o, s, c, l, u]) => {
3826
3852
  });
3827
3853
  }), d;
3828
3854
  });
3829
- var To = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T, E, D, O, A, M]) => {
3830
- let ee = W(0).toVar(), P = e.add(t.mul(.001)).toVar();
3855
+ var Eo = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T, E, D, O, A, M, ee]) => {
3856
+ let P = W(0).toVar(), te = e.add(t.mul(.001)).toVar();
3831
3857
  return p(n.emissiveIntensity.lessThanEqual(10), () => {
3832
- let s = W(1).toVar(), te = Xr.wrap(bi(n.roughness, n.metalness, n.transmission, c, s)), ne = te.useBRDFSampling.toVar(), F = te.useLightSampling.toVar(), re = te.brdfWeight.toVar(), ie = te.lightWeight.toVar(), L = d.add(h).add(_).add(y).toVar(), oe = j(.001).mul(j(1).add(j(c).mul(.5))).toVar(), R = L.greaterThan(N(0)).toVar(), se = j(0).toVar();
3833
- p(F.and(R), () => {
3834
- se.addAssign(ie);
3835
- }), p(ne, () => {
3836
- se.addAssign(re);
3837
- }), p(se.lessThanEqual(0), () => {
3838
- se.assign(1), ne.assign(w(!0)), re.assign(1);
3839
- });
3840
- let ce = J(l).toVar(), le = J(l).toVar(), ue = ce, de = w(!1).toVar(), fe = w(!1).toVar(), pe = z(R, ie, j(0)).toVar(), me = j(1).div(I(se, 1e-10)).toVar(), he = pe.mul(me).toVar();
3841
- p(ue.lessThan(he).and(F).and(R), () => {
3842
- de.assign(w(!0));
3843
- }).ElseIf(ne, () => {
3858
+ let s = W(1).toVar(), ne = Xr.wrap(xi(n.roughness, n.metalness, n.transmission, c, s)), F = ne.useBRDFSampling.toVar(), re = ne.useLightSampling.toVar(), ie = ne.brdfWeight.toVar(), L = ne.lightWeight.toVar(), oe = d.add(h).add(_).add(y).toVar(), R = j(.001).mul(j(1).add(j(c).mul(.5))).toVar(), se = oe.greaterThan(N(0)).toVar(), ce = j(0).toVar();
3859
+ p(re.and(se), () => {
3860
+ ce.addAssign(L);
3861
+ }), p(F, () => {
3862
+ ce.addAssign(ie);
3863
+ }), p(ce.lessThanEqual(0), () => {
3864
+ ce.assign(1), F.assign(w(!0)), ie.assign(1);
3865
+ });
3866
+ let le = J(l).toVar(), ue = J(l).toVar(), de = le, fe = w(!1).toVar(), pe = w(!1).toVar(), me = z(se, L, j(0)).toVar(), he = j(1).div(I(ce, 1e-10)).toVar(), ge = me.mul(he).toVar();
3867
+ p(de.lessThan(ge).and(re).and(se), () => {
3844
3868
  fe.assign(w(!0));
3845
- }).ElseIf(R, () => {
3846
- de.assign(w(!0));
3847
- }), p(de, () => {
3848
- let e = U(le, J(l)).toVar(), i = Xa.wrap(Co(P, t, n, e, c, l, u, d, f, h, g, _, v, y));
3869
+ }).ElseIf(F, () => {
3870
+ pe.assign(w(!0));
3871
+ }).ElseIf(se, () => {
3872
+ fe.assign(w(!0));
3873
+ }), p(fe, () => {
3874
+ let e = U(ue, J(l)).toVar(), i = Za.wrap(wo(te, t, n, e, c, l, u, d, f, h, g, _, v, y));
3849
3875
  p(i.valid.and(i.pdf.greaterThan(0)), () => {
3850
3876
  let e = I(j(0), k(t, i.direction)).toVar(), a = i.emission.x.add(i.emission.y).add(i.emission.z).toVar();
3851
- p(e.greaterThan(0).and(a.mul(e).greaterThan(oe)).and(no({
3877
+ p(e.greaterThan(0).and(a.mul(e).greaterThan(R)).and(ro({
3852
3878
  direction: i.direction,
3853
3879
  surfaceNormal: t
3854
3880
  })), () => {
3855
- let a = ae(i.distance.sub(.001), j(1e3)).toVar(), o = fo(P, i.direction, a, l, Pi, b, x, S);
3881
+ let a = ae(i.distance.sub(.001), j(1e3)).toVar(), o = po(te, i.direction, a, l, Fi, b, x, S);
3856
3882
  p(o.greaterThan(0), () => {
3857
- let a = Ha(r, i.direction, t, n), s = wo(r, i.direction, t, n).toVar(), c = j(1).toVar();
3858
- p(s.greaterThan(0).and(ne), () => {
3859
- let e = i.pdf.mul(ie).toVar(), t = s.mul(re).toVar();
3883
+ let a = Ua(r, i.direction, t, n), s = To(r, i.direction, t, n).toVar(), c = j(1).toVar();
3884
+ p(s.greaterThan(0).and(F), () => {
3885
+ let e = i.pdf.mul(L).toVar(), t = s.mul(ie).toVar();
3860
3886
  p(i.lightType.equal(N(1)), () => {
3861
3887
  c.assign(pi({
3862
3888
  pdf1: e,
@@ -3865,14 +3891,14 @@ var To = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T
3865
3891
  });
3866
3892
  });
3867
3893
  let l = i.emission.mul(a).mul(e).mul(o).mul(c).div(I(i.pdf, 1e-10));
3868
- ee.addAssign(l.mul(se).div(I(ie, 1e-10)));
3894
+ P.addAssign(l.mul(ce).div(I(L, 1e-10)));
3869
3895
  });
3870
3896
  });
3871
3897
  });
3872
- }), p(fe, () => {
3873
- p(a.greaterThan(0).and(ne), () => {
3898
+ }), p(pe, () => {
3899
+ p(a.greaterThan(0).and(F), () => {
3874
3900
  let r = I(j(0), k(t, i)).toVar();
3875
- p(r.greaterThan(0).and(no({
3901
+ p(r.greaterThan(0).and(ro({
3876
3902
  direction: i,
3877
3903
  surfaceNormal: t
3878
3904
  })), () => {
@@ -3884,11 +3910,11 @@ var To = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T
3884
3910
  type: "int",
3885
3911
  condition: "<"
3886
3912
  }, ({ i: r }) => {
3887
- let a = qa.wrap($a(f, r));
3913
+ let a = Ja.wrap(eo(f, r));
3888
3914
  p(a.intensity.greaterThan(0), () => {
3889
- let o = ho(a, e, t, n).toVar();
3890
- p(o.greaterThanEqual(oe), () => {
3891
- p(oo(a, P, i).toVar().greaterThan(0), () => {
3915
+ let o = go(a, e, t, n).toVar();
3916
+ p(o.greaterThanEqual(R), () => {
3917
+ p(so(a, te, i).toVar().greaterThan(0), () => {
3892
3918
  p(o.greaterThan(c), () => {
3893
3919
  c.assign(o), u.assign(r);
3894
3920
  }), s.assign(w(!0));
@@ -3896,19 +3922,19 @@ var To = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T
3896
3922
  });
3897
3923
  });
3898
3924
  }), p(s.and(u.greaterThanEqual(N(0))), () => {
3899
- let e = qa.wrap($a(f, u)), t = oo(e, P, i).toVar();
3925
+ let e = Ja.wrap(eo(f, u)), t = so(e, te, i).toVar();
3900
3926
  p(t.greaterThan(0), () => {
3901
- let n = fo(P, i, ae(t.sub(.001), j(1e3)).toVar(), l, Pi, b, x, S);
3927
+ let n = po(te, i, ae(t.sub(.001), j(1e3)).toVar(), l, Fi, b, x, S);
3902
3928
  p(n.greaterThan(0), () => {
3903
3929
  let s = I(j(0), k(i, e.normal).negate()).toVar();
3904
3930
  p(s.greaterThan(0), () => {
3905
3931
  let i = t.mul(t).toVar().div(I(e.area.mul(s), ti)).toVar();
3906
- i.divAssign(I(j(L), 1));
3932
+ i.divAssign(I(j(oe), 1));
3907
3933
  let c = pi({
3908
- pdf1: a.mul(re).toVar(),
3909
- pdf2: i.mul(ie).toVar()
3934
+ pdf1: a.mul(ie).toVar(),
3935
+ pdf2: i.mul(L).toVar()
3910
3936
  }).toVar(), l = e.color.mul(e.intensity).toVar().mul(o).mul(r).mul(n).mul(c).div(I(a, 1e-10));
3911
- ee.addAssign(l.mul(se).div(I(re, 1e-10)));
3937
+ P.addAssign(l.mul(ce).div(I(ie, 1e-10)));
3912
3938
  });
3913
3939
  });
3914
3940
  });
@@ -3916,37 +3942,37 @@ var To = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T
3916
3942
  });
3917
3943
  });
3918
3944
  });
3919
- }), p(M, () => {
3920
- let e = U(J(l).toVar(), J(l).toVar()).toVar(), i = W(0).toVar(), a = Bi(C, D, E, T, O, A, e, i).toVar(), o = a.xyz.toVar(), s = a.w.toVar();
3945
+ }), p(ee, () => {
3946
+ let e = U(J(l).toVar(), J(l).toVar()).toVar(), i = W(0).toVar(), a = Vi(C, D, E, T, O, A, M, e, i).toVar(), o = a.xyz.toVar(), s = a.w.toVar();
3921
3947
  p(s.greaterThan(0), () => {
3922
3948
  let e = I(j(0), k(t, o)).toVar();
3923
- p(e.greaterThan(0).and(no({
3949
+ p(e.greaterThan(0).and(ro({
3924
3950
  direction: o,
3925
3951
  surfaceNormal: t
3926
3952
  })), () => {
3927
- let a = fo(P, o, j(1e3), l, Pi, b, x, S);
3953
+ let a = po(te, o, j(1e3), l, Fi, b, x, S);
3928
3954
  p(a.greaterThan(0), () => {
3929
- let c = Ha(r, o, t, n), l = wo(r, o, t, n).toVar(), u = z(l.greaterThan(0), pi({
3955
+ let c = Ua(r, o, t, n), l = To(r, o, t, n).toVar(), u = z(l.greaterThan(0), mi({
3930
3956
  pdf1: s,
3931
3957
  pdf2: l
3932
3958
  }), j(1)).toVar(), d = i.mul(c).mul(e).mul(a).mul(u).div(I(s, 1e-10));
3933
- ee.addAssign(d);
3959
+ P.addAssign(d);
3934
3960
  });
3935
3961
  });
3936
3962
  });
3937
3963
  });
3938
- }), ee;
3939
- }), Eo = f(([e, t, n, r, i, a]) => {
3964
+ }), P;
3965
+ }), Do = f(([e, t, n, r, i, a]) => {
3940
3966
  let o = z(a, r, j(1).div(r)).toVar(), s = e.add(t.mul(o)).toVar(), c = k(s, s).toVar(), l = z(c.greaterThan(ti), s.div(he(c)), n).toVar();
3941
3967
  p(k(l, n).lessThan(0), () => {
3942
3968
  l.assign(l.negate());
3943
3969
  });
3944
- let u = g(k(e, l)).toVar(), d = g(k(t, l)).toVar(), f = g(k(n, l)).toVar(), m = pa(f, i).toVar(), h = u.add(d.mul(o)).toVar(), _ = h.mul(h).toVar(), v = d.mul(o).mul(o).div(I(_, ti)).toVar();
3970
+ let u = g(k(e, l)).toVar(), d = g(k(t, l)).toVar(), f = g(k(n, l)).toVar(), m = ma(f, i).toVar(), h = u.add(d.mul(o)).toVar(), _ = h.mul(h).toVar(), v = d.mul(o).mul(o).div(I(_, ti)).toVar();
3945
3971
  return m.mul(f).mul(v);
3946
- }), Do = f(([e, t, n, r]) => {
3972
+ }), Oo = f(([e, t, n, r]) => {
3947
3973
  let i = e.add(t).toVar(), a = k(i, i).toVar();
3948
- return ba(I(k(n, z(a.greaterThan(ti), i.div(he(a)), n).toVar()), 0).toVar(), I(k(n, e), 0).toVar(), r);
3949
- }), Oo = f(([e, t, n, r, i]) => {
3974
+ return xa(I(k(n, z(a.greaterThan(ti), i.div(he(a)), n).toVar()), 0).toVar(), I(k(n, e), 0).toVar(), r);
3975
+ }), ko = f(([e, t, n, r, i]) => {
3950
3976
  let a = e.specularImportance.toVar(), o = a.greaterThan(.001).toVar(), s = e.diffuseImportance.toVar(), c = s.greaterThan(.001).toVar(), l = e.transmissionImportance.toVar(), u = l.greaterThan(.001).toVar(), d = e.clearcoatImportance.toVar(), f = d.greaterThan(.001).toVar(), m = a.add(s).add(l).add(d).toVar();
3951
3977
  return p(m.lessThan(.001), () => {
3952
3978
  a.assign(0), s.assign(1), l.assign(0), d.assign(0), m.assign(1), o.assign(w(!1)), c.assign(w(!0)), u.assign(w(!1)), f.assign(w(!1));
@@ -3966,7 +3992,7 @@ var To = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T
3966
3992
  useTransmission: u,
3967
3993
  useClearcoat: f
3968
3994
  });
3969
- }), ko = f(([e, t]) => {
3995
+ }), Ao = f(([e, t]) => {
3970
3996
  let n = N(2).toVar(), r = j(1).toVar(), i = j(0).toVar(), a = w(!1).toVar();
3971
3997
  return p(e.useSpecular.and(a.not()), () => {
3972
3998
  i.addAssign(e.specularWeight), p(t.lessThan(i), () => {
@@ -3985,49 +4011,49 @@ var To = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T
3985
4011
  }), p(a.not(), () => {
3986
4012
  n.assign(2), r.assign(z(e.useDiffuse, e.diffuseWeight, j(1)));
3987
4013
  }), U(j(n), r);
3988
- }), Ao = f(([e]) => I(e, 0).mul($r)), jo = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, m, h, _, v]) => {
3989
- let y = W(0).toVar(), b = W(0).toVar(), x = j(0).toVar(), S = j(0).toVar(), C = j(0).toVar();
4014
+ }), jo = f(([e]) => I(e, 0).mul($r)), Mo = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, m, h, _, v, y]) => {
4015
+ let b = W(0).toVar(), x = W(0).toVar(), S = j(0).toVar(), C = j(0).toVar(), w = j(0).toVar();
3990
4016
  return p(l.diffuseImportance.greaterThanEqual(0).and(l.specularImportance.greaterThanEqual(0)).and(l.transmissionImportance.greaterThanEqual(0)).and(l.clearcoatImportance.greaterThanEqual(0)).and(l.envmapImportance.greaterThanEqual(0)).toVar().not(), () => {
3991
4017
  let e = U(J(c).toVar(), J(c).toVar()).toVar();
3992
- y.assign(Oa(t, e)), b.assign(n.color.xyz), x.assign(1), S.assign(1);
4018
+ b.assign(ka(t, e)), x.assign(n.color.xyz), S.assign(1), C.assign(1);
3993
4019
  }).Else(() => {
3994
- let o = Yr.wrap(Oo(l, s, n, _, v).toVar()), u = J(c).toVar(), d = U(J(c).toVar(), J(c).toVar()).toVar(), f = ko(o, u).toVar(), m = N(f.x).toVar();
4020
+ let o = Yr.wrap(ko(l, s, n, v, y).toVar()), u = J(c).toVar(), d = U(J(c).toVar(), J(c).toVar()).toVar(), f = Ao(o, u).toVar(), m = N(f.x).toVar();
3995
4021
  f.y.toVar();
3996
- let h = W(0).toVar(), w = j(0).toVar(), T = W(0).toVar();
4022
+ let h = W(0).toVar(), _ = j(0).toVar(), T = W(0).toVar();
3997
4023
  p(m.equal(N(1)), () => {
3998
- h.assign(r), w.assign(i), T.assign(a);
4024
+ h.assign(r), _.assign(i), T.assign(a);
3999
4025
  }).ElseIf(m.equal(N(2)), () => {
4000
- h.assign(Oa(t, d)), w.assign(Ao(I(k(t, h), 0))), T.assign(Ha(e, h, t, n));
4026
+ h.assign(ka(t, d)), _.assign(jo(I(k(t, h), 0))), T.assign(Ua(e, h, t, n));
4001
4027
  }).ElseIf(m.equal(N(3)), () => {
4002
- let r = k(e, t).greaterThan(0).toVar(), i = Fa.wrap(za(e, t, n.ior, n.roughness, r, n.dispersion, d, c).toVar());
4003
- h.assign(i.direction), w.assign(i.pdf), T.assign(Ha(e, h, t, n));
4028
+ let r = k(e, t).greaterThan(0).toVar(), i = Ia.wrap(Ba(e, t, n.ior, n.roughness, r, n.dispersion, d, c).toVar());
4029
+ h.assign(i.direction), _.assign(i.pdf), T.assign(Ua(e, h, t, n));
4004
4030
  }).Else(() => {
4005
- h.assign(r), w.assign(i), T.assign(a);
4031
+ h.assign(r), _.assign(i), T.assign(a);
4006
4032
  });
4007
4033
  let E = k(t, h).toVar(), D = I(E, 0).toVar(), O = g(E).toVar(), A = j(0).toVar();
4008
4034
  p(o.useSpecular, () => {
4009
- let r = ba(I(k(t, R(e.add(h))), .001), I(k(t, e), .001), n.roughness);
4035
+ let r = xa(I(k(t, R(e.add(h))), .001), I(k(t, e), .001), n.roughness);
4010
4036
  A.addAssign(o.specularWeight.mul(r));
4011
4037
  }), p(o.useDiffuse, () => {
4012
- let e = Ao(D).toVar();
4038
+ let e = jo(D).toVar();
4013
4039
  A.addAssign(o.diffuseWeight.mul(e));
4014
4040
  }), p(o.useTransmission.and(n.transmission.greaterThan(0)), () => {
4015
- let r = k(e, t).greaterThan(0).toVar(), i = Eo(e, h, t, n.ior, n.roughness, r).toVar();
4041
+ let r = k(e, t).greaterThan(0).toVar(), i = Do(e, h, t, n.ior, n.roughness, r).toVar();
4016
4042
  A.addAssign(o.transmissionWeight.mul(i));
4017
4043
  }), p(o.useClearcoat.and(n.clearcoat.greaterThan(0)), () => {
4018
- let r = Do(e, h, t, n.clearcoatRoughness).toVar();
4044
+ let r = Oo(e, h, t, n.clearcoatRoughness).toVar();
4019
4045
  A.addAssign(o.clearcoatWeight.mul(r));
4020
- }), w.assign(I(w, ii)), A.assign(I(A, ii));
4021
- let M = w.div(A).toVar(), ee = z(m.equal(N(3)), O, D), P = T.mul(ee).mul(M).div(w).toVar();
4022
- y.assign(h), b.assign(P), x.assign(M), S.assign(w), C.assign(A);
4023
- }), Za({
4024
- direction: y,
4025
- throughput: b,
4026
- misWeight: x,
4027
- pdf: S,
4028
- combinedPdf: C
4046
+ }), _.assign(I(_, ii)), A.assign(I(A, ii));
4047
+ let M = _.div(A).toVar(), ee = z(m.equal(N(3)), O, D), P = T.mul(ee).mul(M).div(_).toVar();
4048
+ b.assign(h), x.assign(P), S.assign(M), C.assign(_), w.assign(A);
4049
+ }), Qa({
4050
+ direction: b,
4051
+ throughput: x,
4052
+ misWeight: S,
4053
+ pdf: C,
4054
+ combinedPdf: w
4029
4055
  });
4030
- }), Mo = Xt({
4056
+ }), No = Xt({
4031
4057
  position: "vec3",
4032
4058
  normal: "vec3",
4033
4059
  emission: "vec3",
@@ -4037,40 +4063,40 @@ var To = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T
4037
4063
  area: "float",
4038
4064
  cosThetaLight: "float",
4039
4065
  valid: "bool"
4040
- }), No = Xt({
4066
+ }), Po = Xt({
4041
4067
  contribution: "vec3",
4042
4068
  hasEmissive: "bool",
4043
4069
  emissionOnly: "vec3",
4044
4070
  distance: "float"
4045
- }), Po = f(([e, t, n, r]) => {
4071
+ }), Fo = f(([e, t, n, r]) => {
4046
4072
  let i = he(r.x), a = j(1).sub(i), o = r.y.mul(i), s = j(1).sub(a).sub(o);
4047
4073
  return e.mul(a).add(t.mul(o)).add(n.mul(s));
4048
- }), Fo = f(([e, t, n]) => te(D(t.sub(e), n.sub(e))).mul(.5)), Io = f(([e, t, n, r]) => {
4074
+ }), Io = f(([e, t, n]) => te(D(t.sub(e), n.sub(e))).mul(.5)), Lo = f(([e, t, n, r]) => {
4049
4075
  let i = R(e.sub(r)), a = R(t.sub(r)), o = R(n.sub(r)), s = g(k(i, D(a, o))), c = j(1).add(k(a, o)).add(k(i, o)).add(k(i, a));
4050
4076
  return I(j(2).mul(y(s, I(c, j(1e-10)))), j(0));
4051
- }), Lo = f(([e, t, n, r]) => {
4077
+ }), Ro = f(([e, t, n, r]) => {
4052
4078
  let i = t.sub(e), a = n.sub(e), o = n.sub(t), s = I(k(i, i), I(k(a, a), k(o, o))), c = D(i, a), l = k(c, c), u = w(!1).toVar();
4053
4079
  return p(l.greaterThan(1e-20), () => {
4054
4080
  let t = k(c, r.sub(e)), n = t.mul(t).div(l);
4055
4081
  u.assign(s.greaterThan(n));
4056
4082
  }), u;
4057
- }), Ro = Xt({
4083
+ }), zo = Xt({
4058
4084
  direction: "vec3",
4059
4085
  position: "vec3",
4060
4086
  solidAngle: "float",
4061
4087
  valid: "bool"
4062
- }), zo = f(([e]) => {
4088
+ }), Bo = f(([e]) => {
4063
4089
  let t = te(e);
4064
4090
  return z(t.greaterThan(1e-10), e.div(t), W(0));
4065
- }), Bo = f(([e, t, n, r, i]) => {
4066
- let a = Ro({
4091
+ }), Vo = f(([e, t, n, r, i]) => {
4092
+ let a = zo({
4067
4093
  direction: W(0),
4068
4094
  position: W(0),
4069
4095
  solidAngle: j(0),
4070
4096
  valid: !1
4071
- }).toVar(), o = R(e.sub(r)), s = R(t.sub(r)), c = R(n.sub(r)), l = Io(e, t, n, r);
4097
+ }).toVar(), o = R(e.sub(r)), s = R(t.sub(r)), c = R(n.sub(r)), l = Lo(e, t, n, r);
4072
4098
  return a.solidAngle.assign(l), p(l.greaterThan(1e-7), () => {
4073
- let u = T(k(zo(D(o, s)), zo(D(o, c))), -1, 1), d = he(I(j(1).sub(u.mul(u)), 0)), f = _(u), m = i.x.mul(l).sub(f), h = pe(m), v = E(m), y = T(k(o, s), -1, 1), b = v.sub(u), x = h.add(d.mul(y)), S = x.mul(v).sub(b.mul(h)).mul(u).sub(x), C = x.mul(h).add(b.mul(v)).mul(d), w = T(z(g(C).greaterThan(1e-10), S.div(C), j(1)), -1, 1), O = k(c, o), A = zo(c.sub(o.mul(O))), M = he(I(j(1).sub(w.mul(w)), 0)), ee = R(o.mul(w).add(A.mul(M))), N = k(ee, s), P = j(1).sub(i.y.mul(j(1).sub(N))), te = he(I(j(1).sub(P.mul(P)), 0)), ne = zo(ee.sub(s.mul(N))), F = R(s.mul(P).add(ne.mul(te))), re = R(D(t.sub(e), n.sub(e))), ie = k(re, F);
4099
+ let u = T(k(Bo(D(o, s)), Bo(D(o, c))), -1, 1), d = he(I(j(1).sub(u.mul(u)), 0)), f = _(u), m = i.x.mul(l).sub(f), h = pe(m), v = E(m), y = T(k(o, s), -1, 1), b = v.sub(u), x = h.add(d.mul(y)), S = x.mul(v).sub(b.mul(h)).mul(u).sub(x), C = x.mul(h).add(b.mul(v)).mul(d), w = T(z(g(C).greaterThan(1e-10), S.div(C), j(1)), -1, 1), O = k(c, o), A = Bo(c.sub(o.mul(O))), M = he(I(j(1).sub(w.mul(w)), 0)), ee = R(o.mul(w).add(A.mul(M))), N = k(ee, s), P = j(1).sub(i.y.mul(j(1).sub(N))), te = he(I(j(1).sub(P.mul(P)), 0)), ne = Bo(ee.sub(s.mul(N))), F = R(s.mul(P).add(ne.mul(te))), re = R(D(t.sub(e), n.sub(e))), ie = k(re, F);
4074
4100
  p(g(ie).greaterThan(1e-10), () => {
4075
4101
  let t = k(re, e.sub(r)).div(ie);
4076
4102
  p(t.greaterThan(0), () => {
@@ -4078,21 +4104,21 @@ var To = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, h, g, _, v, y, b, x, S, C, T
4078
4104
  });
4079
4105
  });
4080
4106
  }), a;
4081
- }), Vo = f(([e, t, n, r]) => {
4107
+ }), Ho = f(([e, t, n, r]) => {
4082
4108
  let i = n.sub(t), a = r.sub(t), o = e.sub(t), s = k(i, i), c = k(i, a), l = k(a, a), u = k(o, i), d = k(o, a), f = j(1).div(I(s.mul(l).sub(c.mul(c)), j(1e-10))), p = l.mul(u).sub(c.mul(d)).mul(f), m = s.mul(d).sub(c.mul(u)).mul(f);
4083
4109
  return W(j(1).sub(p).sub(m), p, m);
4084
- }), Ho = f(([e, t, n, r]) => {
4110
+ }), Uo = f(([e, t, n, r]) => {
4085
4111
  let i = he(r.x), a = j(1).sub(i), o = r.y.mul(i), s = j(1).sub(a).sub(o);
4086
4112
  return R(e.mul(a).add(t.mul(o)).add(n.mul(s)));
4087
- }), Uo = f(([e]) => e.emissiveIntensity.greaterThan(0).and(te(e.emissive).greaterThan(0)));
4113
+ }), Wo = f(([e]) => e.emissiveIntensity.greaterThan(0).and(te(e.emissive).greaterThan(0)));
4088
4114
  f(([e, t]) => {
4089
4115
  let n = j(0).toVar();
4090
- return p(Uo(e), () => {
4116
+ return p(Wo(e), () => {
4091
4117
  let r = e.emissive.x.add(e.emissive.y).add(e.emissive.z).div(3);
4092
4118
  n.assign(r.mul(e.emissiveIntensity).mul(t));
4093
4119
  }), n;
4094
4120
  });
4095
- var Wo = 8, Go = 2, Ko = Xt({
4121
+ var Go = 8, Ko = 2, qo = Xt({
4096
4122
  v0: "vec3",
4097
4123
  v1: "vec3",
4098
4124
  v2: "vec3",
@@ -4100,9 +4126,9 @@ var Wo = 8, Go = 2, Ko = Xt({
4100
4126
  n1: "vec3",
4101
4127
  n2: "vec3",
4102
4128
  materialIndex: "int"
4103
- }), qo = f(([e, t]) => {
4104
- let n = $(t, e, N(0), N(Wo)), r = $(t, e, N(1), N(Wo)), i = $(t, e, N(2), N(Wo)), a = $(t, e, N(3), N(Wo)), o = $(t, e, N(4), N(Wo)), s = $(t, e, N(5), N(Wo)), c = $(t, e, N(7), N(Wo));
4105
- return Ko({
4129
+ }), Jo = f(([e, t]) => {
4130
+ let n = $(t, e, N(0), N(Go)), r = $(t, e, N(1), N(Go)), i = $(t, e, N(2), N(Go)), a = $(t, e, N(3), N(Go)), o = $(t, e, N(4), N(Go)), s = $(t, e, N(5), N(Go)), c = $(t, e, N(7), N(Go));
4131
+ return qo({
4106
4132
  v0: n.xyz,
4107
4133
  v1: r.xyz,
4108
4134
  v2: i.xyz,
@@ -4111,27 +4137,27 @@ var Wo = 8, Go = 2, Ko = Xt({
4111
4137
  n2: s.xyz,
4112
4138
  materialIndex: N(c.z)
4113
4139
  });
4114
- }), Jo = f(([e, t, n, r, i, a, o]) => {
4115
- let s = Ko.wrap(qo(e, i)), c = Fo(s.v0, s.v1, s.v2), l = $(a, s.materialIndex, N(si.EMISSIVE_ROUGHNESS), oi), u = $(a, s.materialIndex, N(si.IOR_TRANSMISSION), oi), d = I(l.x.add(l.y).add(l.z).div(3).mul(u.a).mul(c), j(1e-10)).div(I(o, j(1e-10))), f = j(0).toVar();
4116
- return p(Lo(s.v0, s.v1, s.v2, r), () => {
4117
- let e = Io(s.v0, s.v1, s.v2, r);
4140
+ }), Yo = f(([e, t, n, r, i, a, o]) => {
4141
+ let s = qo.wrap(Jo(e, i)), c = Io(s.v0, s.v1, s.v2), l = $(a, s.materialIndex, N(si.EMISSIVE_ROUGHNESS), oi), u = $(a, s.materialIndex, N(si.IOR_TRANSMISSION), oi), d = I(l.x.add(l.y).add(l.z).div(3).mul(u.a).mul(c), j(1e-10)).div(I(o, j(1e-10))), f = j(0).toVar();
4142
+ return p(Ro(s.v0, s.v1, s.v2, r), () => {
4143
+ let e = Lo(s.v0, s.v1, s.v2, r);
4118
4144
  f.assign(d.div(I(e, j(1e-10))));
4119
4145
  }).Else(() => {
4120
4146
  let e = R(D(s.v1.sub(s.v0), s.v2.sub(s.v0))), r = I(k(n.negate(), e), .001), i = t.mul(t), a = d.div(c);
4121
4147
  f.assign(a.mul(i).div(r));
4122
4148
  }), I(f, ii);
4123
- }), Yo = f(([e, t, n, r]) => {
4149
+ }), Xo = f(([e, t, n, r]) => {
4124
4150
  let i = N(0).toVar(), a = n.sub(1).toVar();
4125
4151
  return m(i.lessThan(a), () => {
4126
- let n = i.add(a).div(2).toVar(), o = e.element(t.add(n.mul(N(Go)))).b;
4152
+ let n = i.add(a).div(2).toVar(), o = e.element(t.add(n.mul(N(Ko)))).b;
4127
4153
  p(o.lessThan(r), () => {
4128
4154
  i.assign(n.add(1));
4129
4155
  }).Else(() => {
4130
4156
  a.assign(n);
4131
4157
  });
4132
4158
  }), i;
4133
- }), Xo = f(([e, t, n, r, i, a, o, s, c]) => {
4134
- let l = Mo({
4159
+ }), Zo = f(([e, t, n, r, i, a, o, s, c]) => {
4160
+ let l = No({
4135
4161
  position: W(0),
4136
4162
  normal: W(0),
4137
4163
  emission: W(0),
@@ -4143,40 +4169,40 @@ var Wo = 8, Go = 2, Ko = Xt({
4143
4169
  valid: !1
4144
4170
  }).toVar();
4145
4171
  return p(o.greaterThan(N(0)), () => {
4146
- let n = Yo(i, a, o, J(r)).toVar(), u = a.add(n.mul(N(Go))), d = i.element(u), f = i.element(u.add(1)), m = N(d.r), h = I(d.g, j(1e-10)), g = f.xyz, _ = f.w, v = Ko.wrap(qo(m, c)), y = U(J(r).toVar(), J(r).toVar()), b = R(D(v.v1.sub(v.v0), v.v2.sub(v.v0)));
4147
- p(Lo(v.v0, v.v1, v.v2, e), () => {
4148
- let n = Ro.wrap(Bo(v.v0, v.v1, v.v2, e, y));
4172
+ let n = Xo(i, a, o, J(r)).toVar(), u = a.add(n.mul(N(Ko))), d = i.element(u), f = i.element(u.add(1)), m = N(d.r), h = I(d.g, j(1e-10)), g = f.xyz, _ = f.w, v = qo.wrap(Jo(m, c)), y = U(J(r).toVar(), J(r).toVar()), b = R(D(v.v1.sub(v.v0), v.v2.sub(v.v0)));
4173
+ p(Ro(v.v0, v.v1, v.v2, e), () => {
4174
+ let n = zo.wrap(Vo(v.v0, v.v1, v.v2, e, y));
4149
4175
  p(n.valid.and(n.solidAngle.greaterThan(1e-7)), () => {
4150
4176
  let r = n.direction, i = n.position, a = k(r, t), o = k(r, b.negate());
4151
4177
  p(a.greaterThan(0).and(o.greaterThan(0)), () => {
4152
- let t = Vo(i, v.v0, v.v1, v.v2), a = R(v.n0.mul(t.x).add(v.n1.mul(t.y)).add(v.n2.mul(t.z))), c = te(i.sub(e)), u = h.div(I(s, j(1e-10))).div(n.solidAngle);
4178
+ let t = Ho(i, v.v0, v.v1, v.v2), a = R(v.n0.mul(t.x).add(v.n1.mul(t.y)).add(v.n2.mul(t.z))), c = te(i.sub(e)), u = h.div(I(s, j(1e-10))).div(n.solidAngle);
4153
4179
  l.position.assign(i), l.normal.assign(a), l.emission.assign(g), l.direction.assign(r), l.distance.assign(c), l.pdf.assign(I(u, ii)), l.area.assign(_), l.cosThetaLight.assign(o), l.valid.assign(!0);
4154
4180
  });
4155
4181
  });
4156
4182
  }).Else(() => {
4157
- let n = Po(v.v0, v.v1, v.v2, y), r = Ho(v.n0, v.n1, v.n2, y), i = n.sub(e), a = k(i, i), o = he(a), c = i.div(o), u = k(c, t), d = k(c, r.negate());
4183
+ let n = Fo(v.v0, v.v1, v.v2, y), r = Uo(v.n0, v.n1, v.n2, y), i = n.sub(e), a = k(i, i), o = he(a), c = i.div(o), u = k(c, t), d = k(c, r.negate());
4158
4184
  p(u.greaterThan(0).and(d.greaterThan(0)), () => {
4159
4185
  let e = h.div(I(s, j(1e-10)).mul(_)).mul(a).div(d);
4160
4186
  l.position.assign(n), l.normal.assign(r), l.emission.assign(g), l.direction.assign(c), l.distance.assign(o), l.pdf.assign(I(e, ii)), l.area.assign(_), l.cosThetaLight.assign(d), l.valid.assign(!0);
4161
4187
  });
4162
4188
  });
4163
4189
  }), l;
4164
- }), Zo = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, m, h, g]) => {
4165
- let _ = No({
4190
+ }), Qo = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, m, h, g]) => {
4191
+ let _ = Po({
4166
4192
  contribution: W(0),
4167
4193
  hasEmissive: !1,
4168
4194
  emissionOnly: W(0),
4169
4195
  distance: j(0)
4170
4196
  }).toVar();
4171
4197
  return p(a.greaterThan(N(1)).and(r.roughness.greaterThan(.9)).and(r.metalness.lessThan(.1)).not(), () => {
4172
- let a = Mo.wrap(Xo(e, t, i, o, c, l, u, d, f));
4198
+ let a = No.wrap(Zo(e, t, i, o, c, l, u, d, f));
4173
4199
  p(a.valid.and(a.pdf.greaterThan(0)), () => {
4174
4200
  _.hasEmissive.assign(!0), _.emissionOnly.assign(a.emission), _.distance.assign(a.distance);
4175
4201
  let i = I(j(0), k(t, a.direction));
4176
4202
  p(i.greaterThan(0), () => {
4177
4203
  let c = g(e, t, r), l = e.add(c), u = a.distance.sub(.001), d = m(l, a.direction, u, o);
4178
4204
  p(d.greaterThan(0), () => {
4179
- let e = h(n, a.direction, t, r), o = wo(n, a.direction, t, r), c = z(o.greaterThan(0), pi({
4205
+ let e = h(n, a.direction, t, r), o = To(n, a.direction, t, r), c = z(o.greaterThan(0), pi({
4180
4206
  pdf1: a.pdf,
4181
4207
  pdf2: o
4182
4208
  }), j(1));
@@ -4185,8 +4211,8 @@ var Wo = 8, Go = 2, Ko = Xt({
4185
4211
  });
4186
4212
  });
4187
4213
  }), _;
4188
- }), Qo = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h]) => No.wrap(Zo(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h)).contribution), $o = 4, es = 2, ts = 32, ns = f(([e, t, n, r, i, a, o]) => {
4189
- let s = Mo({
4214
+ }), $o = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h]) => Po.wrap(Qo(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h)).contribution), es = 4, ts = 2, ns = 32, rs = f(([e, t, n, r, i, a, o]) => {
4215
+ let s = No({
4190
4216
  position: W(0),
4191
4217
  normal: W(0),
4192
4218
  emission: W(0),
@@ -4197,12 +4223,12 @@ var Wo = 8, Go = 2, Ko = Xt({
4197
4223
  cosThetaLight: j(0),
4198
4224
  valid: !1
4199
4225
  }).toVar(), c = j(1).toVar(), l = N(0).toVar(), d = w(!1).toVar();
4200
- return m(ts, () => {
4201
- let t = l.mul(N($o)), i = r.element(t.add(N(1))), a = r.element(t.add(N(2)));
4226
+ return m(ns, () => {
4227
+ let t = l.mul(N(es)), i = r.element(t.add(N(1))), a = r.element(t.add(N(2)));
4202
4228
  p(i.w.greaterThan(.5), () => {
4203
4229
  d.assign(w(!0)), u();
4204
4230
  });
4205
- let o = N(a.x), s = N(a.y), f = o.mul(N($o)), m = r.element(f), h = r.element(f.add(N(1))), g = s.mul(N($o)), _ = r.element(g), v = r.element(g.add(N(1))), y = W(m.x.add(h.x).mul(.5), m.y.add(h.y).mul(.5), m.z.add(h.z).mul(.5)), b = W(_.x.add(v.x).mul(.5), _.y.add(v.y).mul(.5), _.z.add(v.z).mul(.5)), x = y.sub(e), S = b.sub(e), C = I(k(x, x), j(.01)), T = I(k(S, S), j(.01)), E = I(m.w, j(0)), D = I(_.w, j(0)), O = E.div(C), A = D.div(T), M = O.add(A);
4231
+ let o = N(a.x), s = N(a.y), f = o.mul(N(es)), m = r.element(f), h = r.element(f.add(N(1))), g = s.mul(N(es)), _ = r.element(g), v = r.element(g.add(N(1))), y = W(m.x.add(h.x).mul(.5), m.y.add(h.y).mul(.5), m.z.add(h.z).mul(.5)), b = W(_.x.add(v.x).mul(.5), _.y.add(v.y).mul(.5), _.z.add(v.z).mul(.5)), x = y.sub(e), S = b.sub(e), C = I(k(x, x), j(.01)), T = I(k(S, S), j(.01)), E = I(m.w, j(0)), D = I(_.w, j(0)), O = E.div(C), A = D.div(T), M = O.add(A);
4206
4232
  p(M.lessThanEqual(j(0)), () => {
4207
4233
  l.assign(o);
4208
4234
  }).Else(() => {
@@ -4214,54 +4240,54 @@ var Wo = 8, Go = 2, Ko = Xt({
4214
4240
  });
4215
4241
  });
4216
4242
  }), p(d, () => {
4217
- let d = l.mul(N($o)), f = r.element(d), h = r.element(d.add(N(2))), g = N(h.x), _ = N(h.y), v = I(f.w, j(1e-10)), y = J(n).mul(v), b = j(0).toVar(), x = g.add(_.sub(N(1))).toVar(), S = j(1e-10).toVar();
4243
+ let d = l.mul(N(es)), f = r.element(d), h = r.element(d.add(N(2))), g = N(h.x), _ = N(h.y), v = I(f.w, j(1e-10)), y = J(n).mul(v), b = j(0).toVar(), x = g.add(_.sub(N(1))).toVar(), S = j(1e-10).toVar();
4218
4244
  m({
4219
4245
  start: N(0),
4220
4246
  end: _
4221
4247
  }, ({ i: e }) => {
4222
- let t = g.add(e), n = a.add(t.mul(N(es))), r = I(i.element(n).g, j(0));
4248
+ let t = g.add(e), n = a.add(t.mul(N(ts))), r = I(i.element(n).g, j(0));
4223
4249
  b.addAssign(r), p(b.greaterThanEqual(y).and(r.greaterThan(j(0))), () => {
4224
4250
  x.assign(t), S.assign(r), u();
4225
4251
  });
4226
4252
  }), c.mulAssign(S.div(v));
4227
- let C = a.add(x.mul(N(es))), w = i.element(C), T = i.element(C.add(N(1))), E = N(w.r), O = T.xyz, A = T.w, M = Ko.wrap(qo(E, o)), ee = U(J(n).toVar(), J(n).toVar()), P = R(D(M.v1.sub(M.v0), M.v2.sub(M.v0)));
4228
- p(Lo(M.v0, M.v1, M.v2, e), () => {
4229
- let n = Ro.wrap(Bo(M.v0, M.v1, M.v2, e, ee));
4253
+ let C = a.add(x.mul(N(ts))), w = i.element(C), T = i.element(C.add(N(1))), E = N(w.r), O = T.xyz, A = T.w, M = qo.wrap(Jo(E, o)), ee = U(J(n).toVar(), J(n).toVar()), P = R(D(M.v1.sub(M.v0), M.v2.sub(M.v0)));
4254
+ p(Ro(M.v0, M.v1, M.v2, e), () => {
4255
+ let n = zo.wrap(Vo(M.v0, M.v1, M.v2, e, ee));
4230
4256
  p(n.valid.and(n.solidAngle.greaterThan(j(1e-7))), () => {
4231
4257
  let r = n.direction, i = n.position, a = k(r, t), o = k(r, P.negate());
4232
4258
  p(a.greaterThan(j(0)).and(o.greaterThan(j(0))), () => {
4233
- let t = Vo(i, M.v0, M.v1, M.v2), a = R(M.n0.mul(t.x).add(M.n1.mul(t.y)).add(M.n2.mul(t.z))), l = te(i.sub(e)), u = c.div(I(n.solidAngle, j(1e-10)));
4259
+ let t = Ho(i, M.v0, M.v1, M.v2), a = R(M.n0.mul(t.x).add(M.n1.mul(t.y)).add(M.n2.mul(t.z))), l = te(i.sub(e)), u = c.div(I(n.solidAngle, j(1e-10)));
4234
4260
  s.position.assign(i), s.normal.assign(a), s.emission.assign(O), s.direction.assign(r), s.distance.assign(l), s.pdf.assign(I(u, ii)), s.area.assign(A), s.cosThetaLight.assign(o), s.valid.assign(!0);
4235
4261
  });
4236
4262
  });
4237
4263
  }).Else(() => {
4238
- let n = Po(M.v0, M.v1, M.v2, ee), r = Ho(M.n0, M.n1, M.n2, ee), i = n.sub(e), a = k(i, i), o = he(a), l = i.div(o), u = k(l, t), d = k(l, r.negate());
4264
+ let n = Fo(M.v0, M.v1, M.v2, ee), r = Uo(M.n0, M.n1, M.n2, ee), i = n.sub(e), a = k(i, i), o = he(a), l = i.div(o), u = k(l, t), d = k(l, r.negate());
4239
4265
  p(u.greaterThan(j(0)).and(d.greaterThan(j(0))), () => {
4240
4266
  let e = c.div(I(A, j(1e-10))).mul(a).div(d);
4241
4267
  s.position.assign(n), s.normal.assign(r), s.emission.assign(O), s.direction.assign(l), s.distance.assign(o), s.pdf.assign(I(e, ii)), s.area.assign(A), s.cosThetaLight.assign(d), s.valid.assign(!0);
4242
4268
  });
4243
4269
  });
4244
4270
  }), s;
4245
- }), rs = 0, is = 1, as = 2, os = 3, ss = Xt({
4271
+ }), is = 0, as = 1, os = 2, ss = 3, cs = Xt({
4246
4272
  radiance: "vec4",
4247
4273
  objectNormal: "vec3",
4248
4274
  objectColor: "vec3",
4249
4275
  objectID: "float",
4250
4276
  firstHitPoint: "vec3",
4251
4277
  firstHitDistance: "float"
4252
- }), cs = f(([e, t, n, r, i]) => {
4278
+ }), ls = f(([e, t, n, r, i]) => {
4253
4279
  let a = i.toVar();
4254
4280
  return p(n.not().or(r.notEqual(t)), () => {
4255
- a.assign(yi(e.metalness, e.roughness, e.transmission, e.clearcoat, e.emissive));
4281
+ a.assign(bi(e.metalness, e.roughness, e.transmission, e.clearcoat, e.emissive));
4256
4282
  }), a;
4257
- }), ls = f(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
4258
- let m = W(0).toVar(), h = W(0).toVar(), g = j(0).toVar(), _ = Kr.wrap(cs(n, r, o, s, c)).toVar(), v = u.toVar();
4283
+ }), us = f(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
4284
+ let m = W(0).toVar(), h = W(0).toVar(), g = j(0).toVar(), _ = Kr.wrap(ls(n, r, o, s, c)).toVar(), v = u.toVar();
4259
4285
  p(l.not(), () => {
4260
4286
  p(d, () => {
4261
- v.assign(Ca(n, _, f));
4287
+ v.assign(wa(n, _, f));
4262
4288
  }).Else(() => {
4263
4289
  let e = Jr({
4264
- F0: fa(n.ior),
4290
+ F0: pa(n.ior),
4265
4291
  NoV: j(1),
4266
4292
  diffuseColor: W(0),
4267
4293
  isPurelyDiffuse: !1,
@@ -4273,30 +4299,30 @@ var Wo = 8, Go = 2, Ko = Xt({
4273
4299
  iorFactor: ae(j(2).div(n.ior), 1),
4274
4300
  maxSheenColor: I(n.sheenColor.x, I(n.sheenColor.y, n.sheenColor.z))
4275
4301
  }).toVar();
4276
- v.assign(Ca(n, _, e));
4302
+ v.assign(wa(n, _, e));
4277
4303
  });
4278
4304
  });
4279
4305
  let y = i.x.toVar(), b = U(i.y, J(a)).toVar(), x = W(0).toVar(), S = v.diffuse.toVar(), C = S.add(v.specular).toVar(), E = C.add(v.sheen).toVar(), D = E.add(v.clearcoat).toVar(), O = w(!1).toVar();
4280
4306
  p(y.lessThan(S).and(O.not()), () => {
4281
- m.assign(Da({
4307
+ m.assign(Oa({
4282
4308
  N: t,
4283
4309
  xi: b
4284
4310
  }));
4285
4311
  let r = T(k(t, m), 0, 1);
4286
- g.assign(r.mul($r)), h.assign(Ha(e, m, t, n)), O.assign(w(!0));
4312
+ g.assign(r.mul($r)), h.assign(Ua(e, m, t, n)), O.assign(w(!0));
4287
4313
  });
4288
4314
  let A = T(k(t, e), .001, 1).toVar();
4289
4315
  return p(y.lessThan(C).and(O.not()), () => {
4290
- let r = mi({ N: t }), a = ka({
4316
+ let r = hi({ N: t }), a = Aa({
4291
4317
  V: r.transpose().mul(e).toVar(),
4292
4318
  roughness: n.roughness,
4293
4319
  Xi: i
4294
4320
  });
4295
4321
  x.assign(r.mul(a));
4296
4322
  let o = T(k(t, x), .001, 1);
4297
- m.assign(le(e.negate(), x)), g.assign(ba(o, A, n.roughness)), h.assign(Ha(e, m, t, n)), O.assign(w(!0));
4323
+ m.assign(le(e.negate(), x)), g.assign(xa(o, A, n.roughness)), h.assign(Ua(e, m, t, n)), O.assign(w(!0));
4298
4324
  }), p(y.lessThan(E).and(O.not()), () => {
4299
- x.assign(Ea({
4325
+ x.assign(Da({
4300
4326
  N: t,
4301
4327
  roughness: n.sheenRoughness,
4302
4328
  Xi: i
@@ -4305,32 +4331,32 @@ var Wo = 8, Go = 2, Ko = Xt({
4305
4331
  m.assign(le(e.negate(), x));
4306
4332
  let o = k(t, m).toVar();
4307
4333
  p(o.lessThanEqual(0), () => {
4308
- m.assign(Da({
4334
+ m.assign(Oa({
4309
4335
  N: t,
4310
4336
  xi: i
4311
- })), o.assign(T(k(t, m), 0, 1)), g.assign(o.mul($r)), h.assign(Ha(e, m, t, n));
4337
+ })), o.assign(T(k(t, m), 0, 1)), g.assign(o.mul($r)), h.assign(Ua(e, m, t, n));
4312
4338
  }).Else(() => {
4313
- g.assign(ma(r, n.sheenRoughness).mul(r).div(j(4).mul(a))), g.assign(I(g, ii)), h.assign(Ha(e, m, t, n));
4339
+ g.assign(ha(r, n.sheenRoughness).mul(r).div(j(4).mul(a))), g.assign(I(g, ii)), h.assign(Ua(e, m, t, n));
4314
4340
  }), O.assign(w(!0));
4315
4341
  }), p(y.lessThan(D).and(O.not()), () => {
4316
4342
  let r = T(n.clearcoatRoughness, ri, 1);
4317
- x.assign(Ea({
4343
+ x.assign(Da({
4318
4344
  N: t,
4319
4345
  roughness: r,
4320
4346
  Xi: i
4321
4347
  }));
4322
4348
  let a = T(k(t, x), 0, 1);
4323
- m.assign(le(e.negate(), x)), g.assign(ba(a, A, r)), g.assign(I(g, ii)), h.assign(Ha(e, m, t, n)), O.assign(w(!0));
4349
+ m.assign(le(e.negate(), x)), g.assign(xa(a, A, r)), g.assign(I(g, ii)), h.assign(Ua(e, m, t, n)), O.assign(w(!0));
4324
4350
  }), p(O.not(), () => {
4325
- let r = k(e, t).greaterThan(0).toVar(), o = Fa.wrap(za(e, t, n.ior, n.roughness, r, n.dispersion, i, a));
4326
- m.assign(o.direction), g.assign(I(o.pdf, ii)), h.assign(Ha(e, m, t, n));
4351
+ let r = k(e, t).greaterThan(0).toVar(), o = Ia.wrap(Ba(e, t, n.ior, n.roughness, r, n.dispersion, i, a));
4352
+ m.assign(o.direction), g.assign(I(o.pdf, ii)), h.assign(Ua(e, m, t, n));
4327
4353
  }), g.assign(I(g, ii)), Vr({
4328
4354
  direction: m,
4329
4355
  value: h,
4330
4356
  pdf: g
4331
4357
  });
4332
- }), us = f(([e, t, n, r, i, a, o, s, c]) => {
4333
- let l = I(di({ v: e }), 0).toVar(), u = Kr.wrap(cs(n, r, i, a, o)).toVar(), d = u.complexityScore.toVar();
4358
+ }), ds = f(([e, t, n, r, i, a, o, s, c]) => {
4359
+ let l = I(di({ v: e }), 0).toVar(), u = Kr.wrap(ls(n, r, i, a, o)).toVar(), d = u.complexityScore.toVar();
4334
4360
  p(u.isMetallic.and(u.isSmooth), () => {
4335
4361
  d.addAssign(.15);
4336
4362
  }), p(u.isTransmissive.and(u.hasClearcoat), () => {
@@ -4345,7 +4371,7 @@ var Wo = 8, Go = 2, Ko = Xt({
4345
4371
  });
4346
4372
  let m = me(j(.001), j(.1), l);
4347
4373
  return l.mul(L(d.mul(.7), f, .3)).mul(m);
4348
- }), ds = f(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
4374
+ }), fs = f(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
4349
4375
  let m = j(1).toVar();
4350
4376
  return p(e.greaterThanEqual(N(3)), () => {
4351
4377
  let h = I(di({ v: t }), 0).toVar();
@@ -4353,7 +4379,7 @@ var Wo = 8, Go = 2, Ko = Xt({
4353
4379
  let e = I(h.mul(125), .01), t = J(a);
4354
4380
  m.assign(z(t.lessThan(e), e, j(0)));
4355
4381
  }).Else(() => {
4356
- let g = Kr.wrap(cs(n, r, o, s, c)).toVar(), _ = g.complexityScore.toVar();
4382
+ let g = Kr.wrap(ls(n, r, o, s, c)).toVar(), _ = g.complexityScore.toVar();
4357
4383
  p(g.isMetallic.and(g.isSmooth).and(e.lessThan(N(7))), () => {
4358
4384
  _.addAssign(.3);
4359
4385
  }), p(g.isTransmissive.and(e.lessThan(N(6))), () => {
@@ -4373,7 +4399,7 @@ var Wo = 8, Go = 2, Ko = Xt({
4373
4399
  p(o.and(l), () => {
4374
4400
  y.assign(u);
4375
4401
  }).Else(() => {
4376
- y.assign(us(t, i, n, r, o, s, c, d, f));
4402
+ y.assign(ds(t, i, n, r, o, s, c, d, f));
4377
4403
  });
4378
4404
  let b = L(T(_.mul(.4).add(h.mul(.6)).mul(1.2), .15, .95), T(h.mul(.4).add(_.mul(.1)), .03, .6), T(j(e.sub(v)).div(10), 0, 1)).toVar();
4379
4405
  b.assign(L(b, I(b, y), .4)), p(_.greaterThan(.5), () => {
@@ -4389,12 +4415,12 @@ var Wo = 8, Go = 2, Ko = Xt({
4389
4415
  });
4390
4416
  });
4391
4417
  }), m;
4392
- }), fs = f(([e, t, n, r, i, a, o, s]) => {
4418
+ }), ps = f(([e, t, n, r, i, a, o, s]) => {
4393
4419
  let c = G(0).toVar();
4394
4420
  return p(e.and(o.not()), () => {
4395
4421
  c.assign(G(0));
4396
4422
  }).Else(() => {
4397
- let o = Vi({
4423
+ let o = Hi({
4398
4424
  tex: n,
4399
4425
  samp: de(n),
4400
4426
  direction: t,
@@ -4408,10 +4434,10 @@ var Wo = 8, Go = 2, Ko = Xt({
4408
4434
  c.assign(o);
4409
4435
  });
4410
4436
  }), c;
4411
- }), ps = /* @__PURE__ */ K("\n fn regularizePathContribution( contribution: vec3f, pathLength: f32, fireflyThreshold: f32, frame: i32 ) -> vec3f {\n let threshold = calculateFireflyThreshold( fireflyThreshold, i32( pathLength ), frame );\n return applySoftSuppressionRGB( contribution, threshold, 0.5f );\n }\n", [gi, vi]), ms = f(([e, t, n, r, i, a, o, s, c, l, h, g, _, v, y, b, x, S, C, E, D, O, A, M, ee, P, ne, F, re, ie, ae, L, oe, se, ce, le, ue, de, fe, pe, me, he, ge, _e, ve, B, ye, V, H]) => {
4412
- let be = W(0).toVar(), xe = W(1).toVar(), Se = j(1).toVar(), U = w(!1).toVar(), K = j(0).toVar(), Ce = W(0).toVar(), we = W(0).toVar(), Te = j(-1e3).toVar(), Ee = e.origin.toVar(), De = j(1e10).toVar(), Oe = N(0).toVar(), ke = j(1).toVar(), Ae = j(1).toVar(), je = j(1).toVar(), Me = ae.toVar(), Ne = L.toVar(), Pe = N(rs).toVar(), Fe = w(!0).toVar(), Ie = w(!1).toVar(), Le = w(!1).toVar(), Re = w(!1).toVar();
4437
+ }), ms = /* @__PURE__ */ K("\n fn regularizePathContribution( contribution: vec3f, pathLength: f32, fireflyThreshold: f32, frame: i32 ) -> vec3f {\n let threshold = calculateFireflyThreshold( fireflyThreshold, i32( pathLength ), frame );\n return applySoftSuppressionRGB( contribution, threshold, 0.5f );\n }\n", [_i, yi]), hs = f(([e, t, n, r, i, a, o, s, c, l, h, g, _, v, y, b, x, S, C, E, D, O, A, M, ee, P, ne, F, re, ie, ae, L, oe, se, ce, le, ue, de, fe, pe, me, he, ge, _e, ve, B, ye, V, H, be]) => {
4438
+ let xe = W(0).toVar(), Se = W(1).toVar(), U = j(1).toVar(), K = w(!1).toVar(), Ce = j(0).toVar(), we = W(0).toVar(), Te = W(0).toVar(), Ee = j(-1e3).toVar(), De = e.origin.toVar(), Oe = j(1e10).toVar(), ke = N(0).toVar(), Ae = j(1).toVar(), je = j(1).toVar(), Me = j(1).toVar(), Ne = L.toVar(), Pe = oe.toVar(), Fe = N(is).toVar(), Ie = w(!0).toVar(), Le = w(!1).toVar(), Re = w(!1).toVar(), ze = w(!1).toVar();
4413
4439
  w(!1).toVar();
4414
- let ze = j(0).toVar(), Be = N(-1).toVar(), Ve = Kr({
4440
+ let Be = j(0).toVar(), Ve = N(-1).toVar(), He = Kr({
4415
4441
  isMetallic: !1,
4416
4442
  isRough: !1,
4417
4443
  isSmooth: !1,
@@ -4419,14 +4445,14 @@ var Wo = 8, Go = 2, Ko = Xt({
4419
4445
  hasClearcoat: !1,
4420
4446
  isEmissive: !1,
4421
4447
  complexityScore: j(0)
4422
- }).toVar(), He = Hr({
4448
+ }).toVar(), Ue = Hr({
4423
4449
  specular: j(.5),
4424
4450
  diffuse: j(.5),
4425
4451
  sheen: j(0),
4426
4452
  clearcoat: j(0),
4427
4453
  transmission: j(0),
4428
4454
  iridescence: j(0)
4429
- }).toVar(), Ue = Jr({
4455
+ }).toVar(), We = Jr({
4430
4456
  F0: W(.04),
4431
4457
  NoV: j(1),
4432
4458
  diffuseColor: W(0),
@@ -4438,188 +4464,188 @@ var Wo = 8, Go = 2, Ko = Xt({
4438
4464
  metalFactor: j(.5),
4439
4465
  iorFactor: j(1),
4440
4466
  maxSheenColor: j(0)
4441
- }).toVar(), We = N(0).toVar(), Ge = e.origin.toVar(), Ke = e.direction.toVar();
4467
+ }).toVar(), Ge = N(0).toVar(), Ke = e.origin.toVar(), qe = e.direction.toVar();
4442
4468
  return m({
4443
4469
  start: N(0),
4444
- end: ae.add(L).add(1),
4470
+ end: L.add(oe).add(1),
4445
4471
  type: "int",
4446
4472
  condition: "<"
4447
4473
  }, ({ i: e }) => {
4448
- Me.assign(ae.sub(We)), Fe.assign(e.equal(N(0))), p(We.greaterThan(ae), () => {
4474
+ Ne.assign(L.sub(Ge)), Ie.assign(e.equal(N(0))), p(Ge.greaterThan(L), () => {
4449
4475
  u();
4450
4476
  });
4451
- let r = z(e.greaterThan(N(0)), ue, j(1)), m = Lr({
4452
- origin: Ge,
4453
- direction: Ke
4454
- }), L = Br.wrap(Ni(m, i, a, o)).toVar();
4455
- p(L.didHit.not(), () => {
4456
- let t = fs(Fe, Ke, A, ee, M, re, se, oe), n = j(1).toVar();
4457
- p(K.greaterThan(0).and(re).and(ie), () => {
4458
- let e = zi(A, Ke, ee, ne, F).w.toVar();
4477
+ let r = z(e.greaterThan(N(0)), de, j(1)), m = Lr({
4478
+ origin: Ke,
4479
+ direction: qe
4480
+ }), oe = Br.wrap(Pi(m, i, a, o)).toVar();
4481
+ p(oe.didHit.not(), () => {
4482
+ let t = ps(Ie, qe, A, ee, M, ie, ce, se), n = j(1).toVar();
4483
+ p(Ce.greaterThan(0).and(ie).and(ae), () => {
4484
+ let e = Bi(A, qe, ee, ne, F, re).w.toVar();
4459
4485
  p(e.greaterThan(0), () => {
4460
- n.assign(pi({
4461
- pdf1: K,
4486
+ n.assign(mi({
4487
+ pdf1: Ce,
4462
4488
  pdf2: e
4463
4489
  }));
4464
4490
  });
4465
- }), be.addAssign(ps({
4466
- contribution: t.xyz.mul(xe).mul(r).mul(n),
4491
+ }), xe.addAssign(ms({
4492
+ contribution: t.xyz.mul(Se).mul(r).mul(n),
4467
4493
  pathLength: j(e),
4468
- fireflyThreshold: le,
4469
- frame: N(H)
4470
- })), p(ce.and(U.not()), () => {
4471
- Se.assign(0);
4472
- }).ElseIf(ce.not(), () => {
4473
- Se.mulAssign(t.a);
4494
+ fireflyThreshold: ue,
4495
+ frame: N(be)
4496
+ })), p(le.and(K.not()), () => {
4497
+ U.assign(0);
4498
+ }).ElseIf(le.not(), () => {
4499
+ U.mulAssign(t.a);
4474
4500
  }), u();
4475
4501
  });
4476
- let G = Rr.wrap(Si(L.materialIndex, o)).toVar(), qe = L.uv.toVar(), q = L.normal.toVar();
4502
+ let G = Rr.wrap(Ci(oe.materialIndex, o)).toVar(), q = oe.uv.toVar(), Je = oe.normal.toVar();
4477
4503
  p(G.displacementMapIndex.greaterThanEqual(N(0)).and(G.displacementScale.greaterThan(0)), () => {
4478
- let t = ia.wrap(aa(m, L, a, v, G, e)).toVar();
4479
- qe.assign(t.uv), q.assign(t.normal), L.hitPoint.assign(t.hitPoint);
4504
+ let t = aa.wrap(oa(m, oe, a, v, G, e)).toVar();
4505
+ q.assign(t.uv), Je.assign(t.normal), oe.hitPoint.assign(t.hitPoint);
4480
4506
  });
4481
- let Je = Gr.wrap(Zi(s, c, l, h, g, _, G, qe, L.normal)).toVar();
4482
- G.color.assign(Je.albedo), G.metalness.assign(T(Je.metalness, 0, 1)), G.roughness.assign(T(Je.roughness, ni, 1));
4483
- let Ye = Je.normal.toVar();
4507
+ let Ye = Gr.wrap(Qi(s, c, l, h, g, _, G, q, oe.normal)).toVar();
4508
+ G.color.assign(Ye.albedo), G.metalness.assign(T(Ye.metalness, 0, 1)), G.roughness.assign(T(Ye.roughness, ni, 1));
4509
+ let Xe = Ye.normal.toVar();
4484
4510
  p(G.displacementMapIndex.greaterThanEqual(N(0)).and(G.displacementScale.greaterThan(0)), () => {
4485
- Ye.assign(R(q.add(Je.normal.sub(L.normal))));
4486
- });
4487
- let Xe = j(1).toVar(), Ze = j(1).toVar();
4488
- p(Oe.equal(N(1)), () => {
4489
- Xe.assign(ke);
4490
- }).ElseIf(Oe.equal(N(2)), () => {
4491
- Xe.assign(Ae), Ze.assign(ke);
4492
- }).ElseIf(Oe.equal(N(3)), () => {
4493
- Xe.assign(je), Ze.assign(Ae);
4494
- });
4495
- let Qe = Na.wrap(Va(m, L.hitPoint, Ye, G, t, Ne, Xe, Ze)).toVar();
4496
- p(Qe.continueRay, () => {
4511
+ Xe.assign(R(Je.add(Ye.normal.sub(oe.normal))));
4512
+ });
4513
+ let Ze = j(1).toVar(), Qe = j(1).toVar();
4514
+ p(ke.equal(N(1)), () => {
4515
+ Ze.assign(Ae);
4516
+ }).ElseIf(ke.equal(N(2)), () => {
4517
+ Ze.assign(je), Qe.assign(Ae);
4518
+ }).ElseIf(ke.equal(N(3)), () => {
4519
+ Ze.assign(Me), Qe.assign(je);
4520
+ });
4521
+ let $e = Pa.wrap(Ha(m, oe.hitPoint, Xe, G, t, Pe, Ze, Qe)).toVar();
4522
+ p($e.continueRay, () => {
4497
4523
  let e = w(!1).toVar();
4498
- p(Qe.isTransmissive.and(Ne.greaterThan(N(0))), () => {
4499
- Ne.subAssign(1), Pe.assign(N(as)), e.assign(w(!0)), p(Qe.didReflect.not(), () => {
4500
- p(Qe.entering, () => {
4501
- p(Oe.lessThan(N(3)), () => {
4502
- Oe.addAssign(1), p(Oe.equal(N(1)), () => {
4503
- ke.assign(G.ior);
4504
- }).ElseIf(Oe.equal(N(2)), () => {
4524
+ p($e.isTransmissive.and(Pe.greaterThan(N(0))), () => {
4525
+ Pe.subAssign(1), Fe.assign(N(os)), e.assign(w(!0)), p($e.didReflect.not(), () => {
4526
+ p($e.entering, () => {
4527
+ p(ke.lessThan(N(3)), () => {
4528
+ ke.addAssign(1), p(ke.equal(N(1)), () => {
4505
4529
  Ae.assign(G.ior);
4506
- }).ElseIf(Oe.equal(N(3)), () => {
4530
+ }).ElseIf(ke.equal(N(2)), () => {
4507
4531
  je.assign(G.ior);
4532
+ }).ElseIf(ke.equal(N(3)), () => {
4533
+ Me.assign(G.ior);
4508
4534
  });
4509
4535
  });
4510
4536
  }).Else(() => {
4511
- p(Oe.greaterThan(N(0)), () => {
4512
- Oe.subAssign(1);
4537
+ p(ke.greaterThan(N(0)), () => {
4538
+ ke.subAssign(1);
4513
4539
  });
4514
4540
  });
4515
4541
  });
4516
- }).ElseIf(Qe.isAlphaSkip, () => {
4542
+ }).ElseIf($e.isAlphaSkip, () => {
4517
4543
  e.assign(w(!0));
4518
- }), xe.mulAssign(Qe.throughput), p(ce.not(), () => {
4519
- Se.mulAssign(Qe.alpha);
4544
+ }), Se.mulAssign($e.throughput), p(le.not(), () => {
4545
+ U.mulAssign($e.alpha);
4520
4546
  });
4521
- let t = z(Qe.entering, Ye, Ye.negate()), n = z(Qe.didReflect, t, Ke);
4522
- Ge.assign(L.hitPoint.add(n.mul(.001))), Ke.assign(Qe.direction), Fe.assign(w(!1)), Ie.assign(w(!1)), Re.assign(w(!1)), p(e.not(), () => {
4523
- We.addAssign(1);
4547
+ let t = z($e.entering, Xe, Xe.negate()), n = z($e.didReflect, t, qe);
4548
+ Ke.assign(oe.hitPoint.add(n.mul(.001))), qe.assign($e.direction), Ie.assign(w(!1)), Le.assign(w(!1)), ze.assign(w(!1)), p(e.not(), () => {
4549
+ Ge.addAssign(1);
4524
4550
  }), d();
4525
- }), p(ce.not(), () => {
4526
- Se.mulAssign(Qe.alpha);
4527
- }), U.assign(w(!0));
4528
- let $e = vn(ye, n, e, t, N(-1), V, H).toVar(), et = Ke.negate().toVar();
4529
- G.sheenRoughness.assign(T(G.sheenRoughness, ni, 1)), p(Re.not(), () => {
4530
- Ue.assign(Ta(Ye, et, G, Je, Ve)), Re.assign(w(!0));
4531
- });
4532
- let tt = W(0).toVar(), nt = W(0).toVar(), rt = j(0).toVar();
4551
+ }), p(le.not(), () => {
4552
+ U.mulAssign($e.alpha);
4553
+ }), K.assign(w(!0));
4554
+ let et = vn(V, n, e, t, N(-1), H, be).toVar(), tt = qe.negate().toVar();
4555
+ G.sheenRoughness.assign(T(G.sheenRoughness, ni, 1)), p(ze.not(), () => {
4556
+ We.assign(Ea(Xe, tt, G, Ye, He)), ze.assign(w(!0));
4557
+ });
4558
+ let nt = W(0).toVar(), rt = W(0).toVar(), it = j(0).toVar();
4533
4559
  p(G.clearcoat.greaterThan(0), () => {
4534
- let e = Wa.wrap(Ga(m, L, G, $e, t));
4535
- tt.assign(e.L), nt.assign(e.brdf), rt.assign(e.pdf);
4560
+ let e = Ga.wrap(Ka(m, oe, G, et, t));
4561
+ nt.assign(e.L), rt.assign(e.brdf), it.assign(e.pdf);
4536
4562
  }).Else(() => {
4537
- let e = Vr.wrap(ls(et, Ye, G, L.materialIndex, $e, t, Le, Be, Ve, Ie, He, Re, Ue));
4538
- tt.assign(e.direction), nt.assign(e.value), rt.assign(e.pdf), p(Be.notEqual(L.materialIndex).or(Le.not()), () => {
4539
- Ve.assign(yi(G.metalness, G.roughness, G.transmission, G.clearcoat, G.emissive));
4540
- }), Le.assign(w(!0)), Be.assign(L.materialIndex), Ie.assign(w(!0));
4541
- }), p(te(Je.emissive).greaterThan(0), () => {
4563
+ let e = Vr.wrap(us(tt, Xe, G, oe.materialIndex, et, t, Re, Ve, He, Le, Ue, ze, We));
4564
+ nt.assign(e.direction), rt.assign(e.value), it.assign(e.pdf), p(Ve.notEqual(oe.materialIndex).or(Re.not()), () => {
4565
+ He.assign(bi(G.metalness, G.roughness, G.transmission, G.clearcoat, G.emissive));
4566
+ }), Re.assign(w(!0)), Ve.assign(oe.materialIndex), Le.assign(w(!0));
4567
+ }), p(te(Ye.emissive).greaterThan(0), () => {
4542
4568
  let t = j(1).toVar();
4543
- p(fe.equal(N(1)).and(he.greaterThan(N(0))).and(K.greaterThan(0)), () => {
4544
- let e = Jo(L.triangleIndex, L.dst, Ke, Ge, a, o, ge);
4569
+ p(pe.equal(N(1)).and(ge.greaterThan(N(0))).and(Ce.greaterThan(0)), () => {
4570
+ let e = Yo(oe.triangleIndex, oe.dst, qe, Ke, a, o, _e);
4545
4571
  t.assign(pi({
4546
- pdf1: K,
4572
+ pdf1: Ce,
4547
4573
  pdf2: e
4548
4574
  }));
4549
- }), be.addAssign(ps({
4550
- contribution: Je.emissive.mul(xe).mul(r).mul(t),
4575
+ }), xe.addAssign(ms({
4576
+ contribution: Ye.emissive.mul(Se).mul(r).mul(t),
4551
4577
  pathLength: j(e),
4552
- fireflyThreshold: le,
4553
- frame: N(H)
4578
+ fireflyThreshold: ue,
4579
+ frame: N(be)
4554
4580
  }));
4555
4581
  });
4556
- let it = To(L.hitPoint, Ye, G, et, tt, rt, nt, n, e, t, y, b, x, S, C, E, D, O, i, a, o, A, M, ee, P, ne, F, re);
4557
- be.addAssign(ps({
4558
- contribution: it.mul(xe).mul(r),
4582
+ let at = Eo(oe.hitPoint, Xe, G, tt, nt, it, rt, n, e, t, y, b, x, S, C, E, D, O, i, a, o, A, M, ee, P, ne, F, re, ie);
4583
+ xe.addAssign(ms({
4584
+ contribution: at.mul(Se).mul(r),
4559
4585
  pathLength: j(e),
4560
- fireflyThreshold: le,
4561
- frame: N(H)
4562
- })), p(fe.equal(N(1)).and(he.greaterThan(N(0))), () => {
4563
- let n = f(([e, t, n, r]) => fo(e, t, n, r, Pi, i, a, o));
4564
- p(B.greaterThan(N(0)), () => {
4565
- let i = Mo.wrap(ns(L.hitPoint, Ye, t, ve, pe, me, a));
4586
+ fireflyThreshold: ue,
4587
+ frame: N(be)
4588
+ })), p(pe.equal(N(1)).and(ge.greaterThan(N(0))), () => {
4589
+ let n = f(([e, t, n, r]) => po(e, t, n, r, Fi, i, a, o));
4590
+ p(ye.greaterThan(N(0)), () => {
4591
+ let i = No.wrap(rs(oe.hitPoint, Xe, t, B, me, he, a));
4566
4592
  p(e.greaterThan(N(1)).and(G.roughness.greaterThan(.9)).and(G.metalness.lessThan(.1)).not().and(i.valid).and(i.pdf.greaterThan(0)), () => {
4567
- let a = I(j(0), k(Ye, i.direction));
4593
+ let a = I(j(0), k(Xe, i.direction));
4568
4594
  p(a.greaterThan(0), () => {
4569
- let o = po(L.hitPoint, Ye, G), s = L.hitPoint.add(o), c = i.distance.sub(.001), l = n(s, i.direction, c, t);
4595
+ let o = mo(oe.hitPoint, Xe, G), s = oe.hitPoint.add(o), c = i.distance.sub(.001), l = n(s, i.direction, c, t);
4570
4596
  p(l.greaterThan(0), () => {
4571
- let t = Ha(et, i.direction, Ye, G), n = wo(et, i.direction, Ye, G), o = z(n.greaterThan(0), pi({
4597
+ let t = Ua(tt, i.direction, Xe, G), n = To(tt, i.direction, Xe, G), o = z(n.greaterThan(0), pi({
4572
4598
  pdf1: i.pdf,
4573
4599
  pdf2: n
4574
- }), j(1)), s = i.emission.mul(t).mul(a).div(i.pdf).mul(l).mul(_e).mul(o);
4575
- be.addAssign(ps({
4576
- contribution: s.mul(xe).mul(r),
4600
+ }), j(1)), s = i.emission.mul(t).mul(a).div(i.pdf).mul(l).mul(ve).mul(o);
4601
+ xe.addAssign(ms({
4602
+ contribution: s.mul(Se).mul(r),
4577
4603
  pathLength: j(e),
4578
- fireflyThreshold: le,
4579
- frame: N(H)
4604
+ fireflyThreshold: ue,
4605
+ frame: N(be)
4580
4606
  }));
4581
4607
  });
4582
4608
  });
4583
4609
  });
4584
4610
  }).Else(() => {
4585
- let i = Qo(L.hitPoint, Ye, et, G, de, e, t, _e, pe, me, he, ge, a, n, Ha, po);
4586
- be.addAssign(ps({
4587
- contribution: i.mul(xe).mul(r),
4611
+ let i = $o(oe.hitPoint, Xe, tt, G, fe, e, t, ve, me, he, ge, _e, a, n, Ua, mo);
4612
+ xe.addAssign(ms({
4613
+ contribution: i.mul(Se).mul(r),
4588
4614
  pathLength: j(e),
4589
- fireflyThreshold: le,
4590
- frame: N(H)
4615
+ fireflyThreshold: ue,
4616
+ frame: N(be)
4591
4617
  }));
4592
4618
  });
4593
- }), p(Ie.not().or(e.equal(N(0))), () => {
4594
- Ve.assign(Kr.wrap(cs(G, L.materialIndex, Le, Be, Ve))), Le.assign(w(!0)), Be.assign(L.materialIndex);
4619
+ }), p(Le.not().or(e.equal(N(0))), () => {
4620
+ He.assign(Kr.wrap(ls(G, oe.materialIndex, Re, Ve, He))), Re.assign(w(!0)), Ve.assign(oe.materialIndex);
4595
4621
  });
4596
- let at = Ur.wrap(wa(G, e, Ve, M, ie, re)), ot = Za.wrap(jo(et, Ye, G, tt, rt, nt, n, e, t, at, A, M, ee, ne, F, re, ie));
4597
- xe.mulAssign(ot.throughput), Ge.assign(L.hitPoint.add(Ye.mul(.001))), Ke.assign(ot.direction), K.assign(ot.combinedPdf), Fe.assign(w(!1)), p(G.metalness.greaterThan(.7).and(G.roughness.lessThan(.3)), () => {
4598
- Pe.assign(N(is));
4622
+ let ot = Ur.wrap(Ta(G, e, He, M, ae, ie)), st = Qa.wrap(Mo(tt, Xe, G, nt, it, rt, n, e, t, ot, A, M, ee, ne, F, re, ie, ae));
4623
+ Se.mulAssign(st.throughput), Ke.assign(oe.hitPoint.add(Xe.mul(.001))), qe.assign(st.direction), Ce.assign(st.combinedPdf), Ie.assign(w(!1)), p(G.metalness.greaterThan(.7).and(G.roughness.lessThan(.3)), () => {
4624
+ Fe.assign(N(as));
4599
4625
  }).ElseIf(G.transmission.greaterThan(.5), () => {
4600
- Pe.assign(N(as));
4626
+ Fe.assign(N(os));
4601
4627
  }).Else(() => {
4602
- Pe.assign(N(os));
4603
- }), p(e.equal(N(0)).and(L.didHit), () => {
4604
- Ce.assign(Ye), we.assign(G.color.xyz), Te.assign(j(L.materialIndex)), Ee.assign(L.hitPoint), De.assign(L.dst);
4628
+ Fe.assign(N(ss));
4629
+ }), p(e.equal(N(0)).and(oe.didHit), () => {
4630
+ we.assign(Xe), Te.assign(G.color.xyz), Ee.assign(j(oe.materialIndex)), De.assign(oe.hitPoint), Oe.assign(oe.dst);
4605
4631
  });
4606
- let st = ds(e, xe, G, L.materialIndex, Ke, t, Le, Be, Ve, Ie, ze, re, ie);
4607
- p(st.lessThanEqual(0), () => {
4632
+ let ct = fs(e, Se, G, oe.materialIndex, qe, t, Re, Ve, He, Le, Be, ie, ae);
4633
+ p(ct.lessThanEqual(0), () => {
4608
4634
  u();
4609
- }), xe.divAssign(st), We.addAssign(1), Ie.assign(w(!1)), Re.assign(w(!1));
4610
- }), ss({
4611
- radiance: G(be, Se),
4612
- objectNormal: Ce,
4613
- objectColor: we,
4614
- objectID: Te,
4615
- firstHitPoint: Ee,
4616
- firstHitDistance: De
4635
+ }), Se.divAssign(ct), Ge.addAssign(1), Le.assign(w(!1)), ze.assign(w(!1));
4636
+ }), cs({
4637
+ radiance: G(xe, U),
4638
+ objectNormal: we,
4639
+ objectColor: Te,
4640
+ objectID: Ee,
4641
+ firstHitPoint: De,
4642
+ firstHitDistance: Oe
4617
4643
  });
4618
- }), hs = /* @__PURE__ */ K("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n return vec3f( 1.0f - depth );\n }\n"), gs = /* @__PURE__ */ K("\n fn visualizeNormal( normal: vec3f ) -> vec3f {\n return normal * 0.5f + 0.5f;\n }\n"), _s = /* @__PURE__ */ K("\n fn computeNDCDepthLocal( worldPos: vec3f, cameraProjectionMatrix: mat4x4f, cameraViewMatrix: mat4x4f ) -> f32 {\n let clipPos = cameraProjectionMatrix * cameraViewMatrix * vec4f( worldPos, 1.0f );\n let ndcDepth = clipPos.z / clipPos.w * 0.5f + 0.5f;\n return clamp( ndcDepth, 0.0f, 1.0f );\n }\n"), vs = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, m, h, g, _, v, y, b, x, S]) => {
4644
+ }), gs = /* @__PURE__ */ K("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n return vec3f( 1.0f - depth );\n }\n"), _s = /* @__PURE__ */ K("\n fn visualizeNormal( normal: vec3f ) -> vec3f {\n return normal * 0.5f + 0.5f;\n }\n"), vs = /* @__PURE__ */ K("\n fn computeNDCDepthLocal( worldPos: vec3f, cameraProjectionMatrix: mat4x4f, cameraViewMatrix: mat4x4f ) -> f32 {\n let clipPos = cameraProjectionMatrix * cameraViewMatrix * vec4f( worldPos, 1.0f );\n let ndcDepth = clipPos.z / clipPos.w * 0.5f + 0.5f;\n return clamp( ndcDepth, 0.0f, 1.0f );\n }\n"), ys = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, m, h, g, _, v, y, b, x, S]) => {
4619
4645
  let C = G(1, 0, 1, 1).toVar(), w = Lr({
4620
4646
  origin: e,
4621
4647
  direction: t
4622
- }), E = Br.wrap(Ni(w, n, r, i).toVar());
4648
+ }), E = Br.wrap(Pi(w, n, r, i).toVar());
4623
4649
  return p(l.equal(N(7)), () => {
4624
4650
  let e = j(E.triTests).div(u);
4625
4651
  C.assign(z(e.lessThan(1), G(W(e), 1), G(1, 0, 0, 1)));
@@ -4628,7 +4654,7 @@ var Wo = 8, Go = 2, Ko = Xt({
4628
4654
  C.assign(z(e.lessThan(1), G(W(e), 1), G(1, 0, 0, 1)));
4629
4655
  }), p(l.equal(N(10)), () => {
4630
4656
  p(c, () => {
4631
- let e = Vi({
4657
+ let e = Hi({
4632
4658
  tex: a,
4633
4659
  samp: de(a),
4634
4660
  direction: t,
@@ -4663,7 +4689,7 @@ var Wo = 8, Go = 2, Ko = Xt({
4663
4689
  p(E.didHit.not(), () => {
4664
4690
  C.assign(G(0, 0, 0, 1));
4665
4691
  }).Else(() => {
4666
- let t = Rr.wrap(Si(E.materialIndex, i)).toVar(), n = Gr.wrap(Zi(m, h, g, _, v, y, t, E.uv, E.normal)).toVar().emissive.toVar(), r = te(n).toVar();
4692
+ let t = Rr.wrap(Ci(E.materialIndex, i)).toVar(), n = Gr.wrap(Qi(m, h, g, _, v, y, t, E.uv, E.normal)).toVar().emissive.toVar(), r = te(n).toVar();
4667
4693
  p(r.greaterThan(0), () => {
4668
4694
  let t = n.div(I(r.mul(.1), .001)).toVar(), i = te(e.sub(E.hitPoint)), a = T(j(1).sub(i.div(10)), 0, 1), o = L(t, t.mul(W(1, .8, .6)), a.mul(.3));
4669
4695
  C.assign(G(o, 1));
@@ -4675,41 +4701,41 @@ var Wo = 8, Go = 2, Ko = Xt({
4675
4701
  p(E.didHit.not(), () => {
4676
4702
  C.assign(G(.5, .5, 1, 1));
4677
4703
  }).Else(() => {
4678
- let e = Rr.wrap(Si(E.materialIndex, i)).toVar(), t = R(Gr.wrap(Zi(m, h, g, _, v, y, e, E.uv, E.normal)).toVar().normal);
4679
- C.assign(G(gs({ normal: t }), 1));
4704
+ let e = Rr.wrap(Ci(E.materialIndex, i)).toVar(), t = R(Gr.wrap(Qi(m, h, g, _, v, y, e, E.uv, E.normal)).toVar().normal);
4705
+ C.assign(G(_s({ normal: t }), 1));
4680
4706
  });
4681
4707
  }), p(l.equal(N(2)), () => {
4682
4708
  p(E.didHit.not(), () => {
4683
4709
  C.assign(G(W(1), 1));
4684
4710
  }).Else(() => {
4685
- let e = _s({
4711
+ let e = vs({
4686
4712
  worldPos: E.hitPoint,
4687
4713
  cameraProjectionMatrix: b,
4688
4714
  cameraViewMatrix: x
4689
4715
  });
4690
- C.assign(G(hs({ depth: e }), 1));
4716
+ C.assign(G(gs({ depth: e }), 1));
4691
4717
  });
4692
4718
  }), p(l.equal(N(3)), () => {
4693
4719
  p(E.didHit.not(), () => {
4694
4720
  C.assign(G(0, 0, 0, 1));
4695
4721
  }).Else(() => {
4696
- let e = Rr.wrap(Si(E.materialIndex, i)).toVar(), t = Gr.wrap(Zi(m, h, g, _, v, y, e, E.uv, E.normal)).toVar().albedo.rgb;
4722
+ let e = Rr.wrap(Ci(E.materialIndex, i)).toVar(), t = Gr.wrap(Qi(m, h, g, _, v, y, e, E.uv, E.normal)).toVar().albedo.rgb;
4697
4723
  C.assign(G(t, 1));
4698
4724
  });
4699
4725
  }), p(l.equal(N(5)), () => {
4700
4726
  p(E.didHit.not(), () => {
4701
4727
  C.assign(G(0, 0, 0, 1));
4702
4728
  }).Else(() => {
4703
- let e = Rr.wrap(Si(E.materialIndex, i)).toVar(), t = Gr.wrap(Zi(m, h, g, _, v, y, e, E.uv, E.normal)).toVar(), l = t.albedo.rgb.toVar(), u = R(t.normal).toVar(), f = ln({ state: un({ seed: V(d.x).mul(V(1973)).add(V(d.y).mul(V(9277))).add(S.mul(V(26699))) }) }).toVar(), b = Oa({
4729
+ let e = Rr.wrap(Ci(E.materialIndex, i)).toVar(), t = Gr.wrap(Qi(m, h, g, _, v, y, e, E.uv, E.normal)).toVar(), l = t.albedo.rgb.toVar(), u = R(t.normal).toVar(), f = ln({ state: un({ seed: V(d.x).mul(V(1973)).add(V(d.y).mul(V(9277))).add(S.mul(V(26699))) }) }).toVar(), b = ka({
4704
4730
  N: u,
4705
4731
  xi: U(J(f).toVar(), J(f).toVar()).toVar()
4706
4732
  }).toVar(), x = Lr({
4707
4733
  origin: E.hitPoint.add(u.mul(.001)).toVar(),
4708
4734
  direction: b
4709
- }), w = Br.wrap(Ni(x, n, r, i).toVar()), T = W(0).toVar();
4735
+ }), w = Br.wrap(Pi(x, n, r, i).toVar()), T = W(0).toVar();
4710
4736
  p(w.didHit.not(), () => {
4711
4737
  p(c, () => {
4712
- T.assign(Vi({
4738
+ T.assign(Hi({
4713
4739
  tex: a,
4714
4740
  samp: de(a),
4715
4741
  direction: b,
@@ -4719,9 +4745,9 @@ var Wo = 8, Go = 2, Ko = Xt({
4719
4745
  }).xyz);
4720
4746
  });
4721
4747
  }).Else(() => {
4722
- let e = Rr.wrap(Si(w.materialIndex, i)).toVar(), t = Gr.wrap(Zi(m, h, g, _, v, y, e, w.uv, w.normal)).toVar();
4748
+ let e = Rr.wrap(Ci(w.materialIndex, i)).toVar(), t = Gr.wrap(Qi(m, h, g, _, v, y, e, w.uv, w.normal)).toVar();
4723
4749
  T.assign(t.emissive), p(c, () => {
4724
- let e = R(t.normal).toVar(), n = Vi({
4750
+ let e = R(t.normal).toVar(), n = Hi({
4725
4751
  tex: a,
4726
4752
  samp: de(a),
4727
4753
  direction: e,
@@ -4737,7 +4763,7 @@ var Wo = 8, Go = 2, Ko = Xt({
4737
4763
  });
4738
4764
  }), p(l.equal(N(6)), () => {
4739
4765
  p(E.didHit, () => {
4740
- let e = E.normal.toVar(), n = R(t.sub(e.mul(k(t, e).mul(2)))).toVar(), r = Vi({
4766
+ let e = E.normal.toVar(), n = R(t.sub(e.mul(k(t, e).mul(2)))).toVar(), r = Hi({
4741
4767
  tex: a,
4742
4768
  samp: de(a),
4743
4769
  direction: n,
@@ -4747,7 +4773,7 @@ var Wo = 8, Go = 2, Ko = Xt({
4747
4773
  }).xyz, i = r.div(r.add(1));
4748
4774
  C.assign(G(i, 1));
4749
4775
  }).Else(() => {
4750
- let e = Vi({
4776
+ let e = Hi({
4751
4777
  tex: a,
4752
4778
  samp: de(a),
4753
4779
  direction: t,
@@ -4763,7 +4789,7 @@ f(([e, t]) => {
4763
4789
  let n = J(t), r = W(.25 / 255, -.25 / 255, .25 / 255).toVar();
4764
4790
  return r.assign(L(r.mul(2), r.mul(-2), n)), e.add(r);
4765
4791
  });
4766
- var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjectionMatrix: mat4x4f, cameraViewMatrix: mat4x4f ) -> f32 {\n let clipPos = cameraProjectionMatrix * cameraViewMatrix * vec4f( worldPos, 1.0f );\n let ndcDepth = clipPos.z / clipPos.w * 0.5f + 0.5f;\n return clamp( ndcDepth, 0.0f, 1.0f );\n }\n"), bs = f(([e, t, n, r, i]) => {
4792
+ var bs = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjectionMatrix: mat4x4f, cameraViewMatrix: mat4x4f ) -> f32 {\n let clipPos = cameraProjectionMatrix * cameraViewMatrix * vec4f( worldPos, 1.0f );\n let ndcDepth = clipPos.z / clipPos.w * 0.5f + 0.5f;\n return clamp( ndcDepth, 0.0f, 1.0f );\n }\n"), xs = f(([e, t, n, r, i]) => {
4767
4793
  let a = ve(n, e.div(t), 0), o = N(0).toVar();
4768
4794
  return p(a.b.greaterThan(.5), () => {
4769
4795
  o.assign(0);
@@ -4771,64 +4797,64 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4771
4797
  let e = N(M(a.r.mul(j(i)).add(.5)));
4772
4798
  o.assign(T(e, r, i));
4773
4799
  }), o;
4774
- }), xs = (e) => {
4775
- let { pixelCoord: t, writeColorTex: n, writeNDTex: r, writeAlbedoTex: i, resolution: a, frame: o, samplesPerPixel: s, visMode: c, cameraWorldMatrix: l, cameraProjectionMatrixInverse: d, cameraViewMatrix: f, cameraProjectionMatrix: h, bvhBuffer: g, triangleBuffer: _, materialBuffer: v, albedoMaps: y, normalMaps: b, bumpMaps: x, metalnessMaps: S, roughnessMaps: C, emissiveMaps: w, displacementMaps: T, directionalLightsBuffer: E, numDirectionalLights: D, areaLightsBuffer: O, numAreaLights: k, pointLightsBuffer: A, numPointLights: M, spotLightsBuffer: ee, numSpotLights: P, envTexture: te, environmentIntensity: ne, envMatrix: F, envCDFBuffer: re, envTotalSum: ie, envResolution: I, enableEnvironmentLight: ae, useEnvMapIS: oe, maxBounceCount: se, transmissiveBounces: ce, showBackground: le, transparentBackground: ue, backgroundIntensity: de, fireflyThreshold: fe, globalIlluminationIntensity: pe, totalTriangleCount: me, enableEmissiveTriangleSampling: he, emissiveTriangleBuffer: ge, emissiveVec4Offset: _e, emissiveTriangleCount: B, emissiveTotalPower: H, emissiveBoost: be, lightBVHBuffer: xe, lightBVHNodeCount: K, debugVisScale: Ce, enableAccumulation: we, hasPreviousAccumulated: Te, prevAccumTexture: Ee, prevNormalDepthTexture: De, prevAlbedoTexture: Oe, accumulationAlpha: ke, cameraIsMoving: Ae, useAdaptiveSampling: je, adaptiveSamplingTexture: Me, adaptiveSamplingMin: Ne, adaptiveSamplingMax: Pe, enableDOF: Fe, focalLength: Ie, aperture: Le, focusDistance: Re, sceneScale: ze, apertureScale: Be, anamorphicRatio: Ve } = e, He = Se(V(N(t.x)), V(N(t.y))), Ue = t.div(a), We = t.div(a).mul(2).sub(1).toVar();
4776
- We.y.assign(We.y.negate());
4777
- let Ge = G(0).toVar(), Ke = N(0).toVar(), qe = bn({
4800
+ }), Ss = (e) => {
4801
+ let { pixelCoord: t, writeColorTex: n, writeNDTex: r, writeAlbedoTex: i, resolution: a, frame: o, samplesPerPixel: s, visMode: c, cameraWorldMatrix: l, cameraProjectionMatrixInverse: d, cameraViewMatrix: f, cameraProjectionMatrix: h, bvhBuffer: g, triangleBuffer: _, materialBuffer: v, albedoMaps: y, normalMaps: b, bumpMaps: x, metalnessMaps: S, roughnessMaps: C, emissiveMaps: w, displacementMaps: T, directionalLightsBuffer: E, numDirectionalLights: D, areaLightsBuffer: O, numAreaLights: k, pointLightsBuffer: A, numPointLights: M, spotLightsBuffer: ee, numSpotLights: P, envTexture: te, environmentIntensity: ne, envMatrix: F, envCDFBuffer: re, envTotalSum: ie, envCompensationDelta: I, envResolution: ae, enableEnvironmentLight: oe, useEnvMapIS: se, maxBounceCount: ce, transmissiveBounces: le, showBackground: ue, transparentBackground: de, backgroundIntensity: fe, fireflyThreshold: pe, globalIlluminationIntensity: me, totalTriangleCount: he, enableEmissiveTriangleSampling: ge, emissiveTriangleBuffer: _e, emissiveVec4Offset: B, emissiveTriangleCount: H, emissiveTotalPower: be, emissiveBoost: xe, lightBVHBuffer: K, lightBVHNodeCount: Ce, debugVisScale: we, enableAccumulation: Te, hasPreviousAccumulated: Ee, prevAccumTexture: De, prevNormalDepthTexture: Oe, prevAlbedoTexture: ke, accumulationAlpha: Ae, cameraIsMoving: je, useAdaptiveSampling: Me, adaptiveSamplingTexture: Ne, adaptiveSamplingMin: Pe, adaptiveSamplingMax: Fe, enableDOF: Ie, focalLength: Le, aperture: Re, focusDistance: ze, sceneScale: Be, apertureScale: Ve, anamorphicRatio: He } = e, Ue = Se(V(N(t.x)), V(N(t.y))), We = t.div(a), Ge = t.div(a).mul(2).sub(1).toVar();
4802
+ Ge.y.assign(Ge.y.negate());
4803
+ let Ke = G(0).toVar(), qe = N(0).toVar(), q = bn({
4778
4804
  pixelCoord: t,
4779
4805
  rayIndex: N(0),
4780
4806
  frame: o
4781
- }).toVar(), q = N(t.y).mul(N(a.x)).add(N(t.x)).toVar(), Je = W(0, 0, 1).toVar(), Ye = j(1).toVar(), Xe = j(0).toVar(), Ze = N(s).toVar();
4782
- p(o.greaterThan(V(2)).and(je), () => {
4783
- let e = bs(t, a, Me, Ne, Pe);
4784
- Ze.assign(e), p(Ze.equal(N(0)), () => {
4785
- p(we.and(Te), () => {
4786
- let e = ve(Ee, Ue, 0);
4787
- Ge.assign(e), Xe.assign(e.w);
4788
- let t = ve(De, Ue, 0);
4789
- Je.assign(t.xyz.mul(2).sub(1)), Ye.assign(t.w);
4807
+ }).toVar(), Je = N(t.y).mul(N(a.x)).add(N(t.x)).toVar(), Ye = W(0, 0, 1).toVar(), Xe = j(1).toVar(), Ze = j(0).toVar(), Qe = N(s).toVar();
4808
+ p(o.greaterThan(V(2)).and(Me), () => {
4809
+ let e = xs(t, a, Ne, Pe, Fe);
4810
+ Qe.assign(e), p(Qe.equal(N(0)), () => {
4811
+ p(Te.and(Ee), () => {
4812
+ let e = ve(De, We, 0);
4813
+ Ke.assign(e), Ze.assign(e.w);
4814
+ let t = ve(Oe, We, 0);
4815
+ Ye.assign(t.xyz.mul(2).sub(1)), Xe.assign(t.w);
4790
4816
  }).Else(() => {
4791
- Ze.assign(1);
4817
+ Qe.assign(1);
4792
4818
  });
4793
4819
  });
4794
4820
  });
4795
- let Qe = W(0).toVar(), $e = W(0).toVar(), et = j(-1e3).toVar(), tt = U(2).div(a).toVar();
4821
+ let $e = W(0).toVar(), et = W(0).toVar(), tt = j(-1e3).toVar(), nt = U(2).div(a).toVar();
4796
4822
  m({
4797
4823
  start: N(0),
4798
- end: Ze,
4824
+ end: Qe,
4799
4825
  type: "int",
4800
4826
  condition: "<"
4801
4827
  }, ({ i: e }) => {
4802
- let n = ln({ state: qe.add(V(e)) }).toVar(), r = yn(t, e, Ze, n, a, o).toVar();
4828
+ let n = ln({ state: q.add(V(e)) }).toVar(), r = yn(t, e, Qe, n, a, o).toVar();
4803
4829
  p(c.equal(N(9)), () => {
4804
- Ge.assign(G(r, 1, 1)), Ke.assign(1), u();
4830
+ Ke.assign(G(r, 1, 1)), qe.assign(1), u();
4805
4831
  });
4806
- let i = r.sub(.5).mul(tt), s = We.add(i), m = Lr.wrap(Fi(s, n, l, d, Fe, Ie, Le, Re, ze, Be, Ve)), j = G(0).toVar();
4832
+ let i = r.sub(.5).mul(nt), s = Ge.add(i), m = Lr.wrap(Ii(s, n, l, d, Ie, Le, Re, ze, Be, Ve, He)), j = G(0).toVar();
4807
4833
  p(c.greaterThan(N(0)), () => {
4808
- j.assign(vs(m.origin, m.direction, g, _, v, te, F, ne, ae, c, Ce, t, a, y, b, x, S, C, w, h, f, o));
4834
+ j.assign(ys(m.origin, m.direction, g, _, v, te, F, ne, oe, c, we, t, a, y, b, x, S, C, w, h, f, o));
4809
4835
  }).Else(() => {
4810
- let r = ss.wrap(ms(m, n, e, q, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, M, ee, P, te, ne, F, re, ie, I, ae, oe, se, ce, de, le, ue, fe, pe, me, he, ge, _e, B, H, be, xe, K, t, a, o));
4836
+ let r = cs.wrap(hs(m, n, e, Je, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, M, ee, P, te, ne, F, re, ie, I, ae, oe, se, ce, le, fe, ue, de, pe, me, he, ge, _e, B, H, be, xe, K, Ce, t, a, o));
4811
4837
  j.assign(r.radiance), p(e.equal(N(0)), () => {
4812
- Qe.assign(r.objectNormal), $e.assign(r.objectColor), et.assign(r.objectID), p(r.firstHitDistance.lessThan(1e9), () => {
4813
- Je.assign(R(r.objectNormal)), Ye.assign(ys({
4838
+ $e.assign(r.objectNormal), et.assign(r.objectColor), tt.assign(r.objectID), p(r.firstHitDistance.lessThan(1e9), () => {
4839
+ Ye.assign(R(r.objectNormal)), Xe.assign(bs({
4814
4840
  worldPos: r.firstHitPoint,
4815
4841
  cameraProjectionMatrix: h,
4816
4842
  cameraViewMatrix: f
4817
4843
  }));
4818
4844
  });
4819
4845
  });
4820
- }), Ge.addAssign(j), Xe.addAssign(j.w), Ke.addAssign(1);
4821
- }), p(Ke.greaterThan(N(0)), () => {
4822
- Ge.divAssign(j(Ke)), Xe.divAssign(j(Ke));
4846
+ }), Ke.addAssign(j), Ze.addAssign(j.w), qe.addAssign(1);
4847
+ }), p(qe.greaterThan(N(0)), () => {
4848
+ Ke.divAssign(j(qe)), Ze.divAssign(j(qe));
4823
4849
  });
4824
- let nt = Ge.xyz.toVar(), rt = G(Je.mul(.5).add(.5), Ye).toVar(), it = W($e).toVar(), at = z(ue, Xe, j(1)).toVar();
4825
- p(we.and(Ae.not()).and(o.greaterThan(V(0))).and(Te), () => {
4826
- let e = ve(Ee, Ue, 0).toVar();
4827
- nt.assign(L(e.xyz, Ge.xyz, ke)), rt.assign(L(ve(De, Ue, 0), rt, ke)), it.assign(L(ve(Oe, Ue, 0).xyz, it, ke)), p(ue, () => {
4828
- at.assign(L(e.w, Xe, ke));
4829
- });
4830
- }), ye(n, He, G(nt.xyz, at)).toWriteOnly(), ye(r, He, rt).toWriteOnly(), ye(i, He, G(it, 1)).toWriteOnly();
4831
- }, Ss = class {
4850
+ let rt = Ke.xyz.toVar(), it = G(Ye.mul(.5).add(.5), Xe).toVar(), at = W(et).toVar(), ot = z(de, Ze, j(1)).toVar();
4851
+ p(Te.and(je.not()).and(o.greaterThan(V(0))).and(Ee), () => {
4852
+ let e = ve(De, We, 0).toVar();
4853
+ rt.assign(L(e.xyz, Ke.xyz, Ae)), it.assign(L(ve(Oe, We, 0), it, Ae)), at.assign(L(ve(ke, We, 0).xyz, at, Ae)), p(de, () => {
4854
+ ot.assign(L(e.w, Ze, Ae));
4855
+ });
4856
+ }), ye(n, Ue, G(rt.xyz, ot)).toWriteOnly(), ye(r, Ue, it).toWriteOnly(), ye(i, Ue, G(at, 1)).toWriteOnly();
4857
+ }, Cs = class {
4832
4858
  constructor(e = "Build") {
4833
4859
  this.label = e, this.entries = /* @__PURE__ */ new Map(), this.order = [], this.totalStart = performance.now();
4834
4860
  }
@@ -4855,7 +4881,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4855
4881
  total: Math.round(e)
4856
4882
  };
4857
4883
  }
4858
- }, Cs = 8, ws = class {
4884
+ }, ws = 8, Ts = class {
4859
4885
  constructor() {
4860
4886
  this.computeNode = null, this.prevColorTexNode = null, this.prevNormalDepthTexNode = null, this.prevAlbedoTexNode = null, this.adaptiveSamplingTexNode = null, this.tileOffsetX = H(0, "int"), this.tileOffsetY = H(0, "int"), this.renderWidth = H(1920, "int"), this.renderHeight = H(1080, "int"), this._dispatchX = 0, this._dispatchY = 0, this._dispatchSize = [
4861
4887
  0,
@@ -4864,12 +4890,12 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4864
4890
  ], this._sceneTextureNodes = null, this._compiled = !1;
4865
4891
  }
4866
4892
  setupCompute(e) {
4867
- let { stage: t, storageTextures: n } = e, r = new Ss("setupCompute");
4893
+ let { stage: t, storageTextures: n } = e, r = new Cs("setupCompute");
4868
4894
  r.start("Create texture nodes");
4869
4895
  let i = this._createTextureNodes(t, n);
4870
4896
  r.end("Create texture nodes"), r.start("Build compute node (TSL)");
4871
4897
  let a = n.renderWidth, o = n.renderHeight;
4872
- this._dispatchX = Math.ceil(a / Cs), this._dispatchY = Math.ceil(o / Cs), this.renderWidth.value = a, this.renderHeight.value = o;
4898
+ this._dispatchX = Math.ceil(a / ws), this._dispatchY = Math.ceil(o / ws), this.renderWidth.value = a, this.renderHeight.value = o;
4873
4899
  let s = n.getWriteTextures();
4874
4900
  this.computeNode = this._buildComputeNode(t, i, s.color, s.normalDepth, s.albedo), this._compiled = !1, r.end("Build compute node (TSL)"), r.print();
4875
4901
  }
@@ -4881,11 +4907,11 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4881
4907
  return this._sceneTextureNodes;
4882
4908
  }
4883
4909
  setSize(e, t) {
4884
- this._dispatchX = Math.ceil(e / Cs), this._dispatchY = Math.ceil(t / Cs), this.computeNode && (this._dispatchSize[0] = this._dispatchX, this._dispatchSize[1] = this._dispatchY, this.computeNode.dispatchSize = this._dispatchSize), this.renderWidth.value = e, this.renderHeight.value = t, this.tileOffsetX.value = 0, this.tileOffsetY.value = 0;
4910
+ this._dispatchX = Math.ceil(e / ws), this._dispatchY = Math.ceil(t / ws), this.computeNode && (this._dispatchSize[0] = this._dispatchX, this._dispatchSize[1] = this._dispatchY, this.computeNode.dispatchSize = this._dispatchSize), this.renderWidth.value = e, this.renderHeight.value = t, this.tileOffsetX.value = 0, this.tileOffsetY.value = 0;
4885
4911
  }
4886
4912
  setTileDispatch(e, t, n, r) {
4887
4913
  this.tileOffsetX.value = e, this.tileOffsetY.value = t;
4888
- let i = Math.ceil(n / Cs), a = Math.ceil(r / Cs);
4914
+ let i = Math.ceil(n / ws), a = Math.ceil(r / ws);
4889
4915
  this.computeNode && (this._dispatchSize[0] = i, this._dispatchSize[1] = a, this.computeNode.dispatchSize = this._dispatchSize);
4890
4916
  }
4891
4917
  setFullScreenDispatch() {
@@ -4896,7 +4922,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4896
4922
  }
4897
4923
  _createTextureNodes(e, t) {
4898
4924
  let n = e.triangleStorageNode, r = e.bvhStorageNode, i = e.materialData.materialStorageNode, a = e.lightStorageNode;
4899
- uo(e.uniforms.get("enableAlphaShadows"));
4925
+ fo(e.uniforms.get("enableAlphaShadows"));
4900
4926
  let o = ve(e.environment.environmentTexture), c = new s();
4901
4927
  this.adaptiveSamplingTexNode = c;
4902
4928
  let l = e.environment.envCDFStorageNode, u = t.getReadTextures();
@@ -4910,7 +4936,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4910
4936
  ]), 1, 1, 1);
4911
4937
  return e.minFilter = q, e.magFilter = q, e.generateMipmaps = !1, e.needsUpdate = !0, ve(e);
4912
4938
  }, f = e.materialData, p = f.albedoMaps ? ve(f.albedoMaps) : d(), m = f.normalMaps ? ve(f.normalMaps) : d(), h = f.bumpMaps ? ve(f.bumpMaps) : d(), g = f.metalnessMaps ? ve(f.metalnessMaps) : d(), _ = f.roughnessMaps ? ve(f.roughnessMaps) : d(), v = f.emissiveMaps ? ve(f.emissiveMaps) : d(), y = f.displacementMaps ? ve(f.displacementMaps) : d();
4913
- lo(p);
4939
+ uo(p);
4914
4940
  let b = {
4915
4941
  triStorage: n,
4916
4942
  bvhStorage: r,
@@ -4932,9 +4958,9 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4932
4958
  _buildComputeNode(e, t, n, r, i) {
4933
4959
  let { triStorage: a, bvhStorage: o, matStorage: s, lightBufferStorage: c, envTex: l, adaptiveSamplingTex: u, envCDFStorage: d, albedoMapsTex: m, normalMapsTex: h, bumpMapsTex: g, metalnessMapsTex: _, roughnessMapsTex: v, emissiveMapsTex: y, displacementMapsTex: b } = t, x = this.tileOffsetX, S = this.tileOffsetY, C = this.renderWidth, w = this.renderHeight, T = this.prevColorTexNode, E = this.prevNormalDepthTexNode, D = this.prevAlbedoTexNode;
4934
4960
  return f(() => {
4935
- let t = x.add(N(Te.x).mul(Cs)).add(N(F.x)), f = S.add(N(Te.y).mul(Cs)).add(N(F.y));
4961
+ let t = x.add(N(Te.x).mul(ws)).add(N(F.x)), f = S.add(N(Te.y).mul(ws)).add(N(F.y));
4936
4962
  p(t.lessThan(C).and(f.lessThan(w)), () => {
4937
- xs({
4963
+ Ss({
4938
4964
  pixelCoord: U(j(t).add(.5), j(f).add(.5)),
4939
4965
  writeColorTex: n,
4940
4966
  writeNDTex: r,
@@ -4973,6 +4999,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4973
4999
  envMatrix: e.environmentMatrix,
4974
5000
  envCDFBuffer: d,
4975
5001
  envTotalSum: e.envTotalSum,
5002
+ envCompensationDelta: e.envCompensationDelta,
4976
5003
  envResolution: e.envResolution,
4977
5004
  enableEnvironmentLight: e.enableEnvironment,
4978
5005
  useEnvMapIS: e.useEnvMapIS,
@@ -5015,15 +5042,15 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5015
5042
  this._dispatchY,
5016
5043
  1
5017
5044
  ], [
5018
- Cs,
5019
- Cs,
5045
+ ws,
5046
+ ws,
5020
5047
  1
5021
5048
  ]);
5022
5049
  }
5023
5050
  dispose() {
5024
5051
  this.computeNode?.dispose(), this.computeNode = null, this.prevColorTexNode = null, this.prevNormalDepthTexNode = null, this.prevAlbedoTexNode = null, this.adaptiveSamplingTexNode = null, this._sceneTextureNodes = null, this._compiled = !1;
5025
5052
  }
5026
- }, Ts = class {
5053
+ }, Es = class {
5027
5054
  constructor(e, t) {
5028
5055
  this.traversalCost = e, this.intersectionCost = t, this.maxTreeletLeaves = 7, this.minImprovement = .02, this.topologyCache = /* @__PURE__ */ new Map();
5029
5056
  for (let e = 3; e <= this.maxTreeletLeaves; e++) this.topologyCache.set(e, this.generateTopologies(e));
@@ -5214,10 +5241,10 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5214
5241
  }
5215
5242
  buildSubtree(e, t, n) {
5216
5243
  if (typeof e == "number") {
5217
- let r = t[n[e]], i = new Es();
5244
+ let r = t[n[e]], i = new Ds();
5218
5245
  return i.minX = r.minX, i.minY = r.minY, i.minZ = r.minZ, i.maxX = r.maxX, i.maxY = r.maxY, i.maxZ = r.maxZ, i.triangleOffset = r.triangleOffset, i.triangleCount = r.triangleCount, i;
5219
5246
  }
5220
- let r = this.buildSubtree(e[0], t, n), i = this.buildSubtree(e[1], t, n), a = new Es();
5247
+ let r = this.buildSubtree(e[0], t, n), i = this.buildSubtree(e[1], t, n), a = new Ds();
5221
5248
  return a.leftChild = r, a.rightChild = i, a.minX = Math.min(r.minX, i.minX), a.minY = Math.min(r.minY, i.minY), a.minZ = Math.min(r.minZ, i.minZ), a.maxX = Math.max(r.maxX, i.maxX), a.maxY = Math.max(r.maxY, i.maxY), a.maxZ = Math.max(r.maxZ, i.maxZ), a;
5222
5249
  }
5223
5250
  setTreeletSize(e) {
@@ -5231,11 +5258,11 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5231
5258
  getStatistics() {
5232
5259
  return { ...this.stats };
5233
5260
  }
5234
- }, Es = class {
5261
+ }, Ds = class {
5235
5262
  constructor() {
5236
5263
  this.minX = 0, this.minY = 0, this.minZ = 0, this.maxX = 0, this.maxY = 0, this.maxZ = 0, this.leftChild = null, this.rightChild = null, this.triangleOffset = 0, this.triangleCount = 0;
5237
5264
  }
5238
- }, Ds = class {
5265
+ }, Os = class {
5239
5266
  constructor(e, t) {
5240
5267
  this.traversalCost = e, this.intersectionCost = t, this.batchSizeRatio = .02, this.maxIterations = 2, this.timeBudgetMs = 15e3, this.stats = {
5241
5268
  reinsertionsApplied: 0,
@@ -5400,7 +5427,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5400
5427
  }
5401
5428
  return this.stats.timeMs = performance.now() - n, this.stats;
5402
5429
  }
5403
- }, Os = "" + new URL("assets/BVHWorker-CNJ0UBQz.js", import.meta.url).href, ks = {
5430
+ }, ks = "" + new URL("assets/BVHWorker-CNJ0UBQz.js", import.meta.url).href, As = {
5404
5431
  FLOATS_PER_TRIANGLE: 32,
5405
5432
  POSITION_A_OFFSET: 0,
5406
5433
  POSITION_B_OFFSET: 4,
@@ -5410,11 +5437,11 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5410
5437
  NORMAL_C_OFFSET: 20,
5411
5438
  UV_AB_OFFSET: 24,
5412
5439
  UV_C_MAT_OFFSET: 28
5413
- }, As = ks.FLOATS_PER_TRIANGLE, js = class {
5440
+ }, js = As.FLOATS_PER_TRIANGLE, Ms = class {
5414
5441
  constructor() {
5415
5442
  this.minX = 0, this.minY = 0, this.minZ = 0, this.maxX = 0, this.maxY = 0, this.maxZ = 0, this.leftChild = null, this.rightChild = null, this.triangleOffset = 0, this.triangleCount = 0;
5416
5443
  }
5417
- }, Ms = class {
5444
+ }, Ns = class {
5418
5445
  constructor() {
5419
5446
  this.useWorker = !0, this.maxLeafSize = 8, this.numBins = 32, this.minBins = 8, this.maxBins = 64, this.totalNodes = 0, this.processedTriangles = 0, this.totalTriangles = 0, this.lastProgressUpdate = 0, this.progressUpdateInterval = 100, this.traversalCost = 1, this.intersectionCost = 2.5, this.useMortonCodes = !0, this.mortonBits = 10, this.mortonClusterThreshold = 128, this.enableObjectMedianFallback = !0, this.enableSpatialMedianFallback = !0, this.splitStats = {
5420
5447
  sahSplits: 0,
@@ -5474,9 +5501,9 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5474
5501
  e.enabled !== void 0 && (this.enableReinsertionOptimization = e.enabled), e.batchSizeRatio !== void 0 && (this.reinsertionBatchSizeRatio = Math.max(.005, Math.min(.1, e.batchSizeRatio))), e.maxIterations !== void 0 && (this.reinsertionMaxIterations = Math.max(1, Math.min(5, e.maxIterations)));
5475
5502
  }
5476
5503
  initializeTriangleArrays() {
5477
- let e = this.totalTriangles, t = this.triangles, n = ks.POSITION_A_OFFSET, r = ks.POSITION_B_OFFSET, i = ks.POSITION_C_OFFSET;
5504
+ let e = this.totalTriangles, t = this.triangles, n = As.POSITION_A_OFFSET, r = As.POSITION_B_OFFSET, i = As.POSITION_C_OFFSET;
5478
5505
  for (let a = 0; a < e; a++) {
5479
- let e = a * As, o = t[e + n], s = t[e + n + 1], c = t[e + n + 2], l = t[e + r], u = t[e + r + 1], d = t[e + r + 2], f = t[e + i], p = t[e + i + 1], m = t[e + i + 2], h = a * 3;
5506
+ let e = a * js, o = t[e + n], s = t[e + n + 1], c = t[e + n + 2], l = t[e + r], u = t[e + r + 1], d = t[e + r + 2], f = t[e + i], p = t[e + i + 1], m = t[e + i + 2], h = a * 3;
5480
5507
  this.centroids[h] = (o + l + f) / 3, this.centroids[h + 1] = (s + u + p) / 3, this.centroids[h + 2] = (c + d + m) / 3, this.bMin[h] = o < l ? o < f ? o : f : l < f ? l : f, this.bMin[h + 1] = s < u ? s < p ? s : p : u < p ? u : p, this.bMin[h + 2] = c < d ? c < m ? c : m : d < m ? d : m, this.bMax[h] = o > l ? o > f ? o : f : l > f ? l : f, this.bMax[h + 1] = s > u ? s > p ? s : p : u > p ? u : p, this.bMax[h + 2] = c > d ? c > m ? c : m : d > m ? d : m, this.indices[a] = a;
5481
5508
  }
5482
5509
  }
@@ -5521,11 +5548,11 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5521
5548
  this.splitStats.mortonSortTime += performance.now() - t;
5522
5549
  }
5523
5550
  build(e, t = 30, n = null) {
5524
- return this.totalTriangles = e.byteLength / (As * 4), this.processedTriangles = 0, this.lastProgressUpdate = performance.now(), this.useWorker && typeof Worker < "u" ? new Promise((r, i) => {
5551
+ return this.totalTriangles = e.byteLength / (js * 4), this.processedTriangles = 0, this.lastProgressUpdate = performance.now(), this.useWorker && typeof Worker < "u" ? new Promise((r, i) => {
5525
5552
  let a = (a) => {
5526
5553
  let o = this.totalTriangles, s = typeof SharedArrayBuffer < "u";
5527
5554
  console.log(`[BVHBuilder] SharedArrayBuffer: ${s ? "enabled" : "unavailable (using transfer fallback)"}`);
5528
- let c = s ? new SharedArrayBuffer(o * As * 4) : null;
5555
+ let c = s ? new SharedArrayBuffer(o * js * 4) : null;
5529
5556
  a.onmessage = (e) => {
5530
5557
  let { bvhData: t, triangles: o, originalToBvh: s, error: l, progress: u, treeletStats: d } = e.data;
5531
5558
  if (l) {
@@ -5568,9 +5595,9 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5568
5595
  a.postMessage(u, [l]);
5569
5596
  };
5570
5597
  try {
5571
- a(new Worker(Os, { type: "module" }));
5598
+ a(new Worker(ks, { type: "module" }));
5572
5599
  } catch (i) {
5573
- i.name === "SecurityError" ? or(Os).then(a).catch(() => {
5600
+ i.name === "SecurityError" ? or(ks).then(a).catch(() => {
5574
5601
  console.warn("Worker fetch fallback failed, using synchronous build"), r(this._buildSyncAndFlatten(e, t, n));
5575
5602
  }) : (console.warn("Worker creation failed, falling back to synchronous build:", i), r(this._buildSyncAndFlatten(e, t, n)));
5576
5603
  }
@@ -5589,7 +5616,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5589
5616
  }
5590
5617
  buildSync(e, t = 30, n = null, r = null) {
5591
5618
  let i = performance.now();
5592
- this.totalNodes = 0, this.processedTriangles = 0, this.triangles = e, this.totalTriangles = e.byteLength / (As * 4), this.lastProgressUpdate = performance.now(), this.splitStats = {
5619
+ this.totalNodes = 0, this.processedTriangles = 0, this.triangles = e, this.totalTriangles = e.byteLength / (js * 4), this.lastProgressUpdate = performance.now(), this.splitStats = {
5593
5620
  sahSplits: 0,
5594
5621
  objectMedianSplits: 0,
5595
5622
  spatialMedianSplits: 0,
@@ -5614,7 +5641,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5614
5641
  this.centroids = new Float32Array(a * 3), this.bMin = new Float32Array(a * 3), this.bMax = new Float32Array(a * 3), this.indices = new Uint32Array(a), this.mortonCodes = new Uint32Array(a), this.initializeTriangleArrays(), this.splitStats.initTime = performance.now() - o, this.sortTrianglesByMortonCode();
5615
5642
  let s = performance.now(), c = this.buildNodeRecursive(0, a, t, n);
5616
5643
  if (this.splitStats.sahBuildTime = performance.now() - s, this.enableTreeletOptimization && this.totalTriangles > 1e3) {
5617
- let e = this.totalTriangles > this.treeletComplexityThreshold, t = e ? 3 : this.treeletSize, r = e ? 10 : this.maxTreeletsPerScene, i = new Ts(this.traversalCost, this.intersectionCost);
5644
+ let e = this.totalTriangles > this.treeletComplexityThreshold, t = e ? 3 : this.treeletSize, r = e ? 10 : this.maxTreeletsPerScene, i = new Es(this.traversalCost, this.intersectionCost);
5618
5645
  i.setTreeletSize(t), i.setMinImprovement(this.treeletMinImprovement), i.setMaxTreelets(r);
5619
5646
  let a = performance.now();
5620
5647
  for (let e = 0; e < this.treeletOptimizationPasses; e++) {
@@ -5636,7 +5663,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5636
5663
  this.splitStats.treeletsProcessed = s.treeletsProcessed, this.splitStats.treeletsImproved = s.treeletsImproved, this.splitStats.averageSAHImprovement = s.averageSAHImprovement;
5637
5664
  }
5638
5665
  if (this.enableReinsertionOptimization && this.totalTriangles > 1e3) {
5639
- let e = new Ds(this.traversalCost, this.intersectionCost);
5666
+ let e = new Os(this.traversalCost, this.intersectionCost);
5640
5667
  e.setBatchSizeRatio(this.reinsertionBatchSizeRatio), e.setMaxIterations(this.reinsertionMaxIterations);
5641
5668
  let t = n ? (e) => {
5642
5669
  n(e);
@@ -5651,10 +5678,10 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5651
5678
  }
5652
5679
  let l = performance.now();
5653
5680
  this.applySAOrdering(c), this.splitStats.saOrderTime = performance.now() - l;
5654
- let u = performance.now(), d = this.triangles, f = r || new Float32Array(a * As);
5681
+ let u = performance.now(), d = this.triangles, f = r || new Float32Array(a * js);
5655
5682
  for (let e = 0; e < a; e++) {
5656
- let t = this.indices[e] * As, n = e * As;
5657
- f.set(d.subarray(t, t + As), n);
5683
+ let t = this.indices[e] * js, n = e * js;
5684
+ f.set(d.subarray(t, t + js), n);
5658
5685
  }
5659
5686
  this.reorderedTriangleData = f;
5660
5687
  let p = new Uint32Array(a);
@@ -5670,7 +5697,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5670
5697
  n - this.lastProgressUpdate < this.progressUpdateInterval || (this.lastProgressUpdate = n, t(Math.min(Math.floor(this.processedTriangles / this.totalTriangles * 100), 99)));
5671
5698
  }
5672
5699
  buildNodeRecursiveToDepth(e, t, n, r, i, a, o, s, c, l, u) {
5673
- let d = new js();
5700
+ let d = new Ms();
5674
5701
  this.totalNodes++;
5675
5702
  let f = t - e;
5676
5703
  if (a === void 0 ? this.updateNodeBounds(d, e, t) : (d.minX = a, d.minY = o, d.minZ = s, d.maxX = c, d.maxY = l, d.maxZ = u), f <= this.maxLeafSize || n <= 0) return d.triangleOffset = e, d.triangleCount = f, this.updateProgress(f, i), d;
@@ -5711,7 +5738,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5711
5738
  return h === e || h === t ? (d.triangleOffset = e, d.triangleCount = f, this.updateProgress(f, i), d) : (d.leftChild = this.buildNodeRecursiveToDepth(e, h, n - 1, r - 1, i, g, _, v, y, b, x), d.rightChild = this.buildNodeRecursiveToDepth(h, t, n - 1, r - 1, i, S, C, w, T, E, D), d);
5712
5739
  }
5713
5740
  buildNodeRecursive(e, t, n, r, i, a, o, s, c, l) {
5714
- let u = new js();
5741
+ let u = new Ms();
5715
5742
  this.totalNodes++;
5716
5743
  let d = t - e;
5717
5744
  if (i === void 0 ? this.updateNodeBounds(u, e, t) : (u.minX = i, u.minY = a, u.minZ = o, u.maxX = s, u.maxY = c, u.maxZ = l), d <= this.maxLeafSize || n <= 0) return u.triangleOffset = e, u.triangleCount = d, this.updateProgress(d, r), u;
@@ -6009,7 +6036,7 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
6009
6036
  let o = r - e, s = i - t, c = a - n;
6010
6037
  return 2 * (o * s + s * c + c * o);
6011
6038
  }
6012
- }, Ns = {
6039
+ }, Ps = {
6013
6040
  FLOATS_PER_TRIANGLE: 32,
6014
6041
  POSITION_A_OFFSET: 0,
6015
6042
  POSITION_B_OFFSET: 4,
@@ -6017,28 +6044,28 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
6017
6044
  NORMAL_A_OFFSET: 12,
6018
6045
  NORMAL_B_OFFSET: 16,
6019
6046
  NORMAL_C_OFFSET: 20
6020
- }, Ps = Ns.FLOATS_PER_TRIANGLE, Fs = 16, Is = -1, Ls = -2, Rs = class {
6047
+ }, Fs = Ps.FLOATS_PER_TRIANGLE, Is = 16, Ls = -1, Rs = -2, zs = class {
6021
6048
  constructor() {
6022
6049
  this._bounds = null, this._boundsNodeCount = 0;
6023
6050
  }
6024
6051
  updateTrianglePositions(e, t, n) {
6025
6052
  let r = n.length;
6026
6053
  for (let i = 0; i < r; i++) {
6027
- let r = n[i], a = i * Ps, o = r * 9, s = t[o], c = t[o + 1], l = t[o + 2], u = t[o + 3], d = t[o + 4], f = t[o + 5], p = t[o + 6], m = t[o + 7], h = t[o + 8];
6028
- e[a + Ns.POSITION_A_OFFSET] = s, e[a + Ns.POSITION_A_OFFSET + 1] = c, e[a + Ns.POSITION_A_OFFSET + 2] = l, e[a + Ns.POSITION_B_OFFSET] = u, e[a + Ns.POSITION_B_OFFSET + 1] = d, e[a + Ns.POSITION_B_OFFSET + 2] = f, e[a + Ns.POSITION_C_OFFSET] = p, e[a + Ns.POSITION_C_OFFSET + 1] = m, e[a + Ns.POSITION_C_OFFSET + 2] = h;
6054
+ let r = n[i], a = i * Fs, o = r * 9, s = t[o], c = t[o + 1], l = t[o + 2], u = t[o + 3], d = t[o + 4], f = t[o + 5], p = t[o + 6], m = t[o + 7], h = t[o + 8];
6055
+ e[a + Ps.POSITION_A_OFFSET] = s, e[a + Ps.POSITION_A_OFFSET + 1] = c, e[a + Ps.POSITION_A_OFFSET + 2] = l, e[a + Ps.POSITION_B_OFFSET] = u, e[a + Ps.POSITION_B_OFFSET + 1] = d, e[a + Ps.POSITION_B_OFFSET + 2] = f, e[a + Ps.POSITION_C_OFFSET] = p, e[a + Ps.POSITION_C_OFFSET + 1] = m, e[a + Ps.POSITION_C_OFFSET + 2] = h;
6029
6056
  let g = u - s, _ = d - c, v = f - l, y = p - s, b = m - c, x = h - l, S = _ * x - v * b, C = v * y - g * x, w = g * b - _ * y;
6030
- e[a + Ns.NORMAL_A_OFFSET] = S, e[a + Ns.NORMAL_A_OFFSET + 1] = C, e[a + Ns.NORMAL_A_OFFSET + 2] = w, e[a + Ns.NORMAL_B_OFFSET] = S, e[a + Ns.NORMAL_B_OFFSET + 1] = C, e[a + Ns.NORMAL_B_OFFSET + 2] = w, e[a + Ns.NORMAL_C_OFFSET] = S, e[a + Ns.NORMAL_C_OFFSET + 1] = C, e[a + Ns.NORMAL_C_OFFSET + 2] = w;
6057
+ e[a + Ps.NORMAL_A_OFFSET] = S, e[a + Ps.NORMAL_A_OFFSET + 1] = C, e[a + Ps.NORMAL_A_OFFSET + 2] = w, e[a + Ps.NORMAL_B_OFFSET] = S, e[a + Ps.NORMAL_B_OFFSET + 1] = C, e[a + Ps.NORMAL_B_OFFSET + 2] = w, e[a + Ps.NORMAL_C_OFFSET] = S, e[a + Ps.NORMAL_C_OFFSET + 1] = C, e[a + Ps.NORMAL_C_OFFSET + 2] = w;
6031
6058
  }
6032
6059
  }
6033
6060
  refitRange(e, t, n, r) {
6034
6061
  r > this._boundsNodeCount && (this._bounds = new Float32Array(r * 6), this._boundsNodeCount = r);
6035
6062
  let i = this._bounds, a = n + r;
6036
6063
  for (let r = a - 1; r >= n; r--) {
6037
- let a = r * Fs, o = (r - n) * 6;
6038
- if (e[a + 3] === Is) {
6064
+ let a = r * Is, o = (r - n) * 6;
6065
+ if (e[a + 3] === Ls) {
6039
6066
  let n = e[a], r = e[a + 1], s = Infinity, c = Infinity, l = Infinity, u = -Infinity, d = -Infinity, f = -Infinity;
6040
6067
  for (let e = 0; e < r; e++) {
6041
- let r = (n + e) * Ps, i = t[r + Ns.POSITION_A_OFFSET], a = t[r + Ns.POSITION_A_OFFSET + 1], o = t[r + Ns.POSITION_A_OFFSET + 2], p = t[r + Ns.POSITION_B_OFFSET], m = t[r + Ns.POSITION_B_OFFSET + 1], h = t[r + Ns.POSITION_B_OFFSET + 2], g = t[r + Ns.POSITION_C_OFFSET], _ = t[r + Ns.POSITION_C_OFFSET + 1], v = t[r + Ns.POSITION_C_OFFSET + 2];
6068
+ let r = (n + e) * Fs, i = t[r + Ps.POSITION_A_OFFSET], a = t[r + Ps.POSITION_A_OFFSET + 1], o = t[r + Ps.POSITION_A_OFFSET + 2], p = t[r + Ps.POSITION_B_OFFSET], m = t[r + Ps.POSITION_B_OFFSET + 1], h = t[r + Ps.POSITION_B_OFFSET + 2], g = t[r + Ps.POSITION_C_OFFSET], _ = t[r + Ps.POSITION_C_OFFSET + 1], v = t[r + Ps.POSITION_C_OFFSET + 2];
6042
6069
  s = Math.min(s, i, p, g), c = Math.min(c, a, m, _), l = Math.min(l, o, h, v), u = Math.max(u, i, p, g), d = Math.max(d, a, m, _), f = Math.max(f, o, h, v);
6043
6070
  }
6044
6071
  i[o] = s, i[o + 1] = c, i[o + 2] = l, i[o + 3] = u, i[o + 4] = d, i[o + 5] = f;
@@ -6052,15 +6079,15 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
6052
6079
  n !== this._boundsNodeCount && (this._bounds = new Float32Array(n * 6), this._boundsNodeCount = n);
6053
6080
  let r = this._bounds;
6054
6081
  for (let i = n - 1; i >= 0; i--) {
6055
- let n = i * Fs, a = i * 6, o = e[n + 3];
6056
- if (o === Is) {
6082
+ let n = i * Is, a = i * 6, o = e[n + 3];
6083
+ if (o === Ls) {
6057
6084
  let i = e[n], o = e[n + 1], s = Infinity, c = Infinity, l = Infinity, u = -Infinity, d = -Infinity, f = -Infinity;
6058
6085
  for (let e = 0; e < o; e++) {
6059
- let n = (i + e) * Ps, r = t[n + Ns.POSITION_A_OFFSET], a = t[n + Ns.POSITION_A_OFFSET + 1], o = t[n + Ns.POSITION_A_OFFSET + 2], p = t[n + Ns.POSITION_B_OFFSET], m = t[n + Ns.POSITION_B_OFFSET + 1], h = t[n + Ns.POSITION_B_OFFSET + 2], g = t[n + Ns.POSITION_C_OFFSET], _ = t[n + Ns.POSITION_C_OFFSET + 1], v = t[n + Ns.POSITION_C_OFFSET + 2];
6086
+ let n = (i + e) * Fs, r = t[n + Ps.POSITION_A_OFFSET], a = t[n + Ps.POSITION_A_OFFSET + 1], o = t[n + Ps.POSITION_A_OFFSET + 2], p = t[n + Ps.POSITION_B_OFFSET], m = t[n + Ps.POSITION_B_OFFSET + 1], h = t[n + Ps.POSITION_B_OFFSET + 2], g = t[n + Ps.POSITION_C_OFFSET], _ = t[n + Ps.POSITION_C_OFFSET + 1], v = t[n + Ps.POSITION_C_OFFSET + 2];
6060
6087
  s = Math.min(s, r, p, g), c = Math.min(c, a, m, _), l = Math.min(l, o, h, v), u = Math.max(u, r, p, g), d = Math.max(d, a, m, _), f = Math.max(f, o, h, v);
6061
6088
  }
6062
6089
  r[a] = s, r[a + 1] = c, r[a + 2] = l, r[a + 3] = u, r[a + 4] = d, r[a + 5] = f;
6063
- } else if (o === Ls) {
6090
+ } else if (o === Rs) {
6064
6091
  let t = e[n] * 6;
6065
6092
  r[a] = r[t], r[a + 1] = r[t + 1], r[a + 2] = r[t + 2], r[a + 3] = r[t + 3], r[a + 4] = r[t + 4], r[a + 5] = r[t + 5];
6066
6093
  } else {
@@ -6069,19 +6096,19 @@ var ys = /* @__PURE__ */ K("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
6069
6096
  }
6070
6097
  }
6071
6098
  }
6072
- }, zs = "" + new URL("assets/BVHSubtreeWorker-D9GImjGj.js", import.meta.url).href, Bs = 32, Vs = 5e4, Hs = 8;
6073
- function Us(e, t, n, r) {
6074
- let i = e.byteLength / (Bs * 4), a = Math.min(navigator.hardwareConcurrency || 4, Hs), o = Math.ceil(Math.log2(a * 2.5 + 1));
6099
+ }, Bs = "" + new URL("assets/BVHSubtreeWorker-D9GImjGj.js", import.meta.url).href, Vs = 32, Hs = 5e4, Us = 8;
6100
+ function Ws(e, t, n, r) {
6101
+ let i = e.byteLength / (Vs * 4), a = Math.min(navigator.hardwareConcurrency || 4, Us), o = Math.ceil(Math.log2(a * 2.5 + 1));
6075
6102
  return console.log(`[ParallelBVH] Parallel build: ${i.toLocaleString()} triangles, ${a} workers, parallelDepth=${o}`), new Promise((s, c) => {
6076
6103
  (async () => {
6077
6104
  let c = new SharedArrayBuffer(e.byteLength);
6078
6105
  new Float32Array(c).set(e);
6079
- let l = new SharedArrayBuffer(i * 3 * 4), u = new SharedArrayBuffer(i * 3 * 4), d = new SharedArrayBuffer(i * 3 * 4), f = new SharedArrayBuffer(i * 4), p = new SharedArrayBuffer(i * 4), m = new SharedArrayBuffer(i * Bs * 4), h;
6106
+ let l = new SharedArrayBuffer(i * 3 * 4), u = new SharedArrayBuffer(i * 3 * 4), d = new SharedArrayBuffer(i * 3 * 4), f = new SharedArrayBuffer(i * 4), p = new SharedArrayBuffer(i * 4), m = new SharedArrayBuffer(i * Vs * 4), h;
6080
6107
  try {
6081
- h = new Worker(Os, { type: "module" });
6108
+ h = new Worker(ks, { type: "module" });
6082
6109
  } catch (e) {
6083
6110
  if (e.name !== "SecurityError") throw e;
6084
- h = await or(Os);
6111
+ h = await or(ks);
6085
6112
  }
6086
6113
  let g = null, _ = [h], v = { id: null }, y = !1, b = () => {
6087
6114
  v.id &&= (clearTimeout(v.id), null);
@@ -6092,7 +6119,7 @@ function Us(e, t, n, r) {
6092
6119
  if (y) return;
6093
6120
  y = !0, console.warn(`[ParallelBVH] Parallel build failed (${e}), falling back to single worker`), b();
6094
6121
  let i = new ArrayBuffer(c.byteLength);
6095
- new Float32Array(i).set(new Float32Array(c)), s(Gs(new Float32Array(i), t, n, r));
6122
+ new Float32Array(i).set(new Float32Array(c)), s(Ks(new Float32Array(i), t, n, r));
6096
6123
  };
6097
6124
  h.onerror = (e) => {
6098
6125
  x(`coordinator error: ${e.message}`);
@@ -6107,7 +6134,7 @@ function Us(e, t, n, r) {
6107
6134
  return;
6108
6135
  }
6109
6136
  if (t.type === "phase1Result") {
6110
- g = t.splitStats, Ws(t, a, c, l, u, d, f, m, i, n, h, _, b, x, s, v, r).catch((e) => x(e.message));
6137
+ g = t.splitStats, Gs(t, a, c, l, u, d, f, m, i, n, h, _, b, x, s, v, r).catch((e) => x(e.message));
6111
6138
  return;
6112
6139
  }
6113
6140
  if (t.type === "assembleResult") {
@@ -6141,7 +6168,7 @@ function Us(e, t, n, r) {
6141
6168
  });
6142
6169
  });
6143
6170
  }
6144
- async function Ws(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) {
6171
+ async function Gs(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) {
6145
6172
  let { topFlatData: _, topNodeCount: v, frontierTasks: y, frontierMap: b } = e;
6146
6173
  if (!y || y.length === 0) {
6147
6174
  console.log("[ParallelBVH] No frontier tasks, assembling with top-level tree only"), u.postMessage({
@@ -6190,10 +6217,10 @@ async function Ws(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) {
6190
6217
  if (t.length === 0) continue;
6191
6218
  let s;
6192
6219
  try {
6193
- s = new Worker(zs, { type: "module" });
6220
+ s = new Worker(Bs, { type: "module" });
6194
6221
  } catch (e) {
6195
6222
  if (e.name !== "SecurityError") throw e;
6196
- s = await or(zs);
6223
+ s = await or(Bs);
6197
6224
  }
6198
6225
  d.push(s), s.onerror = (e) => {
6199
6226
  p(`subtree worker error: ${e.message}`);
@@ -6244,17 +6271,17 @@ async function Ws(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) {
6244
6271
  });
6245
6272
  }
6246
6273
  }
6247
- function Gs(e, t, n, r) {
6274
+ function Ks(e, t, n, r) {
6248
6275
  return new Promise((i, a) => {
6249
6276
  (async () => {
6250
6277
  let o;
6251
6278
  try {
6252
- o = new Worker(Os, { type: "module" });
6279
+ o = new Worker(ks, { type: "module" });
6253
6280
  } catch (e) {
6254
6281
  if (e.name !== "SecurityError") throw e;
6255
- o = await or(Os);
6282
+ o = await or(ks);
6256
6283
  }
6257
- let s = e.byteLength / (Bs * 4), c = typeof SharedArrayBuffer < "u" ? new SharedArrayBuffer(s * Bs * 4) : null;
6284
+ let s = e.byteLength / (Vs * 4), c = typeof SharedArrayBuffer < "u" ? new SharedArrayBuffer(s * Vs * 4) : null;
6258
6285
  o.onmessage = (e) => {
6259
6286
  let { bvhData: t, triangles: r, originalToBvh: s, error: l, progress: u, treeletStats: d } = e.data;
6260
6287
  if (l) {
@@ -6292,16 +6319,16 @@ function Gs(e, t, n, r) {
6292
6319
  });
6293
6320
  });
6294
6321
  }
6295
- function Ks(e) {
6296
- return typeof Worker < "u" && typeof SharedArrayBuffer < "u" && e >= Vs;
6322
+ function qs(e) {
6323
+ return typeof Worker < "u" && typeof SharedArrayBuffer < "u" && e >= Hs;
6297
6324
  }
6298
6325
  //#endregion
6299
6326
  //#region src/Processor/TLASBuilder.js
6300
- var qs = 16, Js = class {
6327
+ var Js = 16, Ys = class {
6301
6328
  constructor() {
6302
6329
  this.minX = 0, this.minY = 0, this.minZ = 0, this.maxX = 0, this.maxY = 0, this.maxZ = 0, this.leftChild = null, this.rightChild = null, this.entryIndex = -1;
6303
6330
  }
6304
- }, Ys = class {
6331
+ }, Xs = class {
6305
6332
  constructor() {
6306
6333
  this._flatBuffer = null, this._flatBufferCapacity = 0;
6307
6334
  }
@@ -6319,7 +6346,7 @@ var qs = 16, Js = class {
6319
6346
  };
6320
6347
  }
6321
6348
  _buildRecursive(e, t) {
6322
- let n = new Js();
6349
+ let n = new Ys();
6323
6350
  if (t.length === 1) {
6324
6351
  let r = e[t[0]].worldAABB;
6325
6352
  return n.minX = r.minX, n.minY = r.minY, n.minZ = r.minZ, n.maxX = r.maxX, n.maxY = r.maxY, n.maxZ = r.maxZ, n.entryIndex = t[0], n;
@@ -6356,12 +6383,12 @@ var qs = 16, Js = class {
6356
6383
  let e = r.pop();
6357
6384
  e._flatIndex = n.length, n.push(e), e.rightChild && r.push(e.rightChild), e.leftChild && r.push(e.leftChild);
6358
6385
  }
6359
- let i = n.length * qs;
6386
+ let i = n.length * Js;
6360
6387
  i > this._flatBufferCapacity && (this._flatBuffer = new Float32Array(i), this._flatBufferCapacity = i);
6361
6388
  let a = this._flatBuffer;
6362
6389
  a.fill(0, 0, i);
6363
6390
  for (let e = 0; e < n.length; e++) {
6364
- let r = n[e], i = e * qs;
6391
+ let r = n[e], i = e * Js;
6365
6392
  if (r.leftChild) {
6366
6393
  let e = r.leftChild, t = r.rightChild;
6367
6394
  a[i] = e.minX, a[i + 1] = e.minY, a[i + 2] = e.minZ, a[i + 3] = e._flatIndex, a[i + 4] = e.maxX, a[i + 5] = e.maxY, a[i + 6] = e.maxZ, a[i + 7] = t._flatIndex, a[i + 8] = t.minX, a[i + 9] = t.minY, a[i + 10] = t.minZ, a[i + 12] = t.maxX, a[i + 13] = t.maxY, a[i + 14] = t.maxZ;
@@ -6403,7 +6430,7 @@ var qs = 16, Js = class {
6403
6430
  }
6404
6431
  return t;
6405
6432
  }
6406
- }, Xs = class {
6433
+ }, Zs = class {
6407
6434
  constructor() {
6408
6435
  this.entries = [], this.totalBLASNodes = 0, this.tlasNodeCount = 0;
6409
6436
  }
@@ -6480,7 +6507,7 @@ var qs = 16, Js = class {
6480
6507
  clear() {
6481
6508
  this.entries = [], this.totalBLASNodes = 0, this.tlasNodeCount = 0;
6482
6509
  }
6483
- }, Zs = "" + new URL("assets/TexturesWorker-DBqGmVdR.js", import.meta.url).href, Qs = class {
6510
+ }, Qs = "" + new URL("assets/TexturesWorker-DBqGmVdR.js", import.meta.url).href, $s = class {
6484
6511
  constructor() {
6485
6512
  this.canvasContextPairs = [], this.maxPoolSize = qn.CANVAS_POOL_SIZE;
6486
6513
  }
@@ -6520,7 +6547,7 @@ var qs = 16, Js = class {
6520
6547
  dispose() {
6521
6548
  this.canvasContextPairs = [];
6522
6549
  }
6523
- }, $s = class {
6550
+ }, ec = class {
6524
6551
  constructor(e = {}) {
6525
6552
  this.pools = /* @__PURE__ */ new Map(), this.memoryUsage = 0, this.maxMemoryUsage = e.maxMemory || Zn.MAX_BUFFER_MEMORY, this.allocatedBuffers = /* @__PURE__ */ new WeakMap(), this.sizeStrategy = e.sizeStrategy || "adaptive";
6526
6553
  }
@@ -6578,7 +6605,7 @@ var qs = 16, Js = class {
6578
6605
  let e = this.getMemoryStats();
6579
6606
  return e.utilizationPercentage > 90 ? (console.warn(`Memory pool critical: ${e.utilizationPercentage.toFixed(1)}% used (${(e.currentUsage / (1024 * 1024)).toFixed(1)}MB / ${(e.maxUsage / (1024 * 1024)).toFixed(1)}MB)`), "critical") : e.utilizationPercentage > 70 ? (console.warn(`Memory pool high: ${e.utilizationPercentage.toFixed(1)}% used (${(e.currentUsage / (1024 * 1024)).toFixed(1)}MB / ${(e.maxUsage / (1024 * 1024)).toFixed(1)}MB)`), "high") : "normal";
6580
6607
  }
6581
- }, ec = class {
6608
+ }, tc = class {
6582
6609
  constructor(e = qn.CACHE_SIZE_LIMIT) {
6583
6610
  this.cache = /* @__PURE__ */ new Map(), this.accessOrder = [], this.maxSize = e;
6584
6611
  }
@@ -6615,12 +6642,12 @@ var qs = 16, Js = class {
6615
6642
  e && e.dispose && e.dispose();
6616
6643
  }), this.cache.clear(), this.accessOrder = [];
6617
6644
  }
6618
- }, tc = class {
6645
+ }, nc = class {
6619
6646
  constructor(e = {}) {
6620
- this.useWorkers = typeof Worker < "u", this.maxConcurrentWorkers = qn.MAX_CONCURRENT_WORKERS, this.activeWorkers = 0, this.canvasPool = new Qs(), this.bufferPool = new $s({
6647
+ this.useWorkers = typeof Worker < "u", this.maxConcurrentWorkers = qn.MAX_CONCURRENT_WORKERS, this.activeWorkers = 0, this.canvasPool = new $s(), this.bufferPool = new ec({
6621
6648
  maxMemory: e.maxBufferMemory || Zn.MAX_BUFFER_MEMORY,
6622
6649
  sizeStrategy: e.bufferSizeStrategy || "adaptive"
6623
- }), this.textureCache = new ec(), this.capabilities = this.detectCapabilities(), this.optimalMethod = this.selectOptimalMethod();
6650
+ }), this.textureCache = new tc(), this.capabilities = this.detectCapabilities(), this.optimalMethod = this.selectOptimalMethod();
6624
6651
  }
6625
6652
  detectCapabilities() {
6626
6653
  return {
@@ -6677,10 +6704,10 @@ var qs = 16, Js = class {
6677
6704
  try {
6678
6705
  let t;
6679
6706
  try {
6680
- t = new Worker(Zs, { type: "module" });
6707
+ t = new Worker(Qs, { type: "module" });
6681
6708
  } catch (e) {
6682
6709
  if (e.name !== "SecurityError") throw e;
6683
- t = await or(Zs);
6710
+ t = await or(Qs);
6684
6711
  }
6685
6712
  let n = await this.prepareTexturesForWorkerDirect(e), r = await new Promise((e, r) => {
6686
6713
  t.onmessage = (t) => {
@@ -6932,7 +6959,7 @@ var qs = 16, Js = class {
6932
6959
  let l = performance.now();
6933
6960
  try {
6934
6961
  if (!t || t.length === 0) throw Error("No materials provided for texture creation");
6935
- this.textureCache.dispose(), this.textureCache = new ec();
6962
+ this.textureCache.dispose(), this.textureCache = new tc();
6936
6963
  let e = [];
6937
6964
  n && n.length > 0 && e.push(this.createTexturesToDataTexture(n).then((e) => ({
6938
6965
  type: "albedo",
@@ -7043,7 +7070,7 @@ var qs = 16, Js = class {
7043
7070
  let e = n.mipmaps[0], i = t.length;
7044
7071
  t.push(null), r.push({
7045
7072
  index: i,
7046
- promise: nc(e.data, e.width, e.height)
7073
+ promise: rc(e.data, e.width, e.height)
7047
7074
  });
7048
7075
  continue;
7049
7076
  }
@@ -7055,7 +7082,7 @@ var qs = 16, Js = class {
7055
7082
  let e = t.length;
7056
7083
  t.push(null), r.push({
7057
7084
  index: e,
7058
- promise: nc(n.image.data, n.image.width, n.image.height)
7085
+ promise: rc(n.image.data, n.image.width, n.image.height)
7059
7086
  });
7060
7087
  continue;
7061
7088
  }
@@ -7101,13 +7128,13 @@ var qs = 16, Js = class {
7101
7128
  this.canvasPool.dispose(), this.bufferPool.dispose(), this.textureCache.dispose();
7102
7129
  }
7103
7130
  };
7104
- function nc(e, t, n) {
7131
+ function rc(e, t, n) {
7105
7132
  let r = new Uint8ClampedArray(e.buffer, e.byteOffset, e.byteLength);
7106
7133
  return createImageBitmap(new ImageData(r, t, n));
7107
7134
  }
7108
7135
  //#endregion
7109
7136
  //#region src/Processor/GeometryExtractor.js
7110
- var rc = 128, ic = class {
7137
+ var ic = 128, ac = class {
7111
7138
  constructor() {
7112
7139
  this._vectorPool = {
7113
7140
  vec3: Array(9).fill().map(() => new Mt()),
@@ -7322,7 +7349,7 @@ var rc = 128, ic = class {
7322
7349
  n || (n = /* @__PURE__ */ new Map(), this._textureIndexCache.set(t, n));
7323
7350
  let r = e.source.uuid, i = n.get(r);
7324
7351
  if (i !== void 0) return i;
7325
- if (t.length < rc) {
7352
+ if (t.length < ic) {
7326
7353
  t.push(e);
7327
7354
  let i = t.length - 1;
7328
7355
  return n.set(r, i), i;
@@ -7411,7 +7438,7 @@ var rc = 128, ic = class {
7411
7438
  sceneFeatures: this.sceneFeatures
7412
7439
  };
7413
7440
  }
7414
- }, ac = class {
7441
+ }, oc = class {
7415
7442
  constructor() {
7416
7443
  this.maxLeafSize = 8;
7417
7444
  }
@@ -7470,7 +7497,7 @@ var rc = 128, ic = class {
7470
7497
  l < i ? n = l + 1 : r = l;
7471
7498
  }
7472
7499
  }
7473
- }, oc = class {
7500
+ }, sc = class {
7474
7501
  constructor() {
7475
7502
  this.emissiveTriangles = [], this.emissiveCount = 0, this.totalEmissivePower = 0, this.emissiveIndicesArray = null, this.emissivePowerArray = null, this.cdfArray = null, this.lightBVHNodeData = null, this.lightBVHNodeCount = 0;
7476
7503
  }
@@ -7614,7 +7641,7 @@ var rc = 128, ic = class {
7614
7641
  }
7615
7642
  buildLightBVH() {
7616
7643
  if (this.emissiveCount === 0) return this.lightBVHNodeData = new Float32Array(16), this.lightBVHNodeData[7] = 1, this.lightBVHNodeCount = 1, 1;
7617
- let { nodeData: e, nodeCount: t, sortedPerm: n } = new ac().build(this.emissiveTriangles);
7644
+ let { nodeData: e, nodeCount: t, sortedPerm: n } = new oc().build(this.emissiveTriangles);
7618
7645
  return this.lightBVHNodeData = e, this.lightBVHNodeCount = t, this._rebuildSortedEmissiveData(n), t;
7619
7646
  }
7620
7647
  _rebuildSortedEmissiveData(e) {
@@ -7635,7 +7662,7 @@ var rc = 128, ic = class {
7635
7662
  clear() {
7636
7663
  this.emissiveTriangles = [], this.emissiveCount = 0, this.totalEmissivePower = 0, this.emissiveIndicesArray = null, this.emissivePowerArray = null, this.cdfArray = null, this.lightBVHNodeData = null, this.lightBVHNodeCount = 0;
7637
7664
  }
7638
- }, sc = "" + new URL("assets/BVHRefitWorker-GkmNJYvb.js", import.meta.url).href, cc = class {
7665
+ }, cc = "" + new URL("assets/BVHRefitWorker-GkmNJYvb.js", import.meta.url).href, lc = class {
7639
7666
  constructor(e = {}) {
7640
7667
  this.config = {
7641
7668
  useWorkers: !0,
@@ -7658,12 +7685,12 @@ var rc = 128, ic = class {
7658
7685
  };
7659
7686
  }
7660
7687
  _initProcessors() {
7661
- this.geometryExtractor = new ic(), this.bvhBuilder = new Ms(), this.bvhBuilder.maxLeafSize = this.config.maxLeafSize, this.bvhBuilder.setTreeletConfig({
7688
+ this.geometryExtractor = new ac(), this.bvhBuilder = new Ns(), this.bvhBuilder.maxLeafSize = this.config.maxLeafSize, this.bvhBuilder.setTreeletConfig({
7662
7689
  enabled: this.config.enableTreeletOptimization,
7663
7690
  size: this.config.treeletSize,
7664
7691
  passes: this.config.treeletOptimizationPasses,
7665
7692
  minImprovement: this.config.treeletMinImprovement
7666
- }), this.textureCreator = new tc(), this.emissiveTriangleBuilder = new oc(), this.tlasBuilder = new Ys();
7693
+ }), this.textureCreator = new nc(), this.emissiveTriangleBuilder = new sc(), this.tlasBuilder = new Xs();
7667
7694
  }
7668
7695
  _log(e, t) {
7669
7696
  this.config.verbose && console.log(`[SceneProcessor] ${e}`, t || "");
@@ -7671,7 +7698,7 @@ var rc = 128, ic = class {
7671
7698
  async buildBVH(e) {
7672
7699
  if (this.isProcessing) throw Error("Already processing a scene. Call dispose() first.");
7673
7700
  this.isProcessing = !0, this.processingStage = "init";
7674
- let t = new Ss(`SceneProcessor (${e.name || "scene"})`);
7701
+ let t = new Cs(`SceneProcessor (${e.name || "scene"})`);
7675
7702
  try {
7676
7703
  this._reset(), this._log("Starting scene processing"), this.processingStage = "extraction", t.start("Geometry extraction"), await this._extractGeometry(e), t.end("Geometry extraction"), this.performanceMetrics.geometryExtractionTime = t.getDuration("Geometry extraction"), this.processingStage = "bvh", t.start("BVH construction (worker)"), t.start("Material textures (parallel)");
7677
7704
  let n = !1, r = this._buildBVH().then(() => t.end("BVH construction (worker)")), i = this._createMaterialTextures().then(() => {
@@ -7732,11 +7759,11 @@ var rc = 128, ic = class {
7732
7759
  try {
7733
7760
  let t = Z.FLOATS_PER_TRIANGLE, n = this.meshTriangleRanges;
7734
7761
  if (!n || n.length === 0) throw Error("No mesh triangle ranges available for TLAS/BLAS build");
7735
- this.instanceTable = new Xs(), this.instanceTable.allocate(n.length);
7762
+ this.instanceTable = new Zs(), this.instanceTable.allocate(n.length);
7736
7763
  let r = n.length, i = this.config.enableTreeletOptimization, a = [], o = [];
7737
7764
  for (let e = 0; e < r; e++) {
7738
7765
  let t = n[e];
7739
- t.count !== 0 && (t.count >= 2e5 && Ks(t.count) ? o.push({
7766
+ t.count !== 0 && (t.count >= 2e5 && qs(t.count) ? o.push({
7740
7767
  m: e,
7741
7768
  range: t
7742
7769
  }) : a.push({
@@ -7762,7 +7789,7 @@ var rc = 128, ic = class {
7762
7789
  status: `Building BLAS ${e + o.length}/${c}...`,
7763
7790
  progress: 25 + Math.floor(e / c * 45)
7764
7791
  });
7765
- }), u = o.map(({ m: e, range: n }) => Us(this.triangleData.slice(n.start * t, (n.start + n.count) * t), this.config.bvhDepth, null, {
7792
+ }), u = o.map(({ m: e, range: n }) => Ws(this.triangleData.slice(n.start * t, (n.start + n.count) * t), this.config.bvhDepth, null, {
7766
7793
  maxLeafSize: this.bvhBuilder.maxLeafSize,
7767
7794
  numBins: this.bvhBuilder.numBins,
7768
7795
  maxBins: this.bvhBuilder.maxBins,
@@ -7868,13 +7895,13 @@ var rc = 128, ic = class {
7868
7895
  for (let e = 0; e < i; e++) {
7869
7896
  let e;
7870
7897
  try {
7871
- e = new Worker(Os, { type: "module" });
7898
+ e = new Worker(ks, { type: "module" });
7872
7899
  } catch (t) {
7873
7900
  if (t.name !== "SecurityError") {
7874
7901
  l(t);
7875
7902
  return;
7876
7903
  }
7877
- e = await or(Os);
7904
+ e = await or(ks);
7878
7905
  }
7879
7906
  e.onmessage = (t) => f(e, t), e.onerror = (e) => {
7880
7907
  u.forEach((e) => e.terminate()), l(e);
@@ -8047,10 +8074,10 @@ var rc = 128, ic = class {
8047
8074
  async refitBVH(e, t) {
8048
8075
  if (!this.bvhData || !this.triangleData || !this.originalToBvhMap) throw Error("No BVH data available for refit. Run buildBVH() first.");
8049
8076
  if (!this._refitWorker) try {
8050
- this._refitWorker = new Worker(sc, { type: "module" });
8077
+ this._refitWorker = new Worker(cc, { type: "module" });
8051
8078
  } catch (e) {
8052
8079
  if (e.name !== "SecurityError") throw e;
8053
- this._refitWorker = await or(sc);
8080
+ this._refitWorker = await or(cc);
8054
8081
  }
8055
8082
  if (!this._refitSharedBuffers) {
8056
8083
  let t = new SharedArrayBuffer(this.bvhData.byteLength), n = new SharedArrayBuffer(this.triangleData.byteLength), r = new SharedArrayBuffer(e.byteLength), i = new Float32Array(t), a = new Float32Array(n);
@@ -8083,7 +8110,7 @@ var rc = 128, ic = class {
8083
8110
  refitBLASes(e, t, n) {
8084
8111
  if (!this.instanceTable || !this.bvhData || !this.triangleData) throw Error("No TLAS/BLAS data available. Run buildBVH() first.");
8085
8112
  let r = performance.now();
8086
- this._blasRefitter ||= new Rs();
8113
+ this._blasRefitter ||= new zs();
8087
8114
  for (let r of e) {
8088
8115
  let e = this.instanceTable.entries[r];
8089
8116
  e && (this._updateMeshTrianglePositions(e, t), n && this._patchMeshSmoothNormals(e, n), this._blasRefitter.refitRange(this.bvhData, this.triangleData, e.blasOffset, e.blasNodeCount), this.instanceTable.recomputeAABB(r, this.bvhData, this.triangleData));
@@ -8214,10 +8241,10 @@ var rc = 128, ic = class {
8214
8241
  n && n.terminate();
8215
8242
  let r;
8216
8243
  try {
8217
- r = new Worker(Os, { type: "module" }), i(t, e, r);
8244
+ r = new Worker(ks, { type: "module" }), i(t, e, r);
8218
8245
  } catch (n) {
8219
8246
  if (n.name !== "SecurityError") throw n;
8220
- or(Os).then((n) => i(t, e, n));
8247
+ or(ks).then((n) => i(t, e, n));
8221
8248
  }
8222
8249
  }
8223
8250
  }
@@ -8250,7 +8277,7 @@ var rc = 128, ic = class {
8250
8277
  dispose() {
8251
8278
  this._log("Disposing resources"), this._disposeRefitWorker(), this._disposeTextures(), this._reset(), this.textureCreator &&= (this.textureCreator.dispose(), null), this.geometryExtractor = null, this.bvhBuilder = null, this.tlasBuilder = null, this._blasRefitter = null;
8252
8279
  }
8253
- }, lc = class {
8280
+ }, uc = class {
8254
8281
  constructor() {
8255
8282
  this.lightData = {
8256
8283
  directional: [],
@@ -8403,19 +8430,19 @@ var rc = 128, ic = class {
8403
8430
  }))
8404
8431
  };
8405
8432
  }
8406
- }, uc = "https://assets.rayzee.atulmourya.com/noise/stbn_scalar_atlas.png", dc = "https://assets.rayzee.atulmourya.com/noise/stbn_vec2_atlas.png", fc = 4, pc = class extends Sn {
8433
+ }, dc = "https://assets.rayzee.atulmourya.com/noise/stbn_scalar_atlas.png", fc = "https://assets.rayzee.atulmourya.com/noise/stbn_vec2_atlas.png", pc = 4, mc = class extends Sn {
8407
8434
  constructor(e, t, n, r = {}) {
8408
8435
  super("PathTracer", {
8409
8436
  ...r,
8410
8437
  executionMode: xn.ALWAYS
8411
8438
  });
8412
8439
  let i = r.width || 1920, a = r.height || 1080;
8413
- this.camera = n, this.width = i, this.height = a, this.renderer = e, this.scene = t, this.tileManager = new Cn(i, a, X.tiles), this.sdfs = new cc(), this.lightSerializer = new lc(), this.accumulationEnabled = !0, this.isComplete = !1, this.cameras = [], this.performanceMonitor = Ln(), this.completionThreshold = 0, this.renderLimitMode = "frames", this._initDataTextures(), this.storageTextures = new zn(0, 0), this.uniforms = new $n(i, a), this._defineUniformGetters(), this.materialData = new ar(this.sdfs), this.materialData.callbacks.onReset = () => this.reset(), this.materialData.callbacks.getTriangleData = () => ({
8440
+ this.camera = n, this.width = i, this.height = a, this.renderer = e, this.scene = t, this.tileManager = new Cn(i, a, X.tiles), this.sdfs = new lc(), this.lightSerializer = new uc(), this.accumulationEnabled = !0, this.isComplete = !1, this.cameras = [], this.performanceMonitor = Ln(), this.completionThreshold = 0, this.renderLimitMode = "frames", this._initDataTextures(), this.storageTextures = new zn(0, 0), this.uniforms = new $n(i, a), this._defineUniformGetters(), this.materialData = new ar(this.sdfs), this.materialData.callbacks.onReset = () => this.reset(), this.materialData.callbacks.getTriangleData = () => ({
8414
8441
  array: this.triangleStorageAttr?.array,
8415
8442
  count: this.triangleCount
8416
8443
  }), this.materialData.callbacks.onTriangleDataChanged = () => {
8417
8444
  this.triangleStorageAttr && (this.triangleStorageAttr.needsUpdate = !0);
8418
- }, this.environment = new Ir(this.scene, this.uniforms), this.environment.callbacks.onReset = () => this.reset(), this.environment.callbacks.getSceneTextureNodes = () => this.shaderBuilder.getSceneTextureNodes(), this.shaderBuilder = new ws(), this._initRenderingState(), this.setupBlueNoise(), this.tempVector2 = new jt(), this.lastCameraMatrix = new tt(), this.lastProjectionMatrix = new tt(), this.lastRenderMode = -1, this.tileCompletionFrame = 0, this.renderModeChangeTimeout = null, this.renderModeChangeDelay = 50, this.pendingRenderMode = null, this.adaptiveSamplingFrameToggle = !1, this.lastInteractionModeState = !1, this.cameraChanged = !1, this.tileChanged = !1, this.updateCompletionThreshold();
8445
+ }, this.environment = new Ir(this.scene, this.uniforms), this.environment.callbacks.onReset = () => this.reset(), this.environment.callbacks.getSceneTextureNodes = () => this.shaderBuilder.getSceneTextureNodes(), this.shaderBuilder = new Ts(), this._initRenderingState(), this.setupBlueNoise(), this.tempVector2 = new jt(), this.lastCameraMatrix = new tt(), this.lastProjectionMatrix = new tt(), this.lastRenderMode = -1, this.tileCompletionFrame = 0, this.renderModeChangeTimeout = null, this.renderModeChangeDelay = 50, this.pendingRenderMode = null, this.adaptiveSamplingFrameToggle = !1, this.lastInteractionModeState = !1, this.cameraChanged = !1, this.tileChanged = !1, this.updateCompletionThreshold();
8419
8446
  }
8420
8447
  _initDataTextures() {
8421
8448
  this.triangleStorageAttr = null, this.triangleStorageNode = null, this.triangleCount = 0, this.bvhStorageAttr = null, this.bvhStorageNode = null, this.bvhNodeCount = 0, this.directionalLightsData = null, this.pointLightsData = null, this.spotLightsData = null, this.areaLightsData = null, this.stbnScalarTexture = null, this.stbnVec2Texture = null, this.lightStorageAttr = new a(new Float32Array(16), 4), this.lightStorageNode = ge(this.lightStorageAttr, "vec4", 1).toReadOnly(), this._lbvhDataCache = null, this._emissiveDataCache = null, this._instanceTable = null, this.adaptiveSamplingTexture = null, this.spheres = [];
@@ -8513,9 +8540,9 @@ var rc = 128, ic = class {
8513
8540
  let e = new Dt();
8514
8541
  e.setCrossOrigin("anonymous");
8515
8542
  let t = (e) => (e.minFilter = ot, e.magFilter = ot, e.wrapS = xt, e.wrapT = xt, e.generateMipmaps = !1, e);
8516
- e.load(uc, (e) => {
8543
+ e.load(dc, (e) => {
8517
8544
  this.stbnScalarTexture = t(e), rn.value = e, console.log(`PathTracer: STBN scalar atlas loaded ${e.image.width}x${e.image.height}`);
8518
- }), e.load(dc, (e) => {
8545
+ }), e.load(fc, (e) => {
8519
8546
  this.stbnVec2Texture = t(e), an.value = e, console.log(`PathTracer: STBN vec2 atlas loaded ${e.image.width}x${e.image.height}`);
8520
8547
  });
8521
8548
  }
@@ -8598,7 +8625,7 @@ var rc = 128, ic = class {
8598
8625
  setBVHData(e) {
8599
8626
  if (!e) return;
8600
8627
  let t = e.length / 4;
8601
- this.bvhStorageNode ? (this.bvhStorageAttr = new a(e, 4), this.bvhStorageNode.value = this.bvhStorageAttr, this.bvhStorageNode.bufferCount = t) : (this.bvhStorageAttr = new a(e, 4), this.bvhStorageNode = ge(this.bvhStorageAttr, "vec4", t).toReadOnly()), this.bvhNodeCount = Math.floor(t / fc), console.log(`PathTracer: ${this.bvhNodeCount} BVH nodes (storage buffer)`);
8628
+ this.bvhStorageNode ? (this.bvhStorageAttr = new a(e, 4), this.bvhStorageNode.value = this.bvhStorageAttr, this.bvhStorageNode.bufferCount = t) : (this.bvhStorageAttr = new a(e, 4), this.bvhStorageNode = ge(this.bvhStorageAttr, "vec4", t).toReadOnly()), this.bvhNodeCount = Math.floor(t / pc), console.log(`PathTracer: ${this.bvhNodeCount} BVH nodes (storage buffer)`);
8602
8629
  }
8603
8630
  setInstanceTable(e) {
8604
8631
  this._instanceTable = e;
@@ -8797,7 +8824,7 @@ var rc = 128, ic = class {
8797
8824
  dispose() {
8798
8825
  this.renderModeChangeTimeout &&= (clearTimeout(this.renderModeChangeTimeout), null), this.tileManager?.dispose(), this.cameraOptimizer?.dispose(), this.materialData?.dispose(), this.environment?.dispose(), this.shaderBuilder?.dispose(), this.uniforms?.dispose(), this.storageTextures?.dispose(), this.stbnScalarTexture?.dispose(), this.stbnVec2Texture?.dispose(), this.placeholderTexture?.dispose(), this.triangleStorageAttr = null, this.triangleStorageNode = null, this.bvhStorageAttr = null, this.bvhStorageNode = null, this.placeholderTexture = null, this.isReady = !1;
8799
8826
  }
8800
- }, mc = class extends Sn {
8827
+ }, hc = class extends Sn {
8801
8828
  constructor(e, t = {}) {
8802
8829
  super("NormalDepth", {
8803
8830
  ...t,
@@ -8835,7 +8862,7 @@ var rc = 128, ic = class {
8835
8862
  let u = W(j(c).add(.5).div(a).mul(2).sub(1), j(l).add(.5).div(o).mul(2).sub(1).negate(), 1), d = i.mul(G(u, 1)), f = R(ie(r[0].xyz, r[1].xyz, r[2].xyz).mul(d.xyz.div(d.w))), p = Lr({
8836
8863
  origin: W(r[3]),
8837
8864
  direction: f
8838
- }), m = Br.wrap(Ni(p, t, e, n)), h = m.normal.mul(.5).add(.5), g = m.dst, _ = m.didHit.select(G(h, g), G(0, 0, 0, j(1e6)));
8865
+ }), m = Br.wrap(Pi(p, t, e, n)), h = m.normal.mul(.5).add(.5), g = m.dst, _ = m.didHit.select(G(h, g), G(0, 0, 0, j(1e6)));
8839
8866
  ye(s, Se(V(c), V(l)), _).toWriteOnly();
8840
8867
  });
8841
8868
  })(r, i).compute([
@@ -8876,7 +8903,7 @@ var rc = 128, ic = class {
8876
8903
  dispose() {
8877
8904
  this._computeNode?.dispose(), this._outputStorageTex?.dispose(), this.renderTarget?.dispose();
8878
8905
  }
8879
- }, hc = class extends Sn {
8906
+ }, gc = class extends Sn {
8880
8907
  constructor(e, t, n = {}) {
8881
8908
  super("MotionVector", {
8882
8909
  ...n,
@@ -8988,7 +9015,7 @@ var rc = 128, ic = class {
8988
9015
  };
8989
9016
  //#endregion
8990
9017
  //#region src/Processor/createRenderTargetHelper.js
8991
- function gc(e, t, n = {}) {
9018
+ function _c(e, t, n = {}) {
8992
9019
  let r = n.textureIndex || 0, i = t.isTexture === !0, a;
8993
9020
  i ? (console.warn("RenderTargetHelper: Direct Texture input is not supported. Pass a RenderTarget instead."), a = null) : a = t;
8994
9021
  let o = {
@@ -9146,7 +9173,7 @@ function gc(e, t, n = {}) {
9146
9173
  }
9147
9174
  //#endregion
9148
9175
  //#region src/Stages/ASVGF.js
9149
- var _c = class extends Sn {
9176
+ var vc = class extends Sn {
9150
9177
  constructor(e, t = {}) {
9151
9178
  super("ASVGF", {
9152
9179
  ...t,
@@ -9160,7 +9187,7 @@ var _c = class extends Sn {
9160
9187
  magFilter: ot,
9161
9188
  depthBuffer: !1,
9162
9189
  stencilBuffer: !1
9163
- }), this._heatmapRawColorTexNode = new s(), this._heatmapColorTexNode = new s(), this._heatmapTemporalTexNode = new s(), this._heatmapNDTexNode = new s(), this._heatmapMotionTexNode = new s(), this._heatmapGradientTexNode = new s(), this._buildHeatmapCompute(), this.heatmapHelper = gc(this.renderer, this.heatmapTarget, {
9190
+ }), this._heatmapRawColorTexNode = new s(), this._heatmapColorTexNode = new s(), this._heatmapTemporalTexNode = new s(), this._heatmapNDTexNode = new s(), this._heatmapMotionTexNode = new s(), this._heatmapGradientTexNode = new s(), this._buildHeatmapCompute(), this.heatmapHelper = _c(this.renderer, this.heatmapTarget, {
9164
9191
  width: 400,
9165
9192
  height: 400,
9166
9193
  position: "bottom-right",
@@ -9216,7 +9243,7 @@ var _c = class extends Sn {
9216
9243
  let e = B(i, v), t = e.w.greaterThan(.5), r = j(f).sub(e.x.mul(h)), m = j(_).sub(e.y.mul(g)), S = r.greaterThanEqual(0).and(r.lessThan(j(h))).and(m.greaterThanEqual(0)).and(m.lessThan(j(g)));
9217
9244
  p(t.and(S), () => {
9218
9245
  let e = P(N(r).clamp(N(0), N(h).sub(1)), N(m).clamp(N(0), N(g).sub(1))), t = b.xyz.mul(2).sub(1), i = B(o, e);
9219
- wi(t, i.xyz.mul(2).sub(1), b.w, i.w, c, l);
9246
+ Ti(t, i.xyz.mul(2).sub(1), b.w, i.w, c, l);
9220
9247
  let p = B(a, e), v = p.xyz, S = p.w, C = S.div(u).clamp(0, 1), w = W(1e10).toVar(), T = W(-1e10).toVar(), E = W(0).toVar();
9221
9248
  for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) {
9222
9249
  let r = B(n, P(f.add(t).clamp(N(0), N(h).sub(1)), _.add(e).clamp(N(0), N(g).sub(1)))).xyz;
@@ -9333,7 +9360,7 @@ var _c = class extends Sn {
9333
9360
  dispose() {
9334
9361
  this._gradientNode?.dispose(), this._temporalNodeA?.dispose(), this._temporalNodeB?.dispose(), this._temporalTexA?.dispose(), this._temporalTexB?.dispose(), this._prevNDTexA?.dispose(), this._prevNDTexB?.dispose(), this._gradientStorageTex?.dispose(), this._heatmapComputeNode?.dispose(), this._heatmapStorageTex?.dispose(), this.heatmapTarget?.dispose(), this._colorTexNode?.dispose(), this._normalDepthTexNode?.dispose(), this._motionTexNode?.dispose(), this._readTemporalTexNode?.dispose(), this._readPrevNDTexNode?.dispose(), this._gradientReadTexNode?.dispose(), this._heatmapRawColorTexNode?.dispose(), this._heatmapColorTexNode?.dispose(), this._heatmapTemporalTexNode?.dispose(), this._heatmapNDTexNode?.dispose(), this._heatmapMotionTexNode?.dispose(), this._heatmapGradientTexNode?.dispose(), this.heatmapHelper?.dispose();
9335
9362
  }
9336
- }, vc = /* @__PURE__ */ K("\n fn temporalAccumulate(\n lum: f32,\n prevMean: f32,\n prevMeanSq: f32,\n alpha: f32,\n spatialVariance: f32,\n varianceBoost: f32\n ) -> vec4f {\n\n let newMean = prevMean + ( lum - prevMean ) * alpha;\n let newMeanSq = prevMeanSq + ( lum * lum - prevMeanSq ) * alpha;\n let temporalVariance = max( newMeanSq - newMean * newMean, 0.0 );\n\n return vec4f(\n newMean,\n newMeanSq,\n temporalVariance * varianceBoost,\n spatialVariance * varianceBoost\n );\n\n }\n"), yc = class extends Sn {
9363
+ }, yc = /* @__PURE__ */ K("\n fn temporalAccumulate(\n lum: f32,\n prevMean: f32,\n prevMeanSq: f32,\n alpha: f32,\n spatialVariance: f32,\n varianceBoost: f32\n ) -> vec4f {\n\n let newMean = prevMean + ( lum - prevMean ) * alpha;\n let newMeanSq = prevMeanSq + ( lum * lum - prevMeanSq ) * alpha;\n let temporalVariance = max( newMeanSq - newMean * newMean, 0.0 );\n\n return vec4f(\n newMean,\n newMeanSq,\n temporalVariance * varianceBoost,\n spatialVariance * varianceBoost\n );\n\n }\n"), bc = class extends Sn {
9337
9364
  constructor(e, t = {}) {
9338
9365
  super("VarianceEstimation", {
9339
9366
  ...t,
@@ -9365,7 +9392,7 @@ var _c = class extends Sn {
9365
9392
  }
9366
9393
  n.divAssign(9), a.divAssign(9);
9367
9394
  let o = I(a.sub(n.mul(n)), j(0)), u = s.element(l.add(1).mul(10).add(c.add(1))), d = B(t, P(_, v));
9368
- ye(e, Se(V(_), V(v)), vc(u, d.x, d.y, r, o, i)).toWriteOnly();
9395
+ ye(e, Se(V(_), V(v)), yc(u, d.x, d.y, r, o, i)).toWriteOnly();
9369
9396
  });
9370
9397
  })().compute([
9371
9398
  this._dispatchX,
@@ -9408,7 +9435,7 @@ var _c = class extends Sn {
9408
9435
  dispose() {
9409
9436
  this._computeNodeA?.dispose(), this._computeNodeB?.dispose(), this._storageTexA?.dispose(), this._storageTexB?.dispose(), this._colorTexNode?.dispose(), this._readTexNodeA?.dispose(), this._readTexNodeB?.dispose();
9410
9437
  }
9411
- }, bc = /* @__PURE__ */ K("\n fn bilateralWeight(\n centerLum: f32, sLum: f32,\n centerNormal: vec3f, sNormal: vec3f,\n centerDepth: f32, sDepth: f32,\n centerColor: vec3f, sColor: vec3f,\n kernelW: f32,\n phiLum: f32, phiNorm: f32, phiDep: f32, phiCol: f32\n ) -> f32 {\n\n let lumW = exp( -abs( centerLum - sLum ) * phiLum );\n let normW = pow( max( dot( centerNormal, sNormal ), 0.0 ), phiNorm );\n let depW = exp( -abs( centerDepth - sDepth ) / max( phiDep, 0.001 ) );\n let maxDiff = max( max( abs( centerColor.x - sColor.x ),\n abs( centerColor.y - sColor.y ) ),\n abs( centerColor.z - sColor.z ) );\n let colW = exp( -maxDiff * phiCol );\n return kernelW * lumW * normW * depW * colW;\n\n }\n"), xc = class extends Sn {
9438
+ }, xc = /* @__PURE__ */ K("\n fn bilateralWeight(\n centerLum: f32, sLum: f32,\n centerNormal: vec3f, sNormal: vec3f,\n centerDepth: f32, sDepth: f32,\n centerColor: vec3f, sColor: vec3f,\n kernelW: f32,\n phiLum: f32, phiNorm: f32, phiDep: f32, phiCol: f32\n ) -> f32 {\n\n let lumW = exp( -abs( centerLum - sLum ) * phiLum );\n let normW = pow( max( dot( centerNormal, sNormal ), 0.0 ), phiNorm );\n let depW = exp( -abs( centerDepth - sDepth ) / max( phiDep, 0.001 ) );\n let maxDiff = max( max( abs( centerColor.x - sColor.x ),\n abs( centerColor.y - sColor.y ) ),\n abs( centerColor.z - sColor.z ) );\n let colW = exp( -maxDiff * phiCol );\n return kernelW * lumW * normW * depW * colW;\n\n }\n"), Sc = class extends Sn {
9412
9439
  constructor(e, t = {}) {
9413
9440
  super("BilateralFiltering", {
9414
9441
  ...t,
@@ -9453,7 +9480,7 @@ var _c = class extends Sn {
9453
9480
  p(d.lessThan(N(c)).and(f.lessThan(N(l))), () => {
9454
9481
  let p = P(d, f), m = B(t, p).xyz, h = B(n, p), g = h.xyz.mul(2).sub(1), _ = h.w, v = fi(m), y = W(0).toVar(), b = j(0).toVar();
9455
9482
  for (let e = 0; e < 5; e++) for (let p = 0; p < 5; p++) {
9456
- let h = p - 2, x = e - 2, S = u[e * 5 + p], C = d.add(s.mul(h)).clamp(N(0), N(c).sub(1)), w = f.add(s.mul(x)).clamp(N(0), N(l).sub(1)), T = B(t, P(C, w)).xyz, E = B(n, P(C, w)), D = E.xyz.mul(2).sub(1), O = E.w, k = bc(v, fi(T), g, D, _, O, m, T, j(S), o, i, a, r);
9483
+ let h = p - 2, x = e - 2, S = u[e * 5 + p], C = d.add(s.mul(h)).clamp(N(0), N(c).sub(1)), w = f.add(s.mul(x)).clamp(N(0), N(l).sub(1)), T = B(t, P(C, w)).xyz, E = B(n, P(C, w)), D = E.xyz.mul(2).sub(1), O = E.w, k = xc(v, fi(T), g, D, _, O, m, T, j(S), o, i, a, r);
9457
9484
  y.addAssign(T.mul(k)), b.addAssign(k);
9458
9485
  }
9459
9486
  let x = y.div(I(b, j(1e-4)));
@@ -9498,7 +9525,7 @@ var _c = class extends Sn {
9498
9525
  dispose() {
9499
9526
  this._computeNodeA?.dispose(), this._computeNodeB?.dispose(), this._storageTexA?.dispose(), this._storageTexB?.dispose(), this._readTexNode?.dispose(), this._normalDepthTexNode?.dispose();
9500
9527
  }
9501
- }, Sc = /* @__PURE__ */ K("\n fn computeSamplingGuidance(\n temporalVariance: f32,\n spatialVariance: f32,\n meanLuminance: f32,\n threshold: f32,\n frame: i32,\n minFrames: i32,\n convThreshold: f32,\n sensitivity: f32,\n convSpeedScale: f32\n ) -> vec4f {\n\n // The path tracer accumulates via alpha = 1/(frame+1), so temporal variance\n // of the accumulated output shrinks as ~sigma²/(frame+1)². Scale by (frame+1)\n // to get accumulated image quality ~sigma²/N — decreases as image converges.\n let frameScale = f32( frame + 1 );\n let effectiveVariance = temporalVariance * frameScale;\n\n // Normalize by luminance² — converts absolute variance to relative (CV²).\n // Floor of 0.01 prevents noise amplification for near-black pixels\n // (linear luminance < 0.1 → below perceptual visibility threshold).\n let normFactor = max( meanLuminance * meanLuminance, 0.01 );\n let normalizedVariance = effectiveVariance / normFactor;\n\n let varianceRatio = clamp( normalizedVariance / threshold, 0.0, 1.0 );\n\n // Apply sensitivity — higher values assign more samples to noisy pixels\n var normalizedSamples = clamp( varianceRatio * sensitivity, 0.0, 1.0 );\n\n // Small spatial boost for noisy neighbourhoods (un-scaled — provides\n // a minor secondary signal that naturally diminishes as image converges)\n let spatialBoost = clamp( spatialVariance / ( threshold * 4.0 ), 0.0, 0.2 );\n normalizedSamples = clamp( normalizedSamples + spatialBoost, 0.0, 1.0 );\n\n // Warm-up: variance estimates need a few frames to stabilise\n if ( frame < minFrames ) {\n\n let warmupFactor = f32( frame ) / f32( minFrames );\n normalizedSamples = mix( 1.0, normalizedSamples, warmupFactor * warmupFactor );\n\n }\n\n // Convergence: mark pixel only when per-frame noise is truly negligible.\n // convSpeedScale controls aggressiveness: higher = easier to converge\n // (scales the threshold up, so more pixels qualify as converged).\n let scaledConvThreshold = convThreshold * convSpeedScale;\n var converged = 0.0;\n if ( normalizedVariance < scaledConvThreshold && frame > minFrames ) {\n\n converged = 1.0;\n\n }\n\n return vec4f(\n normalizedSamples,\n varianceRatio,\n converged,\n 1.0\n );\n\n }\n"), Cc = /* @__PURE__ */ K("\n fn heatmapGradient( t: f32, normalizedVariance: f32, converged: f32 ) -> vec4f {\n\n let r = clamp( ( t - 0.5 ) * 4.0, 0.0, 1.0 );\n let g = clamp( t * 4.0, 0.0, 1.0 ) - clamp( ( t - 0.75 ) * 4.0, 0.0, 1.0 );\n let b = 1.0 - clamp( ( t - 0.25 ) * 4.0, 0.0, 1.0 );\n\n var color = vec3f( r, g, b );\n\n // Convergence: desaturate converged pixels\n if ( converged > 0.5 ) {\n\n let gray = color.x * 0.299 + color.y * 0.587 + color.z * 0.114;\n color = mix( color, vec3f( gray ), 0.6 );\n\n }\n\n // Brightness modulation\n color *= 0.7 + normalizedVariance * 0.3;\n\n return vec4f( color, 1.0 );\n\n }\n"), wc = class extends Sn {
9528
+ }, Cc = /* @__PURE__ */ K("\n fn computeSamplingGuidance(\n temporalVariance: f32,\n spatialVariance: f32,\n meanLuminance: f32,\n threshold: f32,\n frame: i32,\n minFrames: i32,\n convThreshold: f32,\n sensitivity: f32,\n convSpeedScale: f32\n ) -> vec4f {\n\n // The path tracer accumulates via alpha = 1/(frame+1), so temporal variance\n // of the accumulated output shrinks as ~sigma²/(frame+1)². Scale by (frame+1)\n // to get accumulated image quality ~sigma²/N — decreases as image converges.\n let frameScale = f32( frame + 1 );\n let effectiveVariance = temporalVariance * frameScale;\n\n // Normalize by luminance² — converts absolute variance to relative (CV²).\n // Floor of 0.01 prevents noise amplification for near-black pixels\n // (linear luminance < 0.1 → below perceptual visibility threshold).\n let normFactor = max( meanLuminance * meanLuminance, 0.01 );\n let normalizedVariance = effectiveVariance / normFactor;\n\n let varianceRatio = clamp( normalizedVariance / threshold, 0.0, 1.0 );\n\n // Apply sensitivity — higher values assign more samples to noisy pixels\n var normalizedSamples = clamp( varianceRatio * sensitivity, 0.0, 1.0 );\n\n // Small spatial boost for noisy neighbourhoods (un-scaled — provides\n // a minor secondary signal that naturally diminishes as image converges)\n let spatialBoost = clamp( spatialVariance / ( threshold * 4.0 ), 0.0, 0.2 );\n normalizedSamples = clamp( normalizedSamples + spatialBoost, 0.0, 1.0 );\n\n // Warm-up: variance estimates need a few frames to stabilise\n if ( frame < minFrames ) {\n\n let warmupFactor = f32( frame ) / f32( minFrames );\n normalizedSamples = mix( 1.0, normalizedSamples, warmupFactor * warmupFactor );\n\n }\n\n // Convergence: mark pixel only when per-frame noise is truly negligible.\n // convSpeedScale controls aggressiveness: higher = easier to converge\n // (scales the threshold up, so more pixels qualify as converged).\n let scaledConvThreshold = convThreshold * convSpeedScale;\n var converged = 0.0;\n if ( normalizedVariance < scaledConvThreshold && frame > minFrames ) {\n\n converged = 1.0;\n\n }\n\n return vec4f(\n normalizedSamples,\n varianceRatio,\n converged,\n 1.0\n );\n\n }\n"), wc = /* @__PURE__ */ K("\n fn heatmapGradient( t: f32, normalizedVariance: f32, converged: f32 ) -> vec4f {\n\n let r = clamp( ( t - 0.5 ) * 4.0, 0.0, 1.0 );\n let g = clamp( t * 4.0, 0.0, 1.0 ) - clamp( ( t - 0.75 ) * 4.0, 0.0, 1.0 );\n let b = 1.0 - clamp( ( t - 0.25 ) * 4.0, 0.0, 1.0 );\n\n var color = vec3f( r, g, b );\n\n // Convergence: desaturate converged pixels\n if ( converged > 0.5 ) {\n\n let gray = color.x * 0.299 + color.y * 0.587 + color.z * 0.114;\n color = mix( color, vec3f( gray ), 0.6 );\n\n }\n\n // Brightness modulation\n color *= 0.7 + normalizedVariance * 0.3;\n\n return vec4f( color, 1.0 );\n\n }\n"), Tc = class extends Sn {
9502
9529
  constructor(e, t = {}) {
9503
9530
  super("AdaptiveSampling", {
9504
9531
  ...t,
@@ -9512,7 +9539,7 @@ var _c = class extends Sn {
9512
9539
  magFilter: ot,
9513
9540
  depthBuffer: !1,
9514
9541
  stencilBuffer: !1
9515
- }), this._dispatchX = Math.ceil(n / 16), this._dispatchY = Math.ceil(r / 16), this._varianceTexNode = new s(), this._buildCompute(), this._buildHeatmapCompute(), this.helper = gc(this.renderer, this.heatmapTarget, {
9542
+ }), this._dispatchX = Math.ceil(n / 16), this._dispatchY = Math.ceil(r / 16), this._varianceTexNode = new s(), this._buildCompute(), this._buildHeatmapCompute(), this.helper = _c(this.renderer, this.heatmapTarget, {
9516
9543
  width: 400,
9517
9544
  height: 400,
9518
9545
  position: "bottom-right",
@@ -9529,7 +9556,7 @@ var _c = class extends Sn {
9529
9556
  this._computeNode = f(() => {
9530
9557
  let u = N(Te.x).mul(16).add(N(F.x)), d = N(Te.y).mul(16).add(N(F.y));
9531
9558
  p(u.lessThan(N(s)).and(d.lessThan(N(c))), () => {
9532
- let s = B(e, P(u, d)), c = Sc(s.z, s.w, s.x, t, N(i), N(a), o, n, r);
9559
+ let s = B(e, P(u, d)), c = Cc(s.z, s.w, s.x, t, N(i), N(a), o, n, r);
9533
9560
  ye(l, Se(V(u), V(d)), c).toWriteOnly();
9534
9561
  });
9535
9562
  })().compute([
@@ -9547,7 +9574,7 @@ var _c = class extends Sn {
9547
9574
  this._heatmapComputeNode = f(() => {
9548
9575
  let i = N(Te.x).mul(16).add(N(F.x)), a = N(Te.y).mul(16).add(N(F.y));
9549
9576
  p(i.lessThan(N(n)).and(a.lessThan(N(r))), () => {
9550
- let n = B(e, P(i, a)), r = Cc(n.x.clamp(0, 1), n.y, n.z);
9577
+ let n = B(e, P(i, a)), r = wc(n.x.clamp(0, 1), n.y, n.z);
9551
9578
  ye(t, Se(V(i), V(a)), r).toWriteOnly();
9552
9579
  });
9553
9580
  })().compute([
@@ -9606,7 +9633,7 @@ var _c = class extends Sn {
9606
9633
  dispose() {
9607
9634
  this._computeNode?.dispose(), this._heatmapComputeNode?.dispose(), this._heatmapStorageTex?.dispose(), this._outputStorageTex?.dispose(), this.heatmapTarget?.dispose(), this._varianceTexNode?.dispose(), this.helper?.dispose(), this._computeNode = null, this._heatmapComputeNode = null, this._heatmapStorageTex = null, this._outputStorageTex = null, this.heatmapTarget = null, this._varianceTexNode = null, this.helper = null;
9608
9635
  }
9609
- }, Tc = class extends Sn {
9636
+ }, Ec = class extends Sn {
9610
9637
  constructor(e, t = {}) {
9611
9638
  super("EdgeAwareFiltering", {
9612
9639
  ...t,
@@ -9686,7 +9713,7 @@ var _c = class extends Sn {
9686
9713
  dispose() {
9687
9714
  this._computeNode?.dispose(), this._outputStorageTex?.dispose(), this.outputTarget?.dispose(), this._inputTexNode?.dispose();
9688
9715
  }
9689
- }, Ec = 256, Dc = -8, Oc = 6 - Dc, kc = Oc / Ec, Ac = 1e4, jc = /* @__PURE__ */ K("\n fn adaptExposure(\n geoMean: f32,\n prevExposure: f32,\n keyValue: f32,\n minExp: f32,\n maxExp: f32,\n speedBright: f32,\n speedDark: f32,\n dt: f32,\n isFirstFrame: f32\n ) -> vec4f {\n\n let targetExp = clamp( keyValue / max( geoMean, 0.001 ), minExp, maxExp );\n var newExposure = targetExp;\n\n // Temporal smoothing (skip on first frame)\n if ( isFirstFrame < 0.5 ) {\n\n // Asymmetric speed: brighter scenes adapt faster\n let speed = select( speedDark, speedBright, targetExp < prevExposure );\n let alpha = 1.0 - exp( -dt * speed );\n newExposure = mix( prevExposure, targetExp, alpha );\n\n }\n\n return vec4f( newExposure, geoMean, targetExp, 1.0 );\n\n }\n"), Mc = class extends Sn {
9716
+ }, Dc = 256, Oc = -8, kc = 6 - Oc, Ac = kc / Dc, jc = 1e4, Mc = /* @__PURE__ */ K("\n fn adaptExposure(\n geoMean: f32,\n prevExposure: f32,\n keyValue: f32,\n minExp: f32,\n maxExp: f32,\n speedBright: f32,\n speedDark: f32,\n dt: f32,\n isFirstFrame: f32\n ) -> vec4f {\n\n let targetExp = clamp( keyValue / max( geoMean, 0.001 ), minExp, maxExp );\n var newExposure = targetExp;\n\n // Temporal smoothing (skip on first frame)\n if ( isFirstFrame < 0.5 ) {\n\n // Asymmetric speed: brighter scenes adapt faster\n let speed = select( speedDark, speedBright, targetExp < prevExposure );\n let alpha = 1.0 - exp( -dt * speed );\n newExposure = mix( prevExposure, targetExp, alpha );\n\n }\n\n return vec4f( newExposure, geoMean, targetExp, 1.0 );\n\n }\n"), Nc = class extends Sn {
9690
9717
  constructor(e, t = {}) {
9691
9718
  super("AutoExposure", {
9692
9719
  ...t,
@@ -9702,7 +9729,7 @@ var _c = class extends Sn {
9702
9729
  depthBuffer: !1,
9703
9730
  stencilBuffer: !1
9704
9731
  };
9705
- this._downsampleTarget = new i(this.REDUCTION_SIZE, this.REDUCTION_SIZE, e), this._downsampleStorageTex = new o(this.REDUCTION_SIZE, this.REDUCTION_SIZE), this._downsampleStorageTex.type = Ge, this._downsampleStorageTex.format = _t, this._downsampleStorageTex.minFilter = ot, this._downsampleStorageTex.magFilter = ot, this._reductionStorageTex = new o(1, 1), this._reductionStorageTex.type = Ge, this._reductionStorageTex.format = _t, this._reductionStorageTex.minFilter = ot, this._reductionStorageTex.magFilter = ot, this._reductionReadTarget = new i(1, 1, e), this._adaptationResult = C(1, "vec4"), this._readbackBuffer = new n(16), this._readbackBuffer.name = "AutoExposureAdaptation", this._histogramBuffer = C(Ec, "uint").toAtomic();
9732
+ this._downsampleTarget = new i(this.REDUCTION_SIZE, this.REDUCTION_SIZE, e), this._downsampleStorageTex = new o(this.REDUCTION_SIZE, this.REDUCTION_SIZE), this._downsampleStorageTex.type = Ge, this._downsampleStorageTex.format = _t, this._downsampleStorageTex.minFilter = ot, this._downsampleStorageTex.magFilter = ot, this._reductionStorageTex = new o(1, 1), this._reductionStorageTex.type = Ge, this._reductionStorageTex.format = _t, this._reductionStorageTex.minFilter = ot, this._reductionStorageTex.magFilter = ot, this._reductionReadTarget = new i(1, 1, e), this._adaptationResult = C(1, "vec4"), this._readbackBuffer = new n(16), this._readbackBuffer.name = "AutoExposureAdaptation", this._histogramBuffer = C(Dc, "uint").toAtomic();
9706
9733
  }
9707
9734
  _buildCompute() {
9708
9735
  this._buildDownsampleCompute(), this._buildHistogramCompute(), this._buildHistogramAnalyzeCompute(), this._buildAdaptationCompute();
@@ -9736,7 +9763,7 @@ var _c = class extends Sn {
9736
9763
  for (let i = 0; i < 16; i++) {
9737
9764
  let a = r.mul(16).add(i), o = a.mod(64), s = a.div(64), c = B(e, P(N(o), N(s))), l = c.x, u = c.y;
9738
9765
  p(u.greaterThan(0), () => {
9739
- let e = V(l.div(u).sub(j(Dc)).div(j(Oc)).mul(j(Ec)).floor().clamp(0, j(Ec - 1))), r = j(o).add(.5).div(j(64)), i = j(s).add(.5).div(j(64)), a = r.sub(.5), c = i.sub(.5), d = V(a.mul(a).add(c.mul(c)).mul(n).negate().exp().mul(j(Ac)));
9766
+ let e = V(l.div(u).sub(j(Oc)).div(j(kc)).mul(j(Dc)).floor().clamp(0, j(Dc - 1))), r = j(o).add(.5).div(j(64)), i = j(s).add(.5).div(j(64)), a = r.sub(.5), c = i.sub(.5), d = V(a.mul(a).add(c.mul(c)).mul(n).negate().exp().mul(j(jc)));
9740
9767
  b(t.element(e), d);
9741
9768
  });
9742
9769
  }
@@ -9754,14 +9781,14 @@ var _c = class extends Sn {
9754
9781
  let e = this._histogramBuffer, t = this._reductionStorageTex, n = this.lowPercentileU, r = this.highPercentileU;
9755
9782
  this._histogramAnalyzeNode = f(() => {
9756
9783
  let i = j(0).toVar();
9757
- m(Ec, ({ i: t }) => {
9784
+ m(Dc, ({ i: t }) => {
9758
9785
  i.addAssign(j(x(e.element(t))));
9759
9786
  });
9760
9787
  let a = i.mul(n), o = i.mul(r), s = j(0).toVar(), c = j(0).toVar(), l = j(0).toVar(), u = j(0).toVar();
9761
- m(Ec, ({ i: t }) => {
9788
+ m(Dc, ({ i: t }) => {
9762
9789
  let n = j(x(e.element(t)));
9763
9790
  u.assign(s), s.addAssign(n), p(u.lessThan(o).and(s.greaterThan(a)), () => {
9764
- let e = j(Dc).add(j(t).add(.5).mul(j(kc)));
9791
+ let e = j(Oc).add(j(t).add(.5).mul(j(Ac)));
9765
9792
  c.addAssign(e.mul(n)), l.addAssign(n);
9766
9793
  });
9767
9794
  });
@@ -9776,7 +9803,7 @@ var _c = class extends Sn {
9776
9803
  _buildAdaptationCompute() {
9777
9804
  let e = this._reductionReadTexNode, t = this._adaptationResult, n = this.keyValueU, r = this.minExposureU, i = this.maxExposureU, a = this.adaptSpeedBrightU, o = this.adaptSpeedDarkU, s = this.deltaTimeU, c = this.isFirstFrameU, l = this.previousExposureU;
9778
9805
  this._adaptationComputeNode = f(() => {
9779
- let u = B(e, P(N(0), N(0))).x, d = jc(u, l, n, r, i, a, o, s, c);
9806
+ let u = B(e, P(N(0), N(0))).x, d = Mc(u, l, n, r, i, a, o, s, c);
9780
9807
  t.element(V(0)).assign(d);
9781
9808
  })().compute(1, [
9782
9809
  1,
@@ -9843,7 +9870,7 @@ var _c = class extends Sn {
9843
9870
  };
9844
9871
  //#endregion
9845
9872
  //#region src/TSL/SSRC.js
9846
- function Nc({ colorTexNode: e, ndTexNode: t, motionTexNode: n, readCacheTexNode: r, readPrevNDTexNode: i, writeCacheTex: a, writePrevNDTex: o, resW: s, resH: c, temporalAlpha: l, phiNormal: u, phiDepth: d, maxHistory: m, framesSinceReset: h }) {
9873
+ function Pc({ colorTexNode: e, ndTexNode: t, motionTexNode: n, readCacheTexNode: r, readPrevNDTexNode: i, writeCacheTex: a, writePrevNDTex: o, resW: s, resH: c, temporalAlpha: l, phiNormal: u, phiDepth: d, maxHistory: m, framesSinceReset: h }) {
9847
9874
  return f(() => {
9848
9875
  let f = N(Te.x).mul(8).add(N(F.x)), g = N(Te.y).mul(8).add(N(F.y));
9849
9876
  p(f.lessThan(N(s)).and(g.lessThan(N(c))), () => {
@@ -9851,7 +9878,7 @@ function Nc({ colorTexNode: e, ndTexNode: t, motionTexNode: n, readCacheTexNode:
9851
9878
  p(h.greaterThan(N(0)), () => {
9852
9879
  let e = B(n, _), t = e.w.greaterThan(.5), a = j(f).sub(e.x.mul(s)), o = j(g).sub(e.y.mul(c)), h = a.greaterThanEqual(0).and(a.lessThan(j(s))).and(o.greaterThanEqual(0)).and(o.lessThan(j(c)));
9853
9880
  p(t.and(h), () => {
9854
- let e = P(N(a).clamp(N(0), N(s).sub(1)), N(o).clamp(N(0), N(c).sub(1))), t = y.xyz.mul(2).sub(1), n = B(i, e), f = wi(t, n.xyz.mul(2).sub(1), y.w, n.w, u, d);
9881
+ let e = P(N(a).clamp(N(0), N(s).sub(1)), N(o).clamp(N(0), N(c).sub(1))), t = y.xyz.mul(2).sub(1), n = B(i, e), f = Ti(t, n.xyz.mul(2).sub(1), y.w, n.w, u, d);
9855
9882
  p(f.greaterThan(.01), () => {
9856
9883
  let t = B(r, e), n = t.xyz, i = t.w, a = L(n, v, ae(I(l, j(1).div(i.add(1))).div(I(f, j(.1))), 1)), o = ae(i.add(1), m);
9857
9884
  b.assign(G(a, o));
@@ -9865,7 +9892,7 @@ function Nc({ colorTexNode: e, ndTexNode: t, motionTexNode: n, readCacheTexNode:
9865
9892
  });
9866
9893
  });
9867
9894
  }
9868
- function Pc({ colorTexNode: e, ndTexNode: t, readCacheTexNode: n, outputTex: r, resW: i, resH: a, spatialRadius: o, spatialWeight: s, phiNormal: c, phiDepth: l }) {
9895
+ function Fc({ colorTexNode: e, ndTexNode: t, readCacheTexNode: n, outputTex: r, resW: i, resH: a, spatialRadius: o, spatialWeight: s, phiNormal: c, phiDepth: l }) {
9869
9896
  let u = [
9870
9897
  [1, 0],
9871
9898
  [-1, 0],
@@ -9881,7 +9908,7 @@ function Pc({ colorTexNode: e, ndTexNode: t, readCacheTexNode: n, outputTex: r,
9881
9908
  p(d.lessThan(N(i)).and(f.lessThan(N(a))), () => {
9882
9909
  let p = P(d, f), m = B(n, p), h = m.xyz, g = m.w, _ = B(t, p), v = _.xyz.mul(2).sub(1), y = j(1).sub(g.div(16).clamp(0, 1)), b = s.mul(y), x = W(h).toVar(), S = j(1).toVar();
9883
9910
  for (let e = 0; e < u.length; e++) {
9884
- let [r, s] = u[e], p = P(d.add(N(o).mul(r)).clamp(N(0), N(i).sub(1)), f.add(N(o).mul(s)).clamp(N(0), N(a).sub(1))), m = B(n, p).xyz, h = B(t, p), g = wi(v, h.xyz.mul(2).sub(1), _.w, h.w, c, l);
9911
+ let [r, s] = u[e], p = P(d.add(N(o).mul(r)).clamp(N(0), N(i).sub(1)), f.add(N(o).mul(s)).clamp(N(0), N(a).sub(1))), m = B(n, p).xyz, h = B(t, p), g = Ti(v, h.xyz.mul(2).sub(1), _.w, h.w, c, l);
9885
9912
  x.addAssign(m.mul(g)), S.addAssign(g);
9886
9913
  }
9887
9914
  let C = L(h, x.div(I(S, 1e-4)), b), w = B(e, p).w;
@@ -9891,7 +9918,7 @@ function Pc({ colorTexNode: e, ndTexNode: t, readCacheTexNode: n, outputTex: r,
9891
9918
  }
9892
9919
  //#endregion
9893
9920
  //#region src/Stages/SSRC.js
9894
- var Fc = class extends Sn {
9921
+ var Ic = class extends Sn {
9895
9922
  constructor(e, t = {}) {
9896
9923
  super("SSRC", {
9897
9924
  ...t,
@@ -9966,12 +9993,12 @@ var Fc = class extends Sn {
9966
9993
  phiNormal: this.phiNormal,
9967
9994
  phiDepth: this.phiDepth,
9968
9995
  maxHistory: this.maxHistory
9969
- }, t = Nc({
9996
+ }, t = Pc({
9970
9997
  ...e,
9971
9998
  writeCacheTex: this._cacheTexA,
9972
9999
  writePrevNDTex: this._prevNDTexA,
9973
10000
  framesSinceReset: this._framesSinceReset
9974
- }), n = Nc({
10001
+ }), n = Pc({
9975
10002
  ...e,
9976
10003
  writeCacheTex: this._cacheTexB,
9977
10004
  writePrevNDTex: this._prevNDTexB,
@@ -9985,7 +10012,7 @@ var Fc = class extends Sn {
9985
10012
  8,
9986
10013
  1
9987
10014
  ];
9988
- this._pass1NodeA = t().compute(r, i), this._pass1NodeB = n().compute(r, i), this._pass2Node = Pc({
10015
+ this._pass1NodeA = t().compute(r, i), this._pass1NodeB = n().compute(r, i), this._pass2Node = Fc({
9989
10016
  colorTexNode: this._colorTexNode,
9990
10017
  ndTexNode: this._ndTexNode,
9991
10018
  readCacheTexNode: this._readPass1CacheTexNode,
@@ -9998,7 +10025,7 @@ var Fc = class extends Sn {
9998
10025
  phiDepth: this.phiDepth
9999
10026
  })().compute(r, i);
10000
10027
  }
10001
- }, Ic = class extends Sn {
10028
+ }, Lc = class extends Sn {
10002
10029
  constructor(n, r = {}) {
10003
10030
  super("Display", {
10004
10031
  ...r,
@@ -10027,7 +10054,7 @@ var Fc = class extends Sn {
10027
10054
  dispose() {
10028
10055
  this._displayTexNode?.dispose(), this.displayMaterial?.dispose(), this.displayQuad = null;
10029
10056
  }
10030
- }, Lc = class {
10057
+ }, Rc = class {
10031
10058
  constructor() {
10032
10059
  this.textures = /* @__PURE__ */ new Map(), this.renderTargets = /* @__PURE__ */ new Map(), this.uniforms = /* @__PURE__ */ new Map(), this.state = {
10033
10060
  frame: 0,
@@ -10150,7 +10177,7 @@ var Fc = class extends Sn {
10150
10177
  dispose() {
10151
10178
  this.textures.clear(), this.renderTargets.clear(), this.uniforms.clear(), this._stateChangeCallbacks.clear(), this.state = {};
10152
10179
  }
10153
- }, Rc = class extends We {
10180
+ }, zc = class extends We {
10154
10181
  constructor() {
10155
10182
  super(), this._onceCallbacks = /* @__PURE__ */ new Map();
10156
10183
  }
@@ -10188,9 +10215,9 @@ var Fc = class extends Sn {
10188
10215
  eventNames() {
10189
10216
  return this._listeners ? Object.keys(this._listeners) : [];
10190
10217
  }
10191
- }, zc = class {
10218
+ }, Bc = class {
10192
10219
  constructor(e, t, n) {
10193
- this.renderer = e, this.width = t, this.height = n, this.stages = [], this.context = new Lc(), this.eventBus = new Rc(), this.context.setState("width", t), this.context.setState("height", n), this.stats = {
10220
+ this.renderer = e, this.width = t, this.height = n, this.stages = [], this.context = new Rc(), this.eventBus = new zc(), this.context.setState("width", t), this.context.setState("height", n), this.stats = {
10194
10221
  enabled: !1,
10195
10222
  logSkipped: !1,
10196
10223
  timings: /* @__PURE__ */ new Map(),
@@ -10322,7 +10349,7 @@ var Fc = class extends Sn {
10322
10349
  let e = this.getInfo();
10323
10350
  console.group("[Pipeline] Info"), console.log("Stages:", e.stages), console.log("Context Textures:", e.textures), console.log("Context Render Targets:", e.renderTargets), console.log("Context Uniforms:", e.uniforms), console.log("Event Types:", e.events), console.log("State:", e.contextState), console.groupEnd();
10324
10351
  }
10325
- }, Bc = class {
10352
+ }, Vc = class {
10326
10353
  constructor() {
10327
10354
  this.timeElapsed = 0, this.lastResetTime = performance.now(), this.renderCompleteDispatched = !1;
10328
10355
  }
@@ -10344,7 +10371,7 @@ var Fc = class extends Sn {
10344
10371
  resumeFromPause() {
10345
10372
  this.renderCompleteDispatched = !1, this.lastResetTime = performance.now() - this.timeElapsed * 1e3;
10346
10373
  }
10347
- }, Vc = class extends We {
10374
+ }, Hc = class extends We {
10348
10375
  constructor({ scene: e, camera: t, canvas: n, assetLoader: r, pathTracer: i, floorPlane: a }) {
10349
10376
  super(), this.scene = e, this.camera = t, this.canvas = n, this.assetLoader = r, this.pathTracer = i, this.floorPlane = a, this.raycaster = new vt(), this.focusMode = !1, this.focusPointIndicator = null, this.afPointPlacementMode = !1, this.handleAFPointClick = this.handleAFPointClick.bind(this), this.selectedObject = null, this.selectMode = !1, this.clickTimeout = null, this.mouseDownPosition = null, this.dragThreshold = 5, this.handleFocusClick = this.handleFocusClick.bind(this), this.handleSelectClick = this.handleSelectClick.bind(this), this.handleSelectDoubleClick = this.handleSelectDoubleClick.bind(this), this.handleMouseDown = this.handleMouseDown.bind(this), this.handleMouseUp = this.handleMouseUp.bind(this), this.handleContextMenu = this.handleContextMenu.bind(this), this.handleContextPointerDown = this.handleContextPointerDown.bind(this), this.handleContextPointerUp = this.handleContextPointerUp.bind(this), this.contextPointerDownPosition = null, this.canvas.addEventListener("pointerdown", this.handleContextPointerDown), this.canvas.addEventListener("pointerup", this.handleContextPointerUp), this.canvas.addEventListener("contextmenu", this.handleContextMenu), this._overlayManager = null, this._transformManager = null, this._appDispatch = null, this._orbitControls = null;
10350
10377
  }
@@ -10565,7 +10592,7 @@ var Fc = class extends Sn {
10565
10592
  dispose() {
10566
10593
  this.canvas.removeEventListener("click", this.handleAFPointClick), this.canvas.removeEventListener("click", this.handleFocusClick), this.canvas.removeEventListener("mousedown", this.handleMouseDown), this.canvas.removeEventListener("mouseup", this.handleMouseUp), this.canvas.removeEventListener("click", this.handleSelectClick), this.canvas.removeEventListener("dblclick", this.handleSelectDoubleClick), this.canvas.removeEventListener("contextmenu", this.handleContextMenu), this.canvas.removeEventListener("pointerdown", this.handleContextPointerDown), this.canvas.removeEventListener("pointerup", this.handleContextPointerUp), this.clickTimeout &&= (clearTimeout(this.clickTimeout), null), this.mouseDownPosition = null, this.contextPointerDownPosition = null, this.focusPointIndicator &&= (this.scene.remove(this.focusPointIndicator), null), this.canvas.style.cursor = "auto", this.scene = null, this.camera = null, this.canvas = null, this.assetLoader = null, this.pathTracer = null, this.floorPlane = null, this.raycaster = null;
10567
10594
  }
10568
- }, Hc = {
10595
+ }, Uc = {
10569
10596
  glb: {
10570
10597
  type: "model",
10571
10598
  name: "GLB (GLTF Binary)"
@@ -10630,7 +10657,7 @@ var Fc = class extends Sn {
10630
10657
  type: "archive",
10631
10658
  name: "ZIP Archive"
10632
10659
  }
10633
- }, Uc = class extends We {
10660
+ }, Wc = class extends We {
10634
10661
  constructor(e, t, n) {
10635
10662
  super(), this.scene = e, this.camera = t, this.controls = n, this.targetModel = null, this._externalModel = null, this.floorPlane = null, this.sceneScale = 1, this.loaderCache = {}, this.uploadedFileInfo = null, this.animations = [], this.renderer = null;
10636
10663
  }
@@ -10641,7 +10668,7 @@ var Fc = class extends Sn {
10641
10668
  this.renderer = e;
10642
10669
  }
10643
10670
  getFileFormat(e) {
10644
- return Hc[e.split(".").pop().toLowerCase()] || null;
10671
+ return Uc[e.split(".").pop().toLowerCase()] || null;
10645
10672
  }
10646
10673
  readFileAsArrayBuffer(e) {
10647
10674
  return new Promise((t, n) => {
@@ -10834,7 +10861,7 @@ var Fc = class extends Sn {
10834
10861
  }
10835
10862
  for (let t in e) {
10836
10863
  let n = t.split(".").pop().toLowerCase();
10837
- if (Hc[n] && Hc[n].type === "model") return console.log(`Loading model file from ZIP: ${t}`), await this.loadModelFromZipEntry(e[t], t, n, e);
10864
+ if (Uc[n] && Uc[n].type === "model") return console.log(`Loading model file from ZIP: ${t}`), await this.loadModelFromZipEntry(e[t], t, n, e);
10838
10865
  }
10839
10866
  throw Error("No supported model files found in the ZIP archive");
10840
10867
  }
@@ -11281,7 +11308,7 @@ var Fc = class extends Sn {
11281
11308
  }), e;
11282
11309
  }
11283
11310
  async onModelLoad(e) {
11284
- let t = new Ss("onModelLoad");
11311
+ let t = new Cs("onModelLoad");
11285
11312
  t.start("Camera extraction");
11286
11313
  let n = this.extractCamerasFromModel(e);
11287
11314
  t.end("Camera extraction"), t.start("Camera setup");
@@ -11360,10 +11387,10 @@ var Fc = class extends Sn {
11360
11387
  getSupportedFormats(e = null) {
11361
11388
  if (e) {
11362
11389
  let t = {};
11363
- for (let [n, r] of Object.entries(Hc)) r.type === e && (t[n] = r);
11390
+ for (let [n, r] of Object.entries(Uc)) r.type === e && (t[n] = r);
11364
11391
  return t;
11365
11392
  }
11366
- return Hc;
11393
+ return Uc;
11367
11394
  }
11368
11395
  dispose() {
11369
11396
  for (let e in this.loaderCache) {
@@ -11375,7 +11402,7 @@ var Fc = class extends Sn {
11375
11402
  removeAllEventListeners() {
11376
11403
  this._listeners = void 0;
11377
11404
  }
11378
- }, Wc = {
11405
+ }, Gc = {
11379
11406
  maxBounces: {
11380
11407
  uniform: "maxBounces",
11381
11408
  reset: !0
@@ -11486,11 +11513,11 @@ var Fc = class extends Sn {
11486
11513
  },
11487
11514
  renderMode: { handler: "handleRenderMode" },
11488
11515
  environmentRotation: { handler: "handleEnvironmentRotation" }
11489
- }, Gc = {
11516
+ }, Kc = {
11490
11517
  bounces: "maxBounces",
11491
11518
  adaptiveSampling: "useAdaptiveSampling",
11492
11519
  debugMode: "visMode"
11493
- }, Kc = class extends We {
11520
+ }, qc = class extends We {
11494
11521
  constructor(e = X) {
11495
11522
  super(), this._values = /* @__PURE__ */ new Map(), this._pathTracer = null, this._resetCallback = null, this._handlers = {}, this._delegates = {}, this._initDefaults(e);
11496
11523
  }
@@ -11532,7 +11559,7 @@ var Fc = class extends Sn {
11532
11559
  let i = this._values.get(e);
11533
11560
  if (i === t) return;
11534
11561
  this._values.set(e, t);
11535
- let a = Wc[e];
11562
+ let a = Gc[e];
11536
11563
  a && (this._applyRoute(a, t, i), (n === void 0 ? a.reset ?? !0 : n) && this._resetCallback?.(), r || this.dispatchEvent({
11537
11564
  type: Y.SETTING_CHANGED,
11538
11565
  key: e,
@@ -11546,7 +11573,7 @@ var Fc = class extends Sn {
11546
11573
  let e = this._values.get(r);
11547
11574
  if (e === i) continue;
11548
11575
  this._values.set(r, i);
11549
- let a = Wc[r];
11576
+ let a = Gc[r];
11550
11577
  a && (this._applyRoute(a, i, e), (a.reset ?? !0) && (n = !0), t || this.dispatchEvent({
11551
11578
  type: Y.SETTING_CHANGED,
11552
11579
  key: r,
@@ -11564,7 +11591,7 @@ var Fc = class extends Sn {
11564
11591
  }
11565
11592
  applyAll() {
11566
11593
  for (let [e, t] of this._values) {
11567
- let n = Wc[e];
11594
+ let n = Gc[e];
11568
11595
  n && this._applyRoute(n, t, void 0);
11569
11596
  }
11570
11597
  }
@@ -11572,10 +11599,10 @@ var Fc = class extends Sn {
11572
11599
  e.uniform ? (this._pathTracer?.setUniform(e.uniform, t), e.after && this._pathTracer?.[e.after]?.()) : e.handler ? this._handlers[e.handler]?.(t, n) : e.delegate && this._delegates[e.delegate]?.updateParam?.(e.param, t);
11573
11600
  }
11574
11601
  _initDefaults(e) {
11575
- for (let t of Object.keys(Wc)) t in e && this._values.set(t, e[t]);
11576
- for (let [t, n] of Object.entries(Gc)) t in e && this._values.set(n, e[t]);
11602
+ for (let t of Object.keys(Gc)) t in e && this._values.set(t, e[t]);
11603
+ for (let [t, n] of Object.entries(Kc)) t in e && this._values.set(n, e[t]);
11577
11604
  }
11578
- }, qc = class extends We {
11605
+ }, Jc = class extends We {
11579
11606
  constructor(e) {
11580
11607
  super();
11581
11608
  let t = e.clientWidth, n = e.clientHeight;
@@ -11691,7 +11718,7 @@ var Fc = class extends Sn {
11691
11718
  dispose() {
11692
11719
  this.controls?.dispose();
11693
11720
  }
11694
- }, Jc = class extends We {
11721
+ }, Yc = class extends We {
11695
11722
  constructor(e, t, n, r = {}) {
11696
11723
  super(), this.scene = e, this.sceneHelpers = t, this.pathTracer = n, this._onReset = r.onReset || null;
11697
11724
  }
@@ -11844,39 +11871,39 @@ var Fc = class extends Sn {
11844
11871
  ]);
11845
11872
  return n;
11846
11873
  }
11847
- }, Yc = (e) => Math.min(Math.max(e, 0), 1);
11848
- function Xc(e, t, n, r, i) {
11849
- i[0] = Yc(e), i[1] = Yc(t), i[2] = Yc(n);
11850
- }
11874
+ }, Xc = (e) => Math.min(Math.max(e, 0), 1);
11851
11875
  function Zc(e, t, n, r, i) {
11852
- i[0] = Yc(e * r), i[1] = Yc(t * r), i[2] = Yc(n * r);
11876
+ i[0] = Xc(e), i[1] = Xc(t), i[2] = Xc(n);
11853
11877
  }
11854
11878
  function Qc(e, t, n, r, i) {
11855
- e *= r, t *= r, n *= r, i[0] = Yc(e / (e + 1)), i[1] = Yc(t / (t + 1)), i[2] = Yc(n / (n + 1));
11879
+ i[0] = Xc(e * r), i[1] = Xc(t * r), i[2] = Xc(n * r);
11856
11880
  }
11857
11881
  function $c(e, t, n, r, i) {
11882
+ e *= r, t *= r, n *= r, i[0] = Xc(e / (e + 1)), i[1] = Xc(t / (t + 1)), i[2] = Xc(n / (n + 1));
11883
+ }
11884
+ function el(e, t, n, r, i) {
11858
11885
  e = Math.max(e * r - .004, 0), t = Math.max(t * r - .004, 0), n = Math.max(n * r - .004, 0);
11859
11886
  let a = (e) => (e * (6.2 * e + .5) / (e * (6.2 * e + 1.7) + .06)) ** 2.2;
11860
11887
  i[0] = a(e), i[1] = a(t), i[2] = a(n);
11861
11888
  }
11862
- function el(e, t, n, r, i) {
11889
+ function tl(e, t, n, r, i) {
11863
11890
  e = e * r / .6, t = t * r / .6, n = n * r / .6;
11864
11891
  let a = .59719 * e + .35458 * t + .04823 * n, o = .076 * e + .90834 * t + .01566 * n, s = .0284 * e + .13383 * t + .83777 * n, c = (e) => (e * (e + .0245786) - 90537e-9) / (e * (.983729 * e + .432951) + .238081);
11865
- a = c(a), o = c(o), s = c(s), i[0] = Yc(1.60475 * a - .53108 * o - .07367 * s), i[1] = Yc(-.10208 * a + 1.10813 * o - .00605 * s), i[2] = Yc(-.00327 * a - .07276 * o + 1.07602 * s);
11892
+ a = c(a), o = c(o), s = c(s), i[0] = Xc(1.60475 * a - .53108 * o - .07367 * s), i[1] = Xc(-.10208 * a + 1.10813 * o - .00605 * s), i[2] = Xc(-.00327 * a - .07276 * o + 1.07602 * s);
11866
11893
  }
11867
- function tl(e, t, n, r, i) {
11894
+ function nl(e, t, n, r, i) {
11868
11895
  e *= r, t *= r, n *= r;
11869
11896
  let a = .6274 * e + .3293 * t + .0433 * n, o = .0691 * e + .9195 * t + .0113 * n, s = .0164 * e + .088 * t + .8956 * n, c = .856627153315983 * a + .0951212405381588 * o + .0482516061458583 * s, l = .137318972929847 * a + .761241990602591 * o + .101439036467562 * s, u = .11189821299995 * a + .0767994186031903 * o + .811302368396859 * s, d = -12.47393, f = 4.026069 - d;
11870
- c = Yc((Math.log2(Math.max(c, 1e-10)) - d) / f), l = Yc((Math.log2(Math.max(l, 1e-10)) - d) / f), u = Yc((Math.log2(Math.max(u, 1e-10)) - d) / f);
11897
+ c = Xc((Math.log2(Math.max(c, 1e-10)) - d) / f), l = Xc((Math.log2(Math.max(l, 1e-10)) - d) / f), u = Xc((Math.log2(Math.max(u, 1e-10)) - d) / f);
11871
11898
  let p = (e) => {
11872
11899
  let t = e * e, n = t * t;
11873
11900
  return 15.5 * n * t - 40.14 * n * e + 31.96 * n - 6.868 * t * e + .4298 * t + .1191 * e - .00232;
11874
11901
  };
11875
11902
  c = p(c), l = p(l), u = p(u);
11876
11903
  let m = 1.1271005818144368 * c - .11060664309660323 * l - .016493938717834573 * u, h = -.1413297634984383 * c + 1.157823702216272 * l - .016493938717834257 * u, g = -.14132976349843826 * c - .11060664309660294 * l + 1.2519364065950405 * u;
11877
- m = Math.max(0, m) ** 2.2, h = Math.max(0, h) ** 2.2, g = Math.max(0, g) ** 2.2, i[0] = Yc(1.6605 * m - .5876 * h - .0728 * g), i[1] = Yc(-.1246 * m + 1.1329 * h - .0083 * g), i[2] = Yc(-.0182 * m - .1006 * h + 1.1187 * g);
11904
+ m = Math.max(0, m) ** 2.2, h = Math.max(0, h) ** 2.2, g = Math.max(0, g) ** 2.2, i[0] = Xc(1.6605 * m - .5876 * h - .0728 * g), i[1] = Xc(-.1246 * m + 1.1329 * h - .0083 * g), i[2] = Xc(-.0182 * m - .1006 * h + 1.1187 * g);
11878
11905
  }
11879
- function nl(e, t, n, r, i) {
11906
+ function rl(e, t, n, r, i) {
11880
11907
  let a = .76;
11881
11908
  e *= r, t *= r, n *= r;
11882
11909
  let o = Math.min(e, Math.min(t, n)), s = o < .08 ? o - 6.25 * o * o : .04;
@@ -11891,27 +11918,27 @@ function nl(e, t, n, r, i) {
11891
11918
  let f = 1 - 1 / (.15 * (c - u) + 1);
11892
11919
  i[0] = e + (u - e) * f, i[1] = t + (u - t) * f, i[2] = n + (u - n) * f;
11893
11920
  }
11894
- var rl = new Map([
11895
- [lt, Xc],
11896
- [Ye, Zc],
11897
- [bt, Qc],
11898
- [Ne, $c],
11899
- [Ee, el],
11900
- [Oe, tl],
11901
- [st, nl]
11902
- ]), il = 1 / 2.2, al = .2126, ol = .7152, sl = .0722;
11903
- function cl(e, t) {
11921
+ var il = new Map([
11922
+ [lt, Zc],
11923
+ [Ye, Qc],
11924
+ [bt, $c],
11925
+ [Ne, el],
11926
+ [Ee, tl],
11927
+ [Oe, nl],
11928
+ [st, rl]
11929
+ ]), al = 1 / 2.2, ol = .2126, sl = .7152, cl = .0722;
11930
+ function ll(e, t) {
11904
11931
  if (t === 1) return;
11905
- let n = e[0] * al + e[1] * ol + e[2] * sl;
11932
+ let n = e[0] * ol + e[1] * sl + e[2] * cl;
11906
11933
  e[0] = n + (e[0] - n) * t, e[1] = n + (e[1] - n) * t, e[2] = n + (e[2] - n) * t;
11907
11934
  }
11908
11935
  //#endregion
11909
11936
  //#region src/Passes/OIDNDenoiser.js
11910
- var ll = null;
11911
- async function ul() {
11912
- return ll ||= (await import("oidn-web")).initUNetFromURL, ll;
11937
+ var ul = null;
11938
+ async function dl() {
11939
+ return ul ||= (await import("oidn-web")).initUNetFromURL, ul;
11913
11940
  }
11914
- var dl = new Float32Array(3), fl = {
11941
+ var fl = new Float32Array(3), pl = {
11915
11942
  BASE_URL: "https://cdn.jsdelivr.net/npm/denoiser/tzas/",
11916
11943
  QUALITY_SUFFIXES: {
11917
11944
  fast: "_small",
@@ -11924,7 +11951,7 @@ var dl = new Float32Array(3), fl = {
11924
11951
  debugGbufferMaps: !0,
11925
11952
  tileSize: 256
11926
11953
  }
11927
- }, pl = class extends We {
11954
+ }, ml = class extends We {
11928
11955
  constructor(e, t, n, r, i = {}) {
11929
11956
  if (super(), !e || !t || !n || !r) throw Error("OIDNDenoiser requires output canvas, renderer, scene, and camera");
11930
11957
  this.renderer = t, this.scene = n, this.camera = r, this.input = t.domElement, this.output = e, this.debugContainer = i.debugContainer || null, this.extractGBufferData = i.extractGBufferData || null, this.getMRTRenderTarget = i.getMRTRenderTarget || null, this.backendParamsGetter = i.backendParams || null, this.getGPUTextures = i.getGPUTextures || null, this.getExposure = i.getExposure || (() => 1), this.getToneMapping = i.getToneMapping || (() => Ee), this.getSaturation = i.getSaturation || (() => 1), this.getTransparentBackground = i.getTransparentBackground || (() => !1), this.isGPUMode = !!this.backendParamsGetter, this.gpuDevice = null, this._gpuInputBuffers = {
@@ -11935,7 +11962,7 @@ var dl = new Float32Array(3), fl = {
11935
11962
  width: 0,
11936
11963
  height: 0
11937
11964
  }, this._gpuInputPadBuffer = null, this._gpuInputPaddedRowBytes = 0, this._alphaReadbackBuffer = null, this._alphaReadbackMapped = !1, this._cachedAlpha = null, this._cachedAlphaWidth = 0, this.config = {
11938
- ...fl.DEFAULT_OPTIONS,
11965
+ ...pl.DEFAULT_OPTIONS,
11939
11966
  ...i
11940
11967
  }, this.enabled = this.config.enableOIDN, this.quality = this.config.oidnQuality, this.debugGbufferMaps = this.config.debugGbufferMaps, this.tileSize = this.config.tileSize, this.state = {
11941
11968
  isDenoising: !1,
@@ -11991,7 +12018,7 @@ var dl = new Float32Array(3), fl = {
11991
12018
  let e = this.backendParamsGetter();
11992
12019
  this.gpuDevice = e?.device ?? null, t = e?.device ? e : void 0;
11993
12020
  }
11994
- this.unet = await (await ul())(e, t, {
12021
+ this.unet = await (await dl())(e, t, {
11995
12022
  aux: !0,
11996
12023
  hdr: !0,
11997
12024
  maxTileSize: this.tileSize
@@ -12006,14 +12033,14 @@ var dl = new Float32Array(3), fl = {
12006
12033
  }
12007
12034
  }
12008
12035
  _generateTzaUrl() {
12009
- let { BASE_URL: e, QUALITY_SUFFIXES: t } = fl;
12036
+ let { BASE_URL: e, QUALITY_SUFFIXES: t } = pl;
12010
12037
  return `${e}rt_hdr_alb_nrm${t[this.quality] || ""}.tza`;
12011
12038
  }
12012
12039
  async updateConfiguration(e) {
12013
12040
  Object.keys(e).some((t) => this.config[t] !== e[t]) && (Object.assign(this.config, e), this.quality = this.config.oidnQuality, this.debugGbufferMaps = this.config.debugGbufferMaps, this.tileSize = this.config.tileSize, await this._setupUNetDenoiser());
12014
12041
  }
12015
12042
  async updateQuality(e) {
12016
- if (!Object.prototype.hasOwnProperty.call(fl.QUALITY_SUFFIXES, e)) throw Error(`Invalid quality setting: ${e}. Must be one of: ${Object.keys(fl.QUALITY_SUFFIXES).join(", ")}`);
12043
+ if (!Object.prototype.hasOwnProperty.call(pl.QUALITY_SUFFIXES, e)) throw Error(`Invalid quality setting: ${e}. Must be one of: ${Object.keys(pl.QUALITY_SUFFIXES).join(", ")}`);
12017
12044
  await this.updateConfiguration({ oidnQuality: e });
12018
12045
  }
12019
12046
  async start() {
@@ -12200,10 +12227,10 @@ var dl = new Float32Array(3), fl = {
12200
12227
  d.copyBufferToBuffer(e.data, r, u, a, c);
12201
12228
  }
12202
12229
  r.queue.submit([d.finish()]), u.mapAsync(GPUMapMode.READ).then(() => {
12203
- let e = new Float32Array(u.getMappedRange()), t = new ImageData(o, s), r = this.getExposure(), i = this.getSaturation(), a = rl.get(this.getToneMapping()) || rl.get(Ee), c = this._cachedAlpha, l = this._cachedAlphaWidth;
12230
+ let e = new Float32Array(u.getMappedRange()), t = new ImageData(o, s), r = this.getExposure(), i = this.getSaturation(), a = il.get(this.getToneMapping()) || il.get(Ee), c = this._cachedAlpha, l = this._cachedAlphaWidth;
12204
12231
  for (let s = 0, u = e.length; s < u; s += 4) {
12205
12232
  let u = e[s] * r, d = e[s + 1] * r, f = e[s + 2] * r;
12206
- if (i !== 1 && (dl[0] = u, dl[1] = d, dl[2] = f, cl(dl, i), u = dl[0], d = dl[1], f = dl[2]), a(u, d, f, 1, dl), t.data[s] = dl[0] ** il * 255 | 0, t.data[s + 1] = dl[1] ** il * 255 | 0, t.data[s + 2] = dl[2] ** il * 255 | 0, c) {
12233
+ if (i !== 1 && (fl[0] = u, fl[1] = d, fl[2] = f, ll(fl, i), u = fl[0], d = fl[1], f = fl[2]), a(u, d, f, 1, fl), t.data[s] = fl[0] ** al * 255 | 0, t.data[s + 1] = fl[1] ** al * 255 | 0, t.data[s + 2] = fl[2] ** al * 255 | 0, c) {
12207
12234
  let e = (s >> 2) % o, r = (s >> 2) / o | 0;
12208
12235
  t.data[s + 3] = c[(n.y + r) * l + n.x + e];
12209
12236
  } else t.data[s + 3] = 255;
@@ -12230,10 +12257,10 @@ var dl = new Float32Array(3), fl = {
12230
12257
  try {
12231
12258
  let o = r.createCommandEncoder({ label: "oidn-readback" });
12232
12259
  o.copyBufferToBuffer(e, 0, a, 0, i), r.queue.submit([o.finish()]), await a.mapAsync(GPUMapMode.READ);
12233
- let s = new Float32Array(a.getMappedRange()), c = new ImageData(t, n), l = this.getExposure(), u = this.getSaturation(), d = rl.get(this.getToneMapping()) || rl.get(Ee), f = this._cachedAlpha;
12260
+ let s = new Float32Array(a.getMappedRange()), c = new ImageData(t, n), l = this.getExposure(), u = this.getSaturation(), d = il.get(this.getToneMapping()) || il.get(Ee), f = this._cachedAlpha;
12234
12261
  for (let e = 0, t = s.length; e < t; e += 4) {
12235
12262
  let t = s[e] * l, n = s[e + 1] * l, r = s[e + 2] * l;
12236
- u !== 1 && (dl[0] = t, dl[1] = n, dl[2] = r, cl(dl, u), t = dl[0], n = dl[1], r = dl[2]), d(t, n, r, 1, dl), c.data[e] = dl[0] ** il * 255 | 0, c.data[e + 1] = dl[1] ** il * 255 | 0, c.data[e + 2] = dl[2] ** il * 255 | 0, c.data[e + 3] = f ? f[e >> 2] : 255;
12263
+ u !== 1 && (fl[0] = t, fl[1] = n, fl[2] = r, ll(fl, u), t = fl[0], n = fl[1], r = fl[2]), d(t, n, r, 1, fl), c.data[e] = fl[0] ** al * 255 | 0, c.data[e + 1] = fl[1] ** al * 255 | 0, c.data[e + 2] = fl[2] ** al * 255 | 0, c.data[e + 3] = f ? f[e >> 2] : 255;
12237
12264
  }
12238
12265
  a.unmap(), this.ctx.putImageData(c, 0, 0);
12239
12266
  } finally {
@@ -12254,7 +12281,7 @@ var dl = new Float32Array(3), fl = {
12254
12281
  let t = this.debugHelpers && (this._lastAlbedoTexture !== e.textures[2] || this._lastNormalTexture !== e.textures[1]);
12255
12282
  if (!this.debugHelpers || t) {
12256
12283
  this.debugHelpers && (this.debugHelpers.albedo?.dispose(), this.debugHelpers.normal?.dispose(), console.log("OIDNDenoiser: Recreating debug helpers due to texture change")), this.debugHelpers = {
12257
- albedo: gc(this.renderer, e, {
12284
+ albedo: _c(this.renderer, e, {
12258
12285
  width: 250,
12259
12286
  height: 250,
12260
12287
  position: "bottom-right",
@@ -12263,7 +12290,7 @@ var dl = new Float32Array(3), fl = {
12263
12290
  autoUpdate: !1,
12264
12291
  textureIndex: 2
12265
12292
  }),
12266
- normal: gc(this.renderer, e, {
12293
+ normal: _c(this.renderer, e, {
12267
12294
  width: 250,
12268
12295
  height: 250,
12269
12296
  position: "bottom-left",
@@ -12285,19 +12312,19 @@ var dl = new Float32Array(3), fl = {
12285
12312
  dispose() {
12286
12313
  this.abort(), this._destroyPendingStagingBuffers(), this.unet?.dispose(), this._destroyGPUInputBuffers(), this.debugHelpers &&= (this.debugHelpers.albedo?.dispose(), this.debugHelpers.normal?.dispose(), null), this._lastAlbedoTexture = null, this._lastNormalTexture = null, this.output?.parentNode && this.output.remove(), this.unet = null, this.ctx = null, this.state.abortController = null, this.removeAllListeners?.(), console.log("OIDNDenoiser disposed");
12287
12314
  }
12288
- }, ml = "" + new URL("assets/AIUpscalerWorker-D58dcMrY.js", import.meta.url).href, hl = "https://huggingface.co/notaneimu/onnx-image-models/resolve/main/", gl = {
12315
+ }, hl = "" + new URL("assets/AIUpscalerWorker-D58dcMrY.js", import.meta.url).href, gl = "https://huggingface.co/notaneimu/onnx-image-models/resolve/main/", _l = {
12289
12316
  QUALITY_PRESETS: {
12290
12317
  fast: {
12291
- 2: hl + "2x-spanx2-ch48.onnx",
12292
- 4: hl + "4xNomos8k_span_otf_strong_fp32_opset17.onnx"
12318
+ 2: gl + "2x-spanx2-ch48.onnx",
12319
+ 4: gl + "4xNomos8k_span_otf_strong_fp32_opset17.onnx"
12293
12320
  },
12294
12321
  balanced: {
12295
- 2: hl + "2xNomosUni_compact_otf_medium.onnx",
12296
- 4: hl + "RealESRGAN_x4plus.onnx"
12322
+ 2: gl + "2xNomosUni_compact_otf_medium.onnx",
12323
+ 4: gl + "RealESRGAN_x4plus.onnx"
12297
12324
  },
12298
12325
  quality: {
12299
- 2: hl + "2x-realesrgan-x2plus.onnx",
12300
- 4: hl + "4xNomos2_hq_mosr_fp32.onnx"
12326
+ 2: gl + "2x-realesrgan-x2plus.onnx",
12327
+ 4: gl + "4xNomos2_hq_mosr_fp32.onnx"
12301
12328
  }
12302
12329
  },
12303
12330
  TILE_SIZE: 512,
@@ -12309,17 +12336,17 @@ var dl = new Float32Array(3), fl = {
12309
12336
  }],
12310
12337
  graphOptimizationLevel: "all"
12311
12338
  }
12312
- }, _l = class extends We {
12339
+ }, vl = class extends We {
12313
12340
  constructor(e, t, n = {}) {
12314
12341
  if (super(), !e || !t) throw Error("AIUpscaler requires output canvas and renderer");
12315
- this.renderer = t, this.input = t.domElement, this.output = e, this.getSourceCanvas = n.getSourceCanvas || null, this.getGPUTextures = n.getGPUTextures || null, this.getExposure = n.getExposure || (() => 1), this.getToneMapping = n.getToneMapping || (() => Ee), this.getSaturation = n.getSaturation || (() => 1), this.enabled = !1, this.hdr = !1, this.scaleFactor = n.scaleFactor || 2, this.quality = n.quality || "fast", this.tileSize = n.tileSize || gl.TILE_SIZE, this._tileSizeOverride = !!n.tileSize, this.state = {
12342
+ this.renderer = t, this.input = t.domElement, this.output = e, this.getSourceCanvas = n.getSourceCanvas || null, this.getGPUTextures = n.getGPUTextures || null, this.getExposure = n.getExposure || (() => 1), this.getToneMapping = n.getToneMapping || (() => Ee), this.getSaturation = n.getSaturation || (() => 1), this.enabled = !1, this.hdr = !1, this.scaleFactor = n.scaleFactor || 2, this.quality = n.quality || "fast", this.tileSize = n.tileSize || _l.TILE_SIZE, this._tileSizeOverride = !!n.tileSize, this.state = {
12316
12343
  isUpscaling: !1,
12317
12344
  isLoading: !1,
12318
12345
  abortController: null
12319
12346
  }, this._worker = null, this._currentModelUrl = null, this._tileId = 0, this._pendingWorkerHandlers = /* @__PURE__ */ new Set(), this._upscaledAlpha = null, this._upscaledAlphaWidth = 0, this._backupCanvas = null, this._baseWidth = e.width, this._baseHeight = e.height, this._hdrStagingBuffer = null, this._hdrStagingWidth = 0, this._hdrStagingHeight = 0;
12320
12347
  }
12321
12348
  async _ensureSession() {
12322
- let e = gl.QUALITY_PRESETS[this.quality];
12349
+ let e = _l.QUALITY_PRESETS[this.quality];
12323
12350
  if (!e) throw Error(`Unknown quality preset: ${this.quality}`);
12324
12351
  let t = e[this.scaleFactor];
12325
12352
  if (!t) throw Error(`No model for ${this.quality}/${this.scaleFactor}x`);
@@ -12330,10 +12357,10 @@ var dl = new Float32Array(3), fl = {
12330
12357
  });
12331
12358
  try {
12332
12359
  if (!this._worker) try {
12333
- this._worker = new Worker(ml, { type: "module" });
12360
+ this._worker = new Worker(hl, { type: "module" });
12334
12361
  } catch (e) {
12335
12362
  if (e.name !== "SecurityError") throw e;
12336
- this._worker = await or(ml);
12363
+ this._worker = await or(hl);
12337
12364
  }
12338
12365
  await new Promise((e, n) => {
12339
12366
  let r = (t) => {
@@ -12342,7 +12369,7 @@ var dl = new Float32Array(3), fl = {
12342
12369
  this._worker.addEventListener("message", r), this._worker.postMessage({
12343
12370
  type: "load",
12344
12371
  url: t,
12345
- sessionOptions: gl.SESSION_OPTIONS
12372
+ sessionOptions: _l.SESSION_OPTIONS
12346
12373
  });
12347
12374
  }), this._currentModelUrl = t, this.dispatchEvent({ type: "loaded" });
12348
12375
  } catch (e) {
@@ -12409,8 +12436,8 @@ var dl = new Float32Array(3), fl = {
12409
12436
  willReadFrequently: !0,
12410
12437
  alpha: !0
12411
12438
  });
12412
- this._cacheUpscaledAlpha(t, n * i, r * i), t.isHDR && (this._hdrToneMapFn = rl.get(this.getToneMapping()) || rl.get(Ee), this._hdrExposure = this.getExposure(), this._hdrSaturation = this.getSaturation(), this._tmOut = new Float32Array(3));
12413
- let o = gl.TILE_OVERLAP, s = this.tileSize, c = s - o * 2, l = Math.ceil(n / c), u = Math.ceil(r / c), d = l * u, f = 0;
12439
+ this._cacheUpscaledAlpha(t, n * i, r * i), t.isHDR && (this._hdrToneMapFn = il.get(this.getToneMapping()) || il.get(Ee), this._hdrExposure = this.getExposure(), this._hdrSaturation = this.getSaturation(), this._tmOut = new Float32Array(3));
12440
+ let o = _l.TILE_OVERLAP, s = this.tileSize, c = s - o * 2, l = Math.ceil(n / c), u = Math.ceil(r / c), d = l * u, f = 0;
12414
12441
  for (let o = 0; o < u; o++) for (let u = 0; u < l; u++) {
12415
12442
  if (e.aborted) throw new DOMException("Aborted", "AbortError");
12416
12443
  let l = Math.min(u * c, Math.max(0, n - s)), p = Math.min(o * c, Math.max(0, r - s)), m = Math.min(s, n - l), h = Math.min(s, r - p), g = this._extractTile(t, l, p, m, h), _ = await this._inferTile(g, m, h), v = l * i, y = p * i, b = m * i, x = h * i, S = this._tensorToImageData(_, b, x, v, y);
@@ -12483,7 +12510,7 @@ var dl = new Float32Array(3), fl = {
12483
12510
  let u = ((n + e) * o + (t + i)) * 4, d = e * r + i;
12484
12511
  if (s) {
12485
12512
  let e = this._hdrToneMapFn, t = this._hdrExposure, n = this._hdrSaturation, r = a[u] * t, i = a[u + 1] * t, o = a[u + 2] * t;
12486
- n !== 1 && (this._tmOut[0] = r, this._tmOut[1] = i, this._tmOut[2] = o, cl(this._tmOut, n), r = this._tmOut[0], i = this._tmOut[1], o = this._tmOut[2]), e(r, i, o, 1, this._tmOut), l[d] = this._tmOut[0] ** +il, l[c + d] = this._tmOut[1] ** +il, l[2 * c + d] = this._tmOut[2] ** +il;
12513
+ n !== 1 && (this._tmOut[0] = r, this._tmOut[1] = i, this._tmOut[2] = o, ll(this._tmOut, n), r = this._tmOut[0], i = this._tmOut[1], o = this._tmOut[2]), e(r, i, o, 1, this._tmOut), l[d] = this._tmOut[0] ** +al, l[c + d] = this._tmOut[1] ** +al, l[2 * c + d] = this._tmOut[2] ** +al;
12487
12514
  } else l[d] = a[u] / 255, l[c + d] = a[u + 1] / 255, l[2 * c + d] = a[u + 2] / 255;
12488
12515
  }
12489
12516
  return l;
@@ -12541,10 +12568,10 @@ var dl = new Float32Array(3), fl = {
12541
12568
  this._backupCanvas = document.createElement("canvas"), this._backupCanvas.width = e.width, this._backupCanvas.height = e.height;
12542
12569
  let t = this._backupCanvas.getContext("2d");
12543
12570
  if (e.isHDR) {
12544
- let { data: n, width: r, height: i } = e, a = t.createImageData(r, i), o = a.data, s = rl.get(this.getToneMapping()) || rl.get(Ee), c = this.getExposure(), l = this.getSaturation(), u = new Float32Array(3);
12571
+ let { data: n, width: r, height: i } = e, a = t.createImageData(r, i), o = a.data, s = il.get(this.getToneMapping()) || il.get(Ee), c = this.getExposure(), l = this.getSaturation(), u = new Float32Array(3);
12545
12572
  for (let e = 0, t = r * i; e < t; e++) {
12546
12573
  let t = e * 4, r = n[t] * c, i = n[t + 1] * c, a = n[t + 2] * c;
12547
- l !== 1 && (u[0] = r, u[1] = i, u[2] = a, cl(u, l), r = u[0], i = u[1], a = u[2]), s(r, i, a, 1, u), o[t] = u[0] ** +il * 255 + .5 | 0, o[t + 1] = u[1] ** +il * 255 + .5 | 0, o[t + 2] = u[2] ** +il * 255 + .5 | 0, o[t + 3] = 255;
12574
+ l !== 1 && (u[0] = r, u[1] = i, u[2] = a, ll(u, l), r = u[0], i = u[1], a = u[2]), s(r, i, a, 1, u), o[t] = u[0] ** +al * 255 + .5 | 0, o[t + 1] = u[1] ** +al * 255 + .5 | 0, o[t + 2] = u[2] ** +al * 255 + .5 | 0, o[t + 3] = 255;
12548
12575
  }
12549
12576
  t.putImageData(a, 0, 0);
12550
12577
  } else t.putImageData(e, 0, 0);
@@ -12556,7 +12583,7 @@ var dl = new Float32Array(3), fl = {
12556
12583
  this.hdr = !!e;
12557
12584
  }
12558
12585
  setQuality(e) {
12559
- if (!gl.QUALITY_PRESETS[e]) {
12586
+ if (!_l.QUALITY_PRESETS[e]) {
12560
12587
  console.warn(`AIUpscaler: Invalid quality "${e}", must be fast/balanced/quality`);
12561
12588
  return;
12562
12589
  }
@@ -12579,7 +12606,7 @@ var dl = new Float32Array(3), fl = {
12579
12606
  async dispose() {
12580
12607
  this.abort(), this._cleanupPendingWorkerHandlers(), this._worker &&= (this._worker.postMessage({ type: "dispose" }), this._worker.terminate(), null), this._currentModelUrl = null, this._backupCanvas = null, this._upscaledAlpha = null, this.state.abortController = null, this._hdrStagingBuffer?.destroy(), this._hdrStagingBuffer = null, this._hdrStagingWidth = 0, this._hdrStagingHeight = 0, console.log("AIUpscaler disposed");
12581
12608
  }
12582
- }, vl = class extends We {
12609
+ }, yl = class extends We {
12583
12610
  constructor({ renderer: e, mainCanvas: t, scene: n, camera: r, stages: i, pipeline: a, getExposure: o, getSaturation: s, getTransparentBg: c }) {
12584
12611
  super(), this.renderer = e, this.mainCanvas = t, this.denoiserCanvas = this._createDenoiserCanvas(t), this.scene = n, this.camera = r, this.pipeline = a, this._stages = i, this._getExposure = o, this._getSaturation = s, this._getTransparentBg = c, this.denoiser = null, this.upscaler = null, this._lastRenderWidth = 0, this._lastRenderHeight = 0, this._pendingStartUpscaler = null, this._denoiserStartHandler = null, this._denoiserEndHandler = null, this._upscalerResChangedHandler = null, this._upscalerStartHandler = null, this._upscalerProgressHandler = null, this._upscalerEndHandler = null;
12585
12612
  }
@@ -12600,7 +12627,7 @@ var dl = new Float32Array(3), fl = {
12600
12627
  setupDenoiser() {
12601
12628
  if (!this.denoiserCanvas) return;
12602
12629
  let e = this._stages.pathTracer;
12603
- this.denoiser = new pl(this.denoiserCanvas, this.renderer, this.scene, this.camera, {
12630
+ this.denoiser = new ml(this.denoiserCanvas, this.renderer, this.scene, this.camera, {
12604
12631
  ...X,
12605
12632
  backendParams: () => ({
12606
12633
  device: this.renderer.backend.device,
@@ -12625,7 +12652,7 @@ var dl = new Float32Array(3), fl = {
12625
12652
  setupUpscaler() {
12626
12653
  if (!this.denoiserCanvas) return;
12627
12654
  let e = this._stages.pathTracer;
12628
- this.upscaler = new _l(this.denoiserCanvas, this.renderer, {
12655
+ this.upscaler = new vl(this.denoiserCanvas, this.renderer, {
12629
12656
  scaleFactor: X.upscalerScale || 2,
12630
12657
  quality: X.upscalerQuality || "fast",
12631
12658
  getSourceCanvas: () => this.denoiser?.enabled ? null : this.renderer.domElement,
@@ -12786,7 +12813,7 @@ var dl = new Float32Array(3), fl = {
12786
12813
  let t = Bn[e];
12787
12814
  t && this._stages.asvgf?.updateParameters(t);
12788
12815
  }
12789
- }, yl = class {
12816
+ }, bl = class {
12790
12817
  constructor() {
12791
12818
  this.layer = "hud", this.visible = !1, this._tileBounds = null, this._imageWidth = 1, this._imageHeight = 1, this.enabled = !0, this._borderColor = "rgba(255, 0, 0, 0.6)", this._borderWidth = 2;
12792
12819
  }
@@ -12810,7 +12837,7 @@ var dl = new Float32Array(3), fl = {
12810
12837
  dispose() {
12811
12838
  this.visible = !1;
12812
12839
  }
12813
- }, bl = class {
12840
+ }, xl = class {
12814
12841
  constructor(n, r, i) {
12815
12842
  this.layer = "scene", this.visible = !0, this._outlineNode = Kt(r, i, {
12816
12843
  selectedObjects: [],
@@ -12844,7 +12871,7 @@ var dl = new Float32Array(3), fl = {
12844
12871
  dispose() {
12845
12872
  this.visible = !1, this._outlineNode?.dispose(), this._material?.dispose(), this._quad = null;
12846
12873
  }
12847
- }, xl = class {
12874
+ }, Sl = class {
12848
12875
  constructor(e, t) {
12849
12876
  this.renderer = e, this.camera = t, this._helpers = /* @__PURE__ */ new Map(), this._hudCanvas = document.createElement("canvas"), this._hudCanvas.style.cssText = "position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;", this._hudCtx = this._hudCanvas.getContext("2d"), this._helperScene = null;
12850
12877
  }
@@ -12856,13 +12883,13 @@ var dl = new Float32Array(3), fl = {
12856
12883
  }
12857
12884
  setupDefaultHelpers({ helperScene: e, meshScene: t, pipeline: n, denoisingManager: r, app: i, renderWidth: a, renderHeight: o }) {
12858
12885
  this.setHelperScene(e);
12859
- let s = new yl();
12886
+ let s = new bl();
12860
12887
  this.register("tiles", s), s.setRenderSize(a || 1, o || 1), i.addEventListener("resolution_changed", (e) => {
12861
12888
  s.setRenderSize(e.width, e.height);
12862
12889
  }), n.eventBus.on("tile:changed", (e) => {
12863
12890
  e.renderMode === 1 && e.tileBounds && (s.setActiveTile(e.tileBounds), s.show());
12864
12891
  }), n.eventBus.on("pipeline:reset", () => s.hide()), i.addEventListener(Y.RENDER_COMPLETE, () => s.hide()), this._wireDenoiserTileEvents(s, r);
12865
- let c = new bl(this.renderer, t, this.camera);
12892
+ let c = new xl(this.renderer, t, this.camera);
12866
12893
  this.register("outline", c);
12867
12894
  }
12868
12895
  _wireDenoiserTileEvents(e, t) {
@@ -12929,7 +12956,7 @@ var dl = new Float32Array(3), fl = {
12929
12956
  for (let e of this._helpers.values()) e.dispose?.();
12930
12957
  this._helpers.clear(), this._hudCanvas.parentElement && this._hudCanvas.parentElement.removeChild(this._hudCanvas);
12931
12958
  }
12932
- }, Sl = class extends We {
12959
+ }, Cl = class extends We {
12933
12960
  constructor() {
12934
12961
  super(), this.mixer = null, this.timer = new Ot(), this.actions = [], this.isPlaying = !1, this._scene = null, this._mixerRoot = null, this._meshes = null, this._meshTriRanges = null, this._posBuffer = null, this._tempVec = new Mt(), this._skinnedCache = null, this._totalTriangleCount = 0, this._clipsCache = null, this._savedTimeScale = 1, this.onFinished = null, this.wakeCallback = null;
12935
12962
  }
@@ -13029,7 +13056,7 @@ var dl = new Float32Array(3), fl = {
13029
13056
  dispose() {
13030
13057
  this.mixer &&= (this.mixer.stopAllAction(), this.mixer.uncacheRoot(this._mixerRoot), null), this.actions = [], this.isPlaying = !1, this.timer.reset(), this._scene = null, this._mixerRoot = null, this._meshes = null, this._meshTriRanges = null, this._posBuffer = null, this._skinnedCache = null, this._clipsCache = null;
13031
13058
  }
13032
- }, Cl = class {
13059
+ }, wl = class {
13033
13060
  constructor({ camera: e, canvas: t, orbitControls: n, app: r }) {
13034
13061
  this._app = r, this._orbitControls = n, this._camera = e, this._controls = new qt(e, t), this._gizmoScene = new Ct(), this._gizmoScene.add(this._controls.getHelper()), this._attached = null, this._isDragging = !1, this._meshes = null, this._meshTriRanges = null, this._posBuffer = null, this._normalBuffer = null, this._skinnedCache = null, this._normalCache = null, this._tempVec = new Mt(), this._normalMatrix = new et(), this._refitInFlight = !1, this._baselineComputed = !1, this._onDraggingChanged = this._onDraggingChanged.bind(this), this._onObjectChange = this._onObjectChange.bind(this), this._controls.addEventListener("dragging-changed", this._onDraggingChanged), this._controls.addEventListener("objectChange", this._onObjectChange);
13035
13062
  }
@@ -13138,11 +13165,17 @@ var dl = new Float32Array(3), fl = {
13138
13165
  }
13139
13166
  }
13140
13167
  dispose() {
13141
- this._controls.removeEventListener("dragging-changed", this._onDraggingChanged), this._controls.removeEventListener("objectChange", this._onObjectChange), this.detach(), this._gizmoScene.remove(this._controls.getHelper()), this._controls.dispose(), this._meshes = null, this._meshTriRanges = null, this._posBuffer = null, this._normalBuffer = null, this._skinnedCache = null, this._normalCache = null, this._baselineComputed = !1;
13168
+ this._controls.removeEventListener("dragging-changed", this._onDraggingChanged), this._controls.removeEventListener("objectChange", this._onObjectChange), this.detach(), this._gizmoScene.remove(this._controls.getHelper()), this._controls.dispose(), this._meshes = null, this._meshTriRanges = null, this._posBuffer = null, this._normalBuffer = null, this._skinnedCache = null, this._normalCache = null, this._baselineComputed = !1, this._app = null, this._orbitControls = null, this._camera = null, this._controls = null, this._gizmoScene = null;
13142
13169
  }
13143
- }, wl = class extends We {
13170
+ }, Tl = /* @__PURE__ */ new WeakMap(), El = class extends We {
13144
13171
  constructor(e, t = {}) {
13145
- super(), this.canvas = e, this._autoResize = t.autoResize !== !1, this._showStats = t.showStats !== !1, this._statsContainer = t.statsContainer || null, this.settings = new Kc(X), this.renderer = null, this.scene = null, this.meshScene = null, this._sceneHelpers = null, this.assetLoader = null, this._sdf = null, this._animRefitInFlight = !1, this.pipeline = null, this.stages = {}, this.cameraManager = null, this.lightManager = null, this.denoisingManager = null, this.overlayManager = null, this.interactionManager = null, this.transformManager = null, this.animationManager = new Sl(), this.environmentManager = null, this.isInitialized = !1, this.pauseRendering = !1, this.pathTracerEnabled = !0, this.animationManagerId = null, this.needsReset = !1, this._loadingInProgress = !1, this._needsDisplayRefresh = !1, this._paused = !1, this.completion = new Bc(), this._resizeDebounceTimer = null, this._trackedListeners = [], this._disposed = !1;
13172
+ super();
13173
+ try {
13174
+ Tl.get(e)?.dispose();
13175
+ } catch (e) {
13176
+ console.warn("PathTracerApp: prior canvas owner dispose failed", e);
13177
+ }
13178
+ Tl.set(e, this), this.canvas = e, this._autoResize = t.autoResize !== !1, this._showStats = t.showStats !== !1, this._statsContainer = t.statsContainer || null, this.settings = new qc(X), this.renderer = null, this.scene = null, this.meshScene = null, this._sceneHelpers = null, this.assetLoader = null, this._sdf = null, this._animRefitInFlight = !1, this.pipeline = null, this.stages = {}, this.cameraManager = null, this.lightManager = null, this.denoisingManager = null, this.overlayManager = null, this.interactionManager = null, this.transformManager = null, this.animationManager = new Cl(), this.environmentManager = null, this.isInitialized = !1, this.pauseRendering = !1, this.pathTracerEnabled = !0, this.animationManagerId = null, this.needsReset = !1, this._loadingInProgress = !1, this._needsDisplayRefresh = !1, this._paused = !1, this.completion = new Vc(), this._resizeDebounceTimer = null, this._trackedListeners = [], this._disposed = !1;
13146
13179
  }
13147
13180
  _addTrackedListener(e, t, n) {
13148
13181
  e && (e.addEventListener(t, n), this._trackedListeners.push({
@@ -13219,7 +13252,7 @@ var dl = new Float32Array(3), fl = {
13219
13252
  }
13220
13253
  dispose() {
13221
13254
  if (!this._disposed) {
13222
- if (this._disposed = !0, this.stopAnimation(), clearTimeout(this._resizeDebounceTimer), this._resizeDebounceTimer = null, this._removeTrackedListeners(), En(null), this.interactionManager?.deselect?.(), this.transformManager?.detach?.(), this.animationManager?.dispose(), this.transformManager?.dispose(), this.overlayManager?.dispose(), this.lightManager?.dispose(), this.denoisingManager?.dispose(), this.interactionManager?.dispose(), this.cameraManager?.dispose(), this.pipeline?.dispose(), this._sdf?.dispose(), this._sdf = null, this.assetLoader?.dispose(), this.assetLoader = null, this.meshScene) {
13255
+ if (this._disposed = !0, this.dispatchEvent({ type: Y.DISPOSE }), this.stopAnimation(), clearTimeout(this._resizeDebounceTimer), this._resizeDebounceTimer = null, this._removeTrackedListeners(), En(null), this.interactionManager?.deselect?.(), this.transformManager?.detach?.(), this.animationManager?.dispose(), this.transformManager?.dispose(), this.overlayManager?.dispose(), this.lightManager?.dispose(), this.denoisingManager?.dispose(), this.interactionManager?.dispose(), this.cameraManager?.dispose(), this.pipeline?.dispose(), this._sdf?.dispose(), this._sdf = null, this.assetLoader?.dispose(), this.assetLoader = null, this.meshScene) {
13223
13256
  this.meshScene.environment?.dispose(), this.meshScene.environment = null;
13224
13257
  for (let e of [...this.meshScene.children]) Pn(e);
13225
13258
  this.meshScene.clear(), this.meshScene = null;
@@ -13287,7 +13320,7 @@ var dl = new Float32Array(3), fl = {
13287
13320
  }
13288
13321
  async loadSceneData() {
13289
13322
  this.interactionManager?.deselect(), this.animationManager.dispose(), this._animRefitInFlight = !1;
13290
- let e = new Ss("loadSceneData"), t = this.meshScene.environment, n = null;
13323
+ let e = new Cs("loadSceneData"), t = this.meshScene.environment, n = null;
13291
13324
  if (t?.image?.data && (e.start("Environment CDF build (worker)"), this.stages.pathTracer.scene.environment = t, n = this.stages.pathTracer.environment.buildEnvironmentCDF().then(() => e.end("Environment CDF build (worker)"))), e.start("BVH build (SceneProcessor)"), await this._sdf.buildBVH(this.meshScene), e.end("BVH build (SceneProcessor)"), On({
13292
13325
  status: "Transferring data to GPU...",
13293
13326
  progress: 86
@@ -13423,32 +13456,32 @@ var dl = new Float32Array(3), fl = {
13423
13456
  }), await this.renderer.init(), r.setLTC(Nt.init()), this.renderer.toneMapping = Ee, this.renderer.toneMappingExposure = 1, this.renderer.setPixelRatio(1);
13424
13457
  }
13425
13458
  _initCameraManager() {
13426
- this.cameraManager = new qc(this.canvas);
13459
+ this.cameraManager = new Jc(this.canvas);
13427
13460
  }
13428
13461
  _initScenes() {
13429
13462
  this.scene = new Ct(), this.meshScene = new Ct(), this._sceneHelpers = new Zt();
13430
13463
  }
13431
13464
  _initAssetPipeline() {
13432
- this._sdf = new cc(), this.assetLoader = new Uc(this.meshScene, this.cameraManager.camera, this.cameraManager.controls), this.assetLoader.setRenderer(this.renderer), this.assetLoader.createFloorPlane(), this._addTrackedListener(this.cameraManager.controls, "change", () => {
13465
+ this._sdf = new lc(), this.assetLoader = new Wc(this.meshScene, this.cameraManager.camera, this.cameraManager.controls), this.assetLoader.setRenderer(this.renderer), this.assetLoader.createFloorPlane(), this._addTrackedListener(this.cameraManager.controls, "change", () => {
13433
13466
  this.needsReset = !0, this.wake();
13434
13467
  });
13435
13468
  }
13436
13469
  _initPipeline() {
13437
13470
  this._createStages();
13438
13471
  let { clientWidth: e, clientHeight: t } = this.canvas;
13439
- this.pipeline = new zc(this.renderer, e || 1, t || 1), this.pipeline.addStage(this.stages.pathTracer), this.pipeline.addStage(this.stages.normalDepth), this.pipeline.addStage(this.stages.motionVector), this.pipeline.addStage(this.stages.ssrc), this.pipeline.addStage(this.stages.asvgf), this.pipeline.addStage(this.stages.variance), this.pipeline.addStage(this.stages.bilateralFilter), this.pipeline.addStage(this.stages.adaptiveSampling), this.pipeline.addStage(this.stages.edgeFilter), this.pipeline.addStage(this.stages.autoExposure), this.pipeline.addStage(this.stages.display);
13472
+ this.pipeline = new Bc(this.renderer, e || 1, t || 1), this.pipeline.addStage(this.stages.pathTracer), this.pipeline.addStage(this.stages.normalDepth), this.pipeline.addStage(this.stages.motionVector), this.pipeline.addStage(this.stages.ssrc), this.pipeline.addStage(this.stages.asvgf), this.pipeline.addStage(this.stages.variance), this.pipeline.addStage(this.stages.bilateralFilter), this.pipeline.addStage(this.stages.adaptiveSampling), this.pipeline.addStage(this.stages.edgeFilter), this.pipeline.addStage(this.stages.autoExposure), this.pipeline.addStage(this.stages.display);
13440
13473
  let n = this.canvas.clientWidth || 1, r = this.canvas.clientHeight || 1;
13441
13474
  this.pipeline.setSize(n, r);
13442
13475
  }
13443
13476
  _initManagers() {
13444
- this.interactionManager = new Vc({
13477
+ this.interactionManager = new Hc({
13445
13478
  scene: this.meshScene,
13446
13479
  camera: this.cameraManager.camera,
13447
13480
  canvas: this.canvas,
13448
13481
  assetLoader: this.assetLoader,
13449
13482
  pathTracer: null,
13450
13483
  floorPlane: this.assetLoader.floorPlane
13451
- }), this.interactionManager.wireAppEvents(this), this.cameraManager.setInteractionManager(this.interactionManager), this.lightManager = new Jc(this.scene, this._sceneHelpers, this.stages.pathTracer, { onReset: () => this.reset() }), this._setupDenoisingManager(), this._setupOverlayManager(), this.transformManager = new Cl({
13484
+ }), this.interactionManager.wireAppEvents(this), this.cameraManager.setInteractionManager(this.interactionManager), this.lightManager = new Yc(this.scene, this._sceneHelpers, this.stages.pathTracer, { onReset: () => this.reset() }), this._setupDenoisingManager(), this._setupOverlayManager(), this.transformManager = new wl({
13452
13485
  camera: this.cameraManager.camera,
13453
13486
  canvas: this.canvas,
13454
13487
  orbitControls: this.cameraManager.controls,
@@ -13518,16 +13551,16 @@ var dl = new Float32Array(3), fl = {
13518
13551
  }
13519
13552
  _createStages() {
13520
13553
  let e = this.settings.get("adaptiveSamplingMax"), t = this.settings.get("useAdaptiveSampling");
13521
- this.stages.pathTracer = new pc(this.renderer, this.scene, this.cameraManager.camera), this.stages.normalDepth = new mc(this.renderer, { pathTracer: this.stages.pathTracer }), this.stages.motionVector = new hc(this.renderer, this.cameraManager.camera, { pathTracer: this.stages.pathTracer }), this.stages.ssrc = new Fc(this.renderer, { enabled: !1 }), this.stages.asvgf = new _c(this.renderer, { enabled: !1 }), this.stages.variance = new yc(this.renderer, { enabled: !1 }), this.stages.bilateralFilter = new xc(this.renderer, { enabled: !1 }), this.stages.adaptiveSampling = new wc(this.renderer, {
13554
+ this.stages.pathTracer = new mc(this.renderer, this.scene, this.cameraManager.camera), this.stages.normalDepth = new hc(this.renderer, { pathTracer: this.stages.pathTracer }), this.stages.motionVector = new gc(this.renderer, this.cameraManager.camera, { pathTracer: this.stages.pathTracer }), this.stages.ssrc = new Ic(this.renderer, { enabled: !1 }), this.stages.asvgf = new vc(this.renderer, { enabled: !1 }), this.stages.variance = new bc(this.renderer, { enabled: !1 }), this.stages.bilateralFilter = new Sc(this.renderer, { enabled: !1 }), this.stages.adaptiveSampling = new Tc(this.renderer, {
13522
13555
  adaptiveSamplingMax: e,
13523
13556
  enabled: t
13524
- }), this.stages.edgeFilter = new Tc(this.renderer, { enabled: !1 }), this.stages.autoExposure = new Mc(this.renderer, { enabled: X.autoExposure ?? !1 }), this.stages.display = new Ic(this.renderer, {
13557
+ }), this.stages.edgeFilter = new Ec(this.renderer, { enabled: !1 }), this.stages.autoExposure = new Nc(this.renderer, { enabled: X.autoExposure ?? !1 }), this.stages.display = new Lc(this.renderer, {
13525
13558
  exposure: X.autoExposure ? 1 : this.settings.get("exposure") ?? 1,
13526
13559
  saturation: this.settings.get("saturation") ?? X.saturation
13527
13560
  });
13528
13561
  }
13529
13562
  _setupDenoisingManager() {
13530
- this.denoisingManager = new vl({
13563
+ this.denoisingManager = new yl({
13531
13564
  renderer: this.renderer,
13532
13565
  mainCanvas: this.canvas,
13533
13566
  scene: this.scene,
@@ -13579,7 +13612,7 @@ var dl = new Float32Array(3), fl = {
13579
13612
  this.scene.updateMatrixWorld(), this.overlayManager?.render(), this.transformManager?.render(this.renderer);
13580
13613
  }
13581
13614
  _setupOverlayManager() {
13582
- this.overlayManager = new xl(this.renderer, this.cameraManager.camera), this.overlayManager.setupDefaultHelpers({
13615
+ this.overlayManager = new Sl(this.renderer, this.cameraManager.camera), this.overlayManager.setupDefaultHelpers({
13583
13616
  helperScene: this._sceneHelpers,
13584
13617
  meshScene: this.meshScene,
13585
13618
  pipeline: this.pipeline,
@@ -13595,7 +13628,7 @@ var dl = new Float32Array(3), fl = {
13595
13628
  _forwardEvents(e, t) {
13596
13629
  if (e) for (let n of t) this._addTrackedListener(e, n, (e) => this.dispatchEvent(e));
13597
13630
  }
13598
- }, Tl = class {
13631
+ }, Dl = class {
13599
13632
  constructor(e) {
13600
13633
  this._app = e, this._cancelled = !1, this._rendering = !1;
13601
13634
  }
@@ -13695,6 +13728,6 @@ var dl = new Float32Array(3), fl = {
13695
13728
  }
13696
13729
  };
13697
13730
  //#endregion
13698
- export { Gn as AF_DEFAULTS, Bn as ASVGF_QUALITY_PRESETS, Wn as AUTO_FOCUS_MODES, Sl as AnimationManager, Kn as BVH_LEAF_MARKERS, Un as CAMERA_PRESETS, Vn as CAMERA_RANGES, qc as CameraManager, Jn as DEFAULT_TEXTURE_MATRIX, vl as DenoisingManager, X as ENGINE_DEFAULTS, Y as EngineEvents, Yn as FINAL_RENDER_CONFIG, Vc as InteractionManager, Jc as LightManager, Zn as MEMORY_CONSTANTS, xl as OverlayManager, Xn as PREVIEW_RENDER_CONFIG, wl as PathTracerApp, Lc as PipelineContext, zc as RenderPipeline, Kc as RenderSettings, Sn as RenderStage, Hn as SKY_PRESETS, xn as StageExecutionMode, qn as TEXTURE_CONSTANTS, Z as TRIANGLE_DATA_LAYOUT, Cl as TransformManager, Tl as VideoRenderManager };
13731
+ export { Gn as AF_DEFAULTS, Bn as ASVGF_QUALITY_PRESETS, Wn as AUTO_FOCUS_MODES, Cl as AnimationManager, Kn as BVH_LEAF_MARKERS, Un as CAMERA_PRESETS, Vn as CAMERA_RANGES, Jc as CameraManager, Jn as DEFAULT_TEXTURE_MATRIX, yl as DenoisingManager, X as ENGINE_DEFAULTS, Y as EngineEvents, Yn as FINAL_RENDER_CONFIG, Hc as InteractionManager, Yc as LightManager, Zn as MEMORY_CONSTANTS, Sl as OverlayManager, Xn as PREVIEW_RENDER_CONFIG, El as PathTracerApp, Rc as PipelineContext, Bc as RenderPipeline, qc as RenderSettings, Sn as RenderStage, Hn as SKY_PRESETS, xn as StageExecutionMode, qn as TEXTURE_CONSTANTS, Z as TRIANGLE_DATA_LAYOUT, wl as TransformManager, Dl as VideoRenderManager };
13699
13732
 
13700
13733
  //# sourceMappingURL=rayzee.es.js.map