rayzee 5.0.1 → 5.1.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
@@ -84,9 +84,7 @@ var Ht = K(0, "int"), Ut = Ht, Wt = new b(new Float32Array([
84
84
  Wt.type = D, Wt.needsUpdate = !0;
85
85
  var Gt = vt(Wt);
86
86
  Gt.setUpdateMatrix(!1);
87
- var Kt = q(bt(Gt));
88
- z(1.61803398875);
89
- var qt = z(.61803398875), Jt = z(.38196601125), Yt = /* @__PURE__ */ X("\n fn getSobolDirectionVector( index: i32 ) -> u32 {\n\n switch ( index ) {\n case 0: { return 2147483648u; }\n case 1: { return 1073741824u; }\n case 2: { return 536870912u; }\n case 3: { return 268435456u; }\n case 4: { return 134217728u; }\n case 5: { return 67108864u; }\n case 6: { return 33554432u; }\n case 7: { return 16777216u; }\n case 8: { return 8388608u; }\n case 9: { return 4194304u; }\n case 10: { return 2097152u; }\n case 11: { return 1048576u; }\n case 12: { return 524288u; }\n case 13: { return 262144u; }\n case 14: { return 131072u; }\n case 15: { return 65536u; }\n case 16: { return 32768u; }\n case 17: { return 16384u; }\n case 18: { return 8192u; }\n case 19: { return 4096u; }\n case 20: { return 2048u; }\n case 21: { return 1024u; }\n case 22: { return 512u; }\n case 23: { return 256u; }\n case 24: { return 128u; }\n case 25: { return 64u; }\n case 26: { return 32u; }\n case 27: { return 16u; }\n case 28: { return 8u; }\n case 29: { return 4u; }\n case 30: { return 2u; }\n default: { return 1u; }\n }\n\n }\n"), Xt = /* @__PURE__ */ X("\n fn pcgHash( state: u32 ) -> u32 {\n\n var s = state;\n s = s * 747796405u + 2891336453u;\n s = ( ( s >> ( ( s >> 28u ) + 4u ) ) ^ s ) * 277803737u;\n s = ( s >> 22u ) ^ s;\n return s;\n\n }\n"), Zt = /* @__PURE__ */ X("\n fn wang_hash( seed: u32 ) -> u32 {\n\n var s = seed;\n s = ( s ^ 61u ) ^ ( s >> 16u );\n s = s * 9u;\n s = s ^ ( s >> 4u );\n s = s * 0x27d4eb2du;\n s = s ^ ( s >> 15u );\n return s;\n\n }\n"), Qt = (e) => (e.assign(e.mul(1664525).add(1013904223)), z(e.shiftRight(8)).mul(1 / 16777216)), $t = (e) => (e.assign(Xt({ state: e })), z(e.shiftRight(8)).mul(1 / 16777216)), en = (e) => {
87
+ var Kt = q(bt(Gt)), qt = z(.61803398875), Jt = z(.38196601125), Yt = /* @__PURE__ */ X("\n fn getSobolDirectionVector( index: i32 ) -> u32 {\n\n switch ( index ) {\n case 0: { return 2147483648u; }\n case 1: { return 1073741824u; }\n case 2: { return 536870912u; }\n case 3: { return 268435456u; }\n case 4: { return 134217728u; }\n case 5: { return 67108864u; }\n case 6: { return 33554432u; }\n case 7: { return 16777216u; }\n case 8: { return 8388608u; }\n case 9: { return 4194304u; }\n case 10: { return 2097152u; }\n case 11: { return 1048576u; }\n case 12: { return 524288u; }\n case 13: { return 262144u; }\n case 14: { return 131072u; }\n case 15: { return 65536u; }\n case 16: { return 32768u; }\n case 17: { return 16384u; }\n case 18: { return 8192u; }\n case 19: { return 4096u; }\n case 20: { return 2048u; }\n case 21: { return 1024u; }\n case 22: { return 512u; }\n case 23: { return 256u; }\n case 24: { return 128u; }\n case 25: { return 64u; }\n case 26: { return 32u; }\n case 27: { return 16u; }\n case 28: { return 8u; }\n case 29: { return 4u; }\n case 30: { return 2u; }\n default: { return 1u; }\n }\n\n }\n"), Xt = /* @__PURE__ */ X("\n fn pcgHash( state: u32 ) -> u32 {\n\n var s = state;\n s = s * 747796405u + 2891336453u;\n s = ( ( s >> ( ( s >> 28u ) + 4u ) ) ^ s ) * 277803737u;\n s = ( s >> 22u ) ^ s;\n return s;\n\n }\n"), Zt = /* @__PURE__ */ X("\n fn wang_hash( seed: u32 ) -> u32 {\n\n var s = seed;\n s = ( s ^ 61u ) ^ ( s >> 16u );\n s = s * 9u;\n s = s ^ ( s >> 4u );\n s = s * 0x27d4eb2du;\n s = s ^ ( s >> 15u );\n return s;\n\n }\n"), Qt = (e) => (e.assign(e.mul(1664525).add(1013904223)), z(e.shiftRight(8)).mul(1 / 16777216)), $t = (e) => (e.assign(Xt({ state: e })), z(e.shiftRight(8)).mul(1 / 16777216)), en = (e) => {
90
88
  let t = Qt(e).mul(We).toVar();
91
89
  return q(Je(t), pt(t)).mul(ht(Qt(e)));
92
90
  }, tn = /* @__PURE__ */ X("\n fn cranleyPatterson2D( p: vec2f, offset: vec2f ) -> vec2f {\n\n return fract( p + offset );\n\n }\n"), nn = /* @__PURE__ */ M(([e, t, n, r]) => {
@@ -1130,9 +1128,6 @@ var jn = class {
1130
1128
  case "dispersion":
1131
1129
  r[i + 16] = n;
1132
1130
  break;
1133
- case "visible":
1134
- r[i + 17] = n;
1135
- break;
1136
1131
  case "sheen":
1137
1132
  r[i + 18] = n;
1138
1133
  break;
@@ -1211,7 +1206,7 @@ var jn = class {
1211
1206
  return;
1212
1207
  }
1213
1208
  let n = this.materialStorageAttr.array, r = e * (zn.PIXELS_PER_MATERIAL * zn.RGBA_COMPONENTS);
1214
- t.color && (n[r + 0] = t.color.r ?? t.color[0] ?? 1, n[r + 1] = t.color.g ?? t.color[1] ?? 1, n[r + 2] = t.color.b ?? t.color[2] ?? 1), n[r + 3] = t.metalness ?? 0, t.emissive && (n[r + 4] = t.emissive.r ?? t.emissive[0] ?? 0, n[r + 5] = t.emissive.g ?? t.emissive[1] ?? 0, n[r + 6] = t.emissive.b ?? t.emissive[2] ?? 0), n[r + 7] = t.roughness ?? 1, n[r + 8] = t.ior ?? 1.5, n[r + 9] = t.transmission ?? 0, n[r + 10] = t.thickness ?? .1, n[r + 11] = t.emissiveIntensity ?? 1, t.attenuationColor && (n[r + 12] = t.attenuationColor.r ?? t.attenuationColor[0] ?? 1, n[r + 13] = t.attenuationColor.g ?? t.attenuationColor[1] ?? 1, n[r + 14] = t.attenuationColor.b ?? t.attenuationColor[2] ?? 1), n[r + 15] = t.attenuationDistance ?? Infinity, n[r + 16] = t.dispersion ?? 0, n[r + 17] = t.visible ?? 1, n[r + 18] = t.sheen ?? 0, n[r + 19] = t.sheenRoughness ?? 1, t.sheenColor && (n[r + 20] = t.sheenColor.r ?? t.sheenColor[0] ?? 0, n[r + 21] = t.sheenColor.g ?? t.sheenColor[1] ?? 0, n[r + 22] = t.sheenColor.b ?? t.sheenColor[2] ?? 0), n[r + 24] = t.specularIntensity ?? 1, t.specularColor && (n[r + 25] = t.specularColor.r ?? t.specularColor[0] ?? 1, n[r + 26] = t.specularColor.g ?? t.specularColor[1] ?? 1, n[r + 27] = t.specularColor.b ?? t.specularColor[2] ?? 1), n[r + 28] = t.iridescence ?? 0, n[r + 29] = t.iridescenceIOR ?? 1.3, t.iridescenceThicknessRange && (n[r + 30] = t.iridescenceThicknessRange[0] ?? 100, n[r + 31] = t.iridescenceThicknessRange[1] ?? 400), n[r + 32] = t.map ?? -1, n[r + 33] = t.normalMap ?? -1, n[r + 34] = t.roughnessMap ?? -1, n[r + 35] = t.metalnessMap ?? -1, n[r + 36] = t.emissiveMap ?? -1, n[r + 37] = t.bumpMap ?? -1, n[r + 38] = t.clearcoat ?? 0, n[r + 39] = t.clearcoatRoughness ?? 0, n[r + 40] = t.opacity ?? 1, n[r + 41] = t.side ?? 0, n[r + 42] = t.transparent ?? 0, n[r + 43] = t.alphaTest ?? 0, n[r + 44] = t.alphaMode ?? 0, n[r + 45] = t.depthWrite ?? 1, n[r + 46] = t.normalScale?.x ?? (typeof t.normalScale == "number" ? t.normalScale : 1), n[r + 47] = t.normalScale?.y ?? (typeof t.normalScale == "number" ? t.normalScale : 1), n[r + 48] = t.bumpScale ?? 1, n[r + 49] = t.displacementScale ?? 1, n[r + 50] = t.displacementMap ?? -1;
1209
+ t.color && (n[r + 0] = t.color.r ?? t.color[0] ?? 1, n[r + 1] = t.color.g ?? t.color[1] ?? 1, n[r + 2] = t.color.b ?? t.color[2] ?? 1), n[r + 3] = t.metalness ?? 0, t.emissive && (n[r + 4] = t.emissive.r ?? t.emissive[0] ?? 0, n[r + 5] = t.emissive.g ?? t.emissive[1] ?? 0, n[r + 6] = t.emissive.b ?? t.emissive[2] ?? 0), n[r + 7] = t.roughness ?? 1, n[r + 8] = t.ior ?? 1.5, n[r + 9] = t.transmission ?? 0, n[r + 10] = t.thickness ?? .1, n[r + 11] = t.emissiveIntensity ?? 1, t.attenuationColor && (n[r + 12] = t.attenuationColor.r ?? t.attenuationColor[0] ?? 1, n[r + 13] = t.attenuationColor.g ?? t.attenuationColor[1] ?? 1, n[r + 14] = t.attenuationColor.b ?? t.attenuationColor[2] ?? 1), n[r + 15] = t.attenuationDistance ?? Infinity, n[r + 16] = t.dispersion ?? 0, n[r + 17] = 1, n[r + 18] = t.sheen ?? 0, n[r + 19] = t.sheenRoughness ?? 1, t.sheenColor && (n[r + 20] = t.sheenColor.r ?? t.sheenColor[0] ?? 0, n[r + 21] = t.sheenColor.g ?? t.sheenColor[1] ?? 0, n[r + 22] = t.sheenColor.b ?? t.sheenColor[2] ?? 0), n[r + 24] = t.specularIntensity ?? 1, t.specularColor && (n[r + 25] = t.specularColor.r ?? t.specularColor[0] ?? 1, n[r + 26] = t.specularColor.g ?? t.specularColor[1] ?? 1, n[r + 27] = t.specularColor.b ?? t.specularColor[2] ?? 1), n[r + 28] = t.iridescence ?? 0, n[r + 29] = t.iridescenceIOR ?? 1.3, t.iridescenceThicknessRange && (n[r + 30] = t.iridescenceThicknessRange[0] ?? 100, n[r + 31] = t.iridescenceThicknessRange[1] ?? 400), n[r + 32] = t.map ?? -1, n[r + 33] = t.normalMap ?? -1, n[r + 34] = t.roughnessMap ?? -1, n[r + 35] = t.metalnessMap ?? -1, n[r + 36] = t.emissiveMap ?? -1, n[r + 37] = t.bumpMap ?? -1, n[r + 38] = t.clearcoat ?? 0, n[r + 39] = t.clearcoatRoughness ?? 0, n[r + 40] = t.opacity ?? 1, n[r + 41] = t.side ?? 0, n[r + 42] = t.transparent ?? 0, n[r + 43] = t.alphaTest ?? 0, n[r + 44] = t.alphaMode ?? 0, n[r + 45] = t.depthWrite ?? 1, n[r + 46] = t.normalScale?.x ?? (typeof t.normalScale == "number" ? t.normalScale : 1), n[r + 47] = t.normalScale?.y ?? (typeof t.normalScale == "number" ? t.normalScale : 1), n[r + 48] = t.bumpScale ?? 1, n[r + 49] = t.displacementScale ?? 1, n[r + 50] = t.displacementMap ?? -1;
1215
1210
  let i = [
1216
1211
  1,
1217
1212
  0,
@@ -1794,7 +1789,6 @@ var wr = Cr({
1794
1789
  alphaMode: "int",
1795
1790
  side: "int",
1796
1791
  depthWrite: "int",
1797
- visible: "bool",
1798
1792
  albedoMapIndex: "int",
1799
1793
  emissiveMapIndex: "int",
1800
1794
  normalMapIndex: "int",
@@ -2063,7 +2057,6 @@ var Zr = X("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2063
2057
  attenuationColor: a.rgb,
2064
2058
  attenuationDistance: a.a,
2065
2059
  dispersion: o.r,
2066
- visible: o.g,
2067
2060
  sheen: o.b,
2068
2061
  sheenRoughness: o.a,
2069
2062
  sheenColor: s.rgb,
@@ -2119,28 +2112,14 @@ var Zr = X("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2119
2112
  data2: O
2120
2113
  })
2121
2114
  });
2122
- }), oi = /* @__PURE__ */ X("\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"), si = Cr({
2123
- visible: "bool",
2124
- side: "int",
2125
- transparent: "bool",
2126
- opacity: "float"
2127
- }), ci = 32, li = 512, ui = 4, di = 8, fi = 1e8, pi = () => Ke("int", ci).toVar(), mi = X("\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"), hi = X("\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"), gi = M(([e, t]) => {
2128
- let n = $(t, e, B(4), B(27)), r = $(t, e, B(10), B(27));
2129
- return si({
2130
- visible: n.g.greaterThan(.5),
2131
- opacity: r.r,
2132
- side: B(r.g),
2133
- transparent: r.b.greaterThan(.5)
2134
- });
2135
- }), _i = M(([e, t]) => $(t, e, B(4), B(27)).g.greaterThan(.5)), vi = X("\n fn isMaterialVisibleOptimized( visible: bool, side: i32, rayDirection: vec3f, normal: vec3f ) -> bool {\n if ( !visible ) { return false; }\n let rayDotNormal = dot( rayDirection, normal );\n let doubleSide = side == 2;\n let frontSide = side == 0 && rayDotNormal < -0.0001f;\n let backSide = side == 1 && rayDotNormal > 0.0001f;\n return doubleSide || frontSide || backSide;\n }\n"), yi = M(([e, t, n, r]) => {
2136
- let i = si.wrap(gi(e, r));
2137
- return vi({
2138
- visible: i.visible,
2139
- side: i.side,
2140
- rayDirection: t,
2141
- normal: n
2142
- });
2143
- }), bi = M(([e, t, n, r]) => {
2115
+ }), oi = /* @__PURE__ */ X("\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"), si = 32, ci = 512, li = 4, ui = 8, di = 1e8, fi = null;
2116
+ function pi(e) {
2117
+ fi = e;
2118
+ }
2119
+ var mi = () => Ke("int", si).toVar(), hi = X("\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"), gi = X("\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"), _i = M(([e, t, n, r]) => {
2120
+ let i = B($(r, e, B(10), B(27)).g), a = t.dot(n), o = i.equal(B(2)), s = i.equal(B(0)).and(a.lessThan(-1e-4)), c = i.equal(B(1)).and(a.greaterThan(1e-4));
2121
+ return o.or(s).or(c);
2122
+ }), vi = M(([e, t, n, r]) => {
2144
2123
  let i = Er({
2145
2124
  didHit: !1,
2146
2125
  dst: z(0x56bc75e2d63100000),
@@ -2151,12 +2130,12 @@ var Zr = X("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2151
2130
  meshIndex: B(-1),
2152
2131
  boxTests: B(0),
2153
2132
  triTests: B(0)
2154
- }).toVar(), a = B(-1).toVar(), o = z(0).toVar(), s = z(0).toVar(), c = pi(), l = B(1).toVar();
2133
+ }).toVar(), a = B(-1).toVar(), o = z(0).toVar(), s = z(0).toVar(), c = mi(), l = B(1).toVar();
2155
2134
  c.element(B(0)).assign(B(0));
2156
- let u = H(J(1), ft(e.direction), st(e.direction, J(0))), d = H(J(1).div(e.direction), J(fi).mul(u), tt(F(e.direction), J(1e-8))).toVar(), f = e.origin, p = e.direction, m = B(0).toVar();
2157
- return P(l.greaterThan(B(0)).and(m.lessThan(B(li))), () => {
2135
+ let u = H(J(1), ft(e.direction), st(e.direction, J(0))), d = H(J(1).div(e.direction), J(di).mul(u), tt(F(e.direction), J(1e-8))).toVar(), f = e.origin, p = e.direction, m = B(0).toVar();
2136
+ return P(l.greaterThan(B(0)).and(m.lessThan(B(ci))), () => {
2158
2137
  m.addAssign(1), l.subAssign(1);
2159
- let e = c.element(l).toVar(), u = $(t, e, B(0), B(ui));
2138
+ let e = c.element(l).toVar(), u = $(t, e, B(0), B(li));
2160
2139
  i.boxTests.addAssign(1), N(u.w.lessThan(0), () => {
2161
2140
  N(u.w.greaterThan(z(-1.5)), () => {
2162
2141
  let e = B(u.x).toVar(), t = B(u.y).toVar();
@@ -2165,7 +2144,7 @@ var Zr = X("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2165
2144
  end: t
2166
2145
  }, ({ i: t }) => {
2167
2146
  i.triTests.addAssign(1);
2168
- let c = e.add(t).toVar(), l = $(n, c, B(0), B(di)).xyz, u = $(n, c, B(1), B(di)).xyz, d = $(n, c, B(2), B(di)).xyz, m = mi({
2147
+ let c = e.add(t).toVar(), l = $(n, c, B(0), B(ui)).xyz, u = $(n, c, B(1), B(ui)).xyz, d = $(n, c, B(2), B(ui)).xyz, m = hi({
2169
2148
  rayOrigin: f,
2170
2149
  rayDir: p,
2171
2150
  pA: l,
@@ -2174,12 +2153,9 @@ var Zr = X("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2174
2153
  closestHitDst: i.dst
2175
2154
  });
2176
2155
  N(m.w.greaterThan(.5), () => {
2177
- let e = m.x, t = m.y, l = m.z, u = $(n, c, B(3), B(di)).xyz, d = $(n, c, B(4), B(di)).xyz, f = $(n, c, B(5), B(di)).xyz, h = $(n, c, B(7), B(di)), g = B(h.z);
2178
- N(_i(g, r), () => {
2179
- let n = z(1).sub(t).sub(l), m = U(u.mul(n).add(d.mul(t)).add(f.mul(l))).toVar();
2180
- N(yi(g, p, m, r), () => {
2181
- i.didHit.assign(!0), i.dst.assign(e), i.normal.assign(m), i.materialIndex.assign(g), i.meshIndex.assign(B(h.w)), a.assign(c), o.assign(t), s.assign(l);
2182
- });
2156
+ let e = m.x, t = m.y, l = m.z, u = $(n, c, B(3), B(ui)).xyz, d = $(n, c, B(4), B(ui)).xyz, f = $(n, c, B(5), B(ui)).xyz, h = $(n, c, B(7), B(ui)), g = B(h.z), _ = z(1).sub(t).sub(l), v = U(u.mul(_).add(d.mul(t)).add(f.mul(l))).toVar();
2157
+ N(_i(g, p, v, r), () => {
2158
+ i.didHit.assign(!0), i.dst.assign(e), i.normal.assign(v), i.materialIndex.assign(g), i.meshIndex.assign(B(h.w)), a.assign(c), o.assign(t), s.assign(l);
2183
2159
  });
2184
2160
  });
2185
2161
  }), N(i.didHit.and(i.dst.lessThan(.001)), () => {
@@ -2187,17 +2163,22 @@ var Zr = X("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2187
2163
  });
2188
2164
  }).Else(() => {
2189
2165
  let e = B(u.x).toVar();
2190
- N(l.lessThan(B(ci)), () => {
2166
+ if (fi) {
2167
+ let t = B(u.y).toVar(), n = $(fi, B(1), t, B(0)).x;
2168
+ N(n.greaterThan(.5).and(l.lessThan(B(si))), () => {
2169
+ c.element(l).assign(e), l.addAssign(1);
2170
+ });
2171
+ } else N(l.lessThan(B(si)), () => {
2191
2172
  c.element(l).assign(e), l.addAssign(1);
2192
2173
  });
2193
2174
  });
2194
2175
  }).Else(() => {
2195
- let n = $(t, e, B(1), B(ui)), r = $(t, e, B(2), B(ui)), a = $(t, e, B(3), B(ui)), o = B(u.w).toVar(), s = B(n.w).toVar(), p = hi({
2176
+ let n = $(t, e, B(1), B(li)), r = $(t, e, B(2), B(li)), a = $(t, e, B(3), B(li)), o = B(u.w).toVar(), s = B(n.w).toVar(), p = gi({
2196
2177
  rayOrigin: f,
2197
2178
  invDir: d,
2198
2179
  boxMin: u.xyz,
2199
2180
  boxMax: n.xyz
2200
- }).toVar(), m = hi({
2181
+ }).toVar(), m = gi({
2201
2182
  rayOrigin: f,
2202
2183
  invDir: d,
2203
2184
  boxMin: r.xyz,
@@ -2205,19 +2186,19 @@ var Zr = X("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2205
2186
  }).toVar();
2206
2187
  N(at(p, m).lessThan(i.dst), () => {
2207
2188
  let e = p.lessThan(m), t = W(e, o, s).toVar(), n = W(e, s, o).toVar();
2208
- N(W(e, m, p).toVar().lessThan(i.dst).and(l.lessThan(B(ci))), () => {
2189
+ N(W(e, m, p).toVar().lessThan(i.dst).and(l.lessThan(B(si))), () => {
2209
2190
  c.element(l).assign(n), l.addAssign(1);
2210
- }), N(l.lessThan(B(ci)), () => {
2191
+ }), N(l.lessThan(B(si)), () => {
2211
2192
  c.element(l).assign(t), l.addAssign(1);
2212
2193
  });
2213
2194
  });
2214
2195
  });
2215
2196
  }), N(i.didHit, () => {
2216
2197
  i.hitPoint.assign(e.origin.add(e.direction.mul(i.dst)));
2217
- let t = z(1).sub(o).sub(s), r = $(n, a, B(6), B(di)), c = $(n, a, B(7), B(di));
2198
+ let t = z(1).sub(o).sub(s), r = $(n, a, B(6), B(ui)), c = $(n, a, B(7), B(ui));
2218
2199
  i.uv.assign(r.xy.mul(t).add(r.zw.mul(o)).add(c.xy.mul(s))), i.triangleIndex.assign(a);
2219
2200
  }), i;
2220
- }), xi = M(([e, t, n, r, i]) => {
2201
+ }), yi = M(([e, t, n, r, i]) => {
2221
2202
  let a = Er({
2222
2203
  didHit: !1,
2223
2204
  dst: i,
@@ -2228,63 +2209,66 @@ var Zr = X("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2228
2209
  meshIndex: B(-1),
2229
2210
  boxTests: B(0),
2230
2211
  triTests: B(0)
2231
- }).toVar(), o = pi(), s = B(1).toVar();
2212
+ }).toVar(), o = mi(), s = B(1).toVar();
2232
2213
  o.element(B(0)).assign(B(0));
2233
- let c = H(J(1), ft(e.direction), st(e.direction, J(0))), l = H(J(1).div(e.direction), J(fi).mul(c), tt(F(e.direction), J(1e-8))).toVar(), u = B(0).toVar();
2234
- return P(s.greaterThan(B(0)).and(a.didHit.not()).and(u.lessThan(B(li))), () => {
2214
+ let c = H(J(1), ft(e.direction), st(e.direction, J(0))), l = H(J(1).div(e.direction), J(di).mul(c), tt(F(e.direction), J(1e-8))).toVar(), u = B(0).toVar();
2215
+ return P(s.greaterThan(B(0)).and(a.didHit.not()).and(u.lessThan(B(ci))), () => {
2235
2216
  u.addAssign(1), s.subAssign(1);
2236
- let i = o.element(s).toVar(), c = $(t, i, B(0), B(ui));
2237
- N(c.w.lessThan(0), () => {
2238
- N(c.w.greaterThan(z(-1.5)), () => {
2239
- let t = B(c.x).toVar(), i = B(c.y).toVar();
2217
+ let r = o.element(s).toVar(), i = $(t, r, B(0), B(li));
2218
+ N(i.w.lessThan(0), () => {
2219
+ N(i.w.greaterThan(z(-1.5)), () => {
2220
+ let t = B(i.x).toVar(), r = B(i.y).toVar();
2240
2221
  P({
2241
2222
  start: B(0),
2242
- end: i
2243
- }, ({ i }) => {
2244
- let o = t.add(i).toVar(), s = $(n, o, B(0), B(di)).xyz, c = $(n, o, B(1), B(di)).xyz, l = $(n, o, B(2), B(di)).xyz, u = mi({
2223
+ end: r
2224
+ }, ({ i: r }) => {
2225
+ let i = t.add(r).toVar(), o = $(n, i, B(0), B(ui)).xyz, s = $(n, i, B(1), B(ui)).xyz, c = $(n, i, B(2), B(ui)).xyz, l = hi({
2245
2226
  rayOrigin: e.origin,
2246
2227
  rayDir: e.direction,
2247
- pA: s,
2248
- pB: c,
2249
- pC: l,
2228
+ pA: o,
2229
+ pB: s,
2230
+ pC: c,
2250
2231
  closestHitDst: a.dst
2251
2232
  });
2252
- N(u.w.greaterThan(.5), () => {
2253
- let t = $(n, o, B(7), B(di)), i = B(t.z);
2254
- N(_i(i, r), () => {
2255
- a.didHit.assign(!0), a.dst.assign(u.x), a.materialIndex.assign(i), a.meshIndex.assign(B(t.w)), a.hitPoint.assign(e.origin.add(e.direction.mul(u.x))), a.normal.assign(U(Ye(c.sub(s), l.sub(s)))), Ve();
2256
- });
2233
+ N(l.w.greaterThan(.5), () => {
2234
+ let t = $(n, i, B(7), B(ui));
2235
+ a.didHit.assign(!0), a.dst.assign(l.x), a.materialIndex.assign(B(t.z)), a.meshIndex.assign(B(t.w)), a.hitPoint.assign(e.origin.add(e.direction.mul(l.x))), a.normal.assign(U(Ye(s.sub(o), c.sub(o)))), Ve();
2257
2236
  });
2258
2237
  });
2259
2238
  }).Else(() => {
2260
- let e = B(c.x).toVar();
2261
- N(s.lessThan(B(ci)), () => {
2239
+ let e = B(i.x).toVar();
2240
+ if (fi) {
2241
+ let t = B(i.y).toVar(), n = $(fi, B(1), t, B(0)).x;
2242
+ N(n.greaterThan(.5).and(s.lessThan(B(si))), () => {
2243
+ o.element(s).assign(e), s.addAssign(1);
2244
+ });
2245
+ } else N(s.lessThan(B(si)), () => {
2262
2246
  o.element(s).assign(e), s.addAssign(1);
2263
2247
  });
2264
2248
  });
2265
2249
  }).Else(() => {
2266
- let n = $(t, i, B(1), B(ui)), r = $(t, i, B(2), B(ui)), u = $(t, i, B(3), B(ui)), d = B(c.w).toVar(), f = B(n.w).toVar(), p = hi({
2250
+ let n = $(t, r, B(1), B(li)), c = $(t, r, B(2), B(li)), u = $(t, r, B(3), B(li)), d = B(i.w).toVar(), f = B(n.w).toVar(), p = gi({
2267
2251
  rayOrigin: e.origin,
2268
2252
  invDir: l,
2269
- boxMin: c.xyz,
2253
+ boxMin: i.xyz,
2270
2254
  boxMax: n.xyz
2271
- }).toVar(), m = hi({
2255
+ }).toVar(), m = gi({
2272
2256
  rayOrigin: e.origin,
2273
2257
  invDir: l,
2274
- boxMin: r.xyz,
2258
+ boxMin: c.xyz,
2275
2259
  boxMax: u.xyz
2276
2260
  }).toVar();
2277
2261
  N(at(p, m).lessThan(a.dst), () => {
2278
2262
  let e = p.lessThan(m), t = W(e, d, f).toVar(), n = W(e, f, d).toVar();
2279
- N(W(e, m, p).toVar().lessThan(a.dst).and(s.lessThan(B(ci))), () => {
2263
+ N(W(e, m, p).toVar().lessThan(a.dst).and(s.lessThan(B(si))), () => {
2280
2264
  o.element(s).assign(n), s.addAssign(1);
2281
- }), N(s.lessThan(B(ci)), () => {
2265
+ }), N(s.lessThan(B(si)), () => {
2282
2266
  o.element(s).assign(t), s.addAssign(1);
2283
2267
  });
2284
2268
  });
2285
2269
  });
2286
2270
  }), a;
2287
- }), Si = M(([e, t, n, r, i, a, o, s, c, l, u]) => {
2271
+ }), bi = M(([e, t, n, r, i, a, o, s, c, l, u]) => {
2288
2272
  let d = J(e.xy, 1), f = r.mul(Y(d, 1)), p = U(it(n[0].xyz, n[1].xyz, n[2].xyz).mul(f.xyz.div(f.w))).toVar(), m = J(n[3]).toVar(), h = m.toVar(), g = p.toVar();
2289
2273
  return N(i.and(a.greaterThan(0)).and(o.lessThan(64)).and(s.greaterThan(.001)), () => {
2290
2274
  let e = m.add(p.mul(s)).toVar(), r = a.div(o).mul(.001).mul(c).mul(l), i = en(t), d = i.x.mul(u.max(.01)), f = i.y, _ = U(J(n[0])), v = U(J(n[1])), y = _.mul(d).add(v.mul(f)).mul(r);
@@ -2293,52 +2277,52 @@ var Zr = X("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2293
2277
  origin: h,
2294
2278
  direction: g
2295
2279
  });
2296
- }), Ci = /* @__PURE__ */ X("\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"), wi = /* @__PURE__ */ X("\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");
2297
- M(([e, t, n]) => vt(e, Ci({
2280
+ }), xi = /* @__PURE__ */ X("\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"), Si = /* @__PURE__ */ X("\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");
2281
+ M(([e, t, n]) => vt(e, xi({
2298
2282
  direction: t,
2299
2283
  environmentMatrix: n
2300
2284
  }), 0).rgb);
2301
- var Ti = /* @__PURE__ */ X("\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", [Ci]), Ei = M(([e, t, n, r, i]) => {
2285
+ var Ci = /* @__PURE__ */ X("\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", [xi]), wi = M(([e, t, n, r, i]) => {
2302
2286
  let a = Y(0).toVar();
2303
2287
  return N(r.equal(0), () => {
2304
2288
  a.assign(Y(0));
2305
2289
  }).Else(() => {
2306
- let o = vt(e, Ci({
2290
+ let o = vt(e, xi({
2307
2291
  direction: t,
2308
2292
  environmentMatrix: n
2309
- }).toVar(), 0).rgb.toVar(), s = R(o, Gr).toVar().div(r).toVar(), c = Ti({
2293
+ }).toVar(), 0).rgb.toVar(), s = R(o, Gr).toVar().div(r).toVar(), c = Ci({
2310
2294
  direction: t,
2311
2295
  environmentMatrix: n
2312
2296
  }).toVar(), l = z(i.x).mul(z(i.y)).mul(s).mul(c).toVar();
2313
2297
  a.assign(Y(o, l));
2314
2298
  }), a;
2315
- }), Di = M(([e, t, n, r, i, a, o, s, c]) => {
2316
- let l = o.y, u = L(s.x.mul(l.sub(1)), 0, l.sub(1)), d = B(Ze(u)), f = at(d.add(1), B(l).sub(1)), p = Qe(u), m = H(t.element(d), t.element(f), p).toVar(), h = o.x, g = o.y, _ = L(s.y.mul(h.sub(1)), 0, h.sub(1)), v = L(m.mul(g.sub(1)), 0, g.sub(1)), y = B(Ze(_)), b = B(Ze(v)), x = at(y.add(1), B(h).sub(1)), S = at(b.add(1), B(g).sub(1)), C = Qe(_), w = Qe(v), T = B(h), E = n.element(b.mul(T).add(y)), D = n.element(b.mul(T).add(x)), O = n.element(S.mul(T).add(y)), k = n.element(S.mul(T).add(x)), A = q(H(H(E, D, C), H(O, k, C), w).toVar(), m).toVar(), ee = wi({
2299
+ }), Ti = M(([e, t, n, r, i, a, o, s, c]) => {
2300
+ let l = o.y, u = L(s.x.mul(l.sub(1)), 0, l.sub(1)), d = B(Ze(u)), f = at(d.add(1), B(l).sub(1)), p = Qe(u), m = H(t.element(d), t.element(f), p).toVar(), h = o.x, g = o.y, _ = L(s.y.mul(h.sub(1)), 0, h.sub(1)), v = L(m.mul(g.sub(1)), 0, g.sub(1)), y = B(Ze(_)), b = B(Ze(v)), x = at(y.add(1), B(h).sub(1)), S = at(b.add(1), B(g).sub(1)), C = Qe(_), w = Qe(v), T = B(h), E = n.element(b.mul(T).add(y)), D = n.element(b.mul(T).add(x)), O = n.element(S.mul(T).add(y)), k = n.element(S.mul(T).add(x)), A = q(H(H(E, D, C), H(O, k, C), w).toVar(), m).toVar(), ee = Si({
2317
2301
  uv: A,
2318
2302
  environmentMatrix: r
2319
2303
  }).toVar(), te = vt(e, A, 0).rgb.mul(i).toVar();
2320
2304
  c.assign(te);
2321
- let ne = R(te.div(i), Gr).toVar().div(a).toVar(), re = Ti({
2305
+ let ne = R(te.div(i), Gr).toVar().div(a).toVar(), re = Ci({
2322
2306
  direction: ee,
2323
2307
  environmentMatrix: r
2324
2308
  }).toVar();
2325
2309
  return Y(ee, z(o.x).mul(z(o.y)).mul(ne).mul(re).toVar());
2326
- }), Oi = /* @__PURE__ */ X("\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", [Ci]), ki = /* @__PURE__ */ X("\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__ */ X("\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")]), Ai = M(([e]) => e.albedoMapIndex.greaterThanEqual(B(0)).or(e.normalMapIndex.greaterThanEqual(B(0))).or(e.roughnessMapIndex.greaterThanEqual(B(0))).or(e.metalnessMapIndex.greaterThanEqual(B(0))).or(e.emissiveMapIndex.greaterThanEqual(B(0))).or(e.bumpMapIndex.greaterThanEqual(B(0))).or(e.displacementMapIndex.greaterThanEqual(B(0)))), ji = /* @__PURE__ */ X("\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"), Mi = M(([e, t]) => {
2327
- let n = ji({ t: t.albedoTransform }).toVar(), r = ji({ t: t.normalTransform }).toVar(), i = ji({ t: t.metalnessTransform }).toVar(), a = ji({ t: t.roughnessTransform }).toVar(), o = ji({ t: t.emissiveTransform }).toVar(), s = ji({ t: t.bumpTransform }).toVar(), c = .001, l = F(n.sub(r)).lessThan(c).toVar(), u = F(r.sub(s)).lessThan(c).toVar(), d = F(i.sub(a)).lessThan(c).toVar(), f = F(n.sub(o)).lessThan(c).toVar(), p = l.and(F(n.sub(i)).lessThan(c)).and(F(n.sub(o)).lessThan(c)).and(F(n.sub(s)).lessThan(c)).toVar(), m = q(0).toVar(), h = q(0).toVar(), g = q(0).toVar(), _ = q(0).toVar(), v = q(0).toVar(), y = q(0).toVar(), b = u.or(p).toVar(), x = d.or(p).toVar(), S = f.or(p).toVar();
2310
+ }), Ei = /* @__PURE__ */ X("\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", [xi]), Di = /* @__PURE__ */ X("\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__ */ X("\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")]), Oi = M(([e]) => e.albedoMapIndex.greaterThanEqual(B(0)).or(e.normalMapIndex.greaterThanEqual(B(0))).or(e.roughnessMapIndex.greaterThanEqual(B(0))).or(e.metalnessMapIndex.greaterThanEqual(B(0))).or(e.emissiveMapIndex.greaterThanEqual(B(0))).or(e.bumpMapIndex.greaterThanEqual(B(0))).or(e.displacementMapIndex.greaterThanEqual(B(0)))), ki = /* @__PURE__ */ X("\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"), Ai = M(([e, t]) => {
2311
+ let n = ki({ t: t.albedoTransform }).toVar(), r = ki({ t: t.normalTransform }).toVar(), i = ki({ t: t.metalnessTransform }).toVar(), a = ki({ t: t.roughnessTransform }).toVar(), o = ki({ t: t.emissiveTransform }).toVar(), s = ki({ t: t.bumpTransform }).toVar(), c = .001, l = F(n.sub(r)).lessThan(c).toVar(), u = F(r.sub(s)).lessThan(c).toVar(), d = F(i.sub(a)).lessThan(c).toVar(), f = F(n.sub(o)).lessThan(c).toVar(), p = l.and(F(n.sub(i)).lessThan(c)).and(F(n.sub(o)).lessThan(c)).and(F(n.sub(s)).lessThan(c)).toVar(), m = q(0).toVar(), h = q(0).toVar(), g = q(0).toVar(), _ = q(0).toVar(), v = q(0).toVar(), y = q(0).toVar(), b = u.or(p).toVar(), x = d.or(p).toVar(), S = f.or(p).toVar();
2328
2312
  return N(p, () => {
2329
- let n = ki({
2313
+ let n = Di({
2330
2314
  uv: e,
2331
2315
  transform: t.albedoTransform
2332
2316
  });
2333
2317
  m.assign(n), h.assign(n), g.assign(n), _.assign(n), v.assign(n), y.assign(n);
2334
2318
  }).Else(() => {
2335
- m.assign(ki({
2319
+ m.assign(Di({
2336
2320
  uv: e,
2337
2321
  transform: t.albedoTransform
2338
- })), h.assign(l.select(m, ki({
2322
+ })), h.assign(l.select(m, Di({
2339
2323
  uv: e,
2340
2324
  transform: t.normalTransform
2341
- }))), v.assign(f.select(m, ki({
2325
+ }))), v.assign(f.select(m, Di({
2342
2326
  uv: e,
2343
2327
  transform: t.emissiveTransform
2344
2328
  }))), N(u, () => {
@@ -2346,12 +2330,12 @@ var Ti = /* @__PURE__ */ X("\n fn equirectDirectionPdf( direction: vec3f, enviro
2346
2330
  }).ElseIf(F(s.sub(n)).lessThan(c), () => {
2347
2331
  y.assign(m);
2348
2332
  }).Else(() => {
2349
- y.assign(ki({
2333
+ y.assign(Di({
2350
2334
  uv: e,
2351
2335
  transform: t.bumpTransform
2352
2336
  }));
2353
2337
  }), N(d, () => {
2354
- g.assign(ki({
2338
+ g.assign(Di({
2355
2339
  uv: e,
2356
2340
  transform: t.metalnessTransform
2357
2341
  })), _.assign(g);
@@ -2361,7 +2345,7 @@ var Ti = /* @__PURE__ */ X("\n fn equirectDirectionPdf( direction: vec3f, enviro
2361
2345
  }).ElseIf(F(i.sub(r)).lessThan(c), () => {
2362
2346
  g.assign(h);
2363
2347
  }).Else(() => {
2364
- g.assign(ki({
2348
+ g.assign(Di({
2365
2349
  uv: e,
2366
2350
  transform: t.metalnessTransform
2367
2351
  }));
@@ -2372,7 +2356,7 @@ var Ti = /* @__PURE__ */ X("\n fn equirectDirectionPdf( direction: vec3f, enviro
2372
2356
  }).ElseIf(F(a.sub(i)).lessThan(c), () => {
2373
2357
  _.assign(g);
2374
2358
  }).Else(() => {
2375
- _.assign(ki({
2359
+ _.assign(Di({
2376
2360
  uv: e,
2377
2361
  transform: t.roughnessTransform
2378
2362
  }));
@@ -2390,13 +2374,13 @@ var Ti = /* @__PURE__ */ X("\n fn equirectDirectionPdf( direction: vec3f, enviro
2390
2374
  metalRoughSameUV: x,
2391
2375
  albedoEmissiveSameUV: S
2392
2376
  });
2393
- }), Ni = M(([e, t, n]) => {
2377
+ }), ji = M(([e, t, n]) => {
2394
2378
  let r = t.color.toVar();
2395
2379
  return N(t.albedoMapIndex.greaterThanEqual(B(0)), () => {
2396
2380
  let i = vt(e, n.albedoUV).depth(B(t.albedoMapIndex)).toVar();
2397
2381
  r.assign(Y(t.color.rgb.mul(i.rgb), t.color.a.mul(i.a)));
2398
2382
  }), r;
2399
- }), Pi = M(([e, t, n, r]) => {
2383
+ }), Mi = M(([e, t, n, r]) => {
2400
2384
  let i = n.metalness.toVar(), a = n.roughness.toVar();
2401
2385
  return N(n.metalnessMapIndex.greaterThanEqual(B(0)).and(n.metalnessMapIndex.equal(n.roughnessMapIndex)), () => {
2402
2386
  let t = vt(e, r.metalnessUV).depth(B(n.metalnessMapIndex));
@@ -2410,7 +2394,7 @@ var Ti = /* @__PURE__ */ X("\n fn equirectDirectionPdf( direction: vec3f, enviro
2410
2394
  a.assign(n.roughness.mul(e.g));
2411
2395
  });
2412
2396
  }), q(i, a);
2413
- }), Fi = M(([e, t, n, r]) => {
2397
+ }), Ni = M(([e, t, n, r]) => {
2414
2398
  let i = t.toVar();
2415
2399
  return N(n.normalMapIndex.greaterThanEqual(B(0)), () => {
2416
2400
  let a = vt(e, r.normalUV).depth(B(n.normalMapIndex)).xyz.mul(2).sub(1).toVar();
@@ -2418,27 +2402,27 @@ var Ti = /* @__PURE__ */ X("\n fn equirectDirectionPdf( direction: vec3f, enviro
2418
2402
  let o = U(Ye(F(t.z).lessThan(.999).select(J(0, 0, 1), J(1, 0, 0)), t)), s = Ye(t, o);
2419
2403
  i.assign(U(o.mul(a.x).add(s.mul(a.y)).add(t.mul(a.z))));
2420
2404
  }), i;
2421
- }), Ii = M(([e, t, n, r]) => {
2405
+ }), Pi = M(([e, t, n, r]) => {
2422
2406
  let i = t.toVar();
2423
2407
  return N(n.bumpMapIndex.greaterThanEqual(B(0)), () => {
2424
2408
  let a = q(1 / 1024).toVar(), o = vt(e, r.bumpUV).depth(B(n.bumpMapIndex)).r, s = vt(e, q(r.bumpUV.x.add(a.x), r.bumpUV.y)).depth(B(n.bumpMapIndex)).r, c = vt(e, q(r.bumpUV.x, r.bumpUV.y.add(a.y))).depth(B(n.bumpMapIndex)).r, l = q(s.sub(o), c.sub(o)).mul(n.bumpScale), u = U(J(l.x.negate(), l.y.negate(), 1)), d = U(Ye(F(t.z).lessThan(.999).select(J(0, 0, 1), J(1, 0, 0)), t)), f = Ye(t, d), p = d.mul(u.x).add(f.mul(u.y)).add(t.mul(u.z));
2425
2409
  i.assign(U(H(t, p, L(n.bumpScale, 0, 1))));
2426
2410
  }), i;
2427
- }), Li = M(([e, t, n, r]) => {
2411
+ }), Fi = M(([e, t, n, r]) => {
2428
2412
  let i = t.emissive.mul(t.emissiveIntensity).toVar();
2429
2413
  return N(t.emissiveMapIndex.greaterThanEqual(B(0)), () => {
2430
2414
  let n = vt(e, r.emissiveUV).depth(B(t.emissiveMapIndex)).toVar();
2431
2415
  i.assign(i.mul(n.rgb));
2432
2416
  }), i;
2433
- }), Ri = M(([e, t, n, r, i, a, o, s, c]) => {
2434
- let l = Y(0).toVar(), u = J(0).toVar(), d = z(0).toVar(), f = z(0).toVar(), p = J(0).toVar(), m = Ai(o).toVar();
2417
+ }), Ii = M(([e, t, n, r, i, a, o, s, c]) => {
2418
+ let l = Y(0).toVar(), u = J(0).toVar(), d = z(0).toVar(), f = z(0).toVar(), p = J(0).toVar(), m = Oi(o).toVar();
2435
2419
  return l.assign(o.color), u.assign(o.emissive.mul(o.emissiveIntensity)), d.assign(o.metalness), f.assign(o.roughness), p.assign(c), N(m, () => {
2436
- let m = Nr.wrap(Mi(s, o)).toVar();
2437
- l.assign(Ni(e, o, m));
2438
- let h = Pi(r, i, o, m);
2420
+ let m = Nr.wrap(Ai(s, o)).toVar();
2421
+ l.assign(ji(e, o, m));
2422
+ let h = Mi(r, i, o, m);
2439
2423
  d.assign(h.x), f.assign(h.y);
2440
- let g = Fi(t, c, o, m).toVar();
2441
- p.assign(Ii(n, g, o, m)), u.assign(Li(a, o, l, m));
2424
+ let g = Ni(t, c, o, m).toVar();
2425
+ p.assign(Pi(n, g, o, m)), u.assign(Fi(a, o, l, m));
2442
2426
  }), jr({
2443
2427
  albedo: l,
2444
2428
  emissive: u,
@@ -2448,27 +2432,27 @@ var Ti = /* @__PURE__ */ X("\n fn equirectDirectionPdf( direction: vec3f, enviro
2448
2432
  hasTextures: m
2449
2433
  });
2450
2434
  });
2451
- M(([e, t, n, r, i, a, o, s]) => jr.wrap(Ri(e, t, n, r, i, a, o, s, J(0, 1, 0))).albedo), M(([e, t, n, r, i, a, o, s]) => jr.wrap(Ri(e, t, n, r, i, a, o, s, J(0, 1, 0))).emissive), M(([e, t, n, r, i, a, o, s]) => jr.wrap(Ri(e, t, n, r, i, a, o, s, J(0, 1, 0))).metalness), M(([e, t, n, r, i, a, o, s]) => jr.wrap(Ri(e, t, n, r, i, a, o, s, J(0, 1, 0))).roughness), M(([e, t, n, r, i, a, o, s, c]) => jr.wrap(Ri(e, t, n, r, i, a, o, s, c)).normal);
2452
- var zi = M(([e, t, n, r]) => {
2435
+ M(([e, t, n, r, i, a, o, s]) => jr.wrap(Ii(e, t, n, r, i, a, o, s, J(0, 1, 0))).albedo), M(([e, t, n, r, i, a, o, s]) => jr.wrap(Ii(e, t, n, r, i, a, o, s, J(0, 1, 0))).emissive), M(([e, t, n, r, i, a, o, s]) => jr.wrap(Ii(e, t, n, r, i, a, o, s, J(0, 1, 0))).metalness), M(([e, t, n, r, i, a, o, s]) => jr.wrap(Ii(e, t, n, r, i, a, o, s, J(0, 1, 0))).roughness), M(([e, t, n, r, i, a, o, s, c]) => jr.wrap(Ii(e, t, n, r, i, a, o, s, c)).normal);
2436
+ var Li = M(([e, t, n, r]) => {
2453
2437
  let i = z(0).toVar();
2454
2438
  return N(t.greaterThanEqual(B(0)), () => {
2455
- let a = ki({
2439
+ let a = Di({
2456
2440
  uv: n,
2457
2441
  transform: r
2458
2442
  });
2459
2443
  i.assign(vt(e, a).depth(B(t)).r);
2460
2444
  }), i;
2461
- }), Bi = 32, Vi = 16, Hi = 5, Ui = 1 / 1024, Wi = 8, Gi = Cr({
2445
+ }), Ri = 32, zi = 16, Bi = 5, Vi = 1 / 1024, Hi = 8, Ui = Cr({
2462
2446
  hitPoint: "vec3",
2463
2447
  uv: "vec2",
2464
2448
  normal: "vec3",
2465
2449
  height: "float"
2466
- }), Ki = M(([e, t, n, r, i, a]) => {
2467
- let o = t.hitPoint.toVar(), s = t.uv.toVar(), c = t.normal.toVar(), l = z(0).toVar(), u = t.triangleIndex, d = $(n, u, B(0), B(Wi)).xyz.toVar(), f = $(n, u, B(1), B(Wi)).xyz.toVar(), p = $(n, u, B(2), B(Wi)).xyz.toVar(), m = $(n, u, B(6), B(Wi)).toVar(), h = $(n, u, B(7), B(Wi)).toVar(), g = m.xy.toVar(), _ = m.zw.toVar(), v = h.xy.toVar(), y = f.sub(d).toVar(), b = p.sub(d).toVar(), x = _.sub(g).toVar(), S = v.sub(g).toVar(), C = x.x.mul(S.y).sub(S.x.mul(x.y)).toVar();
2450
+ }), Wi = M(([e, t, n, r, i, a]) => {
2451
+ let o = t.hitPoint.toVar(), s = t.uv.toVar(), c = t.normal.toVar(), l = z(0).toVar(), u = t.triangleIndex, d = $(n, u, B(0), B(Hi)).xyz.toVar(), f = $(n, u, B(1), B(Hi)).xyz.toVar(), p = $(n, u, B(2), B(Hi)).xyz.toVar(), m = $(n, u, B(6), B(Hi)).toVar(), h = $(n, u, B(7), B(Hi)).toVar(), g = m.xy.toVar(), _ = m.zw.toVar(), v = h.xy.toVar(), y = f.sub(d).toVar(), b = p.sub(d).toVar(), x = _.sub(g).toVar(), S = v.sub(g).toVar(), C = x.x.mul(S.y).sub(S.x.mul(x.y)).toVar();
2468
2452
  return N(F(C).greaterThan(1e-8), () => {
2469
2453
  let n = z(1).div(C), u = y.mul(S.y).sub(b.mul(x.y)).mul(n).toVar(), d = b.mul(x.x).sub(y.mul(S.x)).mul(n).toVar(), f = t.normal.toVar(), p = i.displacementScale.div(z(10)), m = e.direction, h = R(m, f).toVar(), g = m.sub(f.mul(h)).toVar(), _ = R(u, u), v = R(u, d), w = R(d, d), T = _.mul(w).sub(v.mul(v)).toVar();
2470
2454
  N(F(T).greaterThan(1e-10), () => {
2471
- let e = z(1).div(T), n = R(g, u), y = R(g, d), b = q(w.mul(n).sub(v.mul(y)).mul(e).toVar(), _.mul(y).sub(v.mul(n)).mul(e).toVar()).toVar(), x = h.toVar(), S = V(F(x), .001).toVar(), C = p.div(S).toVar(), E = B(a.equal(B(0)).select(B(Bi), B(Vi))).toVar(), D = C.negate().toVar(), O = C.toVar().sub(D).div(z(E)).toVar(), k = D.toVar(), A = D.toVar(), ee = B(0).toVar();
2455
+ let e = z(1).div(T), n = R(g, u), y = R(g, d), b = q(w.mul(n).sub(v.mul(y)).mul(e).toVar(), _.mul(y).sub(v.mul(n)).mul(e).toVar()).toVar(), x = h.toVar(), S = V(F(x), .001).toVar(), C = p.div(S).toVar(), E = B(a.equal(B(0)).select(B(Ri), B(zi))).toVar(), D = C.negate().toVar(), O = C.toVar().sub(D).div(z(E)).toVar(), k = D.toVar(), A = D.toVar(), ee = B(0).toVar();
2472
2456
  P({
2473
2457
  start: B(0),
2474
2458
  end: E,
@@ -2476,7 +2460,7 @@ var zi = M(([e, t, n, r]) => {
2476
2460
  condition: "<"
2477
2461
  }, ({ i: e }) => {
2478
2462
  N(ee.equal(B(0)), () => {
2479
- let n = D.add(O.mul(z(e))).toVar(), a = t.uv.add(b.mul(n)).toVar(), o = n.mul(x).toVar(), s = zi(r, i.displacementMapIndex, a, i.displacementTransform).sub(.5).mul(p);
2463
+ let n = D.add(O.mul(z(e))).toVar(), a = t.uv.add(b.mul(n)).toVar(), o = n.mul(x).toVar(), s = Li(r, i.displacementMapIndex, a, i.displacementTransform).sub(.5).mul(p);
2480
2464
  N(o.lessThanEqual(s).and(e.greaterThan(B(0))), () => {
2481
2465
  ee.assign(1), A.assign(n);
2482
2466
  }).Else(() => {
@@ -2487,80 +2471,80 @@ var zi = M(([e, t, n, r]) => {
2487
2471
  let e = k.toVar(), n = A.toVar();
2488
2472
  P({
2489
2473
  start: B(0),
2490
- end: B(Hi),
2474
+ end: B(Bi),
2491
2475
  type: "int",
2492
2476
  condition: "<"
2493
2477
  }, () => {
2494
- let a = e.add(n).mul(.5).toVar(), o = t.uv.add(b.mul(a)).toVar(), s = a.mul(x), c = zi(r, i.displacementMapIndex, o, i.displacementTransform).sub(.5).mul(p);
2478
+ let a = e.add(n).mul(.5).toVar(), o = t.uv.add(b.mul(a)).toVar(), s = a.mul(x), c = Li(r, i.displacementMapIndex, o, i.displacementTransform).sub(.5).mul(p);
2495
2479
  N(s.lessThanEqual(c), () => {
2496
2480
  n.assign(a);
2497
2481
  }).Else(() => {
2498
2482
  e.assign(a);
2499
2483
  });
2500
2484
  });
2501
- let a = e.add(n).mul(.5).toVar(), h = t.uv.add(b.mul(a)).toVar(), g = t.hitPoint.add(m.mul(a)).toVar(), _ = zi(r, i.displacementMapIndex, h, i.displacementTransform), v = _.sub(.5).mul(p), y = z(Ui), S = _, C = zi(r, i.displacementMapIndex, h.add(q(y, 0)), i.displacementTransform), w = zi(r, i.displacementMapIndex, h.add(q(0, y)), i.displacementTransform), T = U(u).toVar(), E = U(d).toVar(), D = C.sub(S).mul(p), O = w.sub(S).mul(p), ee = U(f.sub(T.mul(D)).sub(E.mul(O)));
2485
+ let a = e.add(n).mul(.5).toVar(), h = t.uv.add(b.mul(a)).toVar(), g = t.hitPoint.add(m.mul(a)).toVar(), _ = Li(r, i.displacementMapIndex, h, i.displacementTransform), v = _.sub(.5).mul(p), y = z(Vi), S = _, C = Li(r, i.displacementMapIndex, h.add(q(y, 0)), i.displacementTransform), w = Li(r, i.displacementMapIndex, h.add(q(0, y)), i.displacementTransform), T = U(u).toVar(), E = U(d).toVar(), D = C.sub(S).mul(p), O = w.sub(S).mul(p), ee = U(f.sub(T.mul(D)).sub(E.mul(O)));
2502
2486
  o.assign(g), s.assign(h), c.assign(ee), l.assign(v);
2503
2487
  });
2504
2488
  });
2505
- }), Gi({
2489
+ }), Ui({
2506
2490
  hitPoint: o,
2507
2491
  uv: s,
2508
2492
  normal: c,
2509
2493
  height: l
2510
2494
  });
2511
- }), qi = 1e-6;
2495
+ }), Gi = 1e-6;
2512
2496
  M(([e, t, n]) => {
2513
2497
  let r = V(J(z(1).sub(n)), e);
2514
2498
  return e.add(r.sub(e).mul(ct(z(1).sub(t), 5)));
2515
2499
  });
2516
- var Ji = M(([e, t]) => {
2500
+ var Ki = M(([e, t]) => {
2517
2501
  let n = L(e, 0, 1);
2518
2502
  return t.add(z(1).sub(t).mul(ct(z(1).sub(n), 5)));
2519
- }), Yi = M(([e, t]) => {
2503
+ }), qi = M(([e, t]) => {
2520
2504
  let n = L(e, 0, 1);
2521
2505
  return t.add(J(1).sub(t).mul(ct(z(1).sub(n), 5)));
2522
- }), Xi = M(([e]) => {
2506
+ }), Ji = M(([e]) => {
2523
2507
  let t = ht(e);
2524
- return J(1).add(t).div(V(J(1).sub(t), J(qi)));
2525
- }), Zi = M(([e, t]) => {
2526
- let n = e.sub(J(t)), r = V(e.add(J(t)), J(qi)), i = n.div(r);
2508
+ return J(1).add(t).div(V(J(1).sub(t), J(Gi)));
2509
+ }), Yi = M(([e, t]) => {
2510
+ let n = e.sub(J(t)), r = V(e.add(J(t)), J(Gi)), i = n.div(r);
2527
2511
  return i.mul(i);
2528
- }), Qi = M(([e, t]) => {
2529
- let n = e.sub(t), r = V(e.add(t), qi), i = n.div(r);
2512
+ }), Xi = M(([e, t]) => {
2513
+ let n = e.sub(t), r = V(e.add(t), Gi), i = n.div(r);
2530
2514
  return i.mul(i);
2531
- }), $i = (e) => J(Qi(e, z(1))), ea = M(([e, t]) => {
2515
+ }), Zi = (e) => J(Xi(e, z(1))), Qi = M(([e, t]) => {
2532
2516
  let n = t.mul(t), r = n.mul(n), i = e.mul(e).mul(r.sub(1)).add(1);
2533
2517
  return r.div(V(z(Rr).mul(i).mul(i), Vr));
2534
- }), ta = M(([e, t]) => {
2518
+ }), $i = M(([e, t]) => {
2535
2519
  let n = V(t, Hr), r = n.mul(n), i = z(1).div(r), a = e.mul(e).mul(i.mul(i).sub(1)).add(1);
2536
2520
  return at(i.mul(i).div(V(z(Rr).mul(a).mul(a), Vr)), 100);
2537
- }), na = M(([e, t]) => {
2521
+ }), ea = M(([e, t]) => {
2538
2522
  let n = t.add(1), r = n.mul(n).div(8);
2539
2523
  return e.div(V(e.mul(z(1).sub(r)).add(r), Vr));
2540
- }), ra = M(([e, t, n]) => {
2541
- let r = na(e, n);
2542
- return na(t, n).mul(r);
2543
- }), ia = M(([e, t, n]) => {
2524
+ }), ta = M(([e, t, n]) => {
2525
+ let r = ea(e, n);
2526
+ return ea(t, n).mul(r);
2527
+ }), na = M(([e, t, n]) => {
2544
2528
  let r = z(1).sub(n), i = n.mul(-.0275).add(.0425), a = n.mul(-.572).add(1.04), o = n.mul(.022).sub(.04), s = at(r.mul(r), Xe(z(-6.4308).mul(t))).mul(r).add(i), c = z(-1.04).mul(s).add(a), l = z(1.04).mul(s).add(o), u = V(c.add(l), .1);
2545
2529
  return J(1).add(e.mul(z(1).div(u).sub(1)));
2546
- }), aa = M(([e, t, n]) => {
2530
+ }), ra = M(([e, t, n]) => {
2547
2531
  let r = z(1).sub(n), i = n.mul(-.0275).add(.0425), a = n.mul(-.572).add(1.04), o = n.mul(.022).sub(.04), s = at(r.mul(r), Xe(z(-6.4308).mul(t))).mul(r).add(i), c = z(-1.04).mul(s).add(a), l = z(1.04).mul(s).add(o), u = V(e.mul(c).add(J(l)), J(0)), d = V(c.add(l), .1), f = J(1).add(e.mul(z(1).div(d).sub(1)));
2548
2532
  return L(u.mul(f), J(0), J(1));
2549
- }), oa = M(([e, t, n]) => ea(e, n).mul(e).div(V(z(4).mul(t), Vr))), sa = M(([e, t, n]) => {
2550
- let r = ea(e, n), i = na(t, n);
2533
+ }), ia = M(([e, t, n]) => Qi(e, n).mul(e).div(V(z(4).mul(t), Vr))), aa = M(([e, t, n]) => {
2534
+ let r = Qi(e, n), i = ea(t, n);
2551
2535
  return r.mul(i).div(V(t.mul(4), Vr));
2552
- }), ca = M(([e, t]) => {
2536
+ }), oa = M(([e, t]) => {
2553
2537
  let n = z(Br).mul(e).mul(1e-9), r = J(54856e-17, 44201e-17, 52481e-17), i = J(1681e3, 1795300, 2208400), a = J(43278e5, 93046e5, 66121e5), o = r.mul(ht(z(Br).mul(a))).mul(Je(i.mul(n).add(t))).mul(Xe(qr({ x: n }).negate().mul(a))).toVar();
2554
2538
  return o.x.addAssign(z(9747e-17).mul(ht(z(Br).mul(45282e5))).mul(Je(z(2239900).mul(n).add(t.x))).mul(Xe(z(-45282e5).mul(qr({ x: n }))))), Kr.mul(o.div(1.0685e-7));
2555
- }), la = M(([e, t, n, r, i]) => {
2539
+ }), sa = M(([e, t, n, r, i]) => {
2556
2540
  let a = H(e, t, mt(0, .03, r)).toVar(), o = qr({ x: e.div(a) }).mul(z(1).sub(qr({ x: n }))).toVar(), s = z(1).sub(o).toVar(), c = J(0).toVar();
2557
2541
  return N(s.lessThan(0), () => {
2558
2542
  c.assign(J(1));
2559
2543
  }).Else(() => {
2560
- let t = ht(s).toVar(), o = Ji(n, Qi(a, e).toVar()).toVar(), l = z(1).sub(o).toVar(), u = a.lessThan(e).select(z(Rr), z(0)).toVar(), d = z(Rr).sub(u).toVar(), f = Xi(L(i, 0, .9999)).toVar(), p = Zi(f, a).toVar(), m = J(Ji(t, p.x), Ji(t, p.y), Ji(t, p.z)).toVar(), h = J(f.x.lessThan(a).select(z(Rr), z(0)), f.y.lessThan(a).select(z(Rr), z(0)), f.z.lessThan(a).select(z(Rr), z(0))).toVar(), g = z(2).mul(a).mul(r).mul(t).toVar(), _ = J(d).add(h).toVar(), v = L(J(o).mul(m), 1e-5, .9999).toVar(), y = ht(v).toVar(), b = J(l.mul(l)).mul(m).div(J(1).sub(v)).toVar(), x = J(o).add(b).toVar().toVar(), S = b.sub(J(l)).toVar();
2561
- S.mulAssign(y), x.addAssign(S.mul(z(2).mul(ca(z(1).mul(g), z(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(z(2).mul(ca(z(2).mul(g), z(2).mul(_))))), c.assign(V(x, J(0)));
2544
+ let t = ht(s).toVar(), o = Ki(n, Xi(a, e).toVar()).toVar(), l = z(1).sub(o).toVar(), u = a.lessThan(e).select(z(Rr), z(0)).toVar(), d = z(Rr).sub(u).toVar(), f = Ji(L(i, 0, .9999)).toVar(), p = Yi(f, a).toVar(), m = J(Ki(t, p.x), Ki(t, p.y), Ki(t, p.z)).toVar(), h = J(f.x.lessThan(a).select(z(Rr), z(0)), f.y.lessThan(a).select(z(Rr), z(0)), f.z.lessThan(a).select(z(Rr), z(0))).toVar(), g = z(2).mul(a).mul(r).mul(t).toVar(), _ = J(d).add(h).toVar(), v = L(J(o).mul(m), 1e-5, .9999).toVar(), y = ht(v).toVar(), b = J(l.mul(l)).mul(m).div(J(1).sub(v)).toVar(), x = J(o).add(b).toVar().toVar(), S = b.sub(J(l)).toVar();
2545
+ S.mulAssign(y), x.addAssign(S.mul(z(2).mul(oa(z(1).mul(g), z(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(z(2).mul(oa(z(2).mul(g), z(2).mul(_))))), c.assign(V(x, J(0)));
2562
2546
  }), c;
2563
- }), ua = M(([e, t, n]) => {
2547
+ }), ca = M(([e, t, n]) => {
2564
2548
  let r = n.invRoughness, i = n.metalFactor, a = z(0).toVar();
2565
2549
  N(t.isMetallic, () => {
2566
2550
  a.assign(V(r.mul(i), .7));
@@ -2619,7 +2603,7 @@ M(([e, t]) => {
2619
2603
  n.assign(L(o, 0, 1));
2620
2604
  }), n;
2621
2605
  });
2622
- var da = M(([e, t, n, r, i, a]) => {
2606
+ var la = M(([e, t, n, r, i, a]) => {
2623
2607
  let o = z(1).sub(e.roughness), s = z(.5).add(z(.5).mul(e.metalness)), c = at(z(2).div(e.ior), 1), l = V(e.sheenColor.r, V(e.sheenColor.g, e.sheenColor.b)), u = Pr({
2624
2608
  NoV: z(.5),
2625
2609
  isPurelyDiffuse: !1,
@@ -2628,7 +2612,7 @@ var da = M(([e, t, n, r, i, a]) => {
2628
2612
  alpha: e.roughness.mul(e.roughness),
2629
2613
  alpha2: e.roughness.mul(e.roughness).mul(e.roughness).mul(e.roughness),
2630
2614
  k: e.roughness.add(1).mul(e.roughness.add(1)).div(8),
2631
- F0: $i(e.ior),
2615
+ F0: Zi(e.ior),
2632
2616
  diffuseColor: e.color.rgb,
2633
2617
  specularColor: e.color.rgb,
2634
2618
  tsAlbedo: e.color,
@@ -2641,7 +2625,7 @@ var da = M(([e, t, n, r, i, a]) => {
2641
2625
  metalFactor: s,
2642
2626
  iorFactor: c,
2643
2627
  maxSheenColor: l
2644
- }), d = Or.wrap(ua(e, n, u)), f = d.diffuse.toVar(), p = d.specular.toVar(), m = d.transmission.toVar(), h = d.clearcoat.toVar();
2628
+ }), d = Or.wrap(ca(e, n, u)), f = d.diffuse.toVar(), p = d.specular.toVar(), m = d.transmission.toVar(), h = d.clearcoat.toVar();
2645
2629
  N(t.greaterThan(B(2)), () => {
2646
2630
  let e = z(1).div(z(t).sub(1));
2647
2631
  p.mulAssign(z(.8).add(e.mul(.2))), h.mulAssign(z(.7).add(e.mul(.3))), f.mulAssign(z(1).add(e.mul(.2)));
@@ -2665,8 +2649,8 @@ var da = M(([e, t, n, r, i, a]) => {
2665
2649
  clearcoatImportance: h,
2666
2650
  envmapImportance: z(0)
2667
2651
  });
2668
- }), fa = M(([e, t, n, r, i]) => {
2669
- let a = V(R(e, t), .001).toVar(), o = i.isRough.and(i.isMetallic.not()).and(n.transmission.equal(0)).and(n.clearcoat.equal(0)).toVar(), s = i.isMetallic.toVar(), c = i.isTransmissive.or(i.hasClearcoat).or(n.sheen.greaterThan(0)).or(n.iridescence.greaterThan(0)).toVar(), l = r.roughness.mul(r.roughness).toVar(), u = l.mul(l).toVar(), d = r.roughness.add(1), f = d.mul(d).div(8).toVar(), p = H($i(n.ior).mul(n.specularColor), r.albedo.rgb, r.metalness).mul(n.specularIntensity).toVar(), m = r.albedo.rgb.mul(z(1).sub(r.metalness)).toVar(), h = r.albedo.rgb.toVar(), g = z(1).sub(r.roughness).toVar(), _ = z(.5).add(z(.5).mul(r.metalness)).toVar(), v = at(z(2).div(n.ior), 1).toVar(), y = V(n.sheenColor.r, V(n.sheenColor.g, n.sheenColor.b)).toVar();
2652
+ }), ua = M(([e, t, n, r, i]) => {
2653
+ let a = V(R(e, t), .001).toVar(), o = i.isRough.and(i.isMetallic.not()).and(n.transmission.equal(0)).and(n.clearcoat.equal(0)).toVar(), s = i.isMetallic.toVar(), c = i.isTransmissive.or(i.hasClearcoat).or(n.sheen.greaterThan(0)).or(n.iridescence.greaterThan(0)).toVar(), l = r.roughness.mul(r.roughness).toVar(), u = l.mul(l).toVar(), d = r.roughness.add(1), f = d.mul(d).div(8).toVar(), p = H(Zi(n.ior).mul(n.specularColor), r.albedo.rgb, r.metalness).mul(n.specularIntensity).toVar(), m = r.albedo.rgb.mul(z(1).sub(r.metalness)).toVar(), h = r.albedo.rgb.toVar(), g = z(1).sub(r.roughness).toVar(), _ = z(.5).add(z(.5).mul(r.metalness)).toVar(), v = at(z(2).div(n.ior), 1).toVar(), y = V(n.sheenColor.r, V(n.sheenColor.g, n.sheenColor.b)).toVar();
2670
2654
  return Pr({
2671
2655
  NoV: a,
2672
2656
  isPurelyDiffuse: o,
@@ -2691,7 +2675,7 @@ var da = M(([e, t, n, r, i, a]) => {
2691
2675
  });
2692
2676
  });
2693
2677
  M(([e, t, n]) => {
2694
- let r = V(R(e, t), .001).toVar(), i = n.roughness.greaterThan(.98).and(n.metalness.lessThan(.02)).and(n.transmission.equal(0)).and(n.clearcoat.equal(0)).toVar(), a = n.metalness.greaterThan(.7).toVar(), o = n.transmission.greaterThan(0).or(n.clearcoat.greaterThan(0)).or(n.sheen.greaterThan(0)).or(n.iridescence.greaterThan(0)).toVar(), s = n.roughness.mul(n.roughness).toVar(), c = s.mul(s).toVar(), l = n.roughness.add(1), u = l.mul(l).div(8).toVar(), d = H($i(n.ior).mul(n.specularColor), n.color.rgb, n.metalness).mul(n.specularIntensity).toVar(), f = n.color.rgb.mul(z(1).sub(n.metalness)).toVar(), p = n.color.rgb.toVar(), m = jr({
2678
+ let r = V(R(e, t), .001).toVar(), i = n.roughness.greaterThan(.98).and(n.metalness.lessThan(.02)).and(n.transmission.equal(0)).and(n.clearcoat.equal(0)).toVar(), a = n.metalness.greaterThan(.7).toVar(), o = n.transmission.greaterThan(0).or(n.clearcoat.greaterThan(0)).or(n.sheen.greaterThan(0)).or(n.iridescence.greaterThan(0)).toVar(), s = n.roughness.mul(n.roughness).toVar(), c = s.mul(s).toVar(), l = n.roughness.add(1), u = l.mul(l).div(8).toVar(), d = H(Zi(n.ior).mul(n.specularColor), n.color.rgb, n.metalness).mul(n.specularIntensity).toVar(), f = n.color.rgb.mul(z(1).sub(n.metalness)).toVar(), p = n.color.rgb.toVar(), m = jr({
2695
2679
  albedo: n.color,
2696
2680
  emissive: n.emissive.mul(n.emissiveIntensity),
2697
2681
  metalness: n.metalness,
@@ -2724,9 +2708,9 @@ M(([e, t, n]) => {
2724
2708
  });
2725
2709
  //#endregion
2726
2710
  //#region src/TSL/MaterialSampling.js
2727
- var pa = /* @__PURE__ */ X("\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"), ma = /* @__PURE__ */ X("\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"), ha = /* @__PURE__ */ X("\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");
2711
+ var da = /* @__PURE__ */ X("\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"), fa = /* @__PURE__ */ X("\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"), pa = /* @__PURE__ */ X("\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");
2728
2712
  M(([e]) => V(e, Wr).mul(zr));
2729
- var ga = /* @__PURE__ */ X("\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"), _a = M(([e, t, n]) => {
2713
+ var ma = /* @__PURE__ */ X("\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"), ha = M(([e, t, n]) => {
2730
2714
  let r = Mr.wrap(ni(n)), i = z(1).sub(n.roughness), a = z(.5).add(z(.5).mul(n.metalness)), o = at(z(2).div(n.ior), 1), s = V(n.sheenColor.r, V(n.sheenColor.g, n.sheenColor.b)), c = Pr({
2731
2715
  NoV: z(.5),
2732
2716
  isPurelyDiffuse: !1,
@@ -2735,7 +2719,7 @@ var ga = /* @__PURE__ */ X("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: v
2735
2719
  alpha: n.roughness.mul(n.roughness),
2736
2720
  alpha2: n.roughness.mul(n.roughness).mul(n.roughness).mul(n.roughness),
2737
2721
  k: n.roughness.add(1).mul(n.roughness.add(1)).div(8),
2738
- F0: $i(n.ior),
2722
+ F0: Zi(n.ior),
2739
2723
  diffuseColor: n.color.rgb,
2740
2724
  specularColor: n.color.rgb,
2741
2725
  tsAlbedo: n.color,
@@ -2748,7 +2732,7 @@ var ga = /* @__PURE__ */ X("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: v
2748
2732
  metalFactor: a,
2749
2733
  iorFactor: o,
2750
2734
  maxSheenColor: s
2751
- }), l = BRDFWeights.wrap(ua(n, r, c)), u = V(R(t, e), 0), d = ct(z(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 = V(p.add(m).add(h).add(g).add(_).add(v), 1e-6).toVar(), b = z(1).div(y);
2735
+ }), l = BRDFWeights.wrap(ca(n, r, c)), u = V(R(t, e), 0), d = ct(z(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 = V(p.add(m).add(h).add(g).add(_).add(v), 1e-6).toVar(), b = z(1).div(y);
2752
2736
  return Lr({
2753
2737
  diffuse: p.mul(b),
2754
2738
  specular: m.mul(b),
@@ -2758,15 +2742,15 @@ var ga = /* @__PURE__ */ X("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: v
2758
2742
  iridescence: v.mul(b),
2759
2743
  totalWeight: y
2760
2744
  });
2761
- }), va = M(([e, t, n, r, i, a]) => {
2745
+ }), ga = M(([e, t, n, r, i, a]) => {
2762
2746
  let o = z(0).toVar(), s = z(0).toVar(), c = z(0).toVar(), l = z(0).toVar(), u = z(0).toVar(), d = R(n, e);
2763
2747
  N(d.greaterThan(0), () => {
2764
2748
  o.assign(d.div(Rr));
2765
2749
  });
2766
2750
  let f = U(t.add(e)).toVar(), p = V(R(n, f), 0), m = V(R(t, f), 0), h = V(R(n, t), 0);
2767
2751
  N(p.greaterThan(0).and(m.greaterThan(0)).and(h.greaterThan(0)), () => {
2768
- s.assign(oa(p, m, r.roughness)), N(r.clearcoat.greaterThan(0), () => {
2769
- c.assign(oa(p, m, r.clearcoatRoughness));
2752
+ s.assign(ia(p, m, r.roughness)), N(r.clearcoat.greaterThan(0), () => {
2753
+ c.assign(ia(p, m, r.clearcoatRoughness));
2770
2754
  });
2771
2755
  }), N(r.transmission.greaterThan(0).and(d.lessThan(0)), () => {
2772
2756
  l.assign(F(d).div(Rr));
@@ -2780,34 +2764,34 @@ var ga = /* @__PURE__ */ X("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: v
2780
2764
  }), C;
2781
2765
  });
2782
2766
  M(([e, t, n, r, i, a]) => {
2783
- let o = _a(e, t, n), s = $t(i), c = o.diffuse, l = c.add(o.specular), u = l.add(o.clearcoat), d = u.add(o.transmission), f = J(0).toVar(), p = z(0).toVar(), m = z(0).toVar();
2767
+ let o = ha(e, t, n), s = $t(i), c = o.diffuse, l = c.add(o.specular), u = l.add(o.clearcoat), d = u.add(o.transmission), f = J(0).toVar(), p = z(0).toVar(), m = z(0).toVar();
2784
2768
  N(s.lessThan(c), () => {
2785
- f.assign(ma({
2769
+ f.assign(fa({
2786
2770
  N: t,
2787
2771
  xi: r
2788
2772
  })), p.assign(V(R(t, f), 0).div(Rr)), m.assign(p.mul(o.diffuse));
2789
2773
  }).ElseIf(s.lessThan(l), () => {
2790
- let i = pa({
2774
+ let i = da({
2791
2775
  N: t,
2792
2776
  roughness: n.roughness,
2793
2777
  Xi: r
2794
2778
  }).toVar();
2795
2779
  f.assign(lt(e.negate(), i)), N(R(t, f).greaterThan(0), () => {
2796
2780
  let r = V(R(t, i), 0), a = V(R(e, i), 0);
2797
- p.assign(oa(r, a, n.roughness));
2781
+ p.assign(ia(r, a, n.roughness));
2798
2782
  }), m.assign(p.mul(o.specular));
2799
2783
  }).ElseIf(s.lessThan(u).and(n.clearcoat.greaterThan(0)), () => {
2800
- let i = pa({
2784
+ let i = da({
2801
2785
  N: t,
2802
2786
  roughness: n.clearcoatRoughness,
2803
2787
  Xi: r
2804
2788
  }).toVar();
2805
2789
  f.assign(lt(e.negate(), i)), N(R(t, f).greaterThan(0), () => {
2806
2790
  let r = V(R(t, i), 0), a = V(R(e, i), 0);
2807
- p.assign(oa(r, a, n.clearcoatRoughness));
2791
+ p.assign(ia(r, a, n.clearcoatRoughness));
2808
2792
  }), m.assign(p.mul(o.clearcoat));
2809
2793
  }).ElseIf(s.lessThan(d).and(n.transmission.greaterThan(0)), () => {
2810
- let i = pa({
2794
+ let i = da({
2811
2795
  N: t,
2812
2796
  roughness: n.roughness,
2813
2797
  Xi: r
@@ -2815,17 +2799,17 @@ M(([e, t, n, r, i, a]) => {
2815
2799
  N(R(a, a).greaterThan(.001), () => {
2816
2800
  f.assign(U(a));
2817
2801
  let r = V(R(t, i), 0), o = V(R(e, i), 0);
2818
- p.assign(oa(r, o, n.roughness));
2802
+ p.assign(ia(r, o, n.roughness));
2819
2803
  }).Else(() => {
2820
2804
  f.assign(lt(e.negate(), i)), p.assign(.1);
2821
2805
  }), m.assign(p.mul(o.transmission));
2822
2806
  }).Else(() => {
2823
- f.assign(ma({
2807
+ f.assign(fa({
2824
2808
  N: t,
2825
2809
  xi: r
2826
2810
  })), p.assign(V(R(t, f), 0).div(Rr)), m.assign(p.mul(o.sheen.add(o.iridescence)));
2827
2811
  });
2828
- let h = va(f, e, t, n, o, m), g = a(e, f, t, n).toVar();
2812
+ let h = ga(f, e, t, n, o, m), g = a(e, f, t, n).toVar();
2829
2813
  return g.mulAssign(h), Dr({
2830
2814
  direction: f,
2831
2815
  value: g,
@@ -2834,11 +2818,11 @@ M(([e, t, n, r, i, a]) => {
2834
2818
  });
2835
2819
  //#endregion
2836
2820
  //#region src/TSL/MaterialTransmission.js
2837
- var ya = Cr({
2821
+ var _a = Cr({
2838
2822
  direction: "vec3",
2839
2823
  throughput: "vec3",
2840
2824
  didReflect: "bool"
2841
- }), ba = Cr({
2825
+ }), va = Cr({
2842
2826
  continueRay: "bool",
2843
2827
  isTransmissive: "bool",
2844
2828
  isAlphaSkip: "bool",
@@ -2854,11 +2838,11 @@ Cr({
2854
2838
  attenuationDistance: "float",
2855
2839
  dispersion: "float"
2856
2840
  });
2857
- var xa = Cr({
2841
+ var ya = Cr({
2858
2842
  wavelength: "float",
2859
2843
  ior: "float",
2860
2844
  colorWeight: "vec3"
2861
- }), Sa = Cr({
2845
+ }), ba = Cr({
2862
2846
  direction: "vec3",
2863
2847
  halfVector: "vec3",
2864
2848
  didReflect: "bool",
@@ -2894,7 +2878,7 @@ Cr({
2894
2878
  });
2895
2879
  }), t;
2896
2880
  });
2897
- var Ca = M(([e, t, n]) => {
2881
+ var xa = M(([e, t, n]) => {
2898
2882
  let r = H(z(380), z(700), n).toVar(), i = r.div(1e3), a = e, o = t.mul(.03), s = a.add(o.div(i.mul(i))).toVar(), c = J(0).toVar();
2899
2883
  return N(r.greaterThanEqual(380).and(r.lessThan(420)), () => {
2900
2884
  c.assign(J(.9, 0, 1));
@@ -2910,17 +2894,17 @@ var Ca = M(([e, t, n]) => {
2910
2894
  c.assign(J(1, .5, 0));
2911
2895
  }), N(r.greaterThanEqual(620).and(r.lessThanEqual(700)), () => {
2912
2896
  c.assign(J(1, 0, 0));
2913
- }), c.assign(ct(c, J(.4))), c.assign(L(c, J(0), J(2))), xa({
2897
+ }), c.assign(ct(c, J(.4))), c.assign(L(c, J(0), J(2))), ya({
2914
2898
  wavelength: r,
2915
2899
  ior: s,
2916
2900
  colorWeight: c
2917
2901
  });
2918
- }), wa = /* @__PURE__ */ X("\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"), Ta = M(([e, t, n, r]) => {
2902
+ }), Sa = /* @__PURE__ */ X("\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"), Ca = M(([e, t, n, r]) => {
2919
2903
  let i = W(r, z(1), n.ior).toVar(), a = W(r, n.ior, z(1)).toVar(), o = F(R(t, e)), s = i.mul(i).div(a.mul(a)).mul(z(1).sub(o.mul(o))), c = z(0).toVar();
2920
2904
  return N(s.lessThanEqual(1), () => {
2921
- let e = Ji(o, Qi(a, i)), t = z(1).sub(e).mul(n.transmission).toVar();
2905
+ let e = Ki(o, Xi(a, i)), t = z(1).sub(e).mul(n.transmission).toVar();
2922
2906
  N(r.not().and(n.attenuationDistance.greaterThan(0)), () => {
2923
- let e = wa({
2907
+ let e = Sa({
2924
2908
  attenuationColor: n.attenuationColor,
2925
2909
  attenuationDistance: n.attenuationDistance,
2926
2910
  thickness: n.thickness
@@ -2928,8 +2912,8 @@ var Ca = M(([e, t, n]) => {
2928
2912
  t.assign(t.mul(e.x.add(e.y).add(e.z).div(3)));
2929
2913
  }), c.assign(L(t, 0, 1));
2930
2914
  }), c;
2931
- }), Ea = M(([e, t, n, r, i, a, o, s]) => {
2932
- let c = Sa({
2915
+ }), wa = M(([e, t, n, r, i, a, o, s]) => {
2916
+ let c = ba({
2933
2917
  direction: J(0),
2934
2918
  halfVector: J(0),
2935
2919
  didReflect: !1,
@@ -2937,7 +2921,7 @@ var Ca = M(([e, t, n]) => {
2937
2921
  }).toVar();
2938
2922
  return N(r.lessThanEqual(.05).and(a.greaterThan(0)), () => {
2939
2923
  c.halfVector.assign(t), c.didReflect.assign(!1);
2940
- let r = n, o = W(i, z(1).div(r), r).toVar(), l = xa.wrap(Ca(n, a, $t(s)));
2924
+ let r = n, o = W(i, z(1).div(r), r).toVar(), l = ya.wrap(xa(n, a, $t(s)));
2941
2925
  o.assign(W(i, z(1).div(l.ior), l.ior));
2942
2926
  let u = ut(e.negate(), t, o).toVar();
2943
2927
  N(R(u, u).lessThan(.001), () => {
@@ -2946,7 +2930,7 @@ var Ca = M(([e, t, n]) => {
2946
2930
  c.direction.assign(u), c.pdf.assign(1);
2947
2931
  });
2948
2932
  }).Else(() => {
2949
- let l = V(Hr, r), u = pa({
2933
+ let l = V(Hr, r), u = da({
2950
2934
  N: t,
2951
2935
  roughness: l,
2952
2936
  Xi: o
@@ -2954,26 +2938,26 @@ var Ca = M(([e, t, n]) => {
2954
2938
  c.halfVector.assign(u);
2955
2939
  let d = W(i, z(1).div(n), n).toVar();
2956
2940
  N(a.greaterThan(0), () => {
2957
- let e = xa.wrap(Ca(n, a, $t(s)));
2941
+ let e = ya.wrap(xa(n, a, $t(s)));
2958
2942
  d.assign(W(i, z(1).div(e.ior), e.ior));
2959
2943
  });
2960
2944
  let f = L(R(u, e), .001, 1), p = ut(e.negate(), u, d).toVar();
2961
2945
  N(R(p, p).lessThan(.001), () => {
2962
2946
  c.direction.assign(lt(e.negate(), u)), c.didReflect.assign(!0);
2963
2947
  let n = L(R(t, u), .001, 1), r = L(R(e, u), .001, 1);
2964
- c.pdf.assign(oa(n, r, l));
2948
+ c.pdf.assign(ia(n, r, l));
2965
2949
  }).Else(() => {
2966
2950
  c.direction.assign(p), c.didReflect.assign(!1);
2967
- let e = L(R(t, u), .001, 1), n = L(R(u, p), .001, 1), r = ea(e, l), i = f.add(d.mul(n)), a = F(n).div(i.mul(i));
2951
+ let e = L(R(t, u), .001, 1), n = L(R(u, p), .001, 1), r = Qi(e, l), i = f.add(d.mul(n)), a = F(n).div(i.mul(i));
2968
2952
  c.pdf.assign(r.mul(e).mul(a));
2969
2953
  });
2970
2954
  }), c;
2971
- }), Da = M(([e, t, n, r, i, a, o]) => {
2972
- let s = ya({
2955
+ }), Ta = M(([e, t, n, r, i, a, o]) => {
2956
+ let s = _a({
2973
2957
  direction: J(0),
2974
2958
  throughput: J(1),
2975
2959
  didReflect: !1
2976
- }).toVar(), c = W(r, t, t.negate()).toVar(), l = e.negate().toVar(), u = W(r, a, n.ior).toVar(), d = W(r, n.ior, o).toVar(), f = F(R(c, e)), p = u.mul(u).div(d.mul(d)).mul(z(1).sub(f.mul(f))).greaterThan(1).toVar(), m = Qi(d, u), h = W(p, z(1), Ji(f, m)).toVar(), g = z(0).toVar();
2960
+ }).toVar(), c = W(r, t, t.negate()).toVar(), l = e.negate().toVar(), u = W(r, a, n.ior).toVar(), d = W(r, n.ior, o).toVar(), f = F(R(c, e)), p = u.mul(u).div(d.mul(d)).mul(z(1).sub(f.mul(f))).greaterThan(1).toVar(), m = Xi(d, u), h = W(p, z(1), Ki(f, m)).toVar(), g = z(0).toVar();
2977
2961
  N(p, () => {
2978
2962
  g.assign(1);
2979
2963
  }).Else(() => {
@@ -2985,14 +2969,14 @@ var Ca = M(([e, t, n]) => {
2985
2969
  let v = q($t(i).toVar(), $t(i).toVar());
2986
2970
  return N(_, () => {
2987
2971
  N(n.roughness.greaterThan(.05), () => {
2988
- let e = Sa.wrap(Ea(l, c, n.ior, n.roughness, r, z(0), v, i));
2972
+ let e = ba.wrap(wa(l, c, n.ior, n.roughness, r, z(0), v, i));
2989
2973
  s.direction.assign(e.direction);
2990
2974
  }).Else(() => {
2991
2975
  s.direction.assign(lt(e, c));
2992
2976
  }), s.throughput.assign(n.color.xyz.mul(h).div(V(g, .05)));
2993
2977
  }).Else(() => {
2994
2978
  N(n.roughness.greaterThan(.05).or(n.dispersion.greaterThan(0)), () => {
2995
- let t = Sa.wrap(Ea(l, c, n.ior, n.roughness, r, n.dispersion, v, i));
2979
+ let t = ba.wrap(wa(l, c, n.ior, n.roughness, r, n.dispersion, v, i));
2996
2980
  N(t.didReflect, () => {
2997
2981
  s.direction.assign(t.direction), s.didReflect.assign(!0), s.throughput.assign(n.color.xyz.div(V(z(1).sub(g), .05)));
2998
2982
  }).Else(() => {
@@ -3030,7 +3014,7 @@ var Ca = M(([e, t, n]) => {
3030
3014
  s.direction.assign(ut(e, c, u.div(d))), s.throughput.assign(J(1));
3031
3015
  }), N(s.didReflect.not(), () => {
3032
3016
  s.throughput.mulAssign(n.color.xyz), s.throughput.mulAssign(u.mul(u).div(V(d.mul(d), Vr))), N(r.and(n.attenuationDistance.greaterThan(0)), () => {
3033
- s.throughput.mulAssign(wa({
3017
+ s.throughput.mulAssign(Sa({
3034
3018
  attenuationColor: n.attenuationColor,
3035
3019
  attenuationDistance: n.attenuationDistance,
3036
3020
  thickness: n.thickness
@@ -3038,8 +3022,8 @@ var Ca = M(([e, t, n]) => {
3038
3022
  }), s.throughput.mulAssign(z(1).sub(h).div(V(z(1).sub(g), .05)));
3039
3023
  });
3040
3024
  }), s;
3041
- }), Oa = M(([e, t, n, r, i, a, o, s]) => {
3042
- let c = ba({
3025
+ }), Ea = M(([e, t, n, r, i, a, o, s]) => {
3026
+ let c = va({
3043
3027
  continueRay: !1,
3044
3028
  isTransmissive: !1,
3045
3029
  isAlphaSkip: !1,
@@ -3067,17 +3051,17 @@ var Ca = M(([e, t, n]) => {
3067
3051
  });
3068
3052
  }), N(d.not().and(r.transmission.greaterThan(0)).and(a.greaterThan(B(0))), () => {
3069
3053
  N(l.lessThan(r.transmission), () => {
3070
- let t = R(e.direction, n).lessThan(0), i = ya.wrap(Da(e.direction, n, r, t, u, o, s));
3054
+ let t = R(e.direction, n).lessThan(0), i = _a.wrap(Ta(e.direction, n, r, t, u, o, s));
3071
3055
  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(z(1).sub(r.transmission));
3072
3056
  });
3073
3057
  });
3074
3058
  }), c;
3075
- }), ka = M(([e, t, n, r]) => {
3059
+ }), Da = M(([e, t, n, r]) => {
3076
3060
  let i = J(0).toVar();
3077
3061
  return N(r.roughness.greaterThan(.98).and(r.metalness.lessThan(.02)).and(r.transmission.equal(0)).and(r.clearcoat.equal(0)).and(r.iridescence.equal(0)), () => {
3078
3062
  i.assign(r.color.rgb.mul(z(1).sub(r.metalness)).mul(zr));
3079
3063
  }).Else(() => {
3080
- let a = Ar.wrap(Qr(n, e, t)), o = L(H($i(r.ior).mul(r.specularColor), r.color.rgb, r.metalness).mul(r.specularIntensity), J(0), J(1)).toVar(), s = r.color.rgb.toVar();
3064
+ let a = Ar.wrap(Qr(n, e, t)), o = L(H(Zi(r.ior).mul(r.specularColor), r.color.rgb, r.metalness).mul(r.specularIntensity), J(0), J(1)).toVar(), s = r.color.rgb.toVar();
3081
3065
  N(r.dispersion.greaterThan(0).and(r.transmission.greaterThan(.5)), () => {
3082
3066
  let e = L(r.dispersion.mul(.1), 0, .8), t = V(V(s.r, s.g), s.b), n = at(at(s.r, s.g), s.b);
3083
3067
  N(t.greaterThan(n), () => {
@@ -3085,12 +3069,12 @@ var Ca = M(([e, t, n]) => {
3085
3069
  s.assign(H(s, r, e.mul(.3)));
3086
3070
  });
3087
3071
  }), N(r.iridescence.greaterThan(0), () => {
3088
- let e = r.iridescenceThicknessRange.y, t = la(z(1), r.iridescenceIOR, a.VoH, e, o);
3072
+ let e = r.iridescenceThicknessRange.y, t = sa(z(1), r.iridescenceIOR, a.VoH, e, o);
3089
3073
  o.assign(H(o, t, r.iridescence));
3090
3074
  });
3091
- let c = ea(a.NoH, r.roughness), l = ra(a.NoV, a.NoL, r.roughness), u = Yi(a.VoH, o).toVar(), d = c.mul(l).mul(u).div(V(z(4).mul(a.NoV).mul(a.NoL), Vr)).mul(ia(o, a.NoV, r.roughness)), f = aa(o, a.NoV, r.roughness), p = J(1).sub(f).mul(z(1).sub(r.metalness)).mul(s).mul(zr).add(d).toVar();
3075
+ let c = Qi(a.NoH, r.roughness), l = ta(a.NoV, a.NoL, r.roughness), u = qi(a.VoH, o).toVar(), d = c.mul(l).mul(u).div(V(z(4).mul(a.NoV).mul(a.NoL), Vr)).mul(na(o, a.NoV, r.roughness)), f = ra(o, a.NoV, r.roughness), p = J(1).sub(f).mul(z(1).sub(r.metalness)).mul(s).mul(zr).add(d).toVar();
3092
3076
  N(r.sheen.greaterThan(0), () => {
3093
- let e = ta(a.NoH, r.sheenRoughness), t = r.sheenColor.mul(r.sheen).mul(e).mul(a.NoL), n = z(1).sub(r.sheenRoughness).mul(.5).add(.25), o = L(r.sheenColor.mul(r.sheen).mul(n), J(0), J(1)), s = J(1).sub(o);
3077
+ let e = $i(a.NoH, r.sheenRoughness), t = r.sheenColor.mul(r.sheen).mul(e).mul(a.NoL), n = z(1).sub(r.sheenRoughness).mul(.5).add(.25), o = L(r.sheenColor.mul(r.sheen).mul(n), J(0), J(1)), s = J(1).sub(o);
3094
3078
  i.assign(p.mul(s).add(t));
3095
3079
  }).Else(() => {
3096
3080
  i.assign(p);
@@ -3106,16 +3090,16 @@ M(([e, t, n, r, i]) => {
3106
3090
  o.assign(s.greaterThan(Vr).select(o.div(ht(s)), J(0, 0, 1)));
3107
3091
  let c = V(R(n, t), Vr), l = V(R(n, o), Vr), u = V(R(e, o), Vr);
3108
3092
  N(i.NoV.mul(c).lessThan(0).and(r.transmission.greaterThan(0)), () => {
3109
- a.assign(ka(e, t, n, r));
3093
+ a.assign(Da(e, t, n, r));
3110
3094
  }).Else(() => {
3111
3095
  let e = i.F0.toVar();
3112
3096
  N(r.iridescence.greaterThan(0), () => {
3113
- let t = r.iridescenceThicknessRange.y, n = la(z(1), r.iridescenceIOR, u, t, e);
3097
+ let t = r.iridescenceThicknessRange.y, n = sa(z(1), r.iridescenceIOR, u, t, e);
3114
3098
  e.assign(L(H(e, n, r.iridescence), J(0), J(1)));
3115
3099
  });
3116
- let t = l.mul(l).mul(i.alpha2.sub(1)).add(1), n = i.alpha2.div(V(z(Rr).mul(t).mul(t), Vr)), o = c.div(c.mul(z(1).sub(i.k)).add(i.k)), s = i.NoV.div(i.NoV.mul(z(1).sub(i.k)).add(i.k)), d = o.mul(s), f = Yi(u, e).toVar(), p = V(z(4).mul(i.NoV).mul(c), Vr), m = n.mul(d).mul(f).div(p).mul(ia(e, i.NoV, r.roughness)), h = aa(e, i.NoV, r.roughness), g = J(1).sub(h).mul(z(1).sub(r.metalness)).mul(r.color.rgb).mul(zr).add(m).toVar();
3100
+ let t = l.mul(l).mul(i.alpha2.sub(1)).add(1), n = i.alpha2.div(V(z(Rr).mul(t).mul(t), Vr)), o = c.div(c.mul(z(1).sub(i.k)).add(i.k)), s = i.NoV.div(i.NoV.mul(z(1).sub(i.k)).add(i.k)), d = o.mul(s), f = qi(u, e).toVar(), p = V(z(4).mul(i.NoV).mul(c), Vr), m = n.mul(d).mul(f).div(p).mul(na(e, i.NoV, r.roughness)), h = ra(e, i.NoV, r.roughness), g = J(1).sub(h).mul(z(1).sub(r.metalness)).mul(r.color.rgb).mul(zr).add(m).toVar();
3117
3101
  N(r.sheen.greaterThan(0), () => {
3118
- let e = ta(l, r.sheenRoughness), t = r.sheenColor.mul(r.sheen).mul(e).mul(c), n = z(1).sub(r.sheenRoughness).mul(.5).add(.25), i = L(r.sheenColor.mul(r.sheen).mul(n), J(0), J(1)), o = J(1).sub(i);
3102
+ let e = $i(l, r.sheenRoughness), t = r.sheenColor.mul(r.sheen).mul(e).mul(c), n = z(1).sub(r.sheenRoughness).mul(.5).add(.25), i = L(r.sheenColor.mul(r.sheen).mul(n), J(0), J(1)), o = J(1).sub(i);
3119
3103
  a.assign(g.mul(o).add(t));
3120
3104
  }).Else(() => {
3121
3105
  a.assign(g);
@@ -3123,50 +3107,50 @@ M(([e, t, n, r, i]) => {
3123
3107
  });
3124
3108
  }), a;
3125
3109
  }), M(([e, t]) => {
3126
- let n = Ji(t, z(.04));
3110
+ let n = Ki(t, z(.04));
3127
3111
  return z(1).sub(e.mul(n).mul(z(2).sub(n)));
3128
3112
  });
3129
- var Aa = M(([e, t]) => {
3130
- let n = L(H($i(t.ior).mul(t.specularColor), t.color.rgb, t.metalness).mul(t.specularIntensity), J(0), J(1)).toVar(), r = ea(e.NoH, t.roughness), i = ra(e.NoV, e.NoL, t.roughness), a = Yi(e.VoH, n).toVar(), o = r.mul(i).mul(a).div(V(z(4).mul(e.NoV).mul(e.NoL), Vr)).mul(ia(n, e.NoV, t.roughness)), s = aa(n, e.NoV, t.roughness), c = J(1).sub(s).mul(z(1).sub(t.metalness)).mul(t.color.rgb).div(Rr).add(o), l = V(t.clearcoatRoughness, Ur), u = ea(e.NoH, l), d = ra(e.NoV, e.NoL, l), f = Ji(e.VoH, z(.04)), p = u.mul(d).mul(f).div(V(z(4).mul(e.NoV).mul(e.NoL), Vr)), m = z(1).sub(t.clearcoat.mul(f).mul(z(2).sub(f)));
3113
+ var Oa = M(([e, t]) => {
3114
+ let n = L(H(Zi(t.ior).mul(t.specularColor), t.color.rgb, t.metalness).mul(t.specularIntensity), J(0), J(1)).toVar(), r = Qi(e.NoH, t.roughness), i = ta(e.NoV, e.NoL, t.roughness), a = qi(e.VoH, n).toVar(), o = r.mul(i).mul(a).div(V(z(4).mul(e.NoV).mul(e.NoL), Vr)).mul(na(n, e.NoV, t.roughness)), s = ra(n, e.NoV, t.roughness), c = J(1).sub(s).mul(z(1).sub(t.metalness)).mul(t.color.rgb).div(Rr).add(o), l = V(t.clearcoatRoughness, Ur), u = Qi(e.NoH, l), d = ta(e.NoV, e.NoL, l), f = Ki(e.VoH, z(.04)), p = u.mul(d).mul(f).div(V(z(4).mul(e.NoV).mul(e.NoL), Vr)), m = z(1).sub(t.clearcoat.mul(f).mul(z(2).sub(f)));
3131
3115
  return c.mul(m).add(J(p).mul(t.clearcoat));
3132
- }), ja = Cr({
3116
+ }), ka = Cr({
3133
3117
  brdf: "vec3",
3134
3118
  L: "vec3",
3135
3119
  pdf: "float"
3136
- }), Ma = M(([e, t, n, r, i]) => {
3120
+ }), Aa = M(([e, t, n, r, i]) => {
3137
3121
  let a = t.normal, o = e.direction.negate(), s = V(n.clearcoatRoughness, Ur), c = V(n.roughness, Ur), l = z(1).sub(c).mul(z(.5).add(z(.5).mul(n.metalness))).toVar(), u = n.clearcoat.mul(z(1).sub(s)).toVar(), d = z(1).sub(l).mul(z(1).sub(n.metalness)).toVar(), f = l.add(u).add(d);
3138
3122
  l.divAssign(f), u.divAssign(f), d.divAssign(f);
3139
3123
  let p = $t(i), m = J(0).toVar(), h = J(0).toVar();
3140
3124
  N(p.lessThan(u), () => {
3141
- h.assign(pa({
3125
+ h.assign(da({
3142
3126
  N: a,
3143
3127
  roughness: s,
3144
3128
  Xi: r
3145
3129
  })), m.assign(lt(o.negate(), h));
3146
3130
  }).ElseIf(p.lessThan(u.add(l)), () => {
3147
- h.assign(pa({
3131
+ h.assign(da({
3148
3132
  N: a,
3149
3133
  roughness: c,
3150
3134
  Xi: r
3151
3135
  })), m.assign(lt(o.negate(), h));
3152
3136
  }).Else(() => {
3153
- m.assign(ma({
3137
+ m.assign(fa({
3154
3138
  N: a,
3155
3139
  xi: r
3156
3140
  })), h.assign(U(o.add(m)));
3157
3141
  });
3158
- let g = Ar.wrap(Qr(a, o, m)), _ = ea(g.NoH, s).mul(g.NoH).div(z(4).mul(g.VoH)).mul(u), v = ea(g.NoH, c).mul(g.NoH).div(z(4).mul(g.VoH)).mul(l), y = g.NoL.div(Rr).mul(d), b = V(_.add(v).add(y), .001);
3159
- return ja({
3160
- brdf: Aa(g, n),
3142
+ let g = Ar.wrap(Qr(a, o, m)), _ = Qi(g.NoH, s).mul(g.NoH).div(z(4).mul(g.VoH)).mul(u), v = Qi(g.NoH, c).mul(g.NoH).div(z(4).mul(g.VoH)).mul(l), y = g.NoL.div(Rr).mul(d), b = V(_.add(v).add(y), .001);
3143
+ return ka({
3144
+ brdf: Oa(g, n),
3161
3145
  L: m,
3162
3146
  pdf: b
3163
3147
  });
3164
- }), Na = Cr({
3148
+ }), ja = Cr({
3165
3149
  direction: "vec3",
3166
3150
  color: "vec3",
3167
3151
  intensity: "float",
3168
3152
  angle: "float"
3169
- }), Pa = Cr({
3153
+ }), Ma = Cr({
3170
3154
  position: "vec3",
3171
3155
  u: "vec3",
3172
3156
  v: "vec3",
@@ -3174,13 +3158,13 @@ var Aa = M(([e, t]) => {
3174
3158
  intensity: "float",
3175
3159
  normal: "vec3",
3176
3160
  area: "float"
3177
- }), Fa = Cr({
3161
+ }), Na = Cr({
3178
3162
  position: "vec3",
3179
3163
  color: "vec3",
3180
3164
  intensity: "float",
3181
3165
  distance: "float",
3182
3166
  decay: "float"
3183
- }), Ia = Cr({
3167
+ }), Pa = Cr({
3184
3168
  position: "vec3",
3185
3169
  direction: "vec3",
3186
3170
  color: "vec3",
@@ -3189,30 +3173,30 @@ var Aa = M(([e, t]) => {
3189
3173
  penumbra: "float",
3190
3174
  distance: "float",
3191
3175
  decay: "float"
3192
- }), La = Cr({
3176
+ }), Fa = Cr({
3193
3177
  direction: "vec3",
3194
3178
  emission: "vec3",
3195
3179
  pdf: "float",
3196
3180
  distance: "float",
3197
3181
  lightType: "int",
3198
3182
  valid: "bool"
3199
- }), Ra = Cr({
3183
+ }), Ia = Cr({
3200
3184
  direction: "vec3",
3201
3185
  throughput: "vec3",
3202
3186
  misWeight: "float",
3203
3187
  pdf: "float",
3204
3188
  combinedPdf: "float"
3205
- }), za = M(([e, t]) => {
3189
+ }), La = M(([e, t]) => {
3206
3190
  let n = t.mul(8);
3207
- return Na({
3191
+ return ja({
3208
3192
  direction: U(J(e.element(n), e.element(n.add(1)), e.element(n.add(2)))),
3209
3193
  color: J(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
3210
3194
  intensity: e.element(n.add(6)),
3211
3195
  angle: e.element(n.add(7))
3212
3196
  });
3213
- }), Ba = M(([e, t]) => {
3197
+ }), Ra = M(([e, t]) => {
3214
3198
  let n = t.mul(13), r = J(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = J(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a = Ye(r, i);
3215
- return Pa({
3199
+ return Ma({
3216
3200
  position: J(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
3217
3201
  u: r,
3218
3202
  v: i,
@@ -3221,18 +3205,18 @@ var Aa = M(([e, t]) => {
3221
3205
  normal: U(a),
3222
3206
  area: et(a).mul(4)
3223
3207
  });
3224
- }), Va = M(([e, t]) => {
3208
+ }), za = M(([e, t]) => {
3225
3209
  let n = t.mul(9);
3226
- return Fa({
3210
+ return Na({
3227
3211
  position: J(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
3228
3212
  color: J(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
3229
3213
  intensity: e.element(n.add(6)),
3230
3214
  distance: e.element(n.add(7)),
3231
3215
  decay: e.element(n.add(8))
3232
3216
  });
3233
- }), Ha = M(([e, t]) => {
3217
+ }), Ba = M(([e, t]) => {
3234
3218
  let n = t.mul(14);
3235
- return Ia({
3219
+ return Pa({
3236
3220
  position: J(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
3237
3221
  direction: U(J(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5)))),
3238
3222
  color: J(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))),
@@ -3242,7 +3226,7 @@ var Aa = M(([e, t]) => {
3242
3226
  distance: e.element(n.add(12)),
3243
3227
  decay: e.element(n.add(13))
3244
3228
  });
3245
- }), Ua = /* @__PURE__ */ X("\n fn isDirectionValid( direction: vec3f, surfaceNormal: vec3f ) -> bool {\n return dot( direction, surfaceNormal ) > 0.0f;\n }\n"), Wa = /* @__PURE__ */ X("\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"), Ga = /* @__PURE__ */ X("\n fn getSpotAttenuation( coneCosine: f32, penumbraCosine: f32, angleCosine: f32 ) -> f32 {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n }\n"), Ka = /* @__PURE__ */ X("\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"), qa = M(([e, t, n]) => {
3229
+ }), Va = /* @__PURE__ */ X("\n fn isDirectionValid( direction: vec3f, surfaceNormal: vec3f ) -> bool {\n return dot( direction, surfaceNormal ) > 0.0f;\n }\n"), Ha = /* @__PURE__ */ X("\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"), Ua = /* @__PURE__ */ X("\n fn getSpotAttenuation( coneCosine: f32, penumbraCosine: f32, angleCosine: f32 ) -> f32 {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n }\n"), Wa = /* @__PURE__ */ X("\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"), Ga = M(([e, t, n]) => {
3246
3230
  let r = e.normal, i = R(r, n), a = z(-1).toVar();
3247
3231
  return N(i.lessThan(-1e-4), () => {
3248
3232
  let o = z(1).div(i), s = R(e.position.sub(t), r).mul(o).toVar();
@@ -3257,13 +3241,13 @@ var Aa = M(([e, t]) => {
3257
3241
  M(([e, t, n]) => {
3258
3242
  let r = z(1).toVar();
3259
3243
  return N(e.material.transmission.greaterThan(0), () => {
3260
- let n = R(t, e.normal).lessThan(0), i = Ta(t, e.normal, e.material, n);
3244
+ let n = R(t, e.normal).lessThan(0), i = Ca(t, e.normal, e.material, n);
3261
3245
  r.assign(z(1).sub(i));
3262
3246
  }).ElseIf(e.material.transparent, () => {
3263
3247
  r.assign(e.material.opacity);
3264
3248
  }), r;
3265
3249
  });
3266
- var Ja = M(([e, t, n, r, i, a, o, s]) => {
3250
+ var Ka = M(([e, t, n, r, i, a, o, s]) => {
3267
3251
  let c = z(1).toVar(), l = e.toVar(), u = z(n).toVar();
3268
3252
  return P({
3269
3253
  start: B(0),
@@ -3280,10 +3264,10 @@ var Ja = M(([e, t, n, r, i, a, o, s]) => {
3280
3264
  N(r.transmission.greaterThan(0), () => {
3281
3265
  let e = R(t, n.normal).lessThan(0), i = W(e, n.normal, n.normal.negate());
3282
3266
  N(e.not().and(r.attenuationDistance.greaterThan(0)), () => {
3283
- let e = et(n.hitPoint.sub(l)), t = wa(r.attenuationColor, r.attenuationDistance, e);
3267
+ let e = et(n.hitPoint.sub(l)), t = Sa(r.attenuationColor, r.attenuationDistance, e);
3284
3268
  c.mulAssign(t.x.add(t.y).add(t.z).div(3));
3285
3269
  });
3286
- let a = Ji(F(R(t, i)), Qi(r.ior, z(1))), o = z(1).sub(a).mul(r.transmission);
3270
+ let a = Ki(F(R(t, i)), Xi(r.ior, z(1))), o = z(1).sub(a).mul(r.transmission);
3287
3271
  c.mulAssign(o), N(c.lessThan(.005), () => {
3288
3272
  c.assign(0), Ve();
3289
3273
  }), l.assign(n.hitPoint.add(t.mul(.001))), u.subAssign(n.dst.add(.001));
@@ -3295,14 +3279,14 @@ var Ja = M(([e, t, n, r, i, a, o, s]) => {
3295
3279
  c.assign(0), Ve();
3296
3280
  });
3297
3281
  }), c;
3298
- }), Ya = M(([e, t, n]) => {
3282
+ }), qa = M(([e, t, n]) => {
3299
3283
  let r = V(z(1e-4), et(e).mul(1e-6)).toVar().toVar();
3300
3284
  return N(n.transmission.greaterThan(0), () => {
3301
3285
  r.mulAssign(2);
3302
3286
  }), N(n.roughness.lessThan(.1), () => {
3303
3287
  r.mulAssign(1.5);
3304
3288
  }), t.mul(r);
3305
- }), Xa = M(([e, t, n, r, i]) => {
3289
+ }), Ja = M(([e, t, n, r, i]) => {
3306
3290
  let a = V(z(0), R(n, e.direction)), o = z(0).toVar();
3307
3291
  return N(a.greaterThan(0), () => {
3308
3292
  let t = e.intensity.mul(R(e.color, Gr)), n = z(1).toVar();
@@ -3314,7 +3298,7 @@ var Ja = M(([e, t, n, r, i, a, o, s]) => {
3314
3298
  let s = z(1).div(z(1).add(z(i).mul(.5)));
3315
3299
  o.assign(t.mul(a).mul(n).mul(s));
3316
3300
  }), o;
3317
- }), Za = M(([e, t, n, r]) => {
3301
+ }), Ya = M(([e, t, n, r]) => {
3318
3302
  let i = e.position.sub(t), a = et(i), o = a.mul(a), s = i.div(a), c = V(R(n, s), 0), l = z(0).toVar();
3319
3303
  return N(c.greaterThan(0), () => {
3320
3304
  let t = V(R(s, e.normal).negate(), 0);
@@ -3332,7 +3316,7 @@ var Ja = M(([e, t, n, r, i, a, o, s]) => {
3332
3316
  }), l.assign(i.mul(n).mul(c).mul(t).mul(a));
3333
3317
  });
3334
3318
  }), l;
3335
- }), Qa = M(([e, t, n, r]) => {
3319
+ }), Xa = M(([e, t, n, r]) => {
3336
3320
  let i = e.position.sub(t), a = R(i, i), o = z(0).toVar();
3337
3321
  return N(a.greaterThanEqual(.001), () => {
3338
3322
  let t = ht(a), s = i.div(t), c = V(z(0), R(n, s));
@@ -3349,7 +3333,7 @@ var Ja = M(([e, t, n, r, i, a, o, s]) => {
3349
3333
  }), o.assign(n.mul(t).mul(c).mul(i));
3350
3334
  });
3351
3335
  }), o;
3352
- }), $a = M(([e, t, n, r]) => {
3336
+ }), Za = M(([e, t, n, r]) => {
3353
3337
  let i = e.position.sub(t), a = R(i, i), o = z(0).toVar();
3354
3338
  return N(a.greaterThanEqual(.001), () => {
3355
3339
  let t = i.div(ht(a)), s = V(z(0), R(n, t));
@@ -3361,7 +3345,7 @@ var Ja = M(([e, t, n, r, i, a, o, s]) => {
3361
3345
  });
3362
3346
  });
3363
3347
  }), o;
3364
- }), eo = M(([e, t, n, r]) => {
3348
+ }), Qa = M(([e, t, n, r]) => {
3365
3349
  let i = V(z(0), R(t, e.direction)), a = I(!1).toVar();
3366
3350
  return N(e.intensity.lessThanEqual(.001).or(i.lessThanEqual(.001)), () => {
3367
3351
  a.assign(!0);
@@ -3377,11 +3361,11 @@ var Ja = M(([e, t, n, r, i, a, o, s]) => {
3377
3361
  });
3378
3362
  M(([e, t, n, r, i, a, o, s, c, l, u]) => {
3379
3363
  let d = J(0).toVar();
3380
- return N(eo(e, n, i, s).not(), () => {
3381
- let f = Ya(t, n, i), p = t.add(f), m = J(0).toVar(), h = z(1e6).toVar();
3364
+ return N(Qa(e, n, i, s).not(), () => {
3365
+ let f = qa(t, n, i), p = t.add(f), m = J(0).toVar(), h = z(1e6).toVar();
3382
3366
  N(e.angle.greaterThan(.001), () => {
3383
3367
  let t = q($t(c).toVar(), $t(c).toVar()), n = e.angle.mul(.5);
3384
- m.assign(Ka({
3368
+ m.assign(Wa({
3385
3369
  direction: e.direction,
3386
3370
  halfAngle: n,
3387
3371
  xi: t
@@ -3413,9 +3397,9 @@ M(([e, t, n, r, i, a, o, s, c, l, u]) => {
3413
3397
  });
3414
3398
  }), d;
3415
3399
  }), M(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
3416
- let p = J(0).toVar(), m = Za(e, t, n, i);
3400
+ let p = J(0).toVar(), m = Ya(e, t, n, i);
3417
3401
  return N(m.greaterThanEqual(.001), () => {
3418
- let h = Ya(t, n, i), g = t.add(h), _ = i.roughness.greaterThan(.7).and(i.metalness.lessThan(.3)), v = i.roughness.lessThan(.3).or(i.metalness.greaterThan(.7)), y = c.equal(B(0));
3402
+ let h = qa(t, n, i), g = t.add(h), _ = i.roughness.greaterThan(.7).and(i.metalness.lessThan(.3)), v = i.roughness.lessThan(.3).or(i.metalness.greaterThan(.7)), y = c.equal(B(0));
3419
3403
  N(y.or(_).or(m.greaterThan(.1).and(v.not())), () => {
3420
3404
  let m = f(s, c, l), h = e.position.add(e.u.mul(m.x.sub(.5))).add(e.v.mul(m.y.sub(.5))).sub(t), _ = R(h, h), v = ht(_), b = h.div(v), x = V(z(0), R(n, b)), S = V(z(0), R(b, e.normal).negate());
3421
3405
  N(x.greaterThan(0).and(S.greaterThan(0)), () => {
@@ -3430,7 +3414,7 @@ M(([e, t, n, r, i, a, o, s, c, l, u]) => {
3430
3414
  });
3431
3415
  }), N(y.or(v).and(o.pdf.greaterThan(0)), () => {
3432
3416
  N(R(e.position.sub(g), o.direction).greaterThan(0), () => {
3433
- let t = qa(e, g, o.direction);
3417
+ let t = Ga(e, g, o.direction);
3434
3418
  N(t.greaterThan(0), () => {
3435
3419
  let r = u(g, o.direction, t, l);
3436
3420
  N(r.greaterThan(0), () => {
@@ -3452,7 +3436,7 @@ M(([e, t, n, r, i, a, o, s, c, l, u]) => {
3452
3436
  return N(p.lessThanEqual(1e3), () => {
3453
3437
  let a = f.div(p), o = R(n, a);
3454
3438
  N(o.greaterThan(0), () => {
3455
- let s = z(1).div(p.mul(p)), f = e.color.mul(e.intensity).mul(s), m = Ya(t, n, i), h = l(t.add(m), a, p.sub(.001), c);
3439
+ let s = z(1).div(p.mul(p)), f = e.color.mul(e.intensity).mul(s), m = qa(t, n, i), h = l(t.add(m), a, p.sub(.001), c);
3456
3440
  N(h.greaterThan(0), () => {
3457
3441
  let e = u(r, a, n, i);
3458
3442
  d.assign(e.mul(f).mul(o).mul(h));
@@ -3466,7 +3450,7 @@ M(([e, t, n, r, i, a, o, s, c, l, u]) => {
3466
3450
  N(o.greaterThan(0), () => {
3467
3451
  let s = R(a.negate(), e.direction), f = Je(e.angle);
3468
3452
  N(s.greaterThanEqual(f), () => {
3469
- let m = mt(f, f.add(.1), s), h = z(1).div(p.mul(p)), g = e.color.mul(e.intensity).mul(h).mul(m), _ = Ya(t, n, i), v = l(t.add(_), a, p.sub(.001), c);
3453
+ let m = mt(f, f.add(.1), s), h = z(1).div(p.mul(p)), g = e.color.mul(e.intensity).mul(h).mul(m), _ = qa(t, n, i), v = l(t.add(_), a, p.sub(.001), c);
3470
3454
  N(v.greaterThan(0), () => {
3471
3455
  let e = u(r, a, n, i);
3472
3456
  d.assign(e.mul(g).mul(o).mul(v));
@@ -3477,8 +3461,8 @@ M(([e, t, n, r, i, a, o, s, c, l, u]) => {
3477
3461
  });
3478
3462
  //#endregion
3479
3463
  //#region src/TSL/LightsSampling.js
3480
- var to = 2 * Rr;
3481
- M(() => La({
3464
+ var $a = 2 * Rr;
3465
+ M(() => Fa({
3482
3466
  valid: I(!1),
3483
3467
  direction: J(0, 1, 0),
3484
3468
  emission: J(0),
@@ -3486,7 +3470,7 @@ M(() => La({
3486
3470
  pdf: z(0),
3487
3471
  lightType: B(2)
3488
3472
  }));
3489
- var no = M(([e, t, n, r]) => {
3473
+ var eo = M(([e, t, n, r]) => {
3490
3474
  let i = I(!1).toVar(), a = J(0, 1, 0).toVar(), o = J(0).toVar(), s = z(0).toVar(), c = z(0).toVar(), l = B(2).toVar();
3491
3475
  return N(e.area.greaterThan(0), () => {
3492
3476
  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 = R(u, u).toVar();
@@ -3494,7 +3478,7 @@ var no = M(([e, t, n, r]) => {
3494
3478
  let t = ht(d).toVar(), n = u.div(t).toVar(), f = U(Ye(e.u, e.v)).toVar(), p = R(n.negate(), f).toVar();
3495
3479
  l.assign(B(1)), o.assign(e.color.mul(e.intensity)), s.assign(t), a.assign(n), c.assign(d.div(V(e.area.mul(V(p, .001)), 1e-10)).mul(r)), i.assign(p.greaterThan(0));
3496
3480
  });
3497
- }), La({
3481
+ }), Fa({
3498
3482
  valid: i,
3499
3483
  direction: a,
3500
3484
  emission: o,
@@ -3506,12 +3490,12 @@ var no = M(([e, t, n, r]) => {
3506
3490
  M(([e, t, n, r]) => {
3507
3491
  let i = I(!1).toVar(), a = J(0, 1, 0).toVar(), o = J(0).toVar(), s = z(0).toVar(), c = z(0).toVar(), l = B(2).toVar();
3508
3492
  return N(e.area.greaterThan(0), () => {
3509
- let u = z(.5).mul(ht(n.x)).toVar(), d = n.y.mul(to).toVar(), f = u.mul(Je(d)).toVar(), p = u.mul(pt(d)).toVar(), m = e.position.add(e.u.mul(f)).add(e.v.mul(p)).toVar().sub(t).toVar(), h = R(m, m).toVar();
3493
+ let u = z(.5).mul(ht(n.x)).toVar(), d = n.y.mul($a).toVar(), f = u.mul(Je(d)).toVar(), p = u.mul(pt(d)).toVar(), m = e.position.add(e.u.mul(f)).add(e.v.mul(p)).toVar().sub(t).toVar(), h = R(m, m).toVar();
3510
3494
  N(h.greaterThanEqual(1e-10), () => {
3511
3495
  let t = ht(h).toVar(), n = m.div(t).toVar(), u = U(Ye(e.u, e.v)).toVar(), d = R(n.negate(), u).toVar();
3512
3496
  l.assign(B(1)), o.assign(e.color.mul(e.intensity)), s.assign(t), a.assign(n), c.assign(h.div(V(e.area.mul(V(d, .001)), 1e-10)).mul(r)), i.assign(d.greaterThan(0));
3513
3497
  });
3514
- }), La({
3498
+ }), Fa({
3515
3499
  valid: i,
3516
3500
  direction: a,
3517
3501
  emission: o,
@@ -3520,23 +3504,23 @@ M(([e, t, n, r]) => {
3520
3504
  lightType: l
3521
3505
  });
3522
3506
  });
3523
- var ro = M(([e, t, n, r]) => {
3507
+ var to = M(([e, t, n, r]) => {
3524
3508
  let i = I(!1).toVar(), a = J(0, 1, 0).toVar(), o = J(0).toVar(), s = z(0).toVar(), c = z(0).toVar(), l = B(3).toVar(), u = e.position.sub(t).toVar(), d = et(u).toVar();
3525
3509
  return N(d.greaterThanEqual(1e-10), () => {
3526
3510
  let t = u.div(d).toVar(), n = R(t.negate(), e.direction).toVar(), l = Je(e.angle).toVar();
3527
3511
  a.assign(t), s.assign(d), c.assign(r), i.assign(n.greaterThanEqual(l)), N(i, () => {
3528
- let t = Ga({
3512
+ let t = Ua({
3529
3513
  coneCosine: l,
3530
3514
  penumbraCosine: Je(e.angle.mul(z(1).sub(e.penumbra))).max(l.add(1e-5)).toVar(),
3531
3515
  angleCosine: n
3532
- }), r = Wa({
3516
+ }), r = Ha({
3533
3517
  lightDistance: d,
3534
3518
  cutoffDistance: e.distance,
3535
3519
  decayExponent: e.decay
3536
3520
  });
3537
3521
  o.assign(e.color.mul(e.intensity).mul(r).mul(t));
3538
3522
  });
3539
- }), La({
3523
+ }), Fa({
3540
3524
  valid: i,
3541
3525
  direction: a,
3542
3526
  emission: o,
@@ -3544,16 +3528,16 @@ var ro = M(([e, t, n, r]) => {
3544
3528
  pdf: c,
3545
3529
  lightType: l
3546
3530
  });
3547
- }), io = M(([e, t, n]) => {
3531
+ }), no = M(([e, t, n]) => {
3548
3532
  let r = I(!1).toVar(), i = J(0, 1, 0).toVar(), a = J(0).toVar(), o = z(0).toVar(), s = z(0).toVar(), c = B(2).toVar(), l = e.position.sub(t).toVar(), u = et(l).toVar();
3549
3533
  return N(u.greaterThanEqual(1e-10), () => {
3550
- let t = l.div(u).toVar(), d = Wa({
3534
+ let t = l.div(u).toVar(), d = Ha({
3551
3535
  lightDistance: u,
3552
3536
  cutoffDistance: e.distance,
3553
3537
  decayExponent: e.decay
3554
3538
  });
3555
3539
  c.assign(B(2)), i.assign(t), o.assign(u), a.assign(e.color.mul(e.intensity).mul(d)), s.assign(n), r.assign(I(!0));
3556
- }), La({
3540
+ }), Fa({
3557
3541
  valid: r,
3558
3542
  direction: i,
3559
3543
  emission: a,
@@ -3561,7 +3545,7 @@ var ro = M(([e, t, n, r]) => {
3561
3545
  pdf: s,
3562
3546
  lightType: c
3563
3547
  });
3564
- }), ao = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p]) => {
3548
+ }), ro = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p]) => {
3565
3549
  let m = I(!1).toVar(), h = J(0, 1, 0).toVar(), g = J(0).toVar(), _ = z(0).toVar(), v = z(0).toVar(), y = B(2).toVar(), b = s.add(l).add(d).add(p).toVar();
3566
3550
  return N(b.greaterThan(B(0)), () => {
3567
3551
  let x = z(0).toVar(), S = B(0).toVar();
@@ -3573,8 +3557,8 @@ var ro = M(([e, t, n, r]) => {
3573
3557
  condition: "<"
3574
3558
  }, ({ i: r }) => {
3575
3559
  N(S.lessThan(B(16)), () => {
3576
- let a = Na.wrap(za(o, r));
3577
- x.addAssign(Xa(a, e, t, n, i)), S.addAssign(1);
3560
+ let a = ja.wrap(La(o, r));
3561
+ x.addAssign(Ja(a, e, t, n, i)), S.addAssign(1);
3578
3562
  });
3579
3563
  });
3580
3564
  }), N(l.greaterThan(B(0)), () => {
@@ -3585,7 +3569,7 @@ var ro = M(([e, t, n, r]) => {
3585
3569
  condition: "<"
3586
3570
  }, ({ i: r }) => {
3587
3571
  N(S.lessThan(B(16)), () => {
3588
- let i = Pa.wrap(Ba(c, r)), a = W(i.intensity.greaterThan(0), Za(i, e, t, n), z(0));
3572
+ let i = Ma.wrap(Ra(c, r)), a = W(i.intensity.greaterThan(0), Ya(i, e, t, n), z(0));
3589
3573
  x.addAssign(a), S.addAssign(1);
3590
3574
  });
3591
3575
  });
@@ -3597,8 +3581,8 @@ var ro = M(([e, t, n, r]) => {
3597
3581
  condition: "<"
3598
3582
  }, ({ i: r }) => {
3599
3583
  N(S.lessThan(B(16)), () => {
3600
- let i = Fa.wrap(Va(u, r));
3601
- x.addAssign(Qa(i, e, t, n)), S.addAssign(1);
3584
+ let i = Na.wrap(za(u, r));
3585
+ x.addAssign(Xa(i, e, t, n)), S.addAssign(1);
3602
3586
  });
3603
3587
  });
3604
3588
  }), N(p.greaterThan(B(0)), () => {
@@ -3609,8 +3593,8 @@ var ro = M(([e, t, n, r]) => {
3609
3593
  condition: "<"
3610
3594
  }, ({ i: r }) => {
3611
3595
  N(S.lessThan(B(16)), () => {
3612
- let i = Ia.wrap(Ha(f, r));
3613
- x.addAssign($a(i, e, t, n)), S.addAssign(1);
3596
+ let i = Pa.wrap(Ba(f, r));
3597
+ x.addAssign(Za(i, e, t, n)), S.addAssign(1);
3614
3598
  });
3615
3599
  });
3616
3600
  }), N(x.lessThanEqual(0), () => {
@@ -3619,32 +3603,32 @@ var ro = M(([e, t, n, r]) => {
3619
3603
  let i = I(!1).toVar(), x = B(0).toVar();
3620
3604
  N(s.greaterThan(B(0)), () => {
3621
3605
  N(i.not().and(t.greaterThanEqual(x)).and(t.lessThan(x.add(s))), () => {
3622
- let e = Na.wrap(za(o, t.sub(x)));
3606
+ let e = ja.wrap(La(o, t.sub(x)));
3623
3607
  N(e.intensity.greaterThan(0), () => {
3624
3608
  h.assign(U(e.direction)), g.assign(e.color.mul(e.intensity)), _.assign(1e6), y.assign(B(0)), m.assign(I(!0)), i.assign(I(!0));
3625
3609
  });
3626
3610
  }), x.addAssign(s);
3627
3611
  }), N(l.greaterThan(B(0)), () => {
3628
3612
  N(i.not().and(t.greaterThanEqual(x)).and(t.lessThan(x.add(l))), () => {
3629
- let o = Pa.wrap(Ba(c, t.sub(x)));
3613
+ let o = Ma.wrap(Ra(c, t.sub(x)));
3630
3614
  N(o.intensity.greaterThan(0), () => {
3631
- let t = q(r.y, $t(a)).toVar(), s = La.wrap(no(o, e, t, n));
3615
+ let t = q(r.y, $t(a)).toVar(), s = Fa.wrap(eo(o, e, t, n));
3632
3616
  m.assign(s.valid), h.assign(s.direction), g.assign(s.emission), _.assign(s.distance), v.assign(s.pdf), y.assign(s.lightType), i.assign(I(!0));
3633
3617
  });
3634
3618
  }), x.addAssign(l);
3635
3619
  }), N(d.greaterThan(B(0)), () => {
3636
3620
  N(i.not().and(t.greaterThanEqual(x)).and(t.lessThan(x.add(d))), () => {
3637
- let r = Fa.wrap(Va(u, t.sub(x)));
3621
+ let r = Na.wrap(za(u, t.sub(x)));
3638
3622
  N(r.intensity.greaterThan(0), () => {
3639
- let t = La.wrap(io(r, e, n));
3623
+ let t = Fa.wrap(no(r, e, n));
3640
3624
  m.assign(t.valid), h.assign(t.direction), g.assign(t.emission), _.assign(t.distance), v.assign(t.pdf), y.assign(t.lightType), i.assign(I(!0));
3641
3625
  });
3642
3626
  }), x.addAssign(d);
3643
3627
  }), N(p.greaterThan(B(0)), () => {
3644
3628
  N(i.not().and(t.greaterThanEqual(x)).and(t.lessThan(x.add(p))), () => {
3645
- let o = Ia.wrap(Ha(f, t.sub(x)));
3629
+ let o = Pa.wrap(Ba(f, t.sub(x)));
3646
3630
  N(o.intensity.greaterThan(0), () => {
3647
- let t = q(r.y, $t(a)).toVar(), s = La.wrap(ro(o, e, t, n));
3631
+ let t = q(r.y, $t(a)).toVar(), s = Fa.wrap(to(o, e, t, n));
3648
3632
  m.assign(s.valid), h.assign(s.direction), g.assign(s.emission), _.assign(s.distance), v.assign(s.pdf), y.assign(s.lightType), i.assign(I(!0));
3649
3633
  });
3650
3634
  });
@@ -3661,7 +3645,7 @@ var ro = M(([e, t, n, r]) => {
3661
3645
  condition: "<"
3662
3646
  }, ({ i: r }) => {
3663
3647
  N(S.lessThan(B(16)).and(w.lessThan(B(0))), () => {
3664
- let a = Xa(Na.wrap(za(o, r)), e, t, n, i).toVar(), s = C.toVar();
3648
+ let a = Ja(ja.wrap(La(o, r)), e, t, n, i).toVar(), s = C.toVar();
3665
3649
  C.addAssign(a), N(b.greaterThan(s).and(b.lessThanEqual(C)), () => {
3666
3650
  w.assign(0), T.assign(r), E.assign(a);
3667
3651
  });
@@ -3675,7 +3659,7 @@ var ro = M(([e, t, n, r]) => {
3675
3659
  condition: "<"
3676
3660
  }, ({ i: r }) => {
3677
3661
  N(S.lessThan(B(16)).and(w.lessThan(B(0))), () => {
3678
- let i = Pa.wrap(Ba(c, r)), a = W(i.intensity.greaterThan(0), Za(i, e, t, n), z(0)).toVar(), o = C.toVar();
3662
+ let i = Ma.wrap(Ra(c, r)), a = W(i.intensity.greaterThan(0), Ya(i, e, t, n), z(0)).toVar(), o = C.toVar();
3679
3663
  C.addAssign(a), N(b.greaterThan(o).and(b.lessThanEqual(C)), () => {
3680
3664
  w.assign(1), T.assign(r), E.assign(a);
3681
3665
  });
@@ -3689,7 +3673,7 @@ var ro = M(([e, t, n, r]) => {
3689
3673
  condition: "<"
3690
3674
  }, ({ i: r }) => {
3691
3675
  N(S.lessThan(B(16)).and(w.lessThan(B(0))), () => {
3692
- let i = Qa(Fa.wrap(Va(u, r)), e, t, n).toVar(), a = C.toVar();
3676
+ let i = Xa(Na.wrap(za(u, r)), e, t, n).toVar(), a = C.toVar();
3693
3677
  C.addAssign(i), N(b.greaterThan(a).and(b.lessThanEqual(C)), () => {
3694
3678
  w.assign(2), T.assign(r), E.assign(i);
3695
3679
  });
@@ -3703,7 +3687,7 @@ var ro = M(([e, t, n, r]) => {
3703
3687
  condition: "<"
3704
3688
  }, ({ i: r }) => {
3705
3689
  N(S.lessThan(B(16)).and(w.lessThan(B(0))), () => {
3706
- let i = $a(Ia.wrap(Ha(f, r)), e, t, n).toVar(), a = C.toVar();
3690
+ let i = Za(Pa.wrap(Ba(f, r)), e, t, n).toVar(), a = C.toVar();
3707
3691
  C.addAssign(i), N(b.greaterThan(a).and(b.lessThanEqual(C)), () => {
3708
3692
  w.assign(3), T.assign(r), E.assign(i);
3709
3693
  });
@@ -3712,25 +3696,25 @@ var ro = M(([e, t, n, r]) => {
3712
3696
  });
3713
3697
  let D = E.div(V(x, 1e-10)).toVar();
3714
3698
  N(w.equal(B(0)).and(T.greaterThanEqual(B(0))), () => {
3715
- let e = Na.wrap(za(o, T)), t = U(e.direction).toVar(), n = z(1).toVar();
3699
+ let e = ja.wrap(La(o, T)), t = U(e.direction).toVar(), n = z(1).toVar();
3716
3700
  N(e.angle.greaterThan(0), () => {
3717
- let i = Je(e.angle.mul(.5)).toVar(), o = H(i, z(1), r.y).toVar(), s = ht(V(z(0), z(1).sub(o.mul(o)))).toVar(), c = z(to).mul($t(a)).toVar(), l = U(e.direction).toVar(), u = U(Ye(W(F(l.x).greaterThan(.9), J(0, 1, 0), J(1, 0, 0)), l)).toVar(), d = Ye(l, u).toVar();
3701
+ let i = Je(e.angle.mul(.5)).toVar(), o = H(i, z(1), r.y).toVar(), s = ht(V(z(0), z(1).sub(o.mul(o)))).toVar(), c = z($a).mul($t(a)).toVar(), l = U(e.direction).toVar(), u = U(Ye(W(F(l.x).greaterThan(.9), J(0, 1, 0), J(1, 0, 0)), l)).toVar(), d = Ye(l, u).toVar();
3718
3702
  t.assign(U(l.mul(o).add(u.mul(Je(c)).add(d.mul(pt(c))).mul(s))));
3719
- let f = z(to).mul(V(z(1).sub(i), 1e-10)).toVar();
3703
+ let f = z($a).mul(V(z(1).sub(i), 1e-10)).toVar();
3720
3704
  n.assign(z(1).div(f));
3721
3705
  }), h.assign(t), g.assign(e.color.mul(e.intensity)), _.assign(1e6), v.assign(n.mul(D)), y.assign(B(0)), m.assign(I(!0));
3722
3706
  }), N(w.equal(B(1)).and(T.greaterThanEqual(B(0))), () => {
3723
- let t = Pa.wrap(Ba(c, T)), n = q(r.y, $t(a)).toVar(), i = La.wrap(no(t, e, n, D));
3707
+ let t = Ma.wrap(Ra(c, T)), n = q(r.y, $t(a)).toVar(), i = Fa.wrap(eo(t, e, n, D));
3724
3708
  m.assign(i.valid), h.assign(i.direction), g.assign(i.emission), _.assign(i.distance), v.assign(i.pdf), y.assign(i.lightType);
3725
3709
  }), N(w.equal(B(2)).and(T.greaterThanEqual(B(0))), () => {
3726
- let t = Fa.wrap(Va(u, T)), n = La.wrap(io(t, e, D));
3710
+ let t = Na.wrap(za(u, T)), n = Fa.wrap(no(t, e, D));
3727
3711
  m.assign(n.valid), h.assign(n.direction), g.assign(n.emission), _.assign(n.distance), v.assign(n.pdf), y.assign(n.lightType);
3728
3712
  }), N(w.equal(B(3)).and(T.greaterThanEqual(B(0))), () => {
3729
- let t = Ia.wrap(Ha(f, T)), n = q(r.y, $t(a)).toVar(), i = La.wrap(ro(t, e, n, D));
3713
+ let t = Pa.wrap(Ba(f, T)), n = q(r.y, $t(a)).toVar(), i = Fa.wrap(to(t, e, n, D));
3730
3714
  m.assign(i.valid), h.assign(i.direction), g.assign(i.emission), _.assign(i.distance), v.assign(i.pdf), y.assign(i.lightType);
3731
3715
  });
3732
3716
  });
3733
- }), La({
3717
+ }), Fa({
3734
3718
  valid: m,
3735
3719
  direction: h,
3736
3720
  emission: g,
@@ -3738,7 +3722,7 @@ var ro = M(([e, t, n, r]) => {
3738
3722
  pdf: v,
3739
3723
  lightType: y
3740
3724
  });
3741
- }), oo = M(([e, t, n, r]) => {
3725
+ }), io = M(([e, t, n, r]) => {
3742
3726
  let i = V(z(0), R(n, e)).toVar(), a = V(z(0), R(n, t)).toVar(), o = U(e.add(t)).toVar(), s = V(z(0), R(n, o)).toVar();
3743
3727
  V(z(0), R(e, o)).toVar();
3744
3728
  let c = z(1).sub(r.metalness).mul(z(1).sub(r.transmission)).toVar(), l = z(1).sub(c.mul(z(1).sub(r.metalness))).toVar(), u = c.add(l).toVar(), d = z(0).toVar();
@@ -3748,7 +3732,7 @@ var ro = M(([e, t, n, r]) => {
3748
3732
  d.addAssign(c.mul(a).mul(zr));
3749
3733
  }), N(l.greaterThan(0).and(a.greaterThan(0)), () => {
3750
3734
  let e = V(r.roughness, .02).toVar();
3751
- d.addAssign(l.mul(sa(s, i, e)));
3735
+ d.addAssign(l.mul(aa(s, i, e)));
3752
3736
  });
3753
3737
  }), V(d, 1e-8);
3754
3738
  });
@@ -3759,13 +3743,13 @@ M(([e, t, n, r, i, a, o, s, c, l, u]) => {
3759
3743
  N(h.greaterThan(0), () => {
3760
3744
  let f = R(r, o).toVar();
3761
3745
  N(f.greaterThan(0), () => {
3762
- N(Ua({
3746
+ N(Va({
3763
3747
  direction: o,
3764
3748
  surfaceNormal: r
3765
3749
  }), () => {
3766
- let p = Ja(a, o, n.sub(.001), s, xi, c, l, u);
3750
+ let p = Ka(a, o, n.sub(.001), s, yi, c, l, u);
3767
3751
  N(p.greaterThan(0), () => {
3768
- let n = ka(t, o, r, i), a = m.div(V(e.area.mul(h), Vr)).toVar(), s = oo(t, o, r, i).toVar(), c = W(s.greaterThan(0), Xr({
3752
+ let n = Da(t, o, r, i), a = m.div(V(e.area.mul(h), Vr)).toVar(), s = io(t, o, r, i).toVar(), c = W(s.greaterThan(0), Xr({
3769
3753
  pdf1: a,
3770
3754
  pdf2: s
3771
3755
  }), z(1)).toVar(), l = e.color.mul(e.intensity).toVar();
@@ -3776,7 +3760,7 @@ M(([e, t, n, r, i, a, o, s, c, l, u]) => {
3776
3760
  });
3777
3761
  }), d;
3778
3762
  });
3779
- var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O]) => {
3763
+ var ao = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O]) => {
3780
3764
  let k = J(0).toVar(), A = e.add(t.mul(.001)).toVar();
3781
3765
  return N(n.emissiveIntensity.lessThanEqual(10), () => {
3782
3766
  let s = J(1).toVar(), ee = Ir.wrap(ri(n.roughness, n.metalness, n.transmission, c, s)), te = ee.useBRDFSampling.toVar(), ne = ee.useLightSampling.toVar(), re = ee.brdfWeight.toVar(), ie = ee.lightWeight.toVar(), ae = d.add(p).add(h).add(_).toVar(), oe = z(.001).mul(z(1).add(z(c).mul(.5))).toVar(), se = ae.greaterThan(B(0)).toVar(), ce = z(0).toVar();
@@ -3795,16 +3779,16 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
3795
3779
  }).ElseIf(se, () => {
3796
3780
  j.assign(I(!0));
3797
3781
  }), N(j, () => {
3798
- let e = q(ue, $t(l)).toVar(), i = La.wrap(ao(A, t, n, e, c, l, u, d, f, p, m, h, g, _));
3782
+ let e = q(ue, $t(l)).toVar(), i = Fa.wrap(ro(A, t, n, e, c, l, u, d, f, p, m, h, g, _));
3799
3783
  N(i.valid.and(i.pdf.greaterThan(0)), () => {
3800
3784
  let e = V(z(0), R(t, i.direction)).toVar(), a = i.emission.x.add(i.emission.y).add(i.emission.z).toVar();
3801
- N(e.greaterThan(0).and(a.mul(e).greaterThan(oe)).and(Ua({
3785
+ N(e.greaterThan(0).and(a.mul(e).greaterThan(oe)).and(Va({
3802
3786
  direction: i.direction,
3803
3787
  surfaceNormal: t
3804
3788
  })), () => {
3805
- let a = at(i.distance.sub(.001), z(1e3)).toVar(), o = Ja(A, i.direction, a, l, xi, v, y, b);
3789
+ let a = at(i.distance.sub(.001), z(1e3)).toVar(), o = Ka(A, i.direction, a, l, yi, v, y, b);
3806
3790
  N(o.greaterThan(0), () => {
3807
- let a = ka(r, i.direction, t, n), s = oo(r, i.direction, t, n).toVar(), c = z(1).toVar();
3791
+ let a = Da(r, i.direction, t, n), s = io(r, i.direction, t, n).toVar(), c = z(1).toVar();
3808
3792
  N(s.greaterThan(0).and(te), () => {
3809
3793
  let e = i.pdf.mul(ie).toVar(), t = s.mul(re).toVar();
3810
3794
  N(i.lightType.equal(B(1)), () => {
@@ -3822,7 +3806,7 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
3822
3806
  }), N(fe, () => {
3823
3807
  N(a.greaterThan(0).and(te), () => {
3824
3808
  let r = V(z(0), R(t, i)).toVar();
3825
- N(r.greaterThan(0).and(Ua({
3809
+ N(r.greaterThan(0).and(Va({
3826
3810
  direction: i,
3827
3811
  surfaceNormal: t
3828
3812
  })), () => {
@@ -3834,11 +3818,11 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
3834
3818
  type: "int",
3835
3819
  condition: "<"
3836
3820
  }, ({ i: r }) => {
3837
- let a = Pa.wrap(Ba(f, r));
3821
+ let a = Ma.wrap(Ra(f, r));
3838
3822
  N(a.intensity.greaterThan(0), () => {
3839
- let o = Za(a, e, t, n).toVar();
3823
+ let o = Ya(a, e, t, n).toVar();
3840
3824
  N(o.greaterThanEqual(oe), () => {
3841
- N(qa(a, A, i).toVar().greaterThan(0), () => {
3825
+ N(Ga(a, A, i).toVar().greaterThan(0), () => {
3842
3826
  N(o.greaterThan(c), () => {
3843
3827
  c.assign(o), u.assign(r);
3844
3828
  }), s.assign(I(!0));
@@ -3846,9 +3830,9 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
3846
3830
  });
3847
3831
  });
3848
3832
  }), N(s.and(u.greaterThanEqual(B(0))), () => {
3849
- let e = Pa.wrap(Ba(f, u)), t = qa(e, A, i).toVar();
3833
+ let e = Ma.wrap(Ra(f, u)), t = Ga(e, A, i).toVar();
3850
3834
  N(t.greaterThan(0), () => {
3851
- let n = Ja(A, i, at(t.sub(.001), z(1e3)).toVar(), l, xi, v, y, b);
3835
+ let n = Ka(A, i, at(t.sub(.001), z(1e3)).toVar(), l, yi, v, y, b);
3852
3836
  N(n.greaterThan(0), () => {
3853
3837
  let s = V(z(0), R(i, e.normal).negate()).toVar();
3854
3838
  N(s.greaterThan(0), () => {
@@ -3867,16 +3851,16 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
3867
3851
  });
3868
3852
  });
3869
3853
  }), N(O, () => {
3870
- let e = q($t(l).toVar(), $t(l).toVar()).toVar(), i = J(0).toVar(), a = Di(x, w, T, C, S, E, D, e, i).toVar(), o = a.xyz.toVar(), s = a.w.toVar();
3854
+ let e = q($t(l).toVar(), $t(l).toVar()).toVar(), i = J(0).toVar(), a = Ti(x, w, T, C, S, E, D, e, i).toVar(), o = a.xyz.toVar(), s = a.w.toVar();
3871
3855
  N(s.greaterThan(0), () => {
3872
3856
  let e = V(z(0), R(t, o)).toVar();
3873
- N(e.greaterThan(0).and(Ua({
3857
+ N(e.greaterThan(0).and(Va({
3874
3858
  direction: o,
3875
3859
  surfaceNormal: t
3876
3860
  })), () => {
3877
- let a = Ja(A, o, z(1e3), l, xi, v, y, b);
3861
+ let a = Ka(A, o, z(1e3), l, yi, v, y, b);
3878
3862
  N(a.greaterThan(0), () => {
3879
- let c = ka(r, o, t, n), l = oo(r, o, t, n).toVar(), u = W(l.greaterThan(0), Xr({
3863
+ let c = Da(r, o, t, n), l = io(r, o, t, n).toVar(), u = W(l.greaterThan(0), Xr({
3880
3864
  pdf1: s,
3881
3865
  pdf2: l
3882
3866
  }), z(1)).toVar(), d = i.mul(c).mul(e).mul(a).mul(u).div(V(s, 1e-10));
@@ -3886,17 +3870,17 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
3886
3870
  });
3887
3871
  });
3888
3872
  }), k;
3889
- }), co = M(([e, t, n, r, i, a]) => {
3873
+ }), oo = M(([e, t, n, r, i, a]) => {
3890
3874
  let o = W(a, r, z(1).div(r)).toVar(), s = e.add(t.mul(o)).toVar(), c = R(s, s).toVar(), l = W(c.greaterThan(Vr), s.div(ht(c)), n).toVar();
3891
3875
  N(R(l, n).lessThan(0), () => {
3892
3876
  l.assign(l.negate());
3893
3877
  });
3894
- let u = F(R(e, l)).toVar(), d = F(R(t, l)).toVar(), f = F(R(n, l)).toVar(), p = ea(f, i).toVar(), m = u.add(d.mul(o)).toVar(), h = m.mul(m).toVar(), g = d.mul(o).mul(o).div(V(h, Vr)).toVar();
3878
+ let u = F(R(e, l)).toVar(), d = F(R(t, l)).toVar(), f = F(R(n, l)).toVar(), p = Qi(f, i).toVar(), m = u.add(d.mul(o)).toVar(), h = m.mul(m).toVar(), g = d.mul(o).mul(o).div(V(h, Vr)).toVar();
3895
3879
  return p.mul(f).mul(g);
3896
- }), lo = M(([e, t, n, r]) => {
3880
+ }), so = M(([e, t, n, r]) => {
3897
3881
  let i = e.add(t).toVar(), a = R(i, i).toVar();
3898
- return sa(V(R(n, W(a.greaterThan(Vr), i.div(ht(a)), n).toVar()), 0).toVar(), V(R(n, e), 0).toVar(), r);
3899
- }), uo = M(([e, t, n, r, i]) => {
3882
+ return aa(V(R(n, W(a.greaterThan(Vr), i.div(ht(a)), n).toVar()), 0).toVar(), V(R(n, e), 0).toVar(), r);
3883
+ }), co = M(([e, t, n, r, i]) => {
3900
3884
  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(), p = a.add(s).add(l).add(d).toVar();
3901
3885
  return N(p.lessThan(.001), () => {
3902
3886
  a.assign(0), s.assign(1), l.assign(0), d.assign(0), p.assign(1), o.assign(I(!1)), c.assign(I(!0)), u.assign(I(!1)), f.assign(I(!1));
@@ -3916,7 +3900,7 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
3916
3900
  useTransmission: u,
3917
3901
  useClearcoat: f
3918
3902
  });
3919
- }), fo = M(([e, t]) => {
3903
+ }), lo = M(([e, t]) => {
3920
3904
  let n = B(2).toVar(), r = z(1).toVar(), i = z(0).toVar(), a = I(!1).toVar();
3921
3905
  return N(e.useSpecular.and(a.not()), () => {
3922
3906
  i.addAssign(e.specularWeight), N(t.lessThan(i), () => {
@@ -3935,49 +3919,49 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
3935
3919
  }), N(a.not(), () => {
3936
3920
  n.assign(2), r.assign(W(e.useDiffuse, e.diffuseWeight, z(1)));
3937
3921
  }), q(z(n), r);
3938
- }), po = M(([e]) => V(e, 0).mul(zr)), mo = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v]) => {
3922
+ }), uo = M(([e]) => V(e, 0).mul(zr)), fo = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v]) => {
3939
3923
  let y = J(0).toVar(), b = J(0).toVar(), x = z(0).toVar(), S = z(0).toVar(), C = z(0).toVar();
3940
3924
  return N(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(), () => {
3941
3925
  let e = q($t(c).toVar(), $t(c).toVar()).toVar();
3942
- y.assign(ha(t, e)), b.assign(n.color.xyz), x.assign(1), S.assign(1);
3926
+ y.assign(pa(t, e)), b.assign(n.color.xyz), x.assign(1), S.assign(1);
3943
3927
  }).Else(() => {
3944
- let o = Fr.wrap(uo(l, s, n, _, v).toVar()), u = $t(c).toVar(), d = q($t(c).toVar(), $t(c).toVar()).toVar(), f = fo(o, u).toVar(), p = B(f.x).toVar();
3928
+ let o = Fr.wrap(co(l, s, n, _, v).toVar()), u = $t(c).toVar(), d = q($t(c).toVar(), $t(c).toVar()).toVar(), f = lo(o, u).toVar(), p = B(f.x).toVar();
3945
3929
  f.y.toVar();
3946
3930
  let m = J(0).toVar(), h = z(0).toVar(), g = J(0).toVar();
3947
3931
  N(p.equal(B(1)), () => {
3948
3932
  m.assign(r), h.assign(i), g.assign(a);
3949
3933
  }).ElseIf(p.equal(B(2)), () => {
3950
- m.assign(ha(t, d)), h.assign(po(V(R(t, m), 0))), g.assign(ka(e, m, t, n));
3934
+ m.assign(pa(t, d)), h.assign(uo(V(R(t, m), 0))), g.assign(Da(e, m, t, n));
3951
3935
  }).ElseIf(p.equal(B(3)), () => {
3952
- let r = R(e, t).greaterThan(0).toVar(), i = Sa.wrap(Ea(e, t, n.ior, n.roughness, r, n.dispersion, d, c).toVar());
3953
- m.assign(i.direction), h.assign(i.pdf), g.assign(ka(e, m, t, n));
3936
+ let r = R(e, t).greaterThan(0).toVar(), i = ba.wrap(wa(e, t, n.ior, n.roughness, r, n.dispersion, d, c).toVar());
3937
+ m.assign(i.direction), h.assign(i.pdf), g.assign(Da(e, m, t, n));
3954
3938
  }).Else(() => {
3955
3939
  m.assign(r), h.assign(i), g.assign(a);
3956
3940
  });
3957
3941
  let w = R(t, m).toVar(), T = V(w, 0).toVar(), E = F(w).toVar(), D = z(0).toVar();
3958
3942
  N(o.useSpecular, () => {
3959
- let r = sa(V(R(t, U(e.add(m))), .001), V(R(t, e), .001), n.roughness);
3943
+ let r = aa(V(R(t, U(e.add(m))), .001), V(R(t, e), .001), n.roughness);
3960
3944
  D.addAssign(o.specularWeight.mul(r));
3961
3945
  }), N(o.useDiffuse, () => {
3962
- let e = po(T).toVar();
3946
+ let e = uo(T).toVar();
3963
3947
  D.addAssign(o.diffuseWeight.mul(e));
3964
3948
  }), N(o.useTransmission.and(n.transmission.greaterThan(0)), () => {
3965
- let r = R(e, t).greaterThan(0).toVar(), i = co(e, m, t, n.ior, n.roughness, r).toVar();
3949
+ let r = R(e, t).greaterThan(0).toVar(), i = oo(e, m, t, n.ior, n.roughness, r).toVar();
3966
3950
  D.addAssign(o.transmissionWeight.mul(i));
3967
3951
  }), N(o.useClearcoat.and(n.clearcoat.greaterThan(0)), () => {
3968
- let r = lo(e, m, t, n.clearcoatRoughness).toVar();
3952
+ let r = so(e, m, t, n.clearcoatRoughness).toVar();
3969
3953
  D.addAssign(o.clearcoatWeight.mul(r));
3970
3954
  }), h.assign(V(h, Wr)), D.assign(V(D, Wr));
3971
3955
  let O = h.div(D).toVar(), k = W(p.equal(B(3)), E, T), A = g.mul(k).mul(O).div(h).toVar();
3972
3956
  y.assign(m), b.assign(A), x.assign(O), S.assign(h), C.assign(D);
3973
- }), Ra({
3957
+ }), Ia({
3974
3958
  direction: y,
3975
3959
  throughput: b,
3976
3960
  misWeight: x,
3977
3961
  pdf: S,
3978
3962
  combinedPdf: C
3979
3963
  });
3980
- }), ho = Cr({
3964
+ }), po = Cr({
3981
3965
  position: "vec3",
3982
3966
  normal: "vec3",
3983
3967
  emission: "vec3",
@@ -3987,40 +3971,40 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
3987
3971
  area: "float",
3988
3972
  cosThetaLight: "float",
3989
3973
  valid: "bool"
3990
- }), go = Cr({
3974
+ }), mo = Cr({
3991
3975
  contribution: "vec3",
3992
3976
  hasEmissive: "bool",
3993
3977
  emissionOnly: "vec3",
3994
3978
  distance: "float"
3995
- }), _o = M(([e, t, n, r]) => {
3979
+ }), ho = M(([e, t, n, r]) => {
3996
3980
  let i = ht(r.x), a = z(1).sub(i), o = r.y.mul(i), s = z(1).sub(a).sub(o);
3997
3981
  return e.mul(a).add(t.mul(o)).add(n.mul(s));
3998
- }), vo = M(([e, t, n]) => et(Ye(t.sub(e), n.sub(e))).mul(.5)), yo = M(([e, t, n, r]) => {
3982
+ }), go = M(([e, t, n]) => et(Ye(t.sub(e), n.sub(e))).mul(.5)), _o = M(([e, t, n, r]) => {
3999
3983
  let i = U(e.sub(r)), a = U(t.sub(r)), o = U(n.sub(r)), s = F(R(i, Ye(a, o))), c = z(1).add(R(a, o)).add(R(i, o)).add(R(i, a));
4000
3984
  return V(z(2).mul(qe(s, V(c, z(1e-10)))), z(0));
4001
- }), bo = M(([e, t, n, r]) => {
3985
+ }), vo = M(([e, t, n, r]) => {
4002
3986
  let i = t.sub(e), a = n.sub(e), o = n.sub(t), s = V(R(i, i), V(R(a, a), R(o, o))), c = Ye(i, a), l = R(c, c), u = I(!1).toVar();
4003
3987
  return N(l.greaterThan(1e-20), () => {
4004
3988
  let t = R(c, r.sub(e)), n = t.mul(t).div(l);
4005
3989
  u.assign(s.greaterThan(n));
4006
3990
  }), u;
4007
- }), xo = Cr({
3991
+ }), yo = Cr({
4008
3992
  direction: "vec3",
4009
3993
  position: "vec3",
4010
3994
  solidAngle: "float",
4011
3995
  valid: "bool"
4012
- }), So = M(([e]) => {
3996
+ }), bo = M(([e]) => {
4013
3997
  let t = et(e);
4014
3998
  return W(t.greaterThan(1e-10), e.div(t), J(0));
4015
- }), Co = M(([e, t, n, r, i]) => {
4016
- let a = xo({
3999
+ }), xo = M(([e, t, n, r, i]) => {
4000
+ let a = yo({
4017
4001
  direction: J(0),
4018
4002
  position: J(0),
4019
4003
  solidAngle: z(0),
4020
4004
  valid: !1
4021
- }).toVar(), o = U(e.sub(r)), s = U(t.sub(r)), c = U(n.sub(r)), l = yo(e, t, n, r);
4005
+ }).toVar(), o = U(e.sub(r)), s = U(t.sub(r)), c = U(n.sub(r)), l = _o(e, t, n, r);
4022
4006
  return a.solidAngle.assign(l), N(l.greaterThan(1e-7), () => {
4023
- let u = L(R(So(Ye(o, s)), So(Ye(o, c))), -1, 1), d = ht(V(z(1).sub(u.mul(u)), 0)), f = Ge(u), p = i.x.mul(l).sub(f), m = pt(p), h = Je(p), g = L(R(o, s), -1, 1), _ = h.sub(u), v = m.add(d.mul(g)), y = v.mul(h).sub(_.mul(m)).mul(u).sub(v), b = v.mul(m).add(_.mul(h)).mul(d), x = L(W(F(b).greaterThan(1e-10), y.div(b), z(1)), -1, 1), S = R(c, o), C = So(c.sub(o.mul(S))), w = ht(V(z(1).sub(x.mul(x)), 0)), T = U(o.mul(x).add(C.mul(w))), E = R(T, s), D = z(1).sub(i.y.mul(z(1).sub(E))), O = ht(V(z(1).sub(D.mul(D)), 0)), k = So(T.sub(s.mul(E))), A = U(s.mul(D).add(k.mul(O))), ee = U(Ye(t.sub(e), n.sub(e))), te = R(ee, A);
4007
+ let u = L(R(bo(Ye(o, s)), bo(Ye(o, c))), -1, 1), d = ht(V(z(1).sub(u.mul(u)), 0)), f = Ge(u), p = i.x.mul(l).sub(f), m = pt(p), h = Je(p), g = L(R(o, s), -1, 1), _ = h.sub(u), v = m.add(d.mul(g)), y = v.mul(h).sub(_.mul(m)).mul(u).sub(v), b = v.mul(m).add(_.mul(h)).mul(d), x = L(W(F(b).greaterThan(1e-10), y.div(b), z(1)), -1, 1), S = R(c, o), C = bo(c.sub(o.mul(S))), w = ht(V(z(1).sub(x.mul(x)), 0)), T = U(o.mul(x).add(C.mul(w))), E = R(T, s), D = z(1).sub(i.y.mul(z(1).sub(E))), O = ht(V(z(1).sub(D.mul(D)), 0)), k = bo(T.sub(s.mul(E))), A = U(s.mul(D).add(k.mul(O))), ee = U(Ye(t.sub(e), n.sub(e))), te = R(ee, A);
4024
4008
  N(F(te).greaterThan(1e-10), () => {
4025
4009
  let t = R(ee, e.sub(r)).div(te);
4026
4010
  N(t.greaterThan(0), () => {
@@ -4028,21 +4012,21 @@ var so = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S
4028
4012
  });
4029
4013
  });
4030
4014
  }), a;
4031
- }), wo = M(([e, t, n, r]) => {
4015
+ }), So = M(([e, t, n, r]) => {
4032
4016
  let i = n.sub(t), a = r.sub(t), o = e.sub(t), s = R(i, i), c = R(i, a), l = R(a, a), u = R(o, i), d = R(o, a), f = z(1).div(V(s.mul(l).sub(c.mul(c)), z(1e-10))), p = l.mul(u).sub(c.mul(d)).mul(f), m = s.mul(d).sub(c.mul(u)).mul(f);
4033
4017
  return J(z(1).sub(p).sub(m), p, m);
4034
- }), To = M(([e, t, n, r]) => {
4018
+ }), Co = M(([e, t, n, r]) => {
4035
4019
  let i = ht(r.x), a = z(1).sub(i), o = r.y.mul(i), s = z(1).sub(a).sub(o);
4036
4020
  return U(e.mul(a).add(t.mul(o)).add(n.mul(s)));
4037
- }), Eo = M(([e]) => e.emissiveIntensity.greaterThan(0).and(et(e.emissive).greaterThan(0)));
4021
+ }), wo = M(([e]) => e.emissiveIntensity.greaterThan(0).and(et(e.emissive).greaterThan(0)));
4038
4022
  M(([e, t]) => {
4039
4023
  let n = z(0).toVar();
4040
- return N(Eo(e), () => {
4024
+ return N(wo(e), () => {
4041
4025
  let r = e.emissive.x.add(e.emissive.y).add(e.emissive.z).div(3);
4042
4026
  n.assign(r.mul(e.emissiveIntensity).mul(t));
4043
4027
  }), n;
4044
4028
  });
4045
- var Do = 8, Oo = 2, ko = Cr({
4029
+ var To = 8, Eo = 2, Do = Cr({
4046
4030
  v0: "vec3",
4047
4031
  v1: "vec3",
4048
4032
  v2: "vec3",
@@ -4050,9 +4034,9 @@ var Do = 8, Oo = 2, ko = Cr({
4050
4034
  n1: "vec3",
4051
4035
  n2: "vec3",
4052
4036
  materialIndex: "int"
4053
- }), Ao = M(([e, t]) => {
4054
- let n = $(t, e, B(0), B(Do)), r = $(t, e, B(1), B(Do)), i = $(t, e, B(2), B(Do)), a = $(t, e, B(3), B(Do)), o = $(t, e, B(4), B(Do)), s = $(t, e, B(5), B(Do)), c = $(t, e, B(7), B(Do));
4055
- return ko({
4037
+ }), Oo = M(([e, t]) => {
4038
+ let n = $(t, e, B(0), B(To)), r = $(t, e, B(1), B(To)), i = $(t, e, B(2), B(To)), a = $(t, e, B(3), B(To)), o = $(t, e, B(4), B(To)), s = $(t, e, B(5), B(To)), c = $(t, e, B(7), B(To));
4039
+ return Do({
4056
4040
  v0: n.xyz,
4057
4041
  v1: r.xyz,
4058
4042
  v2: i.xyz,
@@ -4061,27 +4045,27 @@ var Do = 8, Oo = 2, ko = Cr({
4061
4045
  n2: s.xyz,
4062
4046
  materialIndex: B(c.z)
4063
4047
  });
4064
- }), jo = M(([e, t, n, r, i, a, o]) => {
4065
- let s = ko.wrap(Ao(e, i)), c = vo(s.v0, s.v1, s.v2), l = B(27), u = $(a, s.materialIndex, B(1), l), d = $(a, s.materialIndex, B(2), l), f = V(u.x.add(u.y).add(u.z).div(3).mul(d.a).mul(c), z(1e-10)).div(V(o, z(1e-10))), p = z(0).toVar();
4066
- return N(bo(s.v0, s.v1, s.v2, r), () => {
4067
- let e = yo(s.v0, s.v1, s.v2, r);
4048
+ }), ko = M(([e, t, n, r, i, a, o]) => {
4049
+ let s = Do.wrap(Oo(e, i)), c = go(s.v0, s.v1, s.v2), l = B(27), u = $(a, s.materialIndex, B(1), l), d = $(a, s.materialIndex, B(2), l), f = V(u.x.add(u.y).add(u.z).div(3).mul(d.a).mul(c), z(1e-10)).div(V(o, z(1e-10))), p = z(0).toVar();
4050
+ return N(vo(s.v0, s.v1, s.v2, r), () => {
4051
+ let e = _o(s.v0, s.v1, s.v2, r);
4068
4052
  p.assign(f.div(V(e, z(1e-10))));
4069
4053
  }).Else(() => {
4070
4054
  let e = U(Ye(s.v1.sub(s.v0), s.v2.sub(s.v0))), r = V(R(n.negate(), e), .001), i = t.mul(t), a = f.div(c);
4071
4055
  p.assign(a.mul(i).div(r));
4072
4056
  }), V(p, Wr);
4073
- }), Mo = M(([e, t, n]) => {
4057
+ }), Ao = M(([e, t, n]) => {
4074
4058
  let r = B(0).toVar(), i = t.sub(1).toVar();
4075
4059
  return P(r.lessThan(i), () => {
4076
- let t = r.add(i).div(2).toVar(), a = e.element(t.mul(Oo)).b;
4060
+ let t = r.add(i).div(2).toVar(), a = e.element(t.mul(Eo)).b;
4077
4061
  N(a.lessThan(n), () => {
4078
4062
  r.assign(t.add(1));
4079
4063
  }).Else(() => {
4080
4064
  i.assign(t);
4081
4065
  });
4082
4066
  }), r;
4083
- }), No = M(([e, t, n, r, i, a, o, s]) => {
4084
- let c = ho({
4067
+ }), jo = M(([e, t, n, r, i, a, o, s]) => {
4068
+ let c = po({
4085
4069
  position: J(0),
4086
4070
  normal: J(0),
4087
4071
  emission: J(0),
@@ -4093,40 +4077,40 @@ var Do = 8, Oo = 2, ko = Cr({
4093
4077
  valid: !1
4094
4078
  }).toVar();
4095
4079
  return N(a.greaterThan(B(0)), () => {
4096
- let n = Mo(i, a, $t(r)).toVar().mul(Oo), l = i.element(n), u = i.element(n.add(1)), d = B(l.r), f = V(l.g, z(1e-10)), p = u.xyz, m = u.w, h = ko.wrap(Ao(d, s)), g = q($t(r).toVar(), $t(r).toVar()), _ = U(Ye(h.v1.sub(h.v0), h.v2.sub(h.v0)));
4097
- N(bo(h.v0, h.v1, h.v2, e), () => {
4098
- let n = xo.wrap(Co(h.v0, h.v1, h.v2, e, g));
4080
+ let n = Ao(i, a, $t(r)).toVar().mul(Eo), l = i.element(n), u = i.element(n.add(1)), d = B(l.r), f = V(l.g, z(1e-10)), p = u.xyz, m = u.w, h = Do.wrap(Oo(d, s)), g = q($t(r).toVar(), $t(r).toVar()), _ = U(Ye(h.v1.sub(h.v0), h.v2.sub(h.v0)));
4081
+ N(vo(h.v0, h.v1, h.v2, e), () => {
4082
+ let n = yo.wrap(xo(h.v0, h.v1, h.v2, e, g));
4099
4083
  N(n.valid.and(n.solidAngle.greaterThan(1e-7)), () => {
4100
4084
  let r = n.direction, i = n.position, a = R(r, t), s = R(r, _.negate());
4101
4085
  N(a.greaterThan(0).and(s.greaterThan(0)), () => {
4102
- let t = wo(i, h.v0, h.v1, h.v2), a = U(h.n0.mul(t.x).add(h.n1.mul(t.y)).add(h.n2.mul(t.z))), l = et(i.sub(e)), u = f.div(V(o, z(1e-10))).div(n.solidAngle);
4086
+ let t = So(i, h.v0, h.v1, h.v2), a = U(h.n0.mul(t.x).add(h.n1.mul(t.y)).add(h.n2.mul(t.z))), l = et(i.sub(e)), u = f.div(V(o, z(1e-10))).div(n.solidAngle);
4103
4087
  c.position.assign(i), c.normal.assign(a), c.emission.assign(p), c.direction.assign(r), c.distance.assign(l), c.pdf.assign(V(u, Wr)), c.area.assign(m), c.cosThetaLight.assign(s), c.valid.assign(!0);
4104
4088
  });
4105
4089
  });
4106
4090
  }).Else(() => {
4107
- let n = _o(h.v0, h.v1, h.v2, g), r = To(h.n0, h.n1, h.n2, g), i = n.sub(e), a = R(i, i), s = ht(a), l = i.div(s), u = R(l, t), d = R(l, r.negate());
4091
+ let n = ho(h.v0, h.v1, h.v2, g), r = Co(h.n0, h.n1, h.n2, g), i = n.sub(e), a = R(i, i), s = ht(a), l = i.div(s), u = R(l, t), d = R(l, r.negate());
4108
4092
  N(u.greaterThan(0).and(d.greaterThan(0)), () => {
4109
4093
  let e = f.div(V(o, z(1e-10)).mul(m)).mul(a).div(d);
4110
4094
  c.position.assign(n), c.normal.assign(r), c.emission.assign(p), c.direction.assign(l), c.distance.assign(s), c.pdf.assign(V(e, Wr)), c.area.assign(m), c.cosThetaLight.assign(d), c.valid.assign(!0);
4111
4095
  });
4112
4096
  });
4113
4097
  }), c;
4114
- }), Po = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m]) => {
4115
- let h = go({
4098
+ }), Mo = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m]) => {
4099
+ let h = mo({
4116
4100
  contribution: J(0),
4117
4101
  hasEmissive: !1,
4118
4102
  emissionOnly: J(0),
4119
4103
  distance: z(0)
4120
4104
  }).toVar();
4121
4105
  return N(a.greaterThan(B(1)).and(r.roughness.greaterThan(.9)).and(r.metalness.lessThan(.1)).not(), () => {
4122
- let a = ho.wrap(No(e, t, i, o, c, l, u, d));
4106
+ let a = po.wrap(jo(e, t, i, o, c, l, u, d));
4123
4107
  N(a.valid.and(a.pdf.greaterThan(0)), () => {
4124
4108
  h.hasEmissive.assign(!0), h.emissionOnly.assign(a.emission), h.distance.assign(a.distance);
4125
4109
  let i = V(z(0), R(t, a.direction));
4126
4110
  N(i.greaterThan(0), () => {
4127
4111
  let c = m(e, t, r), l = e.add(c), u = a.distance.sub(.001), d = f(l, a.direction, u, o);
4128
4112
  N(d.greaterThan(0), () => {
4129
- let e = p(n, a.direction, t, r), o = oo(n, a.direction, t, r), c = W(o.greaterThan(0), Xr({
4113
+ let e = p(n, a.direction, t, r), o = io(n, a.direction, t, r), c = W(o.greaterThan(0), Xr({
4130
4114
  pdf1: a.pdf,
4131
4115
  pdf2: o
4132
4116
  }), z(1));
@@ -4135,8 +4119,8 @@ var Do = 8, Oo = 2, ko = Cr({
4135
4119
  });
4136
4120
  });
4137
4121
  }), h;
4138
- }), Fo = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m]) => go.wrap(Po(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m)).contribution), Io = 4, Lo = 2, Ro = 32, zo = M(([e, t, n, r, i, a]) => {
4139
- let o = ho({
4122
+ }), No = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m]) => mo.wrap(Mo(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m)).contribution), Po = 4, Fo = 2, Io = 32, Lo = M(([e, t, n, r, i, a]) => {
4123
+ let o = po({
4140
4124
  position: J(0),
4141
4125
  normal: J(0),
4142
4126
  emission: J(0),
@@ -4147,12 +4131,12 @@ var Do = 8, Oo = 2, ko = Cr({
4147
4131
  cosThetaLight: z(0),
4148
4132
  valid: !1
4149
4133
  }).toVar(), s = z(1).toVar(), c = B(0).toVar(), l = I(!1).toVar();
4150
- return P(Ro, () => {
4151
- let t = c.mul(B(Io)), i = r.element(t.add(B(1))), a = r.element(t.add(B(2)));
4134
+ return P(Io, () => {
4135
+ let t = c.mul(B(Po)), i = r.element(t.add(B(1))), a = r.element(t.add(B(2)));
4152
4136
  N(i.w.greaterThan(.5), () => {
4153
4137
  l.assign(I(!0)), Ve();
4154
4138
  });
4155
- let o = B(a.x), u = B(a.y), d = o.mul(B(Io)), f = r.element(d), p = r.element(d.add(B(1))), m = u.mul(B(Io)), h = r.element(m), g = r.element(m.add(B(1))), _ = J(f.x.add(p.x).mul(.5), f.y.add(p.y).mul(.5), f.z.add(p.z).mul(.5)), v = J(h.x.add(g.x).mul(.5), h.y.add(g.y).mul(.5), h.z.add(g.z).mul(.5)), y = _.sub(e), b = v.sub(e), x = V(R(y, y), z(.01)), S = V(R(b, b), z(.01)), C = V(f.w, z(0)), w = V(h.w, z(0)), T = C.div(x), E = w.div(S), D = T.add(E);
4139
+ let o = B(a.x), u = B(a.y), d = o.mul(B(Po)), f = r.element(d), p = r.element(d.add(B(1))), m = u.mul(B(Po)), h = r.element(m), g = r.element(m.add(B(1))), _ = J(f.x.add(p.x).mul(.5), f.y.add(p.y).mul(.5), f.z.add(p.z).mul(.5)), v = J(h.x.add(g.x).mul(.5), h.y.add(g.y).mul(.5), h.z.add(g.z).mul(.5)), y = _.sub(e), b = v.sub(e), x = V(R(y, y), z(.01)), S = V(R(b, b), z(.01)), C = V(f.w, z(0)), w = V(h.w, z(0)), T = C.div(x), E = w.div(S), D = T.add(E);
4156
4140
  N(D.lessThanEqual(z(0)), () => {
4157
4141
  c.assign(o);
4158
4142
  }).Else(() => {
@@ -4164,54 +4148,54 @@ var Do = 8, Oo = 2, ko = Cr({
4164
4148
  });
4165
4149
  });
4166
4150
  }), N(l, () => {
4167
- let l = c.mul(B(Io)), u = r.element(l), d = r.element(l.add(B(2))), f = B(d.x), p = B(d.y), m = V(u.w, z(1e-10)), h = $t(n).mul(m), g = z(0).toVar(), _ = f.add(p.sub(B(1))).toVar(), v = z(1e-10).toVar();
4151
+ let l = c.mul(B(Po)), u = r.element(l), d = r.element(l.add(B(2))), f = B(d.x), p = B(d.y), m = V(u.w, z(1e-10)), h = $t(n).mul(m), g = z(0).toVar(), _ = f.add(p.sub(B(1))).toVar(), v = z(1e-10).toVar();
4168
4152
  P({
4169
4153
  start: B(0),
4170
4154
  end: p
4171
4155
  }, ({ i: e }) => {
4172
- let t = f.add(e), n = t.mul(B(Lo)), r = V(i.element(n).g, z(0));
4156
+ let t = f.add(e), n = t.mul(B(Fo)), r = V(i.element(n).g, z(0));
4173
4157
  g.addAssign(r), N(g.greaterThanEqual(h).and(r.greaterThan(z(0))), () => {
4174
4158
  _.assign(t), v.assign(r), Ve();
4175
4159
  });
4176
4160
  }), s.mulAssign(v.div(m));
4177
- let y = _.mul(B(Lo)), b = i.element(y), x = i.element(y.add(B(1))), S = B(b.r), C = x.xyz, w = x.w, T = ko.wrap(Ao(S, a)), E = q($t(n).toVar(), $t(n).toVar()), D = U(Ye(T.v1.sub(T.v0), T.v2.sub(T.v0)));
4178
- N(bo(T.v0, T.v1, T.v2, e), () => {
4179
- let n = xo.wrap(Co(T.v0, T.v1, T.v2, e, E));
4161
+ let y = _.mul(B(Fo)), b = i.element(y), x = i.element(y.add(B(1))), S = B(b.r), C = x.xyz, w = x.w, T = Do.wrap(Oo(S, a)), E = q($t(n).toVar(), $t(n).toVar()), D = U(Ye(T.v1.sub(T.v0), T.v2.sub(T.v0)));
4162
+ N(vo(T.v0, T.v1, T.v2, e), () => {
4163
+ let n = yo.wrap(xo(T.v0, T.v1, T.v2, e, E));
4180
4164
  N(n.valid.and(n.solidAngle.greaterThan(z(1e-7))), () => {
4181
4165
  let r = n.direction, i = n.position, a = R(r, t), c = R(r, D.negate());
4182
4166
  N(a.greaterThan(z(0)).and(c.greaterThan(z(0))), () => {
4183
- let t = wo(i, T.v0, T.v1, T.v2), a = U(T.n0.mul(t.x).add(T.n1.mul(t.y)).add(T.n2.mul(t.z))), l = et(i.sub(e)), u = s.div(V(n.solidAngle, z(1e-10)));
4167
+ let t = So(i, T.v0, T.v1, T.v2), a = U(T.n0.mul(t.x).add(T.n1.mul(t.y)).add(T.n2.mul(t.z))), l = et(i.sub(e)), u = s.div(V(n.solidAngle, z(1e-10)));
4184
4168
  o.position.assign(i), o.normal.assign(a), o.emission.assign(C), o.direction.assign(r), o.distance.assign(l), o.pdf.assign(V(u, Wr)), o.area.assign(w), o.cosThetaLight.assign(c), o.valid.assign(!0);
4185
4169
  });
4186
4170
  });
4187
4171
  }).Else(() => {
4188
- let n = _o(T.v0, T.v1, T.v2, E), r = To(T.n0, T.n1, T.n2, E), i = n.sub(e), a = R(i, i), c = ht(a), l = i.div(c), u = R(l, t), d = R(l, r.negate());
4172
+ let n = ho(T.v0, T.v1, T.v2, E), r = Co(T.n0, T.n1, T.n2, E), i = n.sub(e), a = R(i, i), c = ht(a), l = i.div(c), u = R(l, t), d = R(l, r.negate());
4189
4173
  N(u.greaterThan(z(0)).and(d.greaterThan(z(0))), () => {
4190
4174
  let e = s.div(V(w, z(1e-10))).mul(a).div(d);
4191
4175
  o.position.assign(n), o.normal.assign(r), o.emission.assign(C), o.direction.assign(l), o.distance.assign(c), o.pdf.assign(V(e, Wr)), o.area.assign(w), o.cosThetaLight.assign(d), o.valid.assign(!0);
4192
4176
  });
4193
4177
  });
4194
4178
  }), o;
4195
- }), Bo = 0, Vo = 1, Ho = 2, Uo = 3, Wo = Cr({
4179
+ }), Ro = 0, zo = 1, Bo = 2, Vo = 3, Ho = Cr({
4196
4180
  radiance: "vec4",
4197
4181
  objectNormal: "vec3",
4198
4182
  objectColor: "vec3",
4199
4183
  objectID: "float",
4200
4184
  firstHitPoint: "vec3",
4201
4185
  firstHitDistance: "float"
4202
- }), Go = M(([e, t, n, r, i]) => {
4186
+ }), Uo = M(([e, t, n, r, i]) => {
4203
4187
  let a = i.toVar();
4204
4188
  return N(n.not().or(r.notEqual(t)), () => {
4205
4189
  a.assign(ni(e.metalness, e.roughness, e.transmission, e.clearcoat, e.emissive));
4206
4190
  }), a;
4207
- }), Ko = M(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
4208
- let p = J(0).toVar(), m = J(0).toVar(), h = z(0).toVar(), g = Mr.wrap(Go(n, r, o, s, c)).toVar(), _ = u.toVar();
4191
+ }), Wo = M(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
4192
+ let p = J(0).toVar(), m = J(0).toVar(), h = z(0).toVar(), g = Mr.wrap(Uo(n, r, o, s, c)).toVar(), _ = u.toVar();
4209
4193
  N(l.not(), () => {
4210
4194
  N(d, () => {
4211
- _.assign(ua(n, g, f));
4195
+ _.assign(ca(n, g, f));
4212
4196
  }).Else(() => {
4213
4197
  let e = Pr({
4214
- F0: $i(n.ior),
4198
+ F0: Zi(n.ior),
4215
4199
  NoV: z(1),
4216
4200
  diffuseColor: J(0),
4217
4201
  specularColor: J(0),
@@ -4232,30 +4216,30 @@ var Do = 8, Oo = 2, ko = Cr({
4232
4216
  iorFactor: at(z(2).div(n.ior), 1),
4233
4217
  maxSheenColor: V(n.sheenColor.x, V(n.sheenColor.y, n.sheenColor.z))
4234
4218
  }).toVar();
4235
- _.assign(ua(n, g, e));
4219
+ _.assign(ca(n, g, e));
4236
4220
  });
4237
4221
  });
4238
4222
  let v = i.x.toVar(), y = q(i.y, $t(a)).toVar(), b = J(0).toVar(), x = _.diffuse.toVar(), S = x.add(_.specular).toVar(), C = S.add(_.sheen).toVar(), w = C.add(_.clearcoat).toVar(), T = I(!1).toVar();
4239
4223
  N(v.lessThan(x).and(T.not()), () => {
4240
- p.assign(ma({
4224
+ p.assign(fa({
4241
4225
  N: t,
4242
4226
  xi: y
4243
4227
  }));
4244
4228
  let r = L(R(t, p), 0, 1);
4245
- h.assign(r.mul(zr)), m.assign(ka(e, p, t, n)), T.assign(I(!0));
4229
+ h.assign(r.mul(zr)), m.assign(Da(e, p, t, n)), T.assign(I(!0));
4246
4230
  });
4247
4231
  let E = L(R(t, e), .001, 1).toVar();
4248
4232
  return N(v.lessThan(S).and(T.not()), () => {
4249
- let r = Zr({ N: t }), a = ga({
4233
+ let r = Zr({ N: t }), a = ma({
4250
4234
  V: r.transpose().mul(e).toVar(),
4251
4235
  roughness: n.roughness,
4252
4236
  Xi: i
4253
4237
  });
4254
4238
  b.assign(r.mul(a));
4255
4239
  let o = L(R(t, b), .001, 1);
4256
- p.assign(lt(e.negate(), b)), h.assign(sa(o, E, n.roughness)), m.assign(ka(e, p, t, n)), T.assign(I(!0));
4240
+ p.assign(lt(e.negate(), b)), h.assign(aa(o, E, n.roughness)), m.assign(Da(e, p, t, n)), T.assign(I(!0));
4257
4241
  }), N(v.lessThan(C).and(T.not()), () => {
4258
- b.assign(pa({
4242
+ b.assign(da({
4259
4243
  N: t,
4260
4244
  roughness: n.sheenRoughness,
4261
4245
  Xi: i
@@ -4264,32 +4248,32 @@ var Do = 8, Oo = 2, ko = Cr({
4264
4248
  p.assign(lt(e.negate(), b));
4265
4249
  let o = R(t, p).toVar();
4266
4250
  N(o.lessThanEqual(0), () => {
4267
- p.assign(ma({
4251
+ p.assign(fa({
4268
4252
  N: t,
4269
4253
  xi: i
4270
- })), o.assign(L(R(t, p), 0, 1)), h.assign(o.mul(zr)), m.assign(ka(e, p, t, n));
4254
+ })), o.assign(L(R(t, p), 0, 1)), h.assign(o.mul(zr)), m.assign(Da(e, p, t, n));
4271
4255
  }).Else(() => {
4272
- h.assign(ta(r, n.sheenRoughness).mul(r).div(z(4).mul(a))), h.assign(V(h, Wr)), m.assign(ka(e, p, t, n));
4256
+ h.assign($i(r, n.sheenRoughness).mul(r).div(z(4).mul(a))), h.assign(V(h, Wr)), m.assign(Da(e, p, t, n));
4273
4257
  }), T.assign(I(!0));
4274
4258
  }), N(v.lessThan(w).and(T.not()), () => {
4275
4259
  let r = L(n.clearcoatRoughness, Ur, 1);
4276
- b.assign(pa({
4260
+ b.assign(da({
4277
4261
  N: t,
4278
4262
  roughness: r,
4279
4263
  Xi: i
4280
4264
  }));
4281
4265
  let a = L(R(t, b), 0, 1);
4282
- p.assign(lt(e.negate(), b)), h.assign(sa(a, E, r)), h.assign(V(h, Wr)), m.assign(ka(e, p, t, n)), T.assign(I(!0));
4266
+ p.assign(lt(e.negate(), b)), h.assign(aa(a, E, r)), h.assign(V(h, Wr)), m.assign(Da(e, p, t, n)), T.assign(I(!0));
4283
4267
  }), N(T.not(), () => {
4284
- let r = R(e, t).greaterThan(0).toVar(), o = Sa.wrap(Ea(e, t, n.ior, n.roughness, r, n.dispersion, i, a));
4285
- p.assign(o.direction), h.assign(V(o.pdf, Wr)), m.assign(ka(e, p, t, n));
4268
+ let r = R(e, t).greaterThan(0).toVar(), o = ba.wrap(wa(e, t, n.ior, n.roughness, r, n.dispersion, i, a));
4269
+ p.assign(o.direction), h.assign(V(o.pdf, Wr)), m.assign(Da(e, p, t, n));
4286
4270
  }), h.assign(V(h, Wr)), Dr({
4287
4271
  direction: p,
4288
4272
  value: m,
4289
4273
  pdf: h
4290
4274
  });
4291
- }), qo = M(([e, t, n, r, i, a, o, s, c]) => {
4292
- let l = V(Jr({ v: e }), 0).toVar(), u = Mr.wrap(Go(n, r, i, a, o)).toVar(), d = u.complexityScore.toVar();
4275
+ }), Go = M(([e, t, n, r, i, a, o, s, c]) => {
4276
+ let l = V(Jr({ v: e }), 0).toVar(), u = Mr.wrap(Uo(n, r, i, a, o)).toVar(), d = u.complexityScore.toVar();
4293
4277
  N(u.isMetallic.and(u.isSmooth), () => {
4294
4278
  d.addAssign(.15);
4295
4279
  }), N(u.isTransmissive.and(u.hasClearcoat), () => {
@@ -4304,7 +4288,7 @@ var Do = 8, Oo = 2, ko = Cr({
4304
4288
  });
4305
4289
  let p = mt(z(.001), z(.1), l);
4306
4290
  return l.mul(H(d.mul(.7), f, .3)).mul(p);
4307
- }), Jo = M(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
4291
+ }), Ko = M(([e, t, n, r, i, a, o, s, c, l, u, d, f]) => {
4308
4292
  let p = z(1).toVar();
4309
4293
  return N(e.greaterThanEqual(B(3)), () => {
4310
4294
  let m = V(Jr({ v: t }), 0).toVar();
@@ -4312,7 +4296,7 @@ var Do = 8, Oo = 2, ko = Cr({
4312
4296
  let e = V(m.mul(125), .01), t = $t(a);
4313
4297
  p.assign(W(t.lessThan(e), e, z(0)));
4314
4298
  }).Else(() => {
4315
- let h = Mr.wrap(Go(n, r, o, s, c)).toVar(), g = h.complexityScore.toVar();
4299
+ let h = Mr.wrap(Uo(n, r, o, s, c)).toVar(), g = h.complexityScore.toVar();
4316
4300
  N(h.isMetallic.and(h.isSmooth).and(e.lessThan(B(7))), () => {
4317
4301
  g.addAssign(.3);
4318
4302
  }), N(h.isTransmissive.and(e.lessThan(B(6))), () => {
@@ -4332,7 +4316,7 @@ var Do = 8, Oo = 2, ko = Cr({
4332
4316
  N(o.and(l), () => {
4333
4317
  v.assign(u);
4334
4318
  }).Else(() => {
4335
- v.assign(qo(t, i, n, r, o, s, c, d, f));
4319
+ v.assign(Go(t, i, n, r, o, s, c, d, f));
4336
4320
  });
4337
4321
  let y = H(L(g.mul(.4).add(m.mul(.6)).mul(1.2), .15, .95), L(m.mul(.4).add(g.mul(.1)), .03, .6), L(z(e.sub(_)).div(10), 0, 1)).toVar();
4338
4322
  y.assign(H(y, V(y, v), .4)), N(g.greaterThan(.5), () => {
@@ -4348,12 +4332,12 @@ var Do = 8, Oo = 2, ko = Cr({
4348
4332
  });
4349
4333
  });
4350
4334
  }), p;
4351
- }), Yo = M(([e, t, n, r, i, a, o, s]) => {
4335
+ }), qo = M(([e, t, n, r, i, a, o, s]) => {
4352
4336
  let c = Y(0).toVar();
4353
4337
  return N(e.and(o.not()), () => {
4354
4338
  c.assign(Y(0));
4355
4339
  }).Else(() => {
4356
- let o = Oi({
4340
+ let o = Ei({
4357
4341
  tex: n,
4358
4342
  samp: dt(n),
4359
4343
  direction: t,
@@ -4367,8 +4351,8 @@ var Do = 8, Oo = 2, ko = Cr({
4367
4351
  c.assign(o);
4368
4352
  });
4369
4353
  }), c;
4370
- }), Xo = /* @__PURE__ */ X("\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", [$r, ti]), Zo = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, ee, te, ne, re, ie, ae, oe, se, ce, le, ue, de, j, fe, pe, me, he, ge]) => {
4371
- let _e = J(0).toVar(), ve = J(1).toVar(), ye = z(1).toVar(), be = I(!1).toVar(), xe = z(0).toVar(), Se = J(0).toVar(), Ce = J(0).toVar(), we = z(-1e3).toVar(), Te = e.origin.toVar(), Ee = z(1e10).toVar(), De = B(0).toVar(), Oe = z(1).toVar(), ke = z(1).toVar(), Ae = z(1).toVar(), je = ee.toVar(), Me = te.toVar(), Ne = B(Bo).toVar(), Pe = I(!0).toVar(), Fe = I(!1).toVar(), Ie = I(!1).toVar(), Le = I(!1).toVar();
4354
+ }), Jo = /* @__PURE__ */ X("\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", [$r, ti]), Yo = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, ee, te, ne, re, ie, ae, oe, se, ce, le, ue, de, j, fe, pe, me, he, ge]) => {
4355
+ let _e = J(0).toVar(), ve = J(1).toVar(), ye = z(1).toVar(), be = I(!1).toVar(), xe = z(0).toVar(), Se = J(0).toVar(), Ce = J(0).toVar(), we = z(-1e3).toVar(), Te = e.origin.toVar(), Ee = z(1e10).toVar(), De = B(0).toVar(), Oe = z(1).toVar(), ke = z(1).toVar(), Ae = z(1).toVar(), je = ee.toVar(), Me = te.toVar(), Ne = B(Ro).toVar(), Pe = I(!0).toVar(), Fe = I(!1).toVar(), Ie = I(!1).toVar(), Le = I(!1).toVar();
4372
4356
  I(!1).toVar();
4373
4357
  let Re = z(0).toVar(), ze = B(-1).toVar(), Be = Mr({
4374
4358
  isMetallic: !1,
@@ -4419,18 +4403,18 @@ var Do = 8, Oo = 2, ko = Cr({
4419
4403
  let r = W(e.greaterThan(B(0)), oe, z(1)), te = wr({
4420
4404
  origin: Ge,
4421
4405
  direction: Ke
4422
- }), P = Er.wrap(bi(te, i, a, o)).toVar();
4406
+ }), P = Er.wrap(vi(te, i, a, o)).toVar();
4423
4407
  N(P.didHit.not(), () => {
4424
- let t = Yo(Pe, Ke, S, w, C, k, re, ne), n = z(1).toVar();
4408
+ let t = qo(Pe, Ke, S, w, C, k, re, ne), n = z(1).toVar();
4425
4409
  N(xe.greaterThan(0).and(k).and(A), () => {
4426
- let e = Ei(S, Ke, w, D, O).w.toVar();
4410
+ let e = wi(S, Ke, w, D, O).w.toVar();
4427
4411
  N(e.greaterThan(0), () => {
4428
4412
  n.assign(Xr({
4429
4413
  pdf1: xe,
4430
4414
  pdf2: e
4431
4415
  }));
4432
4416
  });
4433
- }), _e.addAssign(Xo({
4417
+ }), _e.addAssign(Jo({
4434
4418
  contribution: t.xyz.mul(ve).mul(r).mul(n),
4435
4419
  pathLength: z(e),
4436
4420
  fireflyThreshold: ae,
@@ -4443,10 +4427,10 @@ var Do = 8, Oo = 2, ko = Cr({
4443
4427
  });
4444
4428
  let qe = Tr.wrap(ai(P.materialIndex, o)).toVar(), Je = P.uv.toVar(), Ye = P.normal.toVar();
4445
4429
  N(qe.displacementMapIndex.greaterThanEqual(B(0)).and(qe.displacementScale.greaterThan(0)), () => {
4446
- let t = Gi.wrap(Ki(te, P, a, p, qe, e)).toVar();
4430
+ let t = Ui.wrap(Wi(te, P, a, p, qe, e)).toVar();
4447
4431
  Je.assign(t.uv), Ye.assign(t.normal), P.hitPoint.assign(t.hitPoint);
4448
4432
  });
4449
- let Xe = jr.wrap(Ri(s, c, l, u, d, f, qe, Je, P.normal)).toVar();
4433
+ let Xe = jr.wrap(Ii(s, c, l, u, d, f, qe, Je, P.normal)).toVar();
4450
4434
  qe.color.assign(Xe.albedo), qe.metalness.assign(L(Xe.metalness, 0, 1)), qe.roughness.assign(L(Xe.roughness, Hr, 1));
4451
4435
  let Ze = Xe.normal.toVar();
4452
4436
  N(qe.displacementMapIndex.greaterThanEqual(B(0)).and(qe.displacementScale.greaterThan(0)), () => {
@@ -4460,11 +4444,11 @@ var Do = 8, Oo = 2, ko = Cr({
4460
4444
  }).ElseIf(De.equal(B(3)), () => {
4461
4445
  Qe.assign(Ae), $e.assign(ke);
4462
4446
  });
4463
- let tt = ba.wrap(Oa(te, P.hitPoint, Ze, qe, t, Me, Qe, $e)).toVar();
4447
+ let tt = va.wrap(Ea(te, P.hitPoint, Ze, qe, t, Me, Qe, $e)).toVar();
4464
4448
  N(tt.continueRay, () => {
4465
4449
  let e = I(!1).toVar();
4466
4450
  N(tt.isTransmissive.and(Me.greaterThan(B(0))), () => {
4467
- Me.subAssign(1), Ne.assign(B(Ho)), e.assign(I(!0)), N(tt.didReflect.not(), () => {
4451
+ Me.subAssign(1), Ne.assign(B(Bo)), e.assign(I(!0)), N(tt.didReflect.not(), () => {
4468
4452
  N(tt.entering, () => {
4469
4453
  N(De.lessThan(B(3)), () => {
4470
4454
  De.addAssign(1), N(De.equal(B(1)), () => {
@@ -4495,52 +4479,52 @@ var Do = 8, Oo = 2, ko = Cr({
4495
4479
  }), be.assign(I(!0));
4496
4480
  let nt = ln(me, n, e, t, B(-1), he, ge).toVar(), rt = Ke.negate().toVar();
4497
4481
  qe.sheenRoughness.assign(L(qe.sheenRoughness, Hr, 1)), N(Le.not(), () => {
4498
- We.assign(fa(Ze, rt, qe, Xe, Be)), Le.assign(I(!0));
4482
+ We.assign(ua(Ze, rt, qe, Xe, Be)), Le.assign(I(!0));
4499
4483
  });
4500
4484
  let it = J(0).toVar(), at = J(0).toVar(), H = z(0).toVar();
4501
4485
  N(qe.clearcoat.greaterThan(0), () => {
4502
- let e = ja.wrap(Ma(te, P, qe, nt, t));
4486
+ let e = ka.wrap(Aa(te, P, qe, nt, t));
4503
4487
  it.assign(e.L), at.assign(e.brdf), H.assign(e.pdf);
4504
4488
  }).Else(() => {
4505
- let e = Dr.wrap(Ko(rt, Ze, qe, P.materialIndex, nt, t, Ie, ze, Be, Fe, Ue, Le, We));
4489
+ let e = Dr.wrap(Wo(rt, Ze, qe, P.materialIndex, nt, t, Ie, ze, Be, Fe, Ue, Le, We));
4506
4490
  it.assign(e.direction), at.assign(e.value), H.assign(e.pdf), N(ze.notEqual(P.materialIndex).or(Ie.not()), () => {
4507
4491
  Be.assign(ni(qe.metalness, qe.roughness, qe.transmission, qe.clearcoat, qe.emissive));
4508
4492
  }), Ie.assign(I(!0)), ze.assign(P.materialIndex), Fe.assign(I(!0));
4509
4493
  }), N(et(Xe.emissive).greaterThan(0), () => {
4510
4494
  let t = z(1).toVar();
4511
4495
  N(ce.equal(B(1)).and(ue.greaterThan(B(0))).and(xe.greaterThan(0)), () => {
4512
- let e = jo(P.triangleIndex, P.dst, Ke, Ge, a, o, de);
4496
+ let e = ko(P.triangleIndex, P.dst, Ke, Ge, a, o, de);
4513
4497
  t.assign(Xr({
4514
4498
  pdf1: xe,
4515
4499
  pdf2: e
4516
4500
  }));
4517
- }), _e.addAssign(Xo({
4501
+ }), _e.addAssign(Jo({
4518
4502
  contribution: Xe.emissive.mul(ve).mul(r).mul(t),
4519
4503
  pathLength: z(e),
4520
4504
  fireflyThreshold: ae,
4521
4505
  frame: B(ge)
4522
4506
  }));
4523
4507
  });
4524
- let ot = so(P.hitPoint, Ze, qe, rt, it, H, at, n, e, t, m, h, g, _, v, y, b, x, i, a, o, S, C, w, T, E, D, O, k);
4525
- _e.addAssign(Xo({
4508
+ let ot = ao(P.hitPoint, Ze, qe, rt, it, H, at, n, e, t, m, h, g, _, v, y, b, x, i, a, o, S, C, w, T, E, D, O, k);
4509
+ _e.addAssign(Jo({
4526
4510
  contribution: ot.mul(ve).mul(r),
4527
4511
  pathLength: z(e),
4528
4512
  fireflyThreshold: ae,
4529
4513
  frame: B(ge)
4530
4514
  })), N(ce.equal(B(1)).and(ue.greaterThan(B(0))), () => {
4531
- let n = M(([e, t, n, r]) => Ja(e, t, n, r, xi, i, a, o));
4515
+ let n = M(([e, t, n, r]) => Ka(e, t, n, r, yi, i, a, o));
4532
4516
  N(pe.greaterThan(B(0)), () => {
4533
- let i = ho.wrap(zo(P.hitPoint, Ze, t, fe, le, a));
4517
+ let i = po.wrap(Lo(P.hitPoint, Ze, t, fe, le, a));
4534
4518
  N(e.greaterThan(B(1)).and(qe.roughness.greaterThan(.9)).and(qe.metalness.lessThan(.1)).not().and(i.valid).and(i.pdf.greaterThan(0)), () => {
4535
4519
  let a = V(z(0), R(Ze, i.direction));
4536
4520
  N(a.greaterThan(0), () => {
4537
- let o = Ya(P.hitPoint, Ze, qe), s = P.hitPoint.add(o), c = i.distance.sub(.001), l = n(s, i.direction, c, t);
4521
+ let o = qa(P.hitPoint, Ze, qe), s = P.hitPoint.add(o), c = i.distance.sub(.001), l = n(s, i.direction, c, t);
4538
4522
  N(l.greaterThan(0), () => {
4539
- let t = ka(rt, i.direction, Ze, qe), n = oo(rt, i.direction, Ze, qe), o = W(n.greaterThan(0), Xr({
4523
+ let t = Da(rt, i.direction, Ze, qe), n = io(rt, i.direction, Ze, qe), o = W(n.greaterThan(0), Xr({
4540
4524
  pdf1: i.pdf,
4541
4525
  pdf2: n
4542
4526
  }), z(1)), s = i.emission.mul(t).mul(a).div(i.pdf).mul(l).mul(j).mul(o);
4543
- _e.addAssign(Xo({
4527
+ _e.addAssign(Jo({
4544
4528
  contribution: s.mul(ve).mul(r),
4545
4529
  pathLength: z(e),
4546
4530
  fireflyThreshold: ae,
@@ -4550,8 +4534,8 @@ var Do = 8, Oo = 2, ko = Cr({
4550
4534
  });
4551
4535
  });
4552
4536
  }).Else(() => {
4553
- let i = Fo(P.hitPoint, Ze, rt, qe, se, e, t, j, le, ue, de, a, n, ka, Ya);
4554
- _e.addAssign(Xo({
4537
+ let i = No(P.hitPoint, Ze, rt, qe, se, e, t, j, le, ue, de, a, n, Da, qa);
4538
+ _e.addAssign(Jo({
4555
4539
  contribution: i.mul(ve).mul(r),
4556
4540
  pathLength: z(e),
4557
4541
  fireflyThreshold: ae,
@@ -4559,23 +4543,23 @@ var Do = 8, Oo = 2, ko = Cr({
4559
4543
  }));
4560
4544
  });
4561
4545
  }), N(Fe.not().or(e.equal(B(0))), () => {
4562
- Be.assign(Mr.wrap(Go(qe, P.materialIndex, Ie, ze, Be))), Ie.assign(I(!0)), ze.assign(P.materialIndex);
4546
+ Be.assign(Mr.wrap(Uo(qe, P.materialIndex, Ie, ze, Be))), Ie.assign(I(!0)), ze.assign(P.materialIndex);
4563
4547
  });
4564
- let st = kr.wrap(da(qe, e, Be, C, A, k)), ct = Ra.wrap(mo(rt, Ze, qe, it, H, at, n, e, t, st, S, C, w, T, E, D, O, k, A));
4548
+ let st = kr.wrap(la(qe, e, Be, C, A, k)), ct = Ia.wrap(fo(rt, Ze, qe, it, H, at, n, e, t, st, S, C, w, T, E, D, O, k, A));
4565
4549
  ve.mulAssign(ct.throughput), Ge.assign(P.hitPoint.add(Ze.mul(.001))), Ke.assign(ct.direction), xe.assign(ct.combinedPdf), Pe.assign(I(!1)), N(qe.metalness.greaterThan(.7).and(qe.roughness.lessThan(.3)), () => {
4566
- Ne.assign(B(Vo));
4550
+ Ne.assign(B(zo));
4567
4551
  }).ElseIf(qe.transmission.greaterThan(.5), () => {
4568
- Ne.assign(B(Ho));
4552
+ Ne.assign(B(Bo));
4569
4553
  }).Else(() => {
4570
- Ne.assign(B(Uo));
4554
+ Ne.assign(B(Vo));
4571
4555
  }), N(e.equal(B(0)).and(P.didHit), () => {
4572
4556
  Se.assign(Ze), Ce.assign(qe.color.xyz), we.assign(z(P.materialIndex)), Te.assign(P.hitPoint), Ee.assign(P.dst);
4573
4557
  });
4574
- let lt = Jo(e, ve, qe, P.materialIndex, Ke, t, Ie, ze, Be, Fe, Re, k, A);
4558
+ let lt = Ko(e, ve, qe, P.materialIndex, Ke, t, Ie, ze, Be, Fe, Re, k, A);
4575
4559
  N(lt.lessThanEqual(0), () => {
4576
4560
  Ve();
4577
4561
  }), ve.divAssign(lt), F.addAssign(1), Fe.assign(I(!1)), Le.assign(I(!1));
4578
- }), Wo({
4562
+ }), Ho({
4579
4563
  radiance: Y(_e, ye),
4580
4564
  objectNormal: Se,
4581
4565
  objectColor: Ce,
@@ -4583,11 +4567,11 @@ var Do = 8, Oo = 2, ko = Cr({
4583
4567
  firstHitPoint: Te,
4584
4568
  firstHitDistance: Ee
4585
4569
  });
4586
- }), Qo = /* @__PURE__ */ X("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n return vec3f( 1.0f - depth );\n }\n"), $o = /* @__PURE__ */ X("\n fn visualizeNormal( normal: vec3f ) -> vec3f {\n return normal * 0.5f + 0.5f;\n }\n"), es = /* @__PURE__ */ X("\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"), ts = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x]) => {
4570
+ }), Xo = /* @__PURE__ */ X("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n return vec3f( 1.0f - depth );\n }\n"), Zo = /* @__PURE__ */ X("\n fn visualizeNormal( normal: vec3f ) -> vec3f {\n return normal * 0.5f + 0.5f;\n }\n"), Qo = /* @__PURE__ */ X("\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"), $o = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x]) => {
4587
4571
  let S = Y(1, 0, 1, 1).toVar(), C = wr({
4588
4572
  origin: e,
4589
4573
  direction: t
4590
- }), w = Er.wrap(bi(C, n, r, i).toVar());
4574
+ }), w = Er.wrap(vi(C, n, r, i).toVar());
4591
4575
  return N(l.equal(B(7)), () => {
4592
4576
  let e = z(w.triTests).div(u);
4593
4577
  S.assign(W(e.lessThan(1), Y(J(e), 1), Y(1, 0, 0, 1)));
@@ -4596,7 +4580,7 @@ var Do = 8, Oo = 2, ko = Cr({
4596
4580
  S.assign(W(e.lessThan(1), Y(J(e), 1), Y(1, 0, 0, 1)));
4597
4581
  }), N(l.equal(B(10)), () => {
4598
4582
  N(c, () => {
4599
- let e = Oi({
4583
+ let e = Ei({
4600
4584
  tex: a,
4601
4585
  samp: dt(a),
4602
4586
  direction: t,
@@ -4631,7 +4615,7 @@ var Do = 8, Oo = 2, ko = Cr({
4631
4615
  N(w.didHit.not(), () => {
4632
4616
  S.assign(Y(0, 0, 0, 1));
4633
4617
  }).Else(() => {
4634
- let t = Tr.wrap(ai(w.materialIndex, i)).toVar(), n = jr.wrap(Ri(p, m, h, g, _, v, t, w.uv, w.normal)).toVar().emissive.toVar(), r = et(n).toVar();
4618
+ let t = Tr.wrap(ai(w.materialIndex, i)).toVar(), n = jr.wrap(Ii(p, m, h, g, _, v, t, w.uv, w.normal)).toVar().emissive.toVar(), r = et(n).toVar();
4635
4619
  N(r.greaterThan(0), () => {
4636
4620
  let t = n.div(V(r.mul(.1), .001)).toVar(), i = et(e.sub(w.hitPoint)), a = L(z(1).sub(i.div(10)), 0, 1), o = H(t, t.mul(J(1, .8, .6)), a.mul(.3));
4637
4621
  S.assign(Y(o, 1));
@@ -4643,41 +4627,41 @@ var Do = 8, Oo = 2, ko = Cr({
4643
4627
  N(w.didHit.not(), () => {
4644
4628
  S.assign(Y(.5, .5, 1, 1));
4645
4629
  }).Else(() => {
4646
- let e = Tr.wrap(ai(w.materialIndex, i)).toVar(), t = U(jr.wrap(Ri(p, m, h, g, _, v, e, w.uv, w.normal)).toVar().normal);
4647
- S.assign(Y($o({ normal: t }), 1));
4630
+ let e = Tr.wrap(ai(w.materialIndex, i)).toVar(), t = U(jr.wrap(Ii(p, m, h, g, _, v, e, w.uv, w.normal)).toVar().normal);
4631
+ S.assign(Y(Zo({ normal: t }), 1));
4648
4632
  });
4649
4633
  }), N(l.equal(B(2)), () => {
4650
4634
  N(w.didHit.not(), () => {
4651
4635
  S.assign(Y(J(1), 1));
4652
4636
  }).Else(() => {
4653
- let e = es({
4637
+ let e = Qo({
4654
4638
  worldPos: w.hitPoint,
4655
4639
  cameraProjectionMatrix: y,
4656
4640
  cameraViewMatrix: b
4657
4641
  });
4658
- S.assign(Y(Qo({ depth: e }), 1));
4642
+ S.assign(Y(Xo({ depth: e }), 1));
4659
4643
  });
4660
4644
  }), N(l.equal(B(3)), () => {
4661
4645
  N(w.didHit.not(), () => {
4662
4646
  S.assign(Y(0, 0, 0, 1));
4663
4647
  }).Else(() => {
4664
- let e = Tr.wrap(ai(w.materialIndex, i)).toVar(), t = jr.wrap(Ri(p, m, h, g, _, v, e, w.uv, w.normal)).toVar().albedo.rgb;
4648
+ let e = Tr.wrap(ai(w.materialIndex, i)).toVar(), t = jr.wrap(Ii(p, m, h, g, _, v, e, w.uv, w.normal)).toVar().albedo.rgb;
4665
4649
  S.assign(Y(t, 1));
4666
4650
  });
4667
4651
  }), N(l.equal(B(5)), () => {
4668
4652
  N(w.didHit.not(), () => {
4669
4653
  S.assign(Y(0, 0, 0, 1));
4670
4654
  }).Else(() => {
4671
- let e = Tr.wrap(ai(w.materialIndex, i)).toVar(), t = jr.wrap(Ri(p, m, h, g, _, v, e, w.uv, w.normal)).toVar(), l = t.albedo.rgb.toVar(), u = U(t.normal).toVar(), f = Xt({ state: Zt({ seed: G(d.x).mul(G(1973)).add(G(d.y).mul(G(9277))).add(x.mul(G(26699))) }) }).toVar(), y = ha({
4655
+ let e = Tr.wrap(ai(w.materialIndex, i)).toVar(), t = jr.wrap(Ii(p, m, h, g, _, v, e, w.uv, w.normal)).toVar(), l = t.albedo.rgb.toVar(), u = U(t.normal).toVar(), f = Xt({ state: Zt({ seed: G(d.x).mul(G(1973)).add(G(d.y).mul(G(9277))).add(x.mul(G(26699))) }) }).toVar(), y = pa({
4672
4656
  N: u,
4673
4657
  xi: q($t(f).toVar(), $t(f).toVar()).toVar()
4674
4658
  }).toVar(), b = wr({
4675
4659
  origin: w.hitPoint.add(u.mul(.001)).toVar(),
4676
4660
  direction: y
4677
- }), C = Er.wrap(bi(b, n, r, i).toVar()), T = J(0).toVar();
4661
+ }), C = Er.wrap(vi(b, n, r, i).toVar()), T = J(0).toVar();
4678
4662
  N(C.didHit.not(), () => {
4679
4663
  N(c, () => {
4680
- T.assign(Oi({
4664
+ T.assign(Ei({
4681
4665
  tex: a,
4682
4666
  samp: dt(a),
4683
4667
  direction: y,
@@ -4687,9 +4671,9 @@ var Do = 8, Oo = 2, ko = Cr({
4687
4671
  }).xyz);
4688
4672
  });
4689
4673
  }).Else(() => {
4690
- let e = Tr.wrap(ai(C.materialIndex, i)).toVar(), t = jr.wrap(Ri(p, m, h, g, _, v, e, C.uv, C.normal)).toVar();
4674
+ let e = Tr.wrap(ai(C.materialIndex, i)).toVar(), t = jr.wrap(Ii(p, m, h, g, _, v, e, C.uv, C.normal)).toVar();
4691
4675
  T.assign(t.emissive), N(c, () => {
4692
- let e = U(t.normal).toVar(), n = Oi({
4676
+ let e = U(t.normal).toVar(), n = Ei({
4693
4677
  tex: a,
4694
4678
  samp: dt(a),
4695
4679
  direction: e,
@@ -4705,7 +4689,7 @@ var Do = 8, Oo = 2, ko = Cr({
4705
4689
  });
4706
4690
  }), N(l.equal(B(6)), () => {
4707
4691
  N(w.didHit, () => {
4708
- let e = w.normal.toVar(), n = U(t.sub(e.mul(R(t, e).mul(2)))).toVar(), r = Oi({
4692
+ let e = w.normal.toVar(), n = U(t.sub(e.mul(R(t, e).mul(2)))).toVar(), r = Ei({
4709
4693
  tex: a,
4710
4694
  samp: dt(a),
4711
4695
  direction: n,
@@ -4715,7 +4699,7 @@ var Do = 8, Oo = 2, ko = Cr({
4715
4699
  }).xyz, i = r.div(r.add(1));
4716
4700
  S.assign(Y(i, 1));
4717
4701
  }).Else(() => {
4718
- let e = Oi({
4702
+ let e = Ei({
4719
4703
  tex: a,
4720
4704
  samp: dt(a),
4721
4705
  direction: t,
@@ -4731,7 +4715,7 @@ M(([e, t]) => {
4731
4715
  let n = $t(t), r = J(.25 / 255, -.25 / 255, .25 / 255).toVar();
4732
4716
  return r.assign(H(r.mul(2), r.mul(-2), n)), e.add(r);
4733
4717
  });
4734
- var ns = /* @__PURE__ */ X("\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"), rs = M(([e, t, n, r, i]) => {
4718
+ var es = /* @__PURE__ */ X("\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"), ts = M(([e, t, n, r, i]) => {
4735
4719
  let a = vt(n, e.div(t), 0), o = B(0).toVar();
4736
4720
  return N(a.b.greaterThan(.5), () => {
4737
4721
  o.assign(0);
@@ -4739,7 +4723,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4739
4723
  let e = B(Ze(a.r.mul(z(i)).add(.5)));
4740
4724
  o.assign(L(e, r, i));
4741
4725
  }), o;
4742
- }), is = (e) => {
4726
+ }), ns = (e) => {
4743
4727
  let { pixelCoord: t, writeColorTex: n, writeNDTex: r, writeAlbedoTex: i, resolution: a, frame: o, samplesPerPixel: s, visMode: c, cameraWorldMatrix: l, cameraProjectionMatrixInverse: u, cameraViewMatrix: d, cameraProjectionMatrix: f, bvhBuffer: p, triangleBuffer: m, materialBuffer: h, albedoMaps: g, normalMaps: _, bumpMaps: v, metalnessMaps: y, roughnessMaps: b, emissiveMaps: x, displacementMaps: S, directionalLightsBuffer: C, numDirectionalLights: w, areaLightsBuffer: T, numAreaLights: E, pointLightsBuffer: D, numPointLights: O, spotLightsBuffer: k, numSpotLights: A, envTexture: ee, environmentIntensity: te, envMatrix: ne, envMarginalWeights: re, envConditionalWeights: ie, envTotalSum: ae, envResolution: oe, enableEnvironmentLight: se, useEnvMapIS: ce, maxBounceCount: le, transmissiveBounces: ue, showBackground: de, transparentBackground: j, backgroundIntensity: fe, fireflyThreshold: pe, globalIlluminationIntensity: me, totalTriangleCount: he, enableEmissiveTriangleSampling: ge, emissiveTriangleBuffer: _e, emissiveTriangleCount: ve, emissiveTotalPower: ye, emissiveBoost: be, lightBVHBuffer: xe, lightBVHNodeCount: Se, 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: He } = e, M = wt(G(B(t.x)), G(B(t.y))), Ue = t.div(a), We = t.div(a).mul(2).sub(1).toVar();
4744
4728
  We.y.assign(We.y.negate());
4745
4729
  let F = Y(0).toVar(), Ge = B(0).toVar(), Ke = dn({
@@ -4748,7 +4732,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4748
4732
  frame: o
4749
4733
  }).toVar(), qe = B(t.y).mul(B(a.x)).add(B(t.x)).toVar(), I = J(0, 0, 1).toVar(), L = z(1).toVar(), Je = z(0).toVar(), Ye = B(s).toVar();
4750
4734
  N(o.greaterThan(G(2)).and(je), () => {
4751
- let e = rs(t, a, Me, Ne, Pe);
4735
+ let e = ts(t, a, Me, Ne, Pe);
4752
4736
  Ye.assign(e), N(Ye.equal(B(0)), () => {
4753
4737
  N(we.and(Te), () => {
4754
4738
  let e = vt(Ee, Ue, 0);
@@ -4771,14 +4755,14 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4771
4755
  N(c.equal(B(9)), () => {
4772
4756
  F.assign(Y(r, 1, 1)), Ge.assign(1), Ve();
4773
4757
  });
4774
- let i = r.sub(.5).mul(Qe), s = We.add(i), we = wr.wrap(Si(s, n, l, u, Fe, Ie, Le, Re, ze, Be, He)), Te = Y(0).toVar();
4758
+ let i = r.sub(.5).mul(Qe), s = We.add(i), we = wr.wrap(bi(s, n, l, u, Fe, Ie, Le, Re, ze, Be, He)), Te = Y(0).toVar();
4775
4759
  N(c.greaterThan(B(0)), () => {
4776
- Te.assign(ts(we.origin, we.direction, p, m, h, ee, ne, te, se, c, Ce, t, a, g, _, v, y, b, x, f, d, o));
4760
+ Te.assign($o(we.origin, we.direction, p, m, h, ee, ne, te, se, c, Ce, t, a, g, _, v, y, b, x, f, d, o));
4777
4761
  }).Else(() => {
4778
- let r = Wo.wrap(Zo(we, n, e, qe, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, ee, te, ne, re, ie, ae, oe, se, ce, le, ue, fe, de, j, pe, me, he, ge, _e, ve, ye, be, xe, Se, t, a, o));
4762
+ let r = Ho.wrap(Yo(we, n, e, qe, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, ee, te, ne, re, ie, ae, oe, se, ce, le, ue, fe, de, j, pe, me, he, ge, _e, ve, ye, be, xe, Se, t, a, o));
4779
4763
  Te.assign(r.radiance), N(e.equal(B(0)), () => {
4780
4764
  R.assign(r.objectNormal), Xe.assign(r.objectColor), Ze.assign(r.objectID), N(r.firstHitDistance.lessThan(1e9), () => {
4781
- I.assign(U(r.objectNormal)), L.assign(ns({
4765
+ I.assign(U(r.objectNormal)), L.assign(es({
4782
4766
  worldPos: r.firstHitPoint,
4783
4767
  cameraProjectionMatrix: f,
4784
4768
  cameraViewMatrix: d
@@ -4796,7 +4780,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4796
4780
  nt.assign(H(e.w, Je, ke));
4797
4781
  });
4798
4782
  }), xt(n, M, Y($e.xyz, nt)).toWriteOnly(), xt(r, M, et).toWriteOnly(), xt(i, M, Y(tt, 1)).toWriteOnly();
4799
- }, as = class {
4783
+ }, rs = class {
4800
4784
  constructor(e = "Build") {
4801
4785
  this.label = e, this.entries = /* @__PURE__ */ new Map(), this.order = [], this.totalStart = performance.now();
4802
4786
  }
@@ -4823,17 +4807,17 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4823
4807
  total: Math.round(e)
4824
4808
  };
4825
4809
  }
4826
- }, os = 8, ss = class {
4810
+ }, is = 8, as = class {
4827
4811
  constructor() {
4828
4812
  this.computeNode = null, this.prevColorTexNode = null, this.prevNormalDepthTexNode = null, this.prevAlbedoTexNode = null, this.adaptiveSamplingTexNode = null, this.tileOffsetX = K(0, "int"), this.tileOffsetY = K(0, "int"), this.renderWidth = K(1920, "int"), this.renderHeight = K(1080, "int"), this._dispatchX = 0, this._dispatchY = 0, this._sceneTextureNodes = null;
4829
4813
  }
4830
4814
  setupCompute(e) {
4831
- let { stage: t, storageTextures: n } = e, r = new as("setupCompute");
4815
+ let { stage: t, storageTextures: n } = e, r = new rs("setupCompute");
4832
4816
  r.start("Create texture nodes");
4833
4817
  let i = this._createTextureNodes(t, n);
4834
4818
  r.end("Create texture nodes"), r.start("Build compute node (TSL)");
4835
4819
  let a = n.renderWidth, o = n.renderHeight;
4836
- this._dispatchX = Math.ceil(a / os), this._dispatchY = Math.ceil(o / os), this.renderWidth.value = a, this.renderHeight.value = o;
4820
+ this._dispatchX = Math.ceil(a / is), this._dispatchY = Math.ceil(o / is), this.renderWidth.value = a, this.renderHeight.value = o;
4837
4821
  let s = n.getWriteTextures();
4838
4822
  this.computeNode = this._buildComputeNode(t, i, s.color, s.normalDepth, s.albedo), r.end("Build compute node (TSL)"), r.print();
4839
4823
  }
@@ -4845,7 +4829,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4845
4829
  return this._sceneTextureNodes;
4846
4830
  }
4847
4831
  setSize(e, t) {
4848
- this._dispatchX = Math.ceil(e / os), this._dispatchY = Math.ceil(t / os), this.computeNode && this.computeNode.setCount([
4832
+ this._dispatchX = Math.ceil(e / is), this._dispatchY = Math.ceil(t / is), this.computeNode && this.computeNode.setCount([
4849
4833
  this._dispatchX,
4850
4834
  this._dispatchY,
4851
4835
  1
@@ -4853,7 +4837,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4853
4837
  }
4854
4838
  setTileDispatch(e, t, n, r) {
4855
4839
  this.tileOffsetX.value = e, this.tileOffsetY.value = t;
4856
- let i = Math.ceil(n / os), a = Math.ceil(r / os);
4840
+ let i = Math.ceil(n / is), a = Math.ceil(r / is);
4857
4841
  this.computeNode && this.computeNode.setCount([
4858
4842
  i,
4859
4843
  a,
@@ -4869,7 +4853,9 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4869
4853
  }
4870
4854
  forceCompile() {}
4871
4855
  _createTextureNodes(e, t) {
4872
- let n = e.triangleStorageNode, r = e.bvhStorageNode, i = e.materialData.materialStorageNode, a = e.emissiveTriangleStorageNode, s = e.lightBVHStorageNode, c = vt(e.environment.environmentTexture), l = new o();
4856
+ let n = e.triangleStorageNode, r = e.bvhStorageNode, i = e.materialData.materialStorageNode, a = e.emissiveTriangleStorageNode, s = e.lightBVHStorageNode;
4857
+ pi(e.meshVisibilityStorageNode);
4858
+ let c = vt(e.environment.environmentTexture), l = new o();
4873
4859
  this.adaptiveSamplingTexNode = l;
4874
4860
  let u = e.environment.envMarginalStorageNode, d = e.environment.envConditionalStorageNode, f = t.getReadTextures();
4875
4861
  this.prevColorTexNode = vt(f.color), this.prevNormalDepthTexNode = vt(f.normalDepth), this.prevAlbedoTexNode = vt(f.albedo);
@@ -4904,9 +4890,9 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4904
4890
  _buildComputeNode(e, t, n, r, i) {
4905
4891
  let { triStorage: a, bvhStorage: o, matStorage: s, emissiveTriStorage: c, lightBVHStorage: l, envTex: u, adaptiveSamplingTex: d, marginalCDFStorage: f, conditionalCDFStorage: p, 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;
4906
4892
  return M(() => {
4907
- let t = x.add(B(Dt.x).mul(os)).add(B(nt.x)), O = S.add(B(Dt.y).mul(os)).add(B(nt.y));
4893
+ let t = x.add(B(Dt.x).mul(is)).add(B(nt.x)), O = S.add(B(Dt.y).mul(is)).add(B(nt.y));
4908
4894
  N(t.lessThan(C).and(O.lessThan(w)), () => {
4909
- is({
4895
+ ns({
4910
4896
  pixelCoord: q(z(t).add(.5), z(O).add(.5)),
4911
4897
  writeColorTex: n,
4912
4898
  writeNDTex: r,
@@ -4987,15 +4973,15 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
4987
4973
  this._dispatchY,
4988
4974
  1
4989
4975
  ], [
4990
- os,
4991
- os,
4976
+ is,
4977
+ is,
4992
4978
  1
4993
4979
  ]);
4994
4980
  }
4995
4981
  dispose() {
4996
4982
  this.computeNode?.dispose(), this.computeNode = null, this.prevColorTexNode = null, this.prevNormalDepthTexNode = null, this.prevAlbedoTexNode = null, this.adaptiveSamplingTexNode = null, this._sceneTextureNodes = null;
4997
4983
  }
4998
- }, cs = class {
4984
+ }, os = class {
4999
4985
  constructor(e, t) {
5000
4986
  this.traversalCost = e, this.intersectionCost = t, this.maxTreeletLeaves = 7, this.minImprovement = .02, this.topologyCache = /* @__PURE__ */ new Map();
5001
4987
  for (let e = 3; e <= this.maxTreeletLeaves; e++) this.topologyCache.set(e, this.generateTopologies(e));
@@ -5186,10 +5172,10 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5186
5172
  }
5187
5173
  buildSubtree(e, t, n) {
5188
5174
  if (typeof e == "number") {
5189
- let r = t[n[e]], i = new ls();
5175
+ let r = t[n[e]], i = new ss();
5190
5176
  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;
5191
5177
  }
5192
- let r = this.buildSubtree(e[0], t, n), i = this.buildSubtree(e[1], t, n), a = new ls();
5178
+ let r = this.buildSubtree(e[0], t, n), i = this.buildSubtree(e[1], t, n), a = new ss();
5193
5179
  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;
5194
5180
  }
5195
5181
  setTreeletSize(e) {
@@ -5203,11 +5189,11 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5203
5189
  getStatistics() {
5204
5190
  return { ...this.stats };
5205
5191
  }
5206
- }, ls = class {
5192
+ }, ss = class {
5207
5193
  constructor() {
5208
5194
  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;
5209
5195
  }
5210
- }, us = class {
5196
+ }, cs = class {
5211
5197
  constructor(e, t) {
5212
5198
  this.traversalCost = e, this.intersectionCost = t, this.batchSizeRatio = .02, this.maxIterations = 2, this.timeBudgetMs = 15e3, this.stats = {
5213
5199
  reinsertionsApplied: 0,
@@ -5372,7 +5358,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5372
5358
  }
5373
5359
  return this.stats.timeMs = performance.now() - n, this.stats;
5374
5360
  }
5375
- }, ds = {
5361
+ }, ls = {
5376
5362
  FLOATS_PER_TRIANGLE: 32,
5377
5363
  POSITION_A_OFFSET: 0,
5378
5364
  POSITION_B_OFFSET: 4,
@@ -5382,11 +5368,11 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5382
5368
  NORMAL_C_OFFSET: 20,
5383
5369
  UV_AB_OFFSET: 24,
5384
5370
  UV_C_MAT_OFFSET: 28
5385
- }, fs = ds.FLOATS_PER_TRIANGLE, ps = class {
5371
+ }, us = ls.FLOATS_PER_TRIANGLE, ds = class {
5386
5372
  constructor() {
5387
5373
  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;
5388
5374
  }
5389
- }, ms = class {
5375
+ }, fs = class {
5390
5376
  constructor() {
5391
5377
  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 = {
5392
5378
  sahSplits: 0,
@@ -5446,9 +5432,9 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5446
5432
  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)));
5447
5433
  }
5448
5434
  initializeTriangleArrays() {
5449
- let e = this.totalTriangles, t = this.triangles, n = ds.POSITION_A_OFFSET, r = ds.POSITION_B_OFFSET, i = ds.POSITION_C_OFFSET;
5435
+ let e = this.totalTriangles, t = this.triangles, n = ls.POSITION_A_OFFSET, r = ls.POSITION_B_OFFSET, i = ls.POSITION_C_OFFSET;
5450
5436
  for (let a = 0; a < e; a++) {
5451
- let e = a * fs, 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;
5437
+ let e = a * us, 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;
5452
5438
  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;
5453
5439
  }
5454
5440
  }
@@ -5493,7 +5479,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5493
5479
  this.splitStats.mortonSortTime += performance.now() - t;
5494
5480
  }
5495
5481
  build(e, t = 30, n = null) {
5496
- return this.totalTriangles = e.byteLength / (fs * 4), this.processedTriangles = 0, this.lastProgressUpdate = performance.now(), this.useWorker && typeof Worker < "u" ? new Promise((r, i) => {
5482
+ return this.totalTriangles = e.byteLength / (us * 4), this.processedTriangles = 0, this.lastProgressUpdate = performance.now(), this.useWorker && typeof Worker < "u" ? new Promise((r, i) => {
5497
5483
  try {
5498
5484
  let a = new Worker(new URL(
5499
5485
  /* @vite-ignore */
@@ -5501,7 +5487,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5501
5487
  "" + import.meta.url
5502
5488
  ), { type: "module" }), o = this.totalTriangles, s = typeof SharedArrayBuffer < "u";
5503
5489
  console.log(`[BVHBuilder] SharedArrayBuffer: ${s ? "enabled" : "unavailable (using transfer fallback)"}`);
5504
- let c = s ? new SharedArrayBuffer(o * fs * 4) : null;
5490
+ let c = s ? new SharedArrayBuffer(o * us * 4) : null;
5505
5491
  a.onmessage = (e) => {
5506
5492
  let { bvhData: t, triangles: o, originalToBvh: s, error: l, progress: u, treeletStats: d } = e.data;
5507
5493
  if (l) {
@@ -5560,7 +5546,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5560
5546
  }
5561
5547
  buildSync(e, t = 30, n = null, r = null) {
5562
5548
  let i = performance.now();
5563
- this.totalNodes = 0, this.processedTriangles = 0, this.triangles = e, this.totalTriangles = e.byteLength / (fs * 4), this.lastProgressUpdate = performance.now(), this.splitStats = {
5549
+ this.totalNodes = 0, this.processedTriangles = 0, this.triangles = e, this.totalTriangles = e.byteLength / (us * 4), this.lastProgressUpdate = performance.now(), this.splitStats = {
5564
5550
  sahSplits: 0,
5565
5551
  objectMedianSplits: 0,
5566
5552
  spatialMedianSplits: 0,
@@ -5585,7 +5571,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5585
5571
  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();
5586
5572
  let s = performance.now(), c = this.buildNodeRecursive(0, a, t, n);
5587
5573
  if (this.splitStats.sahBuildTime = performance.now() - s, this.enableTreeletOptimization && this.totalTriangles > 1e3) {
5588
- let e = this.totalTriangles > this.treeletComplexityThreshold, t = e ? 3 : this.treeletSize, r = e ? 10 : this.maxTreeletsPerScene, i = new cs(this.traversalCost, this.intersectionCost);
5574
+ let e = this.totalTriangles > this.treeletComplexityThreshold, t = e ? 3 : this.treeletSize, r = e ? 10 : this.maxTreeletsPerScene, i = new os(this.traversalCost, this.intersectionCost);
5589
5575
  i.setTreeletSize(t), i.setMinImprovement(this.treeletMinImprovement), i.setMaxTreelets(r);
5590
5576
  let a = performance.now();
5591
5577
  for (let e = 0; e < this.treeletOptimizationPasses; e++) {
@@ -5607,7 +5593,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5607
5593
  this.splitStats.treeletsProcessed = s.treeletsProcessed, this.splitStats.treeletsImproved = s.treeletsImproved, this.splitStats.averageSAHImprovement = s.averageSAHImprovement;
5608
5594
  }
5609
5595
  if (this.enableReinsertionOptimization && this.totalTriangles > 1e3) {
5610
- let e = new us(this.traversalCost, this.intersectionCost);
5596
+ let e = new cs(this.traversalCost, this.intersectionCost);
5611
5597
  e.setBatchSizeRatio(this.reinsertionBatchSizeRatio), e.setMaxIterations(this.reinsertionMaxIterations);
5612
5598
  let t = n ? (e) => {
5613
5599
  n(e);
@@ -5622,10 +5608,10 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5622
5608
  }
5623
5609
  let l = performance.now();
5624
5610
  this.applySAOrdering(c), this.splitStats.saOrderTime = performance.now() - l;
5625
- let u = performance.now(), d = this.triangles, f = r || new Float32Array(a * fs);
5611
+ let u = performance.now(), d = this.triangles, f = r || new Float32Array(a * us);
5626
5612
  for (let e = 0; e < a; e++) {
5627
- let t = this.indices[e] * fs, n = e * fs;
5628
- f.set(d.subarray(t, t + fs), n);
5613
+ let t = this.indices[e] * us, n = e * us;
5614
+ f.set(d.subarray(t, t + us), n);
5629
5615
  }
5630
5616
  this.reorderedTriangleData = f;
5631
5617
  let p = new Uint32Array(a);
@@ -5641,7 +5627,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5641
5627
  n - this.lastProgressUpdate < this.progressUpdateInterval || (this.lastProgressUpdate = n, t(Math.min(Math.floor(this.processedTriangles / this.totalTriangles * 100), 99)));
5642
5628
  }
5643
5629
  buildNodeRecursiveToDepth(e, t, n, r, i, a, o, s, c, l, u) {
5644
- let d = new ps();
5630
+ let d = new ds();
5645
5631
  this.totalNodes++;
5646
5632
  let f = t - e;
5647
5633
  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;
@@ -5682,7 +5668,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5682
5668
  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);
5683
5669
  }
5684
5670
  buildNodeRecursive(e, t, n, r, i, a, o, s, c, l) {
5685
- let u = new ps();
5671
+ let u = new ds();
5686
5672
  this.totalNodes++;
5687
5673
  let d = t - e;
5688
5674
  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;
@@ -5980,7 +5966,7 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5980
5966
  let o = r - e, s = i - t, c = a - n;
5981
5967
  return 2 * (o * s + s * c + c * o);
5982
5968
  }
5983
- }, hs = {
5969
+ }, ps = {
5984
5970
  FLOATS_PER_TRIANGLE: 32,
5985
5971
  POSITION_A_OFFSET: 0,
5986
5972
  POSITION_B_OFFSET: 4,
@@ -5988,28 +5974,28 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
5988
5974
  NORMAL_A_OFFSET: 12,
5989
5975
  NORMAL_B_OFFSET: 16,
5990
5976
  NORMAL_C_OFFSET: 20
5991
- }, gs = hs.FLOATS_PER_TRIANGLE, _s = 16, vs = -1, ys = -2, bs = class {
5977
+ }, ms = ps.FLOATS_PER_TRIANGLE, hs = 16, gs = -1, _s = -2, vs = class {
5992
5978
  constructor() {
5993
5979
  this._bounds = null, this._boundsNodeCount = 0;
5994
5980
  }
5995
5981
  updateTrianglePositions(e, t, n) {
5996
5982
  let r = n.length;
5997
5983
  for (let i = 0; i < r; i++) {
5998
- let r = n[i], a = i * gs, 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];
5999
- e[a + hs.POSITION_A_OFFSET] = s, e[a + hs.POSITION_A_OFFSET + 1] = c, e[a + hs.POSITION_A_OFFSET + 2] = l, e[a + hs.POSITION_B_OFFSET] = u, e[a + hs.POSITION_B_OFFSET + 1] = d, e[a + hs.POSITION_B_OFFSET + 2] = f, e[a + hs.POSITION_C_OFFSET] = p, e[a + hs.POSITION_C_OFFSET + 1] = m, e[a + hs.POSITION_C_OFFSET + 2] = h;
5984
+ let r = n[i], a = i * ms, 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];
5985
+ 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;
6000
5986
  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;
6001
- e[a + hs.NORMAL_A_OFFSET] = S, e[a + hs.NORMAL_A_OFFSET + 1] = C, e[a + hs.NORMAL_A_OFFSET + 2] = w, e[a + hs.NORMAL_B_OFFSET] = S, e[a + hs.NORMAL_B_OFFSET + 1] = C, e[a + hs.NORMAL_B_OFFSET + 2] = w, e[a + hs.NORMAL_C_OFFSET] = S, e[a + hs.NORMAL_C_OFFSET + 1] = C, e[a + hs.NORMAL_C_OFFSET + 2] = w;
5987
+ 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;
6002
5988
  }
6003
5989
  }
6004
5990
  refitRange(e, t, n, r) {
6005
5991
  r > this._boundsNodeCount && (this._bounds = new Float32Array(r * 6), this._boundsNodeCount = r);
6006
5992
  let i = this._bounds, a = n + r;
6007
5993
  for (let r = a - 1; r >= n; r--) {
6008
- let a = r * _s, o = (r - n) * 6;
6009
- if (e[a + 3] === vs) {
5994
+ let a = r * hs, o = (r - n) * 6;
5995
+ if (e[a + 3] === gs) {
6010
5996
  let n = e[a], r = e[a + 1], s = Infinity, c = Infinity, l = Infinity, u = -Infinity, d = -Infinity, f = -Infinity;
6011
5997
  for (let e = 0; e < r; e++) {
6012
- let r = (n + e) * gs, i = t[r + hs.POSITION_A_OFFSET], a = t[r + hs.POSITION_A_OFFSET + 1], o = t[r + hs.POSITION_A_OFFSET + 2], p = t[r + hs.POSITION_B_OFFSET], m = t[r + hs.POSITION_B_OFFSET + 1], h = t[r + hs.POSITION_B_OFFSET + 2], g = t[r + hs.POSITION_C_OFFSET], _ = t[r + hs.POSITION_C_OFFSET + 1], v = t[r + hs.POSITION_C_OFFSET + 2];
5998
+ let r = (n + e) * ms, 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];
6013
5999
  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);
6014
6000
  }
6015
6001
  i[o] = s, i[o + 1] = c, i[o + 2] = l, i[o + 3] = u, i[o + 4] = d, i[o + 5] = f;
@@ -6023,15 +6009,15 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
6023
6009
  n !== this._boundsNodeCount && (this._bounds = new Float32Array(n * 6), this._boundsNodeCount = n);
6024
6010
  let r = this._bounds;
6025
6011
  for (let i = n - 1; i >= 0; i--) {
6026
- let n = i * _s, a = i * 6, o = e[n + 3];
6027
- if (o === vs) {
6012
+ let n = i * hs, a = i * 6, o = e[n + 3];
6013
+ if (o === gs) {
6028
6014
  let i = e[n], o = e[n + 1], s = Infinity, c = Infinity, l = Infinity, u = -Infinity, d = -Infinity, f = -Infinity;
6029
6015
  for (let e = 0; e < o; e++) {
6030
- let n = (i + e) * gs, r = t[n + hs.POSITION_A_OFFSET], a = t[n + hs.POSITION_A_OFFSET + 1], o = t[n + hs.POSITION_A_OFFSET + 2], p = t[n + hs.POSITION_B_OFFSET], m = t[n + hs.POSITION_B_OFFSET + 1], h = t[n + hs.POSITION_B_OFFSET + 2], g = t[n + hs.POSITION_C_OFFSET], _ = t[n + hs.POSITION_C_OFFSET + 1], v = t[n + hs.POSITION_C_OFFSET + 2];
6016
+ let n = (i + e) * ms, 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];
6031
6017
  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);
6032
6018
  }
6033
6019
  r[a] = s, r[a + 1] = c, r[a + 2] = l, r[a + 3] = u, r[a + 4] = d, r[a + 5] = f;
6034
- } else if (o === ys) {
6020
+ } else if (o === _s) {
6035
6021
  let t = e[n] * 6;
6036
6022
  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];
6037
6023
  } else {
@@ -6040,14 +6026,14 @@ var ns = /* @__PURE__ */ X("\n fn computeNDCDepth( worldPos: vec3f, cameraProjec
6040
6026
  }
6041
6027
  }
6042
6028
  }
6043
- }, xs = 32, Ss = 5e4, Cs = 8;
6044
- function ws(e, t, n, r) {
6045
- let i = e.byteLength / (xs * 4), a = Math.min(navigator.hardwareConcurrency || 4, Cs), o = Math.ceil(Math.log2(a * 2.5 + 1));
6029
+ }, ys = 32, bs = 5e4, xs = 8;
6030
+ function Ss(e, t, n, r) {
6031
+ let i = e.byteLength / (ys * 4), a = Math.min(navigator.hardwareConcurrency || 4, xs), o = Math.ceil(Math.log2(a * 2.5 + 1));
6046
6032
  return console.log(`[ParallelBVH] Parallel build: ${i.toLocaleString()} triangles, ${a} workers, parallelDepth=${o}`), new Promise((s, c) => {
6047
6033
  try {
6048
6034
  let c = new SharedArrayBuffer(e.byteLength);
6049
6035
  new Float32Array(c).set(e);
6050
- 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 * xs * 4), h = new Worker(new URL(
6036
+ 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 * ys * 4), h = new Worker(new URL(
6051
6037
  /* @vite-ignore */
6052
6038
  "" + new URL("assets/BVHWorker-BqQTDljT.js", import.meta.url).href,
6053
6039
  "" + import.meta.url
@@ -6060,7 +6046,7 @@ function ws(e, t, n, r) {
6060
6046
  if (y) return;
6061
6047
  y = !0, console.warn(`[ParallelBVH] Parallel build failed (${e}), falling back to single worker`), b();
6062
6048
  let i = new ArrayBuffer(c.byteLength);
6063
- new Float32Array(i).set(new Float32Array(c)), s(Es(new Float32Array(i), t, n, r));
6049
+ new Float32Array(i).set(new Float32Array(c)), s(ws(new Float32Array(i), t, n, r));
6064
6050
  };
6065
6051
  h.onerror = (e) => {
6066
6052
  x(`coordinator error: ${e.message}`);
@@ -6075,7 +6061,7 @@ function ws(e, t, n, r) {
6075
6061
  return;
6076
6062
  }
6077
6063
  if (t.type === "phase1Result") {
6078
- g = t.splitStats, Ts(t, a, c, l, u, d, f, m, i, n, h, _, b, x, s, v, r);
6064
+ g = t.splitStats, Cs(t, a, c, l, u, d, f, m, i, n, h, _, b, x, s, v, r);
6079
6065
  return;
6080
6066
  }
6081
6067
  if (t.type === "assembleResult") {
@@ -6109,7 +6095,7 @@ function ws(e, t, n, r) {
6109
6095
  }
6110
6096
  });
6111
6097
  }
6112
- function Ts(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) {
6098
+ function Cs(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) {
6113
6099
  let { topFlatData: _, topNodeCount: v, frontierTasks: y, frontierMap: b } = e;
6114
6100
  if (!y || y.length === 0) {
6115
6101
  console.log("[ParallelBVH] No frontier tasks, assembling with top-level tree only"), u.postMessage({
@@ -6210,14 +6196,14 @@ function Ts(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) {
6210
6196
  });
6211
6197
  }
6212
6198
  }
6213
- function Es(e, t, n, r) {
6199
+ function ws(e, t, n, r) {
6214
6200
  return new Promise((i, a) => {
6215
6201
  try {
6216
6202
  let o = new Worker(new URL(
6217
6203
  /* @vite-ignore */
6218
6204
  "" + new URL("assets/BVHWorker-BqQTDljT.js", import.meta.url).href,
6219
6205
  "" + import.meta.url
6220
- ), { type: "module" }), s = e.byteLength / (xs * 4), c = typeof SharedArrayBuffer < "u" ? new SharedArrayBuffer(s * xs * 4) : null;
6206
+ ), { type: "module" }), s = e.byteLength / (ys * 4), c = typeof SharedArrayBuffer < "u" ? new SharedArrayBuffer(s * ys * 4) : null;
6221
6207
  o.onmessage = (e) => {
6222
6208
  let { bvhData: t, triangles: r, originalToBvh: s, error: l, progress: u, treeletStats: d } = e.data;
6223
6209
  if (l) {
@@ -6255,16 +6241,16 @@ function Es(e, t, n, r) {
6255
6241
  }
6256
6242
  });
6257
6243
  }
6258
- function Ds(e) {
6259
- return typeof Worker < "u" && typeof SharedArrayBuffer < "u" && e >= Ss;
6244
+ function Ts(e) {
6245
+ return typeof Worker < "u" && typeof SharedArrayBuffer < "u" && e >= bs;
6260
6246
  }
6261
6247
  //#endregion
6262
6248
  //#region src/Processor/TLASBuilder.js
6263
- var Os = 16, ks = class {
6249
+ var Es = 16, Ds = class {
6264
6250
  constructor() {
6265
6251
  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;
6266
6252
  }
6267
- }, As = class {
6253
+ }, Os = class {
6268
6254
  constructor() {
6269
6255
  this._flatBuffer = null, this._flatBufferCapacity = 0;
6270
6256
  }
@@ -6282,7 +6268,7 @@ var Os = 16, ks = class {
6282
6268
  };
6283
6269
  }
6284
6270
  _buildRecursive(e, t) {
6285
- let n = new ks();
6271
+ let n = new Ds();
6286
6272
  if (t.length === 1) {
6287
6273
  let r = e[t[0]].worldAABB;
6288
6274
  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;
@@ -6319,16 +6305,16 @@ var Os = 16, ks = class {
6319
6305
  let e = r.pop();
6320
6306
  e._flatIndex = n.length, n.push(e), e.rightChild && r.push(e.rightChild), e.leftChild && r.push(e.leftChild);
6321
6307
  }
6322
- let i = n.length * Os;
6308
+ let i = n.length * Es;
6323
6309
  i > this._flatBufferCapacity && (this._flatBuffer = new Float32Array(i), this._flatBufferCapacity = i);
6324
6310
  let a = this._flatBuffer;
6325
6311
  a.fill(0, 0, i);
6326
6312
  for (let e = 0; e < n.length; e++) {
6327
- let r = n[e], i = e * Os;
6313
+ let r = n[e], i = e * Es;
6328
6314
  if (r.leftChild) {
6329
6315
  let e = r.leftChild, t = r.rightChild;
6330
6316
  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;
6331
- } else a[i] = t[r.entryIndex].blasOffset, a[i + 3] = Rn.BLAS_POINTER_LEAF;
6317
+ } else a[i] = t[r.entryIndex].blasOffset, a[i + 1] = r.entryIndex, a[i + 3] = Rn.BLAS_POINTER_LEAF;
6332
6318
  }
6333
6319
  return a.subarray(0, i);
6334
6320
  }
@@ -6363,7 +6349,7 @@ var Os = 16, ks = class {
6363
6349
  }
6364
6350
  return t;
6365
6351
  }
6366
- }, js = class {
6352
+ }, ks = class {
6367
6353
  constructor() {
6368
6354
  this.entries = [], this.totalBLASNodes = 0, this.tlasNodeCount = 0;
6369
6355
  }
@@ -6434,7 +6420,7 @@ var Os = 16, ks = class {
6434
6420
  clear() {
6435
6421
  this.entries = [], this.totalBLASNodes = 0, this.tlasNodeCount = 0;
6436
6422
  }
6437
- }, Ms = class {
6423
+ }, As = class {
6438
6424
  constructor() {
6439
6425
  this.canvasContextPairs = [], this.maxPoolSize = zn.CANVAS_POOL_SIZE;
6440
6426
  }
@@ -6474,7 +6460,7 @@ var Os = 16, ks = class {
6474
6460
  dispose() {
6475
6461
  this.canvasContextPairs = [];
6476
6462
  }
6477
- }, Ns = class {
6463
+ }, js = class {
6478
6464
  constructor(e = {}) {
6479
6465
  this.pools = /* @__PURE__ */ new Map(), this.memoryUsage = 0, this.maxMemoryUsage = e.maxMemory || Un.MAX_BUFFER_MEMORY, this.allocatedBuffers = /* @__PURE__ */ new WeakMap(), this.sizeStrategy = e.sizeStrategy || "adaptive";
6480
6466
  }
@@ -6532,7 +6518,7 @@ var Os = 16, ks = class {
6532
6518
  let e = this.getMemoryStats();
6533
6519
  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";
6534
6520
  }
6535
- }, Ps = class {
6521
+ }, Ms = class {
6536
6522
  constructor(e = zn.CACHE_SIZE_LIMIT) {
6537
6523
  this.cache = /* @__PURE__ */ new Map(), this.accessOrder = [], this.maxSize = e;
6538
6524
  }
@@ -6569,12 +6555,12 @@ var Os = 16, ks = class {
6569
6555
  e && e.dispose && e.dispose();
6570
6556
  }), this.cache.clear(), this.accessOrder = [];
6571
6557
  }
6572
- }, Fs = class {
6558
+ }, Ns = class {
6573
6559
  constructor(e = {}) {
6574
- this.useWorkers = typeof Worker < "u", this.maxConcurrentWorkers = zn.MAX_CONCURRENT_WORKERS, this.activeWorkers = 0, this.canvasPool = new Ms(), this.bufferPool = new Ns({
6560
+ this.useWorkers = typeof Worker < "u", this.maxConcurrentWorkers = zn.MAX_CONCURRENT_WORKERS, this.activeWorkers = 0, this.canvasPool = new As(), this.bufferPool = new js({
6575
6561
  maxMemory: e.maxBufferMemory || Un.MAX_BUFFER_MEMORY,
6576
6562
  sizeStrategy: e.bufferSizeStrategy || "adaptive"
6577
- }), this.textureCache = new Ps(), this.capabilities = this.detectCapabilities(), this.optimalMethod = this.selectOptimalMethod();
6563
+ }), this.textureCache = new Ms(), this.capabilities = this.detectCapabilities(), this.optimalMethod = this.selectOptimalMethod();
6578
6564
  }
6579
6565
  detectCapabilities() {
6580
6566
  return {
@@ -6881,7 +6867,7 @@ var Os = 16, ks = class {
6881
6867
  let l = performance.now();
6882
6868
  try {
6883
6869
  if (!t || t.length === 0) throw Error("No materials provided for texture creation");
6884
- this.textureCache.dispose(), this.textureCache = new Ps();
6870
+ this.textureCache.dispose(), this.textureCache = new Ms();
6885
6871
  let e = [];
6886
6872
  n && n.length > 0 && e.push(this.createTexturesToDataTexture(n).then((e) => ({
6887
6873
  type: "albedo",
@@ -7000,7 +6986,7 @@ var Os = 16, ks = class {
7000
6986
  dispose() {
7001
6987
  this.canvasPool.dispose(), this.bufferPool.dispose(), this.textureCache.dispose();
7002
6988
  }
7003
- }, Is = 128, Ls = class {
6989
+ }, Ps = 128, Fs = class {
7004
6990
  constructor() {
7005
6991
  this._vectorPool = {
7006
6992
  vec3: Array(9).fill().map(() => new Le()),
@@ -7041,7 +7027,7 @@ var Os = 16, ks = class {
7041
7027
  console.warn("Skipping mesh with missing geometry or material:", e);
7042
7028
  return;
7043
7029
  }
7044
- let t = this.processMaterial(e.material, e);
7030
+ let t = this.processMaterial(e.material);
7045
7031
  e.userData.materialIndex = t;
7046
7032
  let n = this.meshes.length;
7047
7033
  this.meshes.push(e), e.userData.meshIndex = n;
@@ -7051,19 +7037,19 @@ var Os = 16, ks = class {
7051
7037
  count: this.currentTriangleIndex - r
7052
7038
  });
7053
7039
  }
7054
- processMaterial(e, t = null) {
7055
- let n = this._materialUuidMap.get(e.uuid) ?? -1;
7056
- if (n === -1) {
7040
+ processMaterial(e) {
7041
+ let t = this._materialUuidMap.get(e.uuid) ?? -1;
7042
+ if (t === -1) {
7057
7043
  e.depthWrite === !1 && (e.depthWrite = !0, console.warn("Depth write is disabled in material, enabling it for rastered rendering"));
7058
- let r = this.createMaterialObject(e, t);
7059
- this.materials.push(r), n = this.materials.length - 1, this._materialUuidMap.set(e.uuid, n), r.clearcoat > 0 && (this.sceneFeatures.hasClearcoat = !0), r.transmission > 0 && (this.sceneFeatures.hasTransmission = !0), r.dispersion > 0 && (this.sceneFeatures.hasDispersion = !0), r.iridescence > 0 && (this.sceneFeatures.hasIridescence = !0), r.sheen > 0 && (this.sceneFeatures.hasSheen = !0), (r.transparent || r.opacity < 1 || r.alphaTest > 0) && (this.sceneFeatures.hasTransparency = !0), [
7060
- r.clearcoat > 0,
7061
- r.transmission > 0,
7062
- r.iridescence > 0,
7063
- r.sheen > 0
7044
+ let n = this.createMaterialObject(e);
7045
+ this.materials.push(n), t = this.materials.length - 1, this._materialUuidMap.set(e.uuid, t), n.clearcoat > 0 && (this.sceneFeatures.hasClearcoat = !0), n.transmission > 0 && (this.sceneFeatures.hasTransmission = !0), n.dispersion > 0 && (this.sceneFeatures.hasDispersion = !0), n.iridescence > 0 && (this.sceneFeatures.hasIridescence = !0), n.sheen > 0 && (this.sceneFeatures.hasSheen = !0), (n.transparent || n.opacity < 1 || n.alphaTest > 0) && (this.sceneFeatures.hasTransparency = !0), [
7046
+ n.clearcoat > 0,
7047
+ n.transmission > 0,
7048
+ n.iridescence > 0,
7049
+ n.sheen > 0
7064
7050
  ].filter(Boolean).length >= 2 && (this.sceneFeatures.hasMultiLobeMaterials = !0);
7065
7051
  }
7066
- return n;
7052
+ return t;
7067
7053
  }
7068
7054
  getMaterialAlphaMode(e) {
7069
7055
  if (e.userData?.gltfExtensions?.KHR_materials_unlit?.alphaMode) {
@@ -7134,43 +7120,42 @@ var Os = 16, ks = class {
7134
7120
  }
7135
7121
  return n;
7136
7122
  }
7137
- createMaterialObject(e, t = null) {
7138
- let n = this.getPhysicalDefaults(), r = this.getMaterialType(e), i = this.mapLegacyMaterialToPhysical(e, r), a = (e.metalness ?? i.metalness ?? 0) > .1, o = n.ior;
7139
- a ? o = 2.5 : e.transmission > 0 && (o = 1.5);
7140
- let s = e.color || new v(16777215);
7141
- return r === "basic" && !e.map && (s = new v(0)), {
7123
+ createMaterialObject(e) {
7124
+ let t = this.getPhysicalDefaults(), n = this.getMaterialType(e), r = this.mapLegacyMaterialToPhysical(e, n), i = (e.metalness ?? r.metalness ?? 0) > .1, a = t.ior;
7125
+ i ? a = 2.5 : e.transmission > 0 && (a = 1.5);
7126
+ let o = e.color || new v(16777215);
7127
+ return n === "basic" && !e.map && (o = new v(0)), {
7142
7128
  uuid: e.uuid,
7143
- color: s,
7144
- emissive: i.emissive ?? e.emissive ?? n.emissive,
7145
- emissiveIntensity: i.emissiveIntensity ?? e.emissiveIntensity ?? n.emissiveIntensity,
7146
- roughness: Math.max(.05, i.roughness ?? e.roughness ?? n.roughness),
7147
- metalness: i.metalness ?? e.metalness ?? n.metalness,
7148
- ior: e.ior ?? o,
7149
- opacity: e.opacity ?? n.opacity,
7150
- transmission: e.transmission ?? n.transmission,
7151
- thickness: e.thickness ?? n.thickness,
7152
- attenuationColor: e.attenuationColor ?? n.attenuationColor,
7153
- attenuationDistance: e.attenuationDistance ?? n.attenuationDistance,
7154
- dispersion: e.dispersion ?? n.dispersion,
7155
- sheen: e.sheen ?? n.sheen,
7156
- sheenRoughness: e.sheenRoughness ?? n.sheenRoughness,
7157
- sheenColor: e.sheenColor ?? n.sheenColor,
7158
- clearcoat: e.clearcoat ?? n.clearcoat,
7159
- clearcoatRoughness: e.clearcoatRoughness ?? n.clearcoatRoughness,
7160
- iridescence: e.iridescence ?? n.iridescence,
7161
- iridescenceIOR: e.iridescenceIOR ?? n.iridescenceIOR,
7162
- iridescenceThicknessRange: e.iridescenceThicknessRange ?? n.iridescenceThicknessRange,
7163
- specularIntensity: i.specularIntensity ?? e.specularIntensity ?? n.specularIntensity,
7164
- specularColor: i.specularColor ?? e.specularColor ?? n.specularColor,
7165
- normalScale: e.normalScale ?? n.normalScale,
7166
- bumpScale: e.bumpScale ?? n.bumpScale,
7167
- displacementScale: e.displacementScale ?? n.displacementScale,
7129
+ color: o,
7130
+ emissive: r.emissive ?? e.emissive ?? t.emissive,
7131
+ emissiveIntensity: r.emissiveIntensity ?? e.emissiveIntensity ?? t.emissiveIntensity,
7132
+ roughness: Math.max(.05, r.roughness ?? e.roughness ?? t.roughness),
7133
+ metalness: r.metalness ?? e.metalness ?? t.metalness,
7134
+ ior: e.ior ?? a,
7135
+ opacity: e.opacity ?? t.opacity,
7136
+ transmission: e.transmission ?? t.transmission,
7137
+ thickness: e.thickness ?? t.thickness,
7138
+ attenuationColor: e.attenuationColor ?? t.attenuationColor,
7139
+ attenuationDistance: e.attenuationDistance ?? t.attenuationDistance,
7140
+ dispersion: e.dispersion ?? t.dispersion,
7141
+ sheen: e.sheen ?? t.sheen,
7142
+ sheenRoughness: e.sheenRoughness ?? t.sheenRoughness,
7143
+ sheenColor: e.sheenColor ?? t.sheenColor,
7144
+ clearcoat: e.clearcoat ?? t.clearcoat,
7145
+ clearcoatRoughness: e.clearcoatRoughness ?? t.clearcoatRoughness,
7146
+ iridescence: e.iridescence ?? t.iridescence,
7147
+ iridescenceIOR: e.iridescenceIOR ?? t.iridescenceIOR,
7148
+ iridescenceThicknessRange: e.iridescenceThicknessRange ?? t.iridescenceThicknessRange,
7149
+ specularIntensity: r.specularIntensity ?? e.specularIntensity ?? t.specularIntensity,
7150
+ specularColor: r.specularColor ?? e.specularColor ?? t.specularColor,
7151
+ normalScale: e.normalScale ?? t.normalScale,
7152
+ bumpScale: e.bumpScale ?? t.bumpScale,
7153
+ displacementScale: e.displacementScale ?? t.displacementScale,
7168
7154
  transparent: e.transparent ? 1 : 0,
7169
- alphaTest: e.alphaTest ?? n.alphaTest,
7155
+ alphaTest: e.alphaTest ?? t.alphaTest,
7170
7156
  alphaMode: this.getMaterialAlphaMode(e),
7171
7157
  side: this.getMaterialSide(e),
7172
7158
  depthWrite: e.depthWrite ?? !0 ? 1 : 0,
7173
- visible: t ? t.visible ? 1 : 0 : e.visible ?? !0 ? 1 : 0,
7174
7159
  map: this.processTexture(e.map, this.maps),
7175
7160
  normalMap: this.processTexture(e.normalMap, this.normalMaps),
7176
7161
  bumpMap: this.processTexture(e.bumpMap, this.bumpMaps),
@@ -7195,7 +7180,7 @@ var Os = 16, ks = class {
7195
7180
  metalnessMapMatrices: this.getTextureMatrix(e.metalnessMap),
7196
7181
  emissiveMapMatrices: this.getTextureMatrix(e.emissiveMap),
7197
7182
  displacementMapMatrices: this.getTextureMatrix(e.displacementMap),
7198
- originalType: r
7183
+ originalType: n
7199
7184
  };
7200
7185
  }
7201
7186
  getTextureMatrix(e) {
@@ -7216,7 +7201,7 @@ var Os = 16, ks = class {
7216
7201
  n || (n = /* @__PURE__ */ new Map(), this._textureIndexCache.set(t, n));
7217
7202
  let r = e.source.uuid, i = n.get(r);
7218
7203
  if (i !== void 0) return i;
7219
- if (t.length < Is) {
7204
+ if (t.length < Ps) {
7220
7205
  t.push(e);
7221
7206
  let i = t.length - 1;
7222
7207
  return n.set(r, i), i;
@@ -7265,7 +7250,7 @@ var Os = 16, ks = class {
7265
7250
  }
7266
7251
  _traverseMaterialsOnly(e) {
7267
7252
  if (e.isMesh && e.geometry && e.material) {
7268
- let t = this.processMaterial(e.material, e);
7253
+ let t = this.processMaterial(e.material);
7269
7254
  e.userData.materialIndex = t;
7270
7255
  let n = this.meshes.length;
7271
7256
  this.meshes.push(e), e.userData.meshIndex = n;
@@ -7303,7 +7288,7 @@ var Os = 16, ks = class {
7303
7288
  sceneFeatures: this.sceneFeatures
7304
7289
  };
7305
7290
  }
7306
- }, Rs = class {
7291
+ }, Is = class {
7307
7292
  constructor() {
7308
7293
  this.maxLeafSize = 8;
7309
7294
  }
@@ -7362,7 +7347,7 @@ var Os = 16, ks = class {
7362
7347
  l < i ? n = l + 1 : r = l;
7363
7348
  }
7364
7349
  }
7365
- }, zs = class {
7350
+ }, Ls = class {
7366
7351
  constructor() {
7367
7352
  this.emissiveTriangles = [], this.emissiveCount = 0, this.totalEmissivePower = 0, this.emissiveIndicesArray = null, this.emissivePowerArray = null, this.cdfArray = null, this.lightBVHNodeData = null, this.lightBVHNodeCount = 0;
7368
7353
  }
@@ -7377,7 +7362,7 @@ var Os = 16, ks = class {
7377
7362
  g: 0,
7378
7363
  b: 0
7379
7364
  }, l = s.emissiveIntensity || 0;
7380
- if ((s.visible === void 0 || s.visible !== 0) && l > 0 && (c.r > 0 || c.g > 0 || c.b > 0)) {
7365
+ if (l > 0 && (c.r > 0 || c.g > 0 || c.b > 0)) {
7381
7366
  let t = e[n + 0], r = e[n + 1], i = e[n + 2], s = e[n + 4], u = e[n + 5], d = e[n + 6], f = e[n + 8], p = e[n + 9], m = e[n + 10], h = this._calculateTriangleArea(t, r, i, s, u, d, f, p, m), g = (c.r + c.g + c.b) / 3 * l * h, _ = (t + s + f) / 3, v = (r + u + p) / 3, y = (i + d + m) / 3, b = Math.min(t, s, f), x = Math.min(r, u, p), S = Math.min(i, d, m), C = Math.max(t, s, f), w = Math.max(r, u, p), T = Math.max(i, d, m);
7382
7367
  this.emissiveTriangles.push({
7383
7368
  triangleIndex: a,
@@ -7489,7 +7474,7 @@ var Os = 16, ks = class {
7489
7474
  r: 0,
7490
7475
  g: 0,
7491
7476
  b: 0
7492
- }, o = t.emissiveIntensity || 0, s = (t.visible === void 0 || t.visible !== 0) && o > 0 && (a.r > 0 || a.g > 0 || a.b > 0);
7477
+ }, o = t.emissiveIntensity || 0, s = o > 0 && (a.r > 0 || a.g > 0 || a.b > 0);
7493
7478
  if (s !== this.emissiveTriangles.some((t) => t.materialIndex === e)) return this.extractEmissiveTriangles(n, r, i), !0;
7494
7479
  if (!s) return !1;
7495
7480
  let c = (a.r + a.g + a.b) / 3;
@@ -7506,7 +7491,7 @@ var Os = 16, ks = class {
7506
7491
  }
7507
7492
  buildLightBVH() {
7508
7493
  if (this.emissiveCount === 0) return this.lightBVHNodeData = new Float32Array(16), this.lightBVHNodeData[7] = 1, this.lightBVHNodeCount = 1, 1;
7509
- let { nodeData: e, nodeCount: t, sortedPerm: n } = new Rs().build(this.emissiveTriangles);
7494
+ let { nodeData: e, nodeCount: t, sortedPerm: n } = new Is().build(this.emissiveTriangles);
7510
7495
  return this.lightBVHNodeData = e, this.lightBVHNodeCount = t, this._rebuildSortedEmissiveData(n), t;
7511
7496
  }
7512
7497
  _rebuildSortedEmissiveData(e) {
@@ -7527,7 +7512,7 @@ var Os = 16, ks = class {
7527
7512
  clear() {
7528
7513
  this.emissiveTriangles = [], this.emissiveCount = 0, this.totalEmissivePower = 0, this.emissiveIndicesArray = null, this.emissivePowerArray = null, this.cdfArray = null, this.lightBVHNodeData = null, this.lightBVHNodeCount = 0;
7529
7514
  }
7530
- }, Bs = class {
7515
+ }, Rs = class {
7531
7516
  constructor(e = {}) {
7532
7517
  this.config = {
7533
7518
  useWorkers: !0,
@@ -7550,12 +7535,12 @@ var Os = 16, ks = class {
7550
7535
  };
7551
7536
  }
7552
7537
  _initProcessors() {
7553
- this.geometryExtractor = new Ls(), this.bvhBuilder = new ms(), this.bvhBuilder.maxLeafSize = this.config.maxLeafSize, this.bvhBuilder.setTreeletConfig({
7538
+ this.geometryExtractor = new Fs(), this.bvhBuilder = new fs(), this.bvhBuilder.maxLeafSize = this.config.maxLeafSize, this.bvhBuilder.setTreeletConfig({
7554
7539
  enabled: this.config.enableTreeletOptimization,
7555
7540
  size: this.config.treeletSize,
7556
7541
  passes: this.config.treeletOptimizationPasses,
7557
7542
  minImprovement: this.config.treeletMinImprovement
7558
- }), this.textureCreator = new Fs(), this.emissiveTriangleBuilder = new zs(), this.tlasBuilder = new As();
7543
+ }), this.textureCreator = new Ns(), this.emissiveTriangleBuilder = new Ls(), this.tlasBuilder = new Os();
7559
7544
  }
7560
7545
  _log(e, t) {
7561
7546
  this.config.verbose && console.log(`[SceneProcessor] ${e}`, t || "");
@@ -7563,7 +7548,7 @@ var Os = 16, ks = class {
7563
7548
  async buildBVH(e) {
7564
7549
  if (this.isProcessing) throw Error("Already processing a scene. Call dispose() first.");
7565
7550
  this.isProcessing = !0, this.processingStage = "init";
7566
- let t = new as(`SceneProcessor (${e.name || "scene"})`);
7551
+ let t = new rs(`SceneProcessor (${e.name || "scene"})`);
7567
7552
  try {
7568
7553
  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)");
7569
7554
  let n = !1, r = this._buildBVH().then(() => t.end("BVH construction (worker)")), i = this._createMaterialTextures().then(() => {
@@ -7624,11 +7609,11 @@ var Os = 16, ks = class {
7624
7609
  try {
7625
7610
  let t = Q.FLOATS_PER_TRIANGLE, n = this.meshTriangleRanges;
7626
7611
  if (!n || n.length === 0) throw Error("No mesh triangle ranges available for TLAS/BLAS build");
7627
- this.instanceTable = new js(), this.instanceTable.allocate(n.length);
7612
+ this.instanceTable = new ks(), this.instanceTable.allocate(n.length);
7628
7613
  let r = n.length, i = this.config.enableTreeletOptimization, a = [], o = [];
7629
7614
  for (let e = 0; e < r; e++) {
7630
7615
  let t = n[e];
7631
- t.count !== 0 && (t.count >= 2e5 && Ds(t.count) ? o.push({
7616
+ t.count !== 0 && (t.count >= 2e5 && Ts(t.count) ? o.push({
7632
7617
  m: e,
7633
7618
  range: t
7634
7619
  }) : a.push({
@@ -7654,7 +7639,7 @@ var Os = 16, ks = class {
7654
7639
  status: `Building BLAS ${e + o.length}/${c}...`,
7655
7640
  progress: 25 + Math.floor(e / c * 45)
7656
7641
  });
7657
- }), u = o.map(({ m: e, range: n }) => ws(this.triangleData.slice(n.start * t, (n.start + n.count) * t), this.config.bvhDepth, null, {
7642
+ }), u = o.map(({ m: e, range: n }) => Ss(this.triangleData.slice(n.start * t, (n.start + n.count) * t), this.config.bvhDepth, null, {
7658
7643
  maxLeafSize: this.bvhBuilder.maxLeafSize,
7659
7644
  numBins: this.bvhBuilder.numBins,
7660
7645
  maxBins: this.bvhBuilder.maxBins,
@@ -7971,7 +7956,7 @@ var Os = 16, ks = class {
7971
7956
  refitBLASes(e, t, n) {
7972
7957
  if (!this.instanceTable || !this.bvhData || !this.triangleData) throw Error("No TLAS/BLAS data available. Run buildBVH() first.");
7973
7958
  let r = performance.now();
7974
- this._blasRefitter ||= new bs();
7959
+ this._blasRefitter ||= new vs();
7975
7960
  for (let r of e) {
7976
7961
  let e = this.instanceTable.entries[r];
7977
7962
  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));
@@ -8012,7 +7997,7 @@ var Os = 16, ks = class {
8012
7997
  updateMaterialEmissive(e, t, n) {
8013
7998
  if (!this.emissiveTriangleBuilder) return null;
8014
7999
  let r = this.materials[e];
8015
- return !r || (t === "emissive" ? r.emissive = n : t === "emissiveIntensity" ? r.emissiveIntensity = n : t === "visible" && (r.visible = n), !this.emissiveTriangleBuilder.updateMaterialEmissive(e, r, this.triangleData, this.materials, this.triangleCount)) ? null : {
8000
+ return !r || (t === "emissive" ? r.emissive = n : t === "emissiveIntensity" && (r.emissiveIntensity = n), !this.emissiveTriangleBuilder.updateMaterialEmissive(e, r, this.triangleData, this.materials, this.triangleCount)) ? null : {
8016
8001
  rawData: this.emissiveTriangleBuilder.createEmissiveRawData(),
8017
8002
  emissiveCount: this.emissiveTriangleBuilder.emissiveCount,
8018
8003
  totalPower: this.emissiveTriangleBuilder.totalEmissivePower
@@ -8134,7 +8119,7 @@ var Os = 16, ks = class {
8134
8119
  dispose() {
8135
8120
  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;
8136
8121
  }
8137
- }, Vs = class {
8122
+ }, zs = class {
8138
8123
  constructor() {
8139
8124
  this.lightData = {
8140
8125
  directional: [],
@@ -8287,17 +8272,22 @@ var Os = 16, ks = class {
8287
8272
  }))
8288
8273
  };
8289
8274
  }
8290
- }, Hs = "https://assets.rayzee.atulmourya.com/noise/simple_bluenoise.png", Us = 4, Ws = class extends pn {
8275
+ }, Bs = "https://assets.rayzee.atulmourya.com/noise/simple_bluenoise.png", Vs = 4, Hs = class extends pn {
8291
8276
  constructor(e, t, n, r = {}) {
8292
8277
  super("PathTracer", {
8293
8278
  ...r,
8294
8279
  executionMode: fn.ALWAYS
8295
8280
  });
8296
8281
  let i = r.width || 1920, a = r.height || 1080;
8297
- this.camera = n, this.width = i, this.height = a, this.renderer = e, this.scene = t, this.tileManager = new mn(i, a, Z.tiles), this.sdfs = new Bs(), this.lightSerializer = new Vs(), this.accumulationEnabled = !0, this.isComplete = !1, this.cameras = [], this.performanceMonitor = kn(), this.completionThreshold = 0, this.renderLimitMode = "frames", this._initDataTextures(), this.storageTextures = new jn(0, 0), this.uniforms = new Gn(i, a), this._defineUniformGetters(), this.materialData = new qn(this.sdfs), this.materialData.callbacks.onReset = () => this.reset(), this.environment = new xr(this.scene, this.uniforms), this.environment.callbacks.onReset = () => this.reset(), this.environment.callbacks.getSceneTextureNodes = () => this.shaderBuilder.getSceneTextureNodes(), this.shaderBuilder = new ss(), this._initRenderingState(), this.setupBlueNoise(), this.tempVector2 = new Ie(), this.lastCameraMatrix = new se(), this.lastProjectionMatrix = new se(), 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();
8282
+ this.camera = n, this.width = i, this.height = a, this.renderer = e, this.scene = t, this.tileManager = new mn(i, a, Z.tiles), this.sdfs = new Rs(), this.lightSerializer = new zs(), this.accumulationEnabled = !0, this.isComplete = !1, this.cameras = [], this.performanceMonitor = kn(), this.completionThreshold = 0, this.renderLimitMode = "frames", this._initDataTextures(), this.storageTextures = new jn(0, 0), this.uniforms = new Gn(i, a), this._defineUniformGetters(), this.materialData = new qn(this.sdfs), this.materialData.callbacks.onReset = () => this.reset(), this.environment = new xr(this.scene, this.uniforms), this.environment.callbacks.onReset = () => this.reset(), this.environment.callbacks.getSceneTextureNodes = () => this.shaderBuilder.getSceneTextureNodes(), this.shaderBuilder = new as(), this._initRenderingState(), this.setupBlueNoise(), this.tempVector2 = new Ie(), this.lastCameraMatrix = new se(), this.lastProjectionMatrix = new se(), 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();
8298
8283
  }
8299
8284
  _initDataTextures() {
8300
- 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.blueNoiseTexture = null, this.emissiveTriangleStorageAttr = new i(new Float32Array(4), 4), this.emissiveTriangleStorageNode = gt(this.emissiveTriangleStorageAttr, "vec4", 1).toReadOnly(), this.lightBVHStorageAttr = new i(new Float32Array(16), 4), this.lightBVHStorageNode = gt(this.lightBVHStorageAttr, "vec4", 1).toReadOnly(), this.adaptiveSamplingTexture = null, this.spheres = [];
8285
+ 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.blueNoiseTexture = null, this.emissiveTriangleStorageAttr = new i(new Float32Array(4), 4), this.emissiveTriangleStorageNode = gt(this.emissiveTriangleStorageAttr, "vec4", 1).toReadOnly(), this.lightBVHStorageAttr = new i(new Float32Array(16), 4), this.lightBVHStorageNode = gt(this.lightBVHStorageAttr, "vec4", 1).toReadOnly(), this.meshVisibilityStorageAttr = new i(new Float32Array([
8286
+ 1,
8287
+ 0,
8288
+ 0,
8289
+ 0
8290
+ ]), 4), this.meshVisibilityStorageNode = gt(this.meshVisibilityStorageAttr, "vec4", 1).toReadOnly(), this.adaptiveSamplingTexture = null, this.spheres = [];
8301
8291
  }
8302
8292
  _defineUniformGetters() {
8303
8293
  let e = this.uniforms;
@@ -8390,7 +8380,7 @@ var Os = 16, ks = class {
8390
8380
  }
8391
8381
  setupBlueNoise() {
8392
8382
  let e = new Me();
8393
- e.setCrossOrigin("anonymous"), e.load(Hs, (e) => {
8383
+ e.setCrossOrigin("anonymous"), e.load(Bs, (e) => {
8394
8384
  e.minFilter = j, e.magFilter = j, e.wrapS = Ee, e.wrapT = Ee, e.type = D, e.generateMipmaps = !1, this.blueNoiseTexture = e, Gt.value = e, console.log(`PathTracer: Blue noise loaded ${e.image.width}x${e.image.height}`);
8395
8385
  });
8396
8386
  }
@@ -8407,7 +8397,7 @@ var Os = 16, ks = class {
8407
8397
  this.dispose(), this.scene = e, await this.sdfs.buildBVH(e), this.cameras = this.sdfs.cameras, this.materialData.injectMaterialFeatureDefines(), this.updateSceneUniforms(), this.updateLights(), this._initCameraOptimizer(), this.setupMaterial();
8408
8398
  }
8409
8399
  updateSceneUniforms() {
8410
- this.setTriangleData(this.sdfs.triangleData, this.sdfs.triangleCount), this.setBVHData(this.sdfs.bvhData), this.materialData.setMaterialData(this.sdfs.materialData), this.totalTriangleCount.value = this.sdfs.triangleCount || 0, this.materialData.loadTexturesFromSdfs(), this.sdfs.emissiveTriangleData ? this.setEmissiveTriangleData(this.sdfs.emissiveTriangleData, this.sdfs.emissiveTriangleCount || 0) : this.emissiveTriangleCount.value = 0, this.sdfs.lightBVHNodeData ? this.setLightBVHData(this.sdfs.lightBVHNodeData, this.sdfs.lightBVHNodeCount || 0) : this.lightBVHNodeCount.value = 0, this.spheres = this.sdfs.spheres || [];
8400
+ this.setTriangleData(this.sdfs.triangleData, this.sdfs.triangleCount), this.setBVHData(this.sdfs.bvhData), this.materialData.setMaterialData(this.sdfs.materialData), this.totalTriangleCount.value = this.sdfs.triangleCount || 0, this.materialData.loadTexturesFromSdfs(), this.sdfs.emissiveTriangleData ? this.setEmissiveTriangleData(this.sdfs.emissiveTriangleData, this.sdfs.emissiveTriangleCount || 0) : this.emissiveTriangleCount.value = 0, this.sdfs.lightBVHNodeData ? this.setLightBVHData(this.sdfs.lightBVHNodeData, this.sdfs.lightBVHNodeCount || 0) : this.lightBVHNodeCount.value = 0, this._meshRefs = this._collectMeshRefs(this.scene), this.setMeshVisibilityData(this._meshRefs), this.spheres = this.sdfs.spheres || [];
8411
8401
  }
8412
8402
  updateLights() {
8413
8403
  let e = {
@@ -8473,7 +8463,36 @@ var Os = 16, ks = class {
8473
8463
  setBVHData(e) {
8474
8464
  if (!e) return;
8475
8465
  let t = e.length / 4;
8476
- this.bvhStorageNode ? (this.bvhStorageAttr = new i(e, 4), this.bvhStorageNode.value = this.bvhStorageAttr, this.bvhStorageNode.bufferCount = t) : (this.bvhStorageAttr = new i(e, 4), this.bvhStorageNode = gt(this.bvhStorageAttr, "vec4", t).toReadOnly()), this.bvhNodeCount = Math.floor(t / Us), console.log(`PathTracer: ${this.bvhNodeCount} BVH nodes (storage buffer)`);
8466
+ this.bvhStorageNode ? (this.bvhStorageAttr = new i(e, 4), this.bvhStorageNode.value = this.bvhStorageAttr, this.bvhStorageNode.bufferCount = t) : (this.bvhStorageAttr = new i(e, 4), this.bvhStorageNode = gt(this.bvhStorageAttr, "vec4", t).toReadOnly()), this.bvhNodeCount = Math.floor(t / Vs), console.log(`PathTracer: ${this.bvhNodeCount} BVH nodes (storage buffer)`);
8467
+ }
8468
+ setMeshVisibilityData(e) {
8469
+ if (!e || e.length === 0) return;
8470
+ let t = e.length, n = new Float32Array(t * 4);
8471
+ for (let r = 0; r < t; r++) n[r * 4] = this._isWorldVisible(e[r]) ? 1 : 0;
8472
+ this.meshVisibilityStorageAttr = new i(n, 4), this.meshVisibilityStorageNode.value = this.meshVisibilityStorageAttr, this.meshVisibilityStorageNode.bufferCount = t;
8473
+ }
8474
+ updateMeshVisibility(e, t) {
8475
+ this.meshVisibilityStorageAttr && (this.meshVisibilityStorageAttr.array[e * 4] = t ? 1 : 0, this.meshVisibilityStorageAttr.needsUpdate = !0);
8476
+ }
8477
+ updateAllMeshVisibility() {
8478
+ if (!this._meshRefs || !this.meshVisibilityStorageAttr) return;
8479
+ let e = this.meshVisibilityStorageAttr.array;
8480
+ for (let t = 0; t < this._meshRefs.length; t++) e[t * 4] = this._isWorldVisible(this._meshRefs[t]) ? 1 : 0;
8481
+ this.meshVisibilityStorageAttr.needsUpdate = !0;
8482
+ }
8483
+ _collectMeshRefs(e) {
8484
+ if (!e) return [];
8485
+ let t = [];
8486
+ return e.traverse((e) => {
8487
+ e.isMesh && e.userData.meshIndex !== void 0 && (t[e.userData.meshIndex] = e);
8488
+ }), t;
8489
+ }
8490
+ _isWorldVisible(e) {
8491
+ for (; e;) {
8492
+ if (!e.visible) return !1;
8493
+ e = e.parent;
8494
+ }
8495
+ return !0;
8477
8496
  }
8478
8497
  _updateStorageBuffer(e, t) {
8479
8498
  e && (e.array.set(t), e.needsUpdate = !0);
@@ -8636,7 +8655,7 @@ var Os = 16, ks = class {
8636
8655
  dispose() {
8637
8656
  this.renderModeChangeTimeout &&= (clearTimeout(this.renderModeChangeTimeout), null), this.tileManager?.dispose(), this.cameraOptimizer?.dispose(), this.materialData?.dispose(), this.environment?.dispose(), this.shaderBuilder?.dispose(), this.storageTextures?.dispose(), this.blueNoiseTexture?.dispose(), this.placeholderTexture?.dispose(), this.triangleStorageAttr = null, this.triangleStorageNode = null, this.bvhStorageAttr = null, this.bvhStorageNode = null, this.placeholderTexture = null, this.isReady = !1;
8638
8657
  }
8639
- }, Gs = class extends pn {
8658
+ }, Us = class extends pn {
8640
8659
  constructor(e, t = {}) {
8641
8660
  super("NormalDepth", {
8642
8661
  ...t,
@@ -8674,7 +8693,7 @@ var Os = 16, ks = class {
8674
8693
  let u = J(z(c).add(.5).div(a).mul(2).sub(1), z(l).add(.5).div(o).mul(2).sub(1).negate(), 1), d = i.mul(Y(u, 1)), f = U(it(r[0].xyz, r[1].xyz, r[2].xyz).mul(d.xyz.div(d.w))), p = wr({
8675
8694
  origin: J(r[3]),
8676
8695
  direction: f
8677
- }), m = Er.wrap(bi(p, t, e, n)), h = m.normal.mul(.5).add(.5), g = m.dst, _ = m.didHit.select(Y(h, g), Y(0, 0, 0, z(1e6)));
8696
+ }), m = Er.wrap(vi(p, t, e, n)), h = m.normal.mul(.5).add(.5), g = m.dst, _ = m.didHit.select(Y(h, g), Y(0, 0, 0, z(1e6)));
8678
8697
  xt(s, wt(G(c), G(l)), _).toWriteOnly();
8679
8698
  });
8680
8699
  })(r, i).compute([
@@ -8715,7 +8734,7 @@ var Os = 16, ks = class {
8715
8734
  dispose() {
8716
8735
  this._computeNode?.dispose(), this._outputStorageTex?.dispose(), this.renderTarget?.dispose();
8717
8736
  }
8718
- }, Ks = class extends pn {
8737
+ }, Ws = class extends pn {
8719
8738
  constructor(e, t, n = {}) {
8720
8739
  super("MotionVector", {
8721
8740
  ...n,
@@ -8827,7 +8846,7 @@ var Os = 16, ks = class {
8827
8846
  };
8828
8847
  //#endregion
8829
8848
  //#region src/Processor/createRenderTargetHelper.js
8830
- function qs(e, t, n = {}) {
8849
+ function Gs(e, t, n = {}) {
8831
8850
  let r = n.textureIndex || 0, i = t.isTexture === !0, a;
8832
8851
  i ? (console.warn("RenderTargetHelper: Direct Texture input is not supported. Pass a RenderTarget instead."), a = null) : a = t;
8833
8852
  let o = {
@@ -8979,7 +8998,7 @@ function qs(e, t, n = {}) {
8979
8998
  }
8980
8999
  //#endregion
8981
9000
  //#region src/Stages/ASVGF.js
8982
- var Js = class extends pn {
9001
+ var Ks = class extends pn {
8983
9002
  constructor(e, t = {}) {
8984
9003
  super("ASVGF", {
8985
9004
  ...t,
@@ -8993,7 +9012,7 @@ var Js = class extends pn {
8993
9012
  magFilter: j,
8994
9013
  depthBuffer: !1,
8995
9014
  stencilBuffer: !1
8996
- }), this._heatmapRawColorTexNode = new o(), this._heatmapColorTexNode = new o(), this._heatmapTemporalTexNode = new o(), this._heatmapNDTexNode = new o(), this._heatmapMotionTexNode = new o(), this._heatmapGradientTexNode = new o(), this._buildHeatmapCompute(), this.heatmapHelper = qs(this.renderer, this.heatmapTarget, {
9015
+ }), this._heatmapRawColorTexNode = new o(), this._heatmapColorTexNode = new o(), this._heatmapTemporalTexNode = new o(), this._heatmapNDTexNode = new o(), this._heatmapMotionTexNode = new o(), this._heatmapGradientTexNode = new o(), this._buildHeatmapCompute(), this.heatmapHelper = Gs(this.renderer, this.heatmapTarget, {
8997
9016
  width: 400,
8998
9017
  height: 400,
8999
9018
  position: "bottom-right",
@@ -9166,7 +9185,7 @@ var Js = class extends pn {
9166
9185
  dispose() {
9167
9186
  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.heatmapHelper?.dispose();
9168
9187
  }
9169
- }, Ys = /* @__PURE__ */ X("\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"), Xs = class extends pn {
9188
+ }, qs = /* @__PURE__ */ X("\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"), Js = class extends pn {
9170
9189
  constructor(e, t = {}) {
9171
9190
  super("VarianceEstimation", {
9172
9191
  ...t,
@@ -9198,7 +9217,7 @@ var Js = class extends pn {
9198
9217
  }
9199
9218
  n.divAssign(9), a.divAssign(9);
9200
9219
  let o = V(a.sub(n.mul(n)), z(0)), u = s.element(l.add(1).mul(10).add(c.add(1))), d = yt(t, $e(g, _));
9201
- xt(e, wt(G(g), G(_)), Ys(u, d.x, d.y, r, o, i)).toWriteOnly();
9220
+ xt(e, wt(G(g), G(_)), qs(u, d.x, d.y, r, o, i)).toWriteOnly();
9202
9221
  });
9203
9222
  })().compute([
9204
9223
  this._dispatchX,
@@ -9241,7 +9260,7 @@ var Js = class extends pn {
9241
9260
  dispose() {
9242
9261
  this._computeNodeA?.dispose(), this._computeNodeB?.dispose(), this._storageTexA?.dispose(), this._storageTexB?.dispose();
9243
9262
  }
9244
- }, Zs = /* @__PURE__ */ X("\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"), Qs = class extends pn {
9263
+ }, Ys = /* @__PURE__ */ X("\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"), Xs = class extends pn {
9245
9264
  constructor(e, t = {}) {
9246
9265
  super("BilateralFiltering", {
9247
9266
  ...t,
@@ -9286,7 +9305,7 @@ var Js = class extends pn {
9286
9305
  N(d.lessThan(B(c)).and(f.lessThan(B(l))), () => {
9287
9306
  let p = $e(d, f), m = yt(t, p).xyz, h = yt(n, p), g = h.xyz.mul(2).sub(1), _ = h.w, v = Yr(m), y = J(0).toVar(), b = z(0).toVar();
9288
9307
  for (let e = 0; e < 5; e++) for (let p = 0; p < 5; p++) {
9289
- let h = p - 2, x = e - 2, S = u[e * 5 + p], C = d.add(s.mul(h)).clamp(B(0), B(c).sub(1)), w = f.add(s.mul(x)).clamp(B(0), B(l).sub(1)), T = yt(t, $e(C, w)).xyz, E = yt(n, $e(C, w)), D = E.xyz.mul(2).sub(1), O = E.w, k = Zs(v, Yr(T), g, D, _, O, m, T, z(S), o, i, a, r);
9308
+ let h = p - 2, x = e - 2, S = u[e * 5 + p], C = d.add(s.mul(h)).clamp(B(0), B(c).sub(1)), w = f.add(s.mul(x)).clamp(B(0), B(l).sub(1)), T = yt(t, $e(C, w)).xyz, E = yt(n, $e(C, w)), D = E.xyz.mul(2).sub(1), O = E.w, k = Ys(v, Yr(T), g, D, _, O, m, T, z(S), o, i, a, r);
9290
9309
  y.addAssign(T.mul(k)), b.addAssign(k);
9291
9310
  }
9292
9311
  let x = y.div(V(b, z(1e-4)));
@@ -9331,7 +9350,7 @@ var Js = class extends pn {
9331
9350
  dispose() {
9332
9351
  this._computeNodeA?.dispose(), this._computeNodeB?.dispose(), this._storageTexA?.dispose(), this._storageTexB?.dispose();
9333
9352
  }
9334
- }, $s = /* @__PURE__ */ X("\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"), ec = /* @__PURE__ */ X("\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 pn {
9353
+ }, Zs = /* @__PURE__ */ X("\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"), Qs = /* @__PURE__ */ X("\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"), $s = class extends pn {
9335
9354
  constructor(e, t = {}) {
9336
9355
  super("AdaptiveSampling", {
9337
9356
  ...t,
@@ -9345,7 +9364,7 @@ var Js = class extends pn {
9345
9364
  magFilter: j,
9346
9365
  depthBuffer: !1,
9347
9366
  stencilBuffer: !1
9348
- }), this._dispatchX = Math.ceil(n / 16), this._dispatchY = Math.ceil(i / 16), this._varianceTexNode = new o(), this._buildCompute(), this._buildHeatmapCompute(), this.helper = qs(this.renderer, this.heatmapTarget, {
9367
+ }), this._dispatchX = Math.ceil(n / 16), this._dispatchY = Math.ceil(i / 16), this._varianceTexNode = new o(), this._buildCompute(), this._buildHeatmapCompute(), this.helper = Gs(this.renderer, this.heatmapTarget, {
9349
9368
  width: 400,
9350
9369
  height: 400,
9351
9370
  position: "bottom-right",
@@ -9362,7 +9381,7 @@ var Js = class extends pn {
9362
9381
  this._computeNode = M(() => {
9363
9382
  let u = B(Dt.x).mul(16).add(B(nt.x)), d = B(Dt.y).mul(16).add(B(nt.y));
9364
9383
  N(u.lessThan(B(s)).and(d.lessThan(B(c))), () => {
9365
- let s = yt(e, $e(u, d)), c = $s(s.z, s.w, s.x, t, B(i), B(a), o, n, r);
9384
+ let s = yt(e, $e(u, d)), c = Zs(s.z, s.w, s.x, t, B(i), B(a), o, n, r);
9366
9385
  xt(l, wt(G(u), G(d)), c).toWriteOnly();
9367
9386
  });
9368
9387
  })().compute([
@@ -9380,7 +9399,7 @@ var Js = class extends pn {
9380
9399
  this._heatmapComputeNode = M(() => {
9381
9400
  let i = B(Dt.x).mul(16).add(B(nt.x)), a = B(Dt.y).mul(16).add(B(nt.y));
9382
9401
  N(i.lessThan(B(n)).and(a.lessThan(B(r))), () => {
9383
- let n = yt(e, $e(i, a)), r = ec(n.x.clamp(0, 1), n.y, n.z);
9402
+ let n = yt(e, $e(i, a)), r = Qs(n.x.clamp(0, 1), n.y, n.z);
9384
9403
  xt(t, wt(G(i), G(a)), r).toWriteOnly();
9385
9404
  });
9386
9405
  })().compute([
@@ -9439,7 +9458,7 @@ var Js = class extends pn {
9439
9458
  dispose() {
9440
9459
  this._computeNode?.dispose(), this._heatmapComputeNode?.dispose(), this._heatmapStorageTex?.dispose(), this._outputStorageTex?.dispose(), this.heatmapTarget?.dispose(), this.helper?.dispose();
9441
9460
  }
9442
- }, nc = class extends pn {
9461
+ }, ec = class extends pn {
9443
9462
  constructor(e, t = {}) {
9444
9463
  super("EdgeAwareFiltering", {
9445
9464
  ...t,
@@ -9519,7 +9538,7 @@ var Js = class extends pn {
9519
9538
  dispose() {
9520
9539
  this._computeNode?.dispose(), this._outputStorageTex?.dispose(), this.outputTarget?.dispose();
9521
9540
  }
9522
- }, rc = /* @__PURE__ */ X("\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"), ic = class extends pn {
9541
+ }, tc = /* @__PURE__ */ X("\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 pn {
9523
9542
  constructor(e, t = {}) {
9524
9543
  super("AutoExposure", {
9525
9544
  ...t,
@@ -9586,7 +9605,7 @@ var Js = class extends pn {
9586
9605
  _buildAdaptationCompute() {
9587
9606
  let e = this._reductionReadTexNode, t = this._adaptationStorageTex, n = this.keyValueU, r = this.minExposureU, i = this.maxExposureU, a = this.adaptSpeedBrightU, o = this.adaptSpeedDarkU, s = this.deltaTimeU, c = this.isFirstFrameU, l = this.previousExposureU;
9588
9607
  this._adaptationComputeNode = M(() => {
9589
- let u = yt(e, $e(B(0), B(0))).x, d = rc(u, l, n, r, i, a, o, s, c);
9608
+ let u = yt(e, $e(B(0), B(0))).x, d = tc(u, l, n, r, i, a, o, s, c);
9590
9609
  xt(t, wt(G(0), G(0)), d).toWriteOnly();
9591
9610
  })().compute(1, [
9592
9611
  1,
@@ -9651,7 +9670,7 @@ var Js = class extends pn {
9651
9670
  };
9652
9671
  //#endregion
9653
9672
  //#region src/TSL/SSRC.js
9654
- function ac({ 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: f, framesSinceReset: p }) {
9673
+ function rc({ 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: f, framesSinceReset: p }) {
9655
9674
  return M(() => {
9656
9675
  let m = B(Dt.x).mul(8).add(B(nt.x)), h = B(Dt.y).mul(8).add(B(nt.y));
9657
9676
  N(m.lessThan(B(s)).and(h.lessThan(B(c))), () => {
@@ -9673,7 +9692,7 @@ function ac({ colorTexNode: e, ndTexNode: t, motionTexNode: n, readCacheTexNode:
9673
9692
  });
9674
9693
  });
9675
9694
  }
9676
- function oc({ colorTexNode: e, ndTexNode: t, readCacheTexNode: n, outputTex: r, resW: i, resH: a, spatialRadius: o, spatialWeight: s, phiNormal: c, phiDepth: l }) {
9695
+ function ic({ colorTexNode: e, ndTexNode: t, readCacheTexNode: n, outputTex: r, resW: i, resH: a, spatialRadius: o, spatialWeight: s, phiNormal: c, phiDepth: l }) {
9677
9696
  let u = [
9678
9697
  [1, 0],
9679
9698
  [-1, 0],
@@ -9699,7 +9718,7 @@ function oc({ colorTexNode: e, ndTexNode: t, readCacheTexNode: n, outputTex: r,
9699
9718
  }
9700
9719
  //#endregion
9701
9720
  //#region src/Stages/SSRC.js
9702
- var sc = class extends pn {
9721
+ var ac = class extends pn {
9703
9722
  constructor(e, t = {}) {
9704
9723
  super("SSRC", {
9705
9724
  ...t,
@@ -9774,12 +9793,12 @@ var sc = class extends pn {
9774
9793
  phiNormal: this.phiNormal,
9775
9794
  phiDepth: this.phiDepth,
9776
9795
  maxHistory: this.maxHistory
9777
- }, t = ac({
9796
+ }, t = rc({
9778
9797
  ...e,
9779
9798
  writeCacheTex: this._cacheTexA,
9780
9799
  writePrevNDTex: this._prevNDTexA,
9781
9800
  framesSinceReset: this._framesSinceReset
9782
- }), n = ac({
9801
+ }), n = rc({
9783
9802
  ...e,
9784
9803
  writeCacheTex: this._cacheTexB,
9785
9804
  writePrevNDTex: this._prevNDTexB,
@@ -9793,7 +9812,7 @@ var sc = class extends pn {
9793
9812
  8,
9794
9813
  1
9795
9814
  ];
9796
- this._pass1NodeA = t().compute(r, i), this._pass1NodeB = n().compute(r, i), this._pass2Node = oc({
9815
+ this._pass1NodeA = t().compute(r, i), this._pass1NodeB = n().compute(r, i), this._pass2Node = ic({
9797
9816
  colorTexNode: this._colorTexNode,
9798
9817
  ndTexNode: this._ndTexNode,
9799
9818
  readCacheTexNode: this._readPass1CacheTexNode,
@@ -9806,7 +9825,7 @@ var sc = class extends pn {
9806
9825
  phiDepth: this.phiDepth
9807
9826
  })().compute(r, i);
9808
9827
  }
9809
- }, cc = class extends pn {
9828
+ }, oc = class extends pn {
9810
9829
  constructor(n, r = {}) {
9811
9830
  super("Display", {
9812
9831
  ...r,
@@ -9835,7 +9854,7 @@ var sc = class extends pn {
9835
9854
  dispose() {
9836
9855
  this.displayMaterial?.dispose();
9837
9856
  }
9838
- }, lc = class {
9857
+ }, sc = class {
9839
9858
  constructor() {
9840
9859
  this.textures = /* @__PURE__ */ new Map(), this.renderTargets = /* @__PURE__ */ new Map(), this.uniforms = /* @__PURE__ */ new Map(), this.state = {
9841
9860
  frame: 0,
@@ -9958,7 +9977,7 @@ var sc = class extends pn {
9958
9977
  dispose() {
9959
9978
  this.textures.clear(), this.renderTargets.clear(), this.uniforms.clear(), this._stateChangeCallbacks.clear(), this.state = {};
9960
9979
  }
9961
- }, uc = class extends E {
9980
+ }, cc = class extends E {
9962
9981
  constructor() {
9963
9982
  super(), this._onceCallbacks = /* @__PURE__ */ new Map();
9964
9983
  }
@@ -9996,9 +10015,9 @@ var sc = class extends pn {
9996
10015
  eventNames() {
9997
10016
  return this._listeners ? Object.keys(this._listeners) : [];
9998
10017
  }
9999
- }, dc = class {
10018
+ }, lc = class {
10000
10019
  constructor(e, t, n) {
10001
- this.renderer = e, this.width = t, this.height = n, this.stages = [], this.context = new lc(), this.eventBus = new uc(), this.context.setState("width", t), this.context.setState("height", n), this.stats = {
10020
+ this.renderer = e, this.width = t, this.height = n, this.stages = [], this.context = new sc(), this.eventBus = new cc(), this.context.setState("width", t), this.context.setState("height", n), this.stats = {
10002
10021
  enabled: !1,
10003
10022
  logSkipped: !1,
10004
10023
  timings: /* @__PURE__ */ new Map(),
@@ -10130,7 +10149,7 @@ var sc = class extends pn {
10130
10149
  let e = this.getInfo();
10131
10150
  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();
10132
10151
  }
10133
- }, fc = class {
10152
+ }, uc = class {
10134
10153
  constructor() {
10135
10154
  this.timeElapsed = 0, this.lastResetTime = performance.now(), this.renderCompleteDispatched = !1;
10136
10155
  }
@@ -10152,7 +10171,7 @@ var sc = class extends pn {
10152
10171
  resumeFromPause() {
10153
10172
  this.renderCompleteDispatched = !1, this.lastResetTime = performance.now() - this.timeElapsed * 1e3;
10154
10173
  }
10155
- }, pc = class extends E {
10174
+ }, dc = class extends E {
10156
10175
  constructor({ scene: e, camera: t, canvas: n, assetLoader: r, pathTracer: i, floorPlane: a }) {
10157
10176
  super(), this.scene = e, this.camera = t, this.canvas = n, this.assetLoader = r, this.pathTracer = i, this.floorPlane = a, this.raycaster = new Ce(), 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;
10158
10177
  }
@@ -10373,7 +10392,7 @@ var sc = class extends pn {
10373
10392
  dispose() {
10374
10393
  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;
10375
10394
  }
10376
- }, mc = {
10395
+ }, fc = {
10377
10396
  glb: {
10378
10397
  type: "model",
10379
10398
  name: "GLB (GLTF Binary)"
@@ -10438,12 +10457,12 @@ var sc = class extends pn {
10438
10457
  type: "archive",
10439
10458
  name: "ZIP Archive"
10440
10459
  }
10441
- }, hc = class extends E {
10460
+ }, pc = class extends E {
10442
10461
  constructor(e, t, n) {
10443
10462
  super(), this.scene = e, this.camera = t, this.controls = n, this.targetModel = null, this.floorPlane = null, this.sceneScale = 1, this.loaderCache = {}, this.uploadedFileInfo = null, this.animations = [];
10444
10463
  }
10445
10464
  getFileFormat(e) {
10446
- return mc[e.split(".").pop().toLowerCase()] || null;
10465
+ return fc[e.split(".").pop().toLowerCase()] || null;
10447
10466
  }
10448
10467
  readFileAsArrayBuffer(e) {
10449
10468
  return new Promise((t, n) => {
@@ -10636,7 +10655,7 @@ var sc = class extends pn {
10636
10655
  }
10637
10656
  for (let t in e) {
10638
10657
  let n = t.split(".").pop().toLowerCase();
10639
- if (mc[n] && mc[n].type === "model") return console.log(`Loading model file from ZIP: ${t}`), await this.loadModelFromZipEntry(e[t], t, n, e);
10658
+ if (fc[n] && fc[n].type === "model") return console.log(`Loading model file from ZIP: ${t}`), await this.loadModelFromZipEntry(e[t], t, n, e);
10640
10659
  }
10641
10660
  throw Error("No supported model files found in the ZIP archive");
10642
10661
  }
@@ -11065,7 +11084,7 @@ var sc = class extends pn {
11065
11084
  }), e;
11066
11085
  }
11067
11086
  async onModelLoad(e) {
11068
- let t = new as("onModelLoad");
11087
+ let t = new rs("onModelLoad");
11069
11088
  t.start("Camera extraction");
11070
11089
  let n = this.extractCamerasFromModel(e);
11071
11090
  t.end("Camera extraction"), t.start("Camera setup");
@@ -11144,10 +11163,10 @@ var sc = class extends pn {
11144
11163
  getSupportedFormats(e = null) {
11145
11164
  if (e) {
11146
11165
  let t = {};
11147
- for (let [n, r] of Object.entries(mc)) r.type === e && (t[n] = r);
11166
+ for (let [n, r] of Object.entries(fc)) r.type === e && (t[n] = r);
11148
11167
  return t;
11149
11168
  }
11150
- return mc;
11169
+ return fc;
11151
11170
  }
11152
11171
  dispose() {
11153
11172
  for (let e in this.loaderCache) {
@@ -11159,7 +11178,7 @@ var sc = class extends pn {
11159
11178
  removeAllEventListeners() {
11160
11179
  super.dispose();
11161
11180
  }
11162
- }, gc = {
11181
+ }, mc = {
11163
11182
  maxBounces: {
11164
11183
  uniform: "maxBounces",
11165
11184
  reset: !0
@@ -11266,11 +11285,11 @@ var sc = class extends pn {
11266
11285
  },
11267
11286
  renderMode: { handler: "handleRenderMode" },
11268
11287
  environmentRotation: { handler: "handleEnvironmentRotation" }
11269
- }, _c = {
11288
+ }, hc = {
11270
11289
  bounces: "maxBounces",
11271
11290
  adaptiveSampling: "useAdaptiveSampling",
11272
11291
  debugMode: "visMode"
11273
- }, vc = class extends E {
11292
+ }, gc = class extends E {
11274
11293
  constructor(e = Z) {
11275
11294
  super(), this._values = /* @__PURE__ */ new Map(), this._pathTracer = null, this._resetCallback = null, this._handlers = {}, this._delegates = {}, this._initDefaults(e);
11276
11295
  }
@@ -11312,7 +11331,7 @@ var sc = class extends pn {
11312
11331
  let i = this._values.get(e);
11313
11332
  if (i === t) return;
11314
11333
  this._values.set(e, t);
11315
- let a = gc[e];
11334
+ let a = mc[e];
11316
11335
  a && (this._applyRoute(a, t, i), (n === void 0 ? a.reset ?? !0 : n) && this._resetCallback?.(), r || this.dispatchEvent({
11317
11336
  type: gn.SETTING_CHANGED,
11318
11337
  key: e,
@@ -11326,7 +11345,7 @@ var sc = class extends pn {
11326
11345
  let e = this._values.get(r);
11327
11346
  if (e === i) continue;
11328
11347
  this._values.set(r, i);
11329
- let a = gc[r];
11348
+ let a = mc[r];
11330
11349
  a && (this._applyRoute(a, i, e), (a.reset ?? !0) && (n = !0), t || this.dispatchEvent({
11331
11350
  type: gn.SETTING_CHANGED,
11332
11351
  key: r,
@@ -11344,7 +11363,7 @@ var sc = class extends pn {
11344
11363
  }
11345
11364
  applyAll() {
11346
11365
  for (let [e, t] of this._values) {
11347
- let n = gc[e];
11366
+ let n = mc[e];
11348
11367
  n && this._applyRoute(n, t, void 0);
11349
11368
  }
11350
11369
  }
@@ -11352,10 +11371,10 @@ var sc = class extends pn {
11352
11371
  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);
11353
11372
  }
11354
11373
  _initDefaults(e) {
11355
- for (let t of Object.keys(gc)) t in e && this._values.set(t, e[t]);
11356
- for (let [t, n] of Object.entries(_c)) t in e && this._values.set(n, e[t]);
11374
+ for (let t of Object.keys(mc)) t in e && this._values.set(t, e[t]);
11375
+ for (let [t, n] of Object.entries(hc)) t in e && this._values.set(n, e[t]);
11357
11376
  }
11358
- }, yc = class extends E {
11377
+ }, _c = class extends E {
11359
11378
  constructor(e) {
11360
11379
  super();
11361
11380
  let t = e.clientWidth, n = e.clientHeight;
@@ -11471,7 +11490,7 @@ var sc = class extends pn {
11471
11490
  dispose() {
11472
11491
  this.controls?.dispose();
11473
11492
  }
11474
- }, bc = class extends E {
11493
+ }, vc = class extends E {
11475
11494
  constructor(e, t, n, r = {}) {
11476
11495
  super(), this.scene = e, this.sceneHelpers = t, this.pathTracer = n, this._onReset = r.onReset || null;
11477
11496
  }
@@ -11621,39 +11640,39 @@ var sc = class extends pn {
11621
11640
  ]);
11622
11641
  return n;
11623
11642
  }
11624
- }, xc = (e) => Math.min(Math.max(e, 0), 1);
11625
- function Sc(e, t, n, r, i) {
11626
- i[0] = xc(e), i[1] = xc(t), i[2] = xc(n);
11643
+ }, yc = (e) => Math.min(Math.max(e, 0), 1);
11644
+ function bc(e, t, n, r, i) {
11645
+ i[0] = yc(e), i[1] = yc(t), i[2] = yc(n);
11627
11646
  }
11628
- function Cc(e, t, n, r, i) {
11629
- i[0] = xc(e * r), i[1] = xc(t * r), i[2] = xc(n * r);
11647
+ function xc(e, t, n, r, i) {
11648
+ i[0] = yc(e * r), i[1] = yc(t * r), i[2] = yc(n * r);
11630
11649
  }
11631
- function wc(e, t, n, r, i) {
11632
- e *= r, t *= r, n *= r, i[0] = xc(e / (e + 1)), i[1] = xc(t / (t + 1)), i[2] = xc(n / (n + 1));
11650
+ function Sc(e, t, n, r, i) {
11651
+ e *= r, t *= r, n *= r, i[0] = yc(e / (e + 1)), i[1] = yc(t / (t + 1)), i[2] = yc(n / (n + 1));
11633
11652
  }
11634
- function Tc(e, t, n, r, i) {
11653
+ function Cc(e, t, n, r, i) {
11635
11654
  e = Math.max(e * r - .004, 0), t = Math.max(t * r - .004, 0), n = Math.max(n * r - .004, 0);
11636
11655
  let a = (e) => (e * (6.2 * e + .5) / (e * (6.2 * e + 1.7) + .06)) ** 2.2;
11637
11656
  i[0] = a(e), i[1] = a(t), i[2] = a(n);
11638
11657
  }
11639
- function Ec(e, t, n, r, i) {
11658
+ function wc(e, t, n, r, i) {
11640
11659
  e = e * r / .6, t = t * r / .6, n = n * r / .6;
11641
11660
  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);
11642
- 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);
11661
+ 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);
11643
11662
  }
11644
- function Dc(e, t, n, r, i) {
11663
+ function Tc(e, t, n, r, i) {
11645
11664
  e *= r, t *= r, n *= r;
11646
11665
  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;
11647
- 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);
11666
+ 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);
11648
11667
  let p = (e) => {
11649
11668
  let t = e * e, n = t * t;
11650
11669
  return 15.5 * n * t - 40.14 * n * e + 31.96 * n - 6.868 * t * e + .4298 * t + .1191 * e - .00232;
11651
11670
  };
11652
11671
  c = p(c), l = p(l), u = p(u);
11653
11672
  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;
11654
- 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);
11673
+ 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);
11655
11674
  }
11656
- function Oc(e, t, n, r, i) {
11675
+ function Ec(e, t, n, r, i) {
11657
11676
  let a = .76;
11658
11677
  e *= r, t *= r, n *= r;
11659
11678
  let o = Math.min(e, Math.min(t, n)), s = o < .08 ? o - 6.25 * o * o : .04;
@@ -11668,27 +11687,27 @@ function Oc(e, t, n, r, i) {
11668
11687
  let f = 1 - 1 / (.15 * (c - u) + 1);
11669
11688
  i[0] = e + (u - e) * f, i[1] = t + (u - t) * f, i[2] = n + (u - n) * f;
11670
11689
  }
11671
- var kc = new Map([
11672
- [me, Sc],
11673
- [te, Cc],
11674
- [Te, wc],
11675
- [h, Tc],
11676
- [c, Ec],
11677
- [u, Dc],
11678
- [fe, Oc]
11679
- ]), Ac = 1 / 2.2, jc = .2126, Mc = .7152, Nc = .0722;
11680
- function Pc(e, t) {
11690
+ var Dc = new Map([
11691
+ [me, bc],
11692
+ [te, xc],
11693
+ [Te, Sc],
11694
+ [h, Cc],
11695
+ [c, wc],
11696
+ [u, Tc],
11697
+ [fe, Ec]
11698
+ ]), Oc = 1 / 2.2, kc = .2126, Ac = .7152, jc = .0722;
11699
+ function Mc(e, t) {
11681
11700
  if (t === 1) return;
11682
- let n = e[0] * jc + e[1] * Mc + e[2] * Nc;
11701
+ let n = e[0] * kc + e[1] * Ac + e[2] * jc;
11683
11702
  e[0] = n + (e[0] - n) * t, e[1] = n + (e[1] - n) * t, e[2] = n + (e[2] - n) * t;
11684
11703
  }
11685
11704
  //#endregion
11686
11705
  //#region src/Passes/OIDNDenoiser.js
11687
- var Fc = null;
11688
- async function Ic() {
11689
- return Fc ||= (await import("oidn-web")).initUNetFromURL, Fc;
11706
+ var Nc = null;
11707
+ async function Pc() {
11708
+ return Nc ||= (await import("oidn-web")).initUNetFromURL, Nc;
11690
11709
  }
11691
- var Lc = new Float32Array(3), Rc = {
11710
+ var Fc = new Float32Array(3), Ic = {
11692
11711
  BASE_URL: "https://cdn.jsdelivr.net/npm/denoiser/tzas/",
11693
11712
  QUALITY_SUFFIXES: {
11694
11713
  fast: "_small",
@@ -11701,7 +11720,7 @@ var Lc = new Float32Array(3), Rc = {
11701
11720
  debugGbufferMaps: !0,
11702
11721
  tileSize: 256
11703
11722
  }
11704
- }, zc = class extends E {
11723
+ }, Lc = class extends E {
11705
11724
  constructor(e, t, n, r, i = {}) {
11706
11725
  if (super(), !e || !t || !n || !r) throw Error("OIDNDenoiser requires output canvas, renderer, scene, and camera");
11707
11726
  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 || (() => c), this.getSaturation = i.getSaturation || (() => 1), this.getTransparentBackground = i.getTransparentBackground || (() => !1), this.isGPUMode = !!this.backendParamsGetter, this.gpuDevice = null, this._gpuInputBuffers = {
@@ -11712,7 +11731,7 @@ var Lc = new Float32Array(3), Rc = {
11712
11731
  width: 0,
11713
11732
  height: 0
11714
11733
  }, this._cachedAlpha = null, this._cachedAlphaWidth = 0, this.config = {
11715
- ...Rc.DEFAULT_OPTIONS,
11734
+ ...Ic.DEFAULT_OPTIONS,
11716
11735
  ...i
11717
11736
  }, this.enabled = this.config.enableOIDN, this.quality = this.config.oidnQuality, this.debugGbufferMaps = this.config.debugGbufferMaps, this.tileSize = this.config.tileSize, this.state = {
11718
11737
  isDenoising: !1,
@@ -11768,7 +11787,7 @@ var Lc = new Float32Array(3), Rc = {
11768
11787
  let e = this.backendParamsGetter();
11769
11788
  this.gpuDevice = e?.device ?? null, t = e?.device ? e : void 0;
11770
11789
  }
11771
- this.unet = await (await Ic())(e, t, {
11790
+ this.unet = await (await Pc())(e, t, {
11772
11791
  aux: !0,
11773
11792
  hdr: !0,
11774
11793
  maxTileSize: this.tileSize
@@ -11783,14 +11802,14 @@ var Lc = new Float32Array(3), Rc = {
11783
11802
  }
11784
11803
  }
11785
11804
  _generateTzaUrl() {
11786
- let { BASE_URL: e, QUALITY_SUFFIXES: t } = Rc;
11805
+ let { BASE_URL: e, QUALITY_SUFFIXES: t } = Ic;
11787
11806
  return `${e}rt_hdr_alb_nrm${t[this.quality] || ""}.tza`;
11788
11807
  }
11789
11808
  async updateConfiguration(e) {
11790
11809
  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());
11791
11810
  }
11792
11811
  async updateQuality(e) {
11793
- if (!Object.prototype.hasOwnProperty.call(Rc.QUALITY_SUFFIXES, e)) throw Error(`Invalid quality setting: ${e}. Must be one of: ${Object.keys(Rc.QUALITY_SUFFIXES).join(", ")}`);
11812
+ if (!Object.prototype.hasOwnProperty.call(Ic.QUALITY_SUFFIXES, e)) throw Error(`Invalid quality setting: ${e}. Must be one of: ${Object.keys(Ic.QUALITY_SUFFIXES).join(", ")}`);
11794
11813
  await this.updateConfiguration({ oidnQuality: e });
11795
11814
  }
11796
11815
  async start() {
@@ -11964,10 +11983,10 @@ var Lc = new Float32Array(3), Rc = {
11964
11983
  f.copyBufferToBuffer(e.data, r, d, a, l);
11965
11984
  }
11966
11985
  r.queue.submit([f.finish()]), d.mapAsync(GPUMapMode.READ).then(() => {
11967
- let e = new Float32Array(d.getMappedRange()), t = new ImageData(o, s), r = this.getExposure(), i = this.getSaturation(), a = kc.get(this.getToneMapping()) || kc.get(c), l = this._cachedAlpha, u = this._cachedAlphaWidth;
11986
+ let e = new Float32Array(d.getMappedRange()), t = new ImageData(o, s), r = this.getExposure(), i = this.getSaturation(), a = Dc.get(this.getToneMapping()) || Dc.get(c), l = this._cachedAlpha, u = this._cachedAlphaWidth;
11968
11987
  for (let s = 0, c = e.length; s < c; s += 4) {
11969
11988
  let c = e[s] * r, d = e[s + 1] * r, f = e[s + 2] * r;
11970
- if (i !== 1 && (Lc[0] = c, Lc[1] = d, Lc[2] = f, Pc(Lc, i), c = Lc[0], d = Lc[1], f = Lc[2]), a(c, d, f, 1, Lc), t.data[s] = Lc[0] ** Ac * 255 | 0, t.data[s + 1] = Lc[1] ** Ac * 255 | 0, t.data[s + 2] = Lc[2] ** Ac * 255 | 0, l) {
11989
+ if (i !== 1 && (Fc[0] = c, Fc[1] = d, Fc[2] = f, Mc(Fc, i), c = Fc[0], d = Fc[1], f = Fc[2]), a(c, d, f, 1, Fc), t.data[s] = Fc[0] ** Oc * 255 | 0, t.data[s + 1] = Fc[1] ** Oc * 255 | 0, t.data[s + 2] = Fc[2] ** Oc * 255 | 0, l) {
11971
11990
  let e = (s >> 2) % o, r = (s >> 2) / o | 0;
11972
11991
  t.data[s + 3] = l[(n.y + r) * u + n.x + e];
11973
11992
  } else t.data[s + 3] = 255;
@@ -11990,10 +12009,10 @@ var Lc = new Float32Array(3), Rc = {
11990
12009
  usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST
11991
12010
  }), o = r.createCommandEncoder({ label: "oidn-readback" });
11992
12011
  o.copyBufferToBuffer(e, 0, a, 0, i), r.queue.submit([o.finish()]), await a.mapAsync(GPUMapMode.READ);
11993
- let s = new Float32Array(a.getMappedRange()), l = new ImageData(t, n), u = this.getExposure(), d = this.getSaturation(), f = kc.get(this.getToneMapping()) || kc.get(c), p = this._cachedAlpha;
12012
+ let s = new Float32Array(a.getMappedRange()), l = new ImageData(t, n), u = this.getExposure(), d = this.getSaturation(), f = Dc.get(this.getToneMapping()) || Dc.get(c), p = this._cachedAlpha;
11994
12013
  for (let e = 0, t = s.length; e < t; e += 4) {
11995
12014
  let t = s[e] * u, n = s[e + 1] * u, r = s[e + 2] * u;
11996
- d !== 1 && (Lc[0] = t, Lc[1] = n, Lc[2] = r, Pc(Lc, d), t = Lc[0], n = Lc[1], r = Lc[2]), f(t, n, r, 1, Lc), l.data[e] = Lc[0] ** Ac * 255 | 0, l.data[e + 1] = Lc[1] ** Ac * 255 | 0, l.data[e + 2] = Lc[2] ** Ac * 255 | 0, l.data[e + 3] = p ? p[e >> 2] : 255;
12015
+ d !== 1 && (Fc[0] = t, Fc[1] = n, Fc[2] = r, Mc(Fc, d), t = Fc[0], n = Fc[1], r = Fc[2]), f(t, n, r, 1, Fc), l.data[e] = Fc[0] ** Oc * 255 | 0, l.data[e + 1] = Fc[1] ** Oc * 255 | 0, l.data[e + 2] = Fc[2] ** Oc * 255 | 0, l.data[e + 3] = p ? p[e >> 2] : 255;
11997
12016
  }
11998
12017
  a.unmap(), a.destroy(), this.ctx.putImageData(l, 0, 0);
11999
12018
  }
@@ -12011,7 +12030,7 @@ var Lc = new Float32Array(3), Rc = {
12011
12030
  let t = this.debugHelpers && (this._lastAlbedoTexture !== e.textures[2] || this._lastNormalTexture !== e.textures[1]);
12012
12031
  if (!this.debugHelpers || t) {
12013
12032
  this.debugHelpers && (this.debugHelpers.albedo?.dispose(), this.debugHelpers.normal?.dispose(), console.log("OIDNDenoiser: Recreating debug helpers due to texture change")), this.debugHelpers = {
12014
- albedo: qs(this.renderer, e, {
12033
+ albedo: Gs(this.renderer, e, {
12015
12034
  width: 250,
12016
12035
  height: 250,
12017
12036
  position: "bottom-right",
@@ -12020,7 +12039,7 @@ var Lc = new Float32Array(3), Rc = {
12020
12039
  autoUpdate: !1,
12021
12040
  textureIndex: 2
12022
12041
  }),
12023
- normal: qs(this.renderer, e, {
12042
+ normal: Gs(this.renderer, e, {
12024
12043
  width: 250,
12025
12044
  height: 250,
12026
12045
  position: "bottom-left",
@@ -12038,19 +12057,19 @@ var Lc = new Float32Array(3), Rc = {
12038
12057
  dispose() {
12039
12058
  this.abort(), 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");
12040
12059
  }
12041
- }, Bc = "https://huggingface.co/notaneimu/onnx-image-models/resolve/main/", Vc = {
12060
+ }, Rc = "https://huggingface.co/notaneimu/onnx-image-models/resolve/main/", zc = {
12042
12061
  QUALITY_PRESETS: {
12043
12062
  fast: {
12044
- 2: Bc + "2x-spanx2-ch48.onnx",
12045
- 4: Bc + "4xNomos8k_span_otf_strong_fp32_opset17.onnx"
12063
+ 2: Rc + "2x-spanx2-ch48.onnx",
12064
+ 4: Rc + "4xNomos8k_span_otf_strong_fp32_opset17.onnx"
12046
12065
  },
12047
12066
  balanced: {
12048
- 2: Bc + "2xNomosUni_compact_otf_medium.onnx",
12049
- 4: Bc + "RealESRGAN_x4plus.onnx"
12067
+ 2: Rc + "2xNomosUni_compact_otf_medium.onnx",
12068
+ 4: Rc + "RealESRGAN_x4plus.onnx"
12050
12069
  },
12051
12070
  quality: {
12052
- 2: Bc + "2x-realesrgan-x2plus.onnx",
12053
- 4: Bc + "4xNomos2_hq_mosr_fp32.onnx"
12071
+ 2: Rc + "2x-realesrgan-x2plus.onnx",
12072
+ 4: Rc + "4xNomos2_hq_mosr_fp32.onnx"
12054
12073
  }
12055
12074
  },
12056
12075
  TILE_SIZE: 512,
@@ -12062,17 +12081,17 @@ var Lc = new Float32Array(3), Rc = {
12062
12081
  }],
12063
12082
  graphOptimizationLevel: "all"
12064
12083
  }
12065
- }, Hc = class extends E {
12084
+ }, Bc = class extends E {
12066
12085
  constructor(e, t, n = {}) {
12067
12086
  if (super(), !e || !t) throw Error("AIUpscaler requires output canvas and renderer");
12068
- 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 || (() => c), 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 || Vc.TILE_SIZE, this._tileSizeOverride = !!n.tileSize, this.state = {
12087
+ 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 || (() => c), 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 || zc.TILE_SIZE, this._tileSizeOverride = !!n.tileSize, this.state = {
12069
12088
  isUpscaling: !1,
12070
12089
  isLoading: !1,
12071
12090
  abortController: null
12072
12091
  }, this._worker = null, this._currentModelUrl = null, this._tileId = 0, this._upscaledAlpha = null, this._upscaledAlphaWidth = 0, this._backupCanvas = null, this._baseWidth = e.width, this._baseHeight = e.height;
12073
12092
  }
12074
12093
  async _ensureSession() {
12075
- let e = Vc.QUALITY_PRESETS[this.quality];
12094
+ let e = zc.QUALITY_PRESETS[this.quality];
12076
12095
  if (!e) throw Error(`Unknown quality preset: ${this.quality}`);
12077
12096
  let t = e[this.scaleFactor];
12078
12097
  if (!t) throw Error(`No model for ${this.quality}/${this.scaleFactor}x`);
@@ -12093,7 +12112,7 @@ var Lc = new Float32Array(3), Rc = {
12093
12112
  this._worker.addEventListener("message", r), this._worker.postMessage({
12094
12113
  type: "load",
12095
12114
  url: t,
12096
- sessionOptions: Vc.SESSION_OPTIONS
12115
+ sessionOptions: zc.SESSION_OPTIONS
12097
12116
  });
12098
12117
  }), this._currentModelUrl = t, this.dispatchEvent({ type: "loaded" });
12099
12118
  } catch (e) {
@@ -12160,8 +12179,8 @@ var Lc = new Float32Array(3), Rc = {
12160
12179
  willReadFrequently: !0,
12161
12180
  alpha: !0
12162
12181
  });
12163
- this._cacheUpscaledAlpha(t, n * i, r * i), t.isHDR && (this._hdrToneMapFn = kc.get(this.getToneMapping()) || kc.get(c), this._hdrExposure = this.getExposure(), this._hdrSaturation = this.getSaturation(), this._tmOut = new Float32Array(3));
12164
- let o = Vc.TILE_OVERLAP, s = this.tileSize, l = s - o * 2, u = Math.ceil(n / l), d = Math.ceil(r / l), f = u * d, p = 0;
12182
+ this._cacheUpscaledAlpha(t, n * i, r * i), t.isHDR && (this._hdrToneMapFn = Dc.get(this.getToneMapping()) || Dc.get(c), this._hdrExposure = this.getExposure(), this._hdrSaturation = this.getSaturation(), this._tmOut = new Float32Array(3));
12183
+ let o = zc.TILE_OVERLAP, s = this.tileSize, l = s - o * 2, u = Math.ceil(n / l), d = Math.ceil(r / l), f = u * d, p = 0;
12165
12184
  for (let o = 0; o < d; o++) for (let c = 0; c < u; c++) {
12166
12185
  if (e.aborted) throw new DOMException("Aborted", "AbortError");
12167
12186
  let u = Math.min(c * l, Math.max(0, n - s)), d = Math.min(o * l, Math.max(0, r - s)), m = Math.min(s, n - u), h = Math.min(s, r - d), g = this._extractTile(t, u, d, m, h), _ = await this._inferTile(g, m, h), v = u * i, y = d * i, b = m * i, x = h * i, S = this._tensorToImageData(_, b, x, v, y);
@@ -12231,7 +12250,7 @@ var Lc = new Float32Array(3), Rc = {
12231
12250
  let u = ((n + e) * o + (t + i)) * 4, d = e * r + i;
12232
12251
  if (s) {
12233
12252
  let e = this._hdrToneMapFn, t = this._hdrExposure, n = this._hdrSaturation, r = a[u] * t, i = a[u + 1] * t, o = a[u + 2] * t;
12234
- n !== 1 && (this._tmOut[0] = r, this._tmOut[1] = i, this._tmOut[2] = o, Pc(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] ** +Ac, l[c + d] = this._tmOut[1] ** +Ac, l[2 * c + d] = this._tmOut[2] ** +Ac;
12253
+ n !== 1 && (this._tmOut[0] = r, this._tmOut[1] = i, this._tmOut[2] = o, Mc(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] ** +Oc, l[c + d] = this._tmOut[1] ** +Oc, l[2 * c + d] = this._tmOut[2] ** +Oc;
12235
12254
  } else l[d] = a[u] / 255, l[c + d] = a[u + 1] / 255, l[2 * c + d] = a[u + 2] / 255;
12236
12255
  }
12237
12256
  return l;
@@ -12289,10 +12308,10 @@ var Lc = new Float32Array(3), Rc = {
12289
12308
  this._backupCanvas = document.createElement("canvas"), this._backupCanvas.width = e.width, this._backupCanvas.height = e.height;
12290
12309
  let t = this._backupCanvas.getContext("2d");
12291
12310
  if (e.isHDR) {
12292
- let { data: n, width: r, height: i } = e, a = t.createImageData(r, i), o = a.data, s = kc.get(this.getToneMapping()) || kc.get(c), l = this.getExposure(), u = this.getSaturation(), d = new Float32Array(3);
12311
+ let { data: n, width: r, height: i } = e, a = t.createImageData(r, i), o = a.data, s = Dc.get(this.getToneMapping()) || Dc.get(c), l = this.getExposure(), u = this.getSaturation(), d = new Float32Array(3);
12293
12312
  for (let e = 0, t = r * i; e < t; e++) {
12294
12313
  let t = e * 4, r = n[t] * l, i = n[t + 1] * l, a = n[t + 2] * l;
12295
- u !== 1 && (d[0] = r, d[1] = i, d[2] = a, Pc(d, u), r = d[0], i = d[1], a = d[2]), s(r, i, a, 1, d), o[t] = d[0] ** +Ac * 255 + .5 | 0, o[t + 1] = d[1] ** +Ac * 255 + .5 | 0, o[t + 2] = d[2] ** +Ac * 255 + .5 | 0, o[t + 3] = 255;
12314
+ u !== 1 && (d[0] = r, d[1] = i, d[2] = a, Mc(d, u), r = d[0], i = d[1], a = d[2]), s(r, i, a, 1, d), o[t] = d[0] ** +Oc * 255 + .5 | 0, o[t + 1] = d[1] ** +Oc * 255 + .5 | 0, o[t + 2] = d[2] ** +Oc * 255 + .5 | 0, o[t + 3] = 255;
12296
12315
  }
12297
12316
  t.putImageData(a, 0, 0);
12298
12317
  } else t.putImageData(e, 0, 0);
@@ -12304,7 +12323,7 @@ var Lc = new Float32Array(3), Rc = {
12304
12323
  this.hdr = !!e;
12305
12324
  }
12306
12325
  setQuality(e) {
12307
- if (!Vc.QUALITY_PRESETS[e]) {
12326
+ if (!zc.QUALITY_PRESETS[e]) {
12308
12327
  console.warn(`AIUpscaler: Invalid quality "${e}", must be fast/balanced/quality`);
12309
12328
  return;
12310
12329
  }
@@ -12323,7 +12342,7 @@ var Lc = new Float32Array(3), Rc = {
12323
12342
  async dispose() {
12324
12343
  this.abort(), this._worker &&= (this._worker.postMessage({ type: "dispose" }), this._worker.terminate(), null), this._currentModelUrl = null, this._backupCanvas = null, this._upscaledAlpha = null, this.state.abortController = null, console.log("AIUpscaler disposed");
12325
12344
  }
12326
- }, Uc = class extends E {
12345
+ }, Vc = class extends E {
12327
12346
  constructor({ renderer: e, mainCanvas: t, scene: n, camera: r, stages: i, pipeline: a, getExposure: o, getSaturation: s, getTransparentBg: c }) {
12328
12347
  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;
12329
12348
  }
@@ -12347,7 +12366,7 @@ var Lc = new Float32Array(3), Rc = {
12347
12366
  setupDenoiser() {
12348
12367
  if (!this.denoiserCanvas) return;
12349
12368
  let e = this._stages.pathTracer;
12350
- this.denoiser = new zc(this.denoiserCanvas, this.renderer, this.scene, this.camera, {
12369
+ this.denoiser = new Lc(this.denoiserCanvas, this.renderer, this.scene, this.camera, {
12351
12370
  ...Z,
12352
12371
  backendParams: () => ({
12353
12372
  device: this.renderer.backend.device,
@@ -12372,7 +12391,7 @@ var Lc = new Float32Array(3), Rc = {
12372
12391
  setupUpscaler() {
12373
12392
  if (!this.denoiserCanvas) return;
12374
12393
  let e = this._stages.pathTracer;
12375
- this.upscaler = new Hc(this.denoiserCanvas, this.renderer, {
12394
+ this.upscaler = new Bc(this.denoiserCanvas, this.renderer, {
12376
12395
  scaleFactor: Z.upscalerScale || 2,
12377
12396
  quality: Z.upscalerQuality || "fast",
12378
12397
  getSourceCanvas: () => this.denoiser?.enabled ? null : this.renderer.domElement,
@@ -12530,7 +12549,7 @@ var Lc = new Float32Array(3), Rc = {
12530
12549
  let t = Mn[e];
12531
12550
  t && this._stages.asvgf?.updateParameters(t);
12532
12551
  }
12533
- }, Wc = class {
12552
+ }, Hc = class {
12534
12553
  constructor() {
12535
12554
  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;
12536
12555
  }
@@ -12554,7 +12573,7 @@ var Lc = new Float32Array(3), Rc = {
12554
12573
  dispose() {
12555
12574
  this.visible = !1;
12556
12575
  }
12557
- }, Gc = class {
12576
+ }, Uc = class {
12558
12577
  constructor(n, r, i) {
12559
12578
  this.layer = "scene", this.visible = !0, this._outlineNode = Lt(r, i, {
12560
12579
  selectedObjects: [],
@@ -12588,7 +12607,7 @@ var Lc = new Float32Array(3), Rc = {
12588
12607
  dispose() {
12589
12608
  this.visible = !1, this._outlineNode?.dispose(), this._material?.dispose(), this._quad?.dispose();
12590
12609
  }
12591
- }, Kc = class {
12610
+ }, Wc = class {
12592
12611
  constructor(e, t) {
12593
12612
  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;
12594
12613
  }
@@ -12600,13 +12619,13 @@ var Lc = new Float32Array(3), Rc = {
12600
12619
  }
12601
12620
  setupDefaultHelpers({ helperScene: e, meshScene: t, pipeline: n, denoisingManager: r, app: i, renderWidth: a, renderHeight: o }) {
12602
12621
  this.setHelperScene(e);
12603
- let s = new Wc();
12622
+ let s = new Hc();
12604
12623
  this.register("tiles", s), s.setRenderSize(a || 1, o || 1), i.addEventListener("resolution_changed", (e) => {
12605
12624
  s.setRenderSize(e.width, e.height);
12606
12625
  }), n.eventBus.on("tile:changed", (e) => {
12607
12626
  e.renderMode === 1 && e.tileBounds && (s.setActiveTile(e.tileBounds), s.show());
12608
12627
  }), n.eventBus.on("pipeline:reset", () => s.hide()), i.addEventListener(gn.RENDER_COMPLETE, () => s.hide()), this._wireDenoiserTileEvents(s, r);
12609
- let c = new Gc(this.renderer, t, this.camera);
12628
+ let c = new Uc(this.renderer, t, this.camera);
12610
12629
  this.register("outline", c);
12611
12630
  }
12612
12631
  _wireDenoiserTileEvents(e, t) {
@@ -12673,7 +12692,7 @@ var Lc = new Float32Array(3), Rc = {
12673
12692
  for (let e of this._helpers.values()) e.dispose?.();
12674
12693
  this._helpers.clear(), this._hudCanvas.parentElement && this._hudCanvas.parentElement.removeChild(this._hudCanvas);
12675
12694
  }
12676
- }, qc = class extends E {
12695
+ }, Gc = class extends E {
12677
12696
  constructor() {
12678
12697
  super(), this.mixer = null, this.timer = new Ne(), this.actions = [], this.isPlaying = !1, this._scene = null, this._mixerRoot = null, this._meshes = null, this._meshTriRanges = null, this._posBuffer = null, this._tempVec = new Le(), this._skinnedCache = null, this._totalTriangleCount = 0, this._clipsCache = null, this._savedTimeScale = 1, this.onFinished = null, this.wakeCallback = null;
12679
12698
  }
@@ -12773,7 +12792,7 @@ var Lc = new Float32Array(3), Rc = {
12773
12792
  dispose() {
12774
12793
  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;
12775
12794
  }
12776
- }, Jc = class {
12795
+ }, Kc = class {
12777
12796
  constructor({ camera: e, canvas: t, orbitControls: n, app: r }) {
12778
12797
  this._app = r, this._orbitControls = n, this._camera = e, this._controls = new Rt(e, t), this._gizmoScene = new Oe(), 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 Le(), this._normalMatrix = new oe(), 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);
12779
12798
  }
@@ -12884,9 +12903,9 @@ var Lc = new Float32Array(3), Rc = {
12884
12903
  dispose() {
12885
12904
  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;
12886
12905
  }
12887
- }, Yc = class extends E {
12906
+ }, qc = class extends E {
12888
12907
  constructor(e, t = {}) {
12889
- super(), this.canvas = e, this._autoResize = t.autoResize !== !1, this._showStats = t.showStats !== !1, this._statsContainer = t.statsContainer || null, this.settings = new vc(Z), 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 qc(), 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 fc(), this._resizeDebounceTimer = null;
12908
+ super(), this.canvas = e, this._autoResize = t.autoResize !== !1, this._showStats = t.showStats !== !1, this._statsContainer = t.statsContainer || null, this.settings = new gc(Z), 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 Gc(), 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 uc(), this._resizeDebounceTimer = null;
12890
12909
  }
12891
12910
  async init() {
12892
12911
  return await this._initRenderer(), this._initCameraManager(), this._initScenes(), this._initAssetPipeline(), this._initPipeline(), this._initManagers(), this._wireEvents(), this.stages.pathTracer.setTriangleData(new Float32Array(32), 0), this.stages.pathTracer.setBVHData(new Float32Array(16)), this.stages.pathTracer.materialData.setMaterialData(new Float32Array(16)), this.stages.pathTracer.setupMaterial(), this._showStats && this._initStats(), this.isInitialized = !0, console.log("WebGPU Path Tracer App initialized"), this;
@@ -12994,11 +13013,11 @@ var Lc = new Float32Array(3), Rc = {
12994
13013
  }
12995
13014
  async loadSceneData() {
12996
13015
  this.interactionManager?.deselect(), this.animationManager.dispose(), this._animRefitInFlight = !1;
12997
- let e = new as("loadSceneData"), t = this.meshScene.environment, n = null;
13016
+ let e = new rs("loadSceneData"), t = this.meshScene.environment, n = null;
12998
13017
  return 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)"), bn({
12999
13018
  status: "Transferring data to GPU...",
13000
13019
  progress: 86
13001
- }), await new Promise((e) => setTimeout(e, 0)), e.start("GPU data transfer"), this._sdf.uploadToPathTracer(this.stages.pathTracer, this.lightManager, this.meshScene, t) ? (e.end("GPU data transfer"), bn({
13020
+ }), await new Promise((e) => setTimeout(e, 0)), e.start("GPU data transfer"), this._sdf.uploadToPathTracer(this.stages.pathTracer, this.lightManager, this.meshScene, t) ? (this.stages.pathTracer._meshRefs = this.stages.pathTracer._collectMeshRefs(this.meshScene), this.stages.pathTracer.setMeshVisibilityData(this.stages.pathTracer._meshRefs), e.end("GPU data transfer"), bn({
13002
13021
  status: "Compiling shaders...",
13003
13022
  progress: 90
13004
13023
  }), await new Promise((e) => setTimeout(e, 0)), e.start("Material setup (TSL compile)"), this.stages.pathTracer.setupMaterial(), e.end("Material setup (TSL compile)"), n && (bn({
@@ -13085,16 +13104,18 @@ var Lc = new Float32Array(3), Rc = {
13085
13104
  return this.stages.pathTracer?.frameCount || 0;
13086
13105
  }
13087
13106
  setMaterialProperty(e, t, n) {
13088
- if (this.stages.pathTracer?.materialData.updateMaterialProperty(e, t, n), [
13089
- "emissive",
13090
- "emissiveIntensity",
13091
- "visible"
13092
- ].includes(t) && this.stages.pathTracer?.enableEmissiveTriangleSampling?.value) {
13107
+ if (this.stages.pathTracer?.materialData.updateMaterialProperty(e, t, n), ["emissive", "emissiveIntensity"].includes(t) && this.stages.pathTracer?.enableEmissiveTriangleSampling?.value) {
13093
13108
  let r = this._sdf.updateMaterialEmissive(e, t, n);
13094
13109
  r && this.stages.pathTracer.setEmissiveTriangleData(r.rawData, r.emissiveCount, r.totalPower);
13095
13110
  }
13096
13111
  this.reset();
13097
13112
  }
13113
+ setMeshVisibility(e, t) {
13114
+ this.stages.pathTracer?.updateMeshVisibility(e, t), this.reset();
13115
+ }
13116
+ updateAllMeshVisibility() {
13117
+ this.stages.pathTracer?.updateAllMeshVisibility(), this.reset();
13118
+ }
13098
13119
  setTextureTransform(e, t, n) {
13099
13120
  this.stages.pathTracer?.materialData.updateTextureTransform(e, t, n), this.reset();
13100
13121
  }
@@ -13118,32 +13139,32 @@ var Lc = new Float32Array(3), Rc = {
13118
13139
  }), window.renderer = this.renderer, await this.renderer.init(), n.setLTC(Re.init()), this.renderer.toneMapping = c, this.renderer.toneMappingExposure = 1, this.renderer.setPixelRatio(1);
13119
13140
  }
13120
13141
  _initCameraManager() {
13121
- this.cameraManager = new yc(this.canvas);
13142
+ this.cameraManager = new _c(this.canvas);
13122
13143
  }
13123
13144
  _initScenes() {
13124
13145
  this.scene = new Oe(), this.meshScene = new Oe(), this._sceneHelpers = new Bt();
13125
13146
  }
13126
13147
  _initAssetPipeline() {
13127
- this._sdf = new Bs(), this.assetLoader = new hc(this.meshScene, this.cameraManager.camera, this.cameraManager.controls), this.assetLoader.createFloorPlane(), this.cameraManager.controls.addEventListener("change", () => {
13148
+ this._sdf = new Rs(), this.assetLoader = new pc(this.meshScene, this.cameraManager.camera, this.cameraManager.controls), this.assetLoader.createFloorPlane(), this.cameraManager.controls.addEventListener("change", () => {
13128
13149
  this.needsReset = !0, this.wake();
13129
13150
  });
13130
13151
  }
13131
13152
  _initPipeline() {
13132
13153
  this._createStages();
13133
13154
  let { clientWidth: e, clientHeight: t } = this.canvas;
13134
- this.pipeline = new dc(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);
13155
+ this.pipeline = new lc(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);
13135
13156
  let n = this.canvas.clientWidth || 1, r = this.canvas.clientHeight || 1;
13136
13157
  this.pipeline.setSize(n, r);
13137
13158
  }
13138
13159
  _initManagers() {
13139
- this.interactionManager = new pc({
13160
+ this.interactionManager = new dc({
13140
13161
  scene: this.meshScene,
13141
13162
  camera: this.cameraManager.camera,
13142
13163
  canvas: this.canvas,
13143
13164
  assetLoader: this.assetLoader,
13144
13165
  pathTracer: null,
13145
13166
  floorPlane: this.assetLoader.floorPlane
13146
- }), this.interactionManager.wireAppEvents(this), this.cameraManager.setInteractionManager(this.interactionManager), this.lightManager = new bc(this.scene, this._sceneHelpers, this.stages.pathTracer, { onReset: () => this.reset() }), this._setupDenoisingManager(), this._setupOverlayManager(), this.transformManager = new Jc({
13167
+ }), this.interactionManager.wireAppEvents(this), this.cameraManager.setInteractionManager(this.interactionManager), this.lightManager = new vc(this.scene, this._sceneHelpers, this.stages.pathTracer, { onReset: () => this.reset() }), this._setupDenoisingManager(), this._setupOverlayManager(), this.transformManager = new Kc({
13147
13168
  camera: this.cameraManager.camera,
13148
13169
  canvas: this.canvas,
13149
13170
  orbitControls: this.cameraManager.controls,
@@ -13213,16 +13234,16 @@ var Lc = new Float32Array(3), Rc = {
13213
13234
  }
13214
13235
  _createStages() {
13215
13236
  let e = this.settings.get("adaptiveSamplingMax"), t = this.settings.get("useAdaptiveSampling");
13216
- this.stages.pathTracer = new Ws(this.renderer, this.scene, this.cameraManager.camera), this.stages.normalDepth = new Gs(this.renderer, { pathTracer: this.stages.pathTracer }), this.stages.motionVector = new Ks(this.renderer, this.cameraManager.camera, { pathTracer: this.stages.pathTracer }), this.stages.ssrc = new sc(this.renderer, { enabled: !1 }), this.stages.asvgf = new Js(this.renderer, { enabled: !1 }), this.stages.variance = new Xs(this.renderer, { enabled: !1 }), this.stages.bilateralFilter = new Qs(this.renderer, { enabled: !1 }), this.stages.adaptiveSampling = new tc(this.renderer, {
13237
+ this.stages.pathTracer = new Hs(this.renderer, this.scene, this.cameraManager.camera), this.stages.normalDepth = new Us(this.renderer, { pathTracer: this.stages.pathTracer }), this.stages.motionVector = new Ws(this.renderer, this.cameraManager.camera, { pathTracer: this.stages.pathTracer }), this.stages.ssrc = new ac(this.renderer, { enabled: !1 }), this.stages.asvgf = new Ks(this.renderer, { enabled: !1 }), this.stages.variance = new Js(this.renderer, { enabled: !1 }), this.stages.bilateralFilter = new Xs(this.renderer, { enabled: !1 }), this.stages.adaptiveSampling = new $s(this.renderer, {
13217
13238
  adaptiveSamplingMax: e,
13218
13239
  enabled: t
13219
- }), this.stages.edgeFilter = new nc(this.renderer, { enabled: !1 }), this.stages.autoExposure = new ic(this.renderer, { enabled: Z.autoExposure ?? !1 }), this.stages.display = new cc(this.renderer, {
13240
+ }), this.stages.edgeFilter = new ec(this.renderer, { enabled: !1 }), this.stages.autoExposure = new nc(this.renderer, { enabled: Z.autoExposure ?? !1 }), this.stages.display = new oc(this.renderer, {
13220
13241
  exposure: Z.autoExposure ? 1 : this.settings.get("exposure") ?? 1,
13221
13242
  saturation: this.settings.get("saturation") ?? Z.saturation
13222
13243
  });
13223
13244
  }
13224
13245
  _setupDenoisingManager() {
13225
- this.denoisingManager = new Uc({
13246
+ this.denoisingManager = new Vc({
13226
13247
  renderer: this.renderer,
13227
13248
  mainCanvas: this.canvas,
13228
13249
  scene: this.scene,
@@ -13274,7 +13295,7 @@ var Lc = new Float32Array(3), Rc = {
13274
13295
  this.scene.updateMatrixWorld(), this.overlayManager?.render(), this.transformManager?.render(this.renderer);
13275
13296
  }
13276
13297
  _setupOverlayManager() {
13277
- this.overlayManager = new Kc(this.renderer, this.cameraManager.camera), this.overlayManager.setupDefaultHelpers({
13298
+ this.overlayManager = new Wc(this.renderer, this.cameraManager.camera), this.overlayManager.setupDefaultHelpers({
13278
13299
  helperScene: this._sceneHelpers,
13279
13300
  meshScene: this.meshScene,
13280
13301
  pipeline: this.pipeline,
@@ -13290,7 +13311,7 @@ var Lc = new Float32Array(3), Rc = {
13290
13311
  _forwardEvents(e, t) {
13291
13312
  if (e) for (let n of t) e.addEventListener(n, (e) => this.dispatchEvent(e));
13292
13313
  }
13293
- }, Xc = class {
13314
+ }, Jc = class {
13294
13315
  constructor(e) {
13295
13316
  this._app = e, this._cancelled = !1, this._rendering = !1;
13296
13317
  }
@@ -13390,6 +13411,6 @@ var Lc = new Float32Array(3), Rc = {
13390
13411
  }
13391
13412
  };
13392
13413
  //#endregion
13393
- export { Ln as AF_DEFAULTS, Mn as ASVGF_QUALITY_PRESETS, In as AUTO_FOCUS_MODES, qc as AnimationManager, Rn as BVH_LEAF_MARKERS, Fn as CAMERA_PRESETS, Nn as CAMERA_RANGES, yc as CameraManager, Bn as DEFAULT_TEXTURE_MATRIX, Uc as DenoisingManager, Z as ENGINE_DEFAULTS, gn as EngineEvents, Vn as FINAL_RENDER_CONFIG, pc as InteractionManager, bc as LightManager, Un as MEMORY_CONSTANTS, Kc as OverlayManager, Hn as PREVIEW_RENDER_CONFIG, Yc as PathTracerApp, lc as PipelineContext, dc as RenderPipeline, vc as RenderSettings, pn as RenderStage, Pn as SKY_PRESETS, fn as StageExecutionMode, zn as TEXTURE_CONSTANTS, Q as TRIANGLE_DATA_LAYOUT, Jc as TransformManager, Xc as VideoRenderManager };
13414
+ export { Ln as AF_DEFAULTS, Mn as ASVGF_QUALITY_PRESETS, In as AUTO_FOCUS_MODES, Gc as AnimationManager, Rn as BVH_LEAF_MARKERS, Fn as CAMERA_PRESETS, Nn as CAMERA_RANGES, _c as CameraManager, Bn as DEFAULT_TEXTURE_MATRIX, Vc as DenoisingManager, Z as ENGINE_DEFAULTS, gn as EngineEvents, Vn as FINAL_RENDER_CONFIG, dc as InteractionManager, vc as LightManager, Un as MEMORY_CONSTANTS, Wc as OverlayManager, Hn as PREVIEW_RENDER_CONFIG, qc as PathTracerApp, sc as PipelineContext, lc as RenderPipeline, gc as RenderSettings, pn as RenderStage, Pn as SKY_PRESETS, fn as StageExecutionMode, zn as TEXTURE_CONSTANTS, Q as TRIANGLE_DATA_LAYOUT, Kc as TransformManager, Jc as VideoRenderManager };
13394
13415
 
13395
13416
  //# sourceMappingURL=rayzee.es.js.map