rayzee 7.11.0 → 7.11.1

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
@@ -1,5 +1,5 @@
1
1
  import { MeshBasicNodeMaterial as e, QuadMesh as t, ReadbackBuffer as n, RectAreaLightNode as r, RenderTarget as i, SRGBColorSpace as a, StorageInstancedBufferAttribute as o, StorageTexture as s, TextureNode as c, WebGPUBackend as l, WebGPURenderer as u } from "three/webgpu";
2
- import { Break as d, Fn as f, If as p, Loop as m, Return as h, TWO_PI as g, abs as _, acos as v, array as y, atan as b, atomicAdd as x, atomicLoad as S, atomicStore as C, attributeArray as w, bool as T, clamp as E, cos as D, cross as O, cubeTexture as k, dot as A, exp as j, float as M, floatBitsToUint as ee, floor as te, fract as ne, instanceIndex as re, int as N, ivec2 as ie, length as ae, lessThan as oe, localId as se, log as ce, mat3 as le, max as P, min as ue, mix as F, mod as de, normalize as I, notEqual as fe, packSnorm2x16 as pe, packUnorm2x16 as me, pow as he, reflect as ge, refract as _e, sampler as ve, select as L, sign as ye, sin as be, smoothstep as xe, sqrt as Se, storage as Ce, struct as we, subgroupAdd as Te, subgroupBroadcast as Ee, subgroupExclusiveAdd as De, tan as Oe, texture as ke, textureLoad as R, textureSize as Ae, textureStore as je, uint as z, uintBitsToFloat as B, uniform as V, uniformArray as Me, unpackSnorm2x16 as Ne, unpackUnorm2x16 as Pe, uv as Fe, uvec2 as Ie, uvec4 as Le, vec2 as H, vec3 as U, vec4 as W, wgslFn as G, workgroupArray as Re, workgroupBarrier as ze, workgroupId as K } from "three/tsl";
2
+ import { Break as d, Fn as f, If as p, Loop as m, Return as h, TWO_PI as g, abs as _, acos as v, array as y, atan as b, atomicAdd as x, atomicLoad as S, atomicStore as C, attributeArray as w, bool as T, clamp as E, cos as D, cross as O, cubeTexture as k, dot as A, exp as j, float as M, floatBitsToUint as ee, floor as te, fract as ne, instanceIndex as re, int as N, ivec2 as P, length as ie, lessThan as ae, localId as oe, log as se, mat3 as ce, max as F, min as le, mix as I, mod as ue, normalize as L, notEqual as de, packSnorm2x16 as fe, packUnorm2x16 as pe, pow as me, reflect as he, refract as ge, sampler as _e, select as R, sign as ve, sin as ye, smoothstep as be, sqrt as xe, storage as Se, struct as Ce, subgroupAdd as we, subgroupBroadcast as Te, subgroupExclusiveAdd as Ee, tan as De, texture as Oe, textureLoad as ke, textureSize as Ae, textureStore as je, uint as z, uintBitsToFloat as B, uniform as V, uniformArray as Me, unpackSnorm2x16 as Ne, unpackUnorm2x16 as Pe, uv as Fe, uvec2 as Ie, uvec4 as Le, vec2 as H, vec3 as U, vec4 as W, wgslFn as G, workgroupArray as Re, workgroupBarrier as ze, workgroupId as K } from "three/tsl";
3
3
  import { ACESFilmicToneMapping as Be, AdditiveBlending as Ve, AgXToneMapping as He, AnimationMixer as Ue, BackSide as We, Box2 as Ge, Box3 as Ke, BufferGeometry as qe, ByteType as Je, CineonToneMapping as Ye, CircleGeometry as Xe, ClampToEdgeWrapping as Ze, Color as Qe, DataArrayTexture as $e, DataTexture as et, DataUtils as tt, DirectionalLight as nt, DirectionalLightHelper as rt, DoubleSide as it, EquirectangularReflectionMapping as at, EventDispatcher as ot, Float32BufferAttribute as q, FloatType as st, FrontSide as ct, Group as lt, HalfFloatType as ut, IntType as dt, LinearFilter as J, LinearSRGBColorSpace as ft, LinearToneMapping as pt, LoadingManager as mt, LoopOnce as ht, LoopRepeat as gt, MathUtils as _t, Matrix3 as vt, Matrix4 as yt, Mesh as bt, MeshBasicMaterial as xt, MeshPhysicalMaterial as St, MeshStandardMaterial as Ct, NearestFilter as wt, NeutralToneMapping as Tt, NoBlending as Et, NoToneMapping as Dt, Object3D as Ot, PerspectiveCamera as kt, PointLight as At, PointLightHelper as jt, Points as Mt, PointsMaterial as Nt, Quaternion as Pt, RGBAFormat as Ft, RGBFormat as It, RGFormat as Lt, Raycaster as Rt, RectAreaLight as zt, RedFormat as Bt, ReinhardToneMapping as Vt, RepeatWrapping as Ht, SRGBColorSpace as Ut, Scene as Wt, ShortType as Gt, SphereGeometry as Kt, SpotLight as qt, SpotLightHelper as Jt, Texture as Yt, TextureLoader as Xt, Timer as Zt, UnsignedByteType as Qt, UnsignedIntType as $t, UnsignedShortType as en, Vector2 as tn, Vector3 as nn } from "three";
4
4
  import { RectAreaLightTexturesLib as rn } from "three/addons/lights/RectAreaLightTexturesLib.js";
5
5
  import { RectAreaLightHelper as an } from "three/addons/helpers/RectAreaLightHelper.js";
@@ -53,7 +53,7 @@ function Sn(e, t) {
53
53
  } });
54
54
  }
55
55
  function Cn(e, t = null) {
56
- let n = we(e, t), r = new Set(Object.keys(e)), i = (...e) => Sn(n(...e), r);
56
+ let n = Ce(e, t), r = new Set(Object.keys(e)), i = (...e) => Sn(n(...e), r);
57
57
  return i.layout = n.layout, i.isStruct = !0, i.wrap = (e) => Sn(e, r), i;
58
58
  }
59
59
  var wn = Re("uint", 1).constructor, Tn = wn.prototype.generate;
@@ -138,21 +138,21 @@ var Nn = new et(new Float32Array([
138
138
  1
139
139
  ]), 1, 1);
140
140
  Nn.type = st, Nn.needsUpdate = !0;
141
- var Pn = ke(Mn);
141
+ var Pn = Oe(Mn);
142
142
  Pn.setUpdateMatrix(!1);
143
- var Fn = ke(Nn);
143
+ var Fn = Oe(Nn);
144
144
  Fn.setUpdateMatrix(!1);
145
145
  var In = M(.7548776662466927), Ln = M(.5698402909980532), Rn = /* @__PURE__ */ G("\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"), zn = /* @__PURE__ */ G("\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"), Bn = /* @__PURE__ */ G("\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"), Vn = (e) => (e.assign(e.mul(1664525).add(1013904223)), M(e.shiftRight(8)).mul(1 / 16777216)), Y = (e) => (e.assign(zn({ state: e })), M(e.shiftRight(8)).mul(1 / 16777216)), Hn = (e) => {
146
146
  let t = Vn(e).mul(g).toVar();
147
- return H(D(t), be(t)).mul(Se(Vn(e)));
147
+ return H(D(t), ye(t)).mul(xe(Vn(e)));
148
148
  }, Un = (e, t, n, r) => {
149
149
  let i = z(r).bitAnd(z(63)), a = M(n).add(M(t).mul(7)), o = N(ne(a.mul(In).add(.5)).mul(128)), s = N(ne(a.mul(Ln).add(.5)).mul(128)), c = N(e.x).add(o).bitAnd(N(127)), l = N(e.y).add(s).bitAnd(N(127)), u = N(i).bitAnd(N(7)), d = N(i).shiftRight(N(3));
150
- return ie(u.mul(N(128)).add(c), d.mul(N(128)).add(l));
150
+ return P(u.mul(N(128)).add(c), d.mul(N(128)).add(l));
151
151
  }, Wn = (e, t, n, r) => {
152
152
  let i = Un(e, t, n, r), a = Fn.load(i).xy, o = M(z(r).shiftRight(z(6))), s = ne(H(In, Ln).mul(o));
153
153
  return ne(a.add(s));
154
154
  }, Gn = /* @__PURE__ */ G("\n fn haltonScrambled( index: i32, base: i32, scramble: u32 ) -> f32 {\n\n var result = 0.0f;\n var f = 1.0f;\n var i = index + 1;\n var s = scramble;\n var iter = 0;\n\n while ( i > 0 && iter < 32 ) {\n\n iter += 1;\n f /= f32( base );\n\n // Additive permutation per digit: (digit + s_k) mod base\n // Guaranteed bijection within [0, base) for any s_k\n var digit = i % base;\n digit = ( digit + i32( s % u32( base ) ) ) % base;\n result += f * f32( digit );\n i /= base;\n\n // Evolve scramble per digit position for position-dependent permutations\n s = s * 747796405u + 2891336453u;\n\n }\n\n return result;\n\n }\n"), Kn = /* @__PURE__ */ G("\n fn owen_scrambled_sobol( index: u32, dimension: u32, seed: u32 ) -> f32 {\n\n var result = 0u;\n for ( var i = 0; i < 32; i++ ) {\n\n if ( ( index & ( 1u << u32( i ) ) ) != 0u ) {\n\n result ^= getSobolDirectionVector( i );\n\n }\n\n }\n\n // Mix dimension into seed for inter-dimensional decorrelation\n // (Van der Corput base is shared; Owen scrambling with distinct seeds\n // produces decorrelated sequences across dimensions)\n let dimSeed = seed ^ ( dimension * 0x9e3779b9u + 0x6a09e667u );\n result = owen_scramble( result, dimSeed );\n return f32( result ) / 4294967296.0f;\n\n }\n", [Rn, /* @__PURE__ */ G("\n fn owen_scramble( x: u32, seed: u32 ) -> u32 {\n\n var v = x;\n v ^= v * 0x3d20adeau;\n v += seed;\n v *= ( seed >> 16u ) | 1u;\n v ^= v >> 15u;\n v *= 0x5851f42du;\n v ^= v >> 12u;\n v *= 0x4c957f2du;\n v ^= v >> 18u;\n return v;\n\n }\n")]), qn = (e, t, n, r, i, a, o, s) => {
155
- let c = L(a.notEqual(N(-1)), a, jn), l = W(0).toVar();
155
+ let c = R(a.notEqual(N(-1)), a, jn), l = W(0).toVar();
156
156
  return p(c.equal(N(0)), () => {
157
157
  p(i.greaterThan(N(2)), () => {
158
158
  l.x.assign(Vn(r)), p(i.greaterThan(N(1)), () => {
@@ -236,14 +236,14 @@ var In = M(.7548776662466927), Ln = M(.5698402909980532), Rn = /* @__PURE__ */ G
236
236
  return p(n.lessThanEqual(N(1)), () => {
237
237
  o.assign(Jn(e, t, N(0), r, N(-1), i, a));
238
238
  }).Else(() => {
239
- let i = N(Se(M(n))), s = n.add(i).sub(1).div(i), c = de(t, i.mul(s)), l = de(c, i), u = c.div(i), d = H(M(l), M(u)).div(H(M(i), M(s))), f = H(0).toVar();
239
+ let i = N(xe(M(n))), s = n.add(i).sub(1).div(i), c = ue(t, i.mul(s)), l = ue(c, i), u = c.div(i), d = H(M(l), M(u)).div(H(M(i), M(s))), f = H(0).toVar();
240
240
  p(jn.greaterThanEqual(N(3)), () => {
241
241
  f.assign(Wn(e, t, N(0), a));
242
242
  }).Else(() => {
243
243
  let i = Vn(r).toVar(), o = Vn(r).toVar();
244
244
  f.assign(H(i, o)), p(n.greaterThan(N(4)), () => {
245
245
  let n = Wn(e, t, N(0), a).mul(.1);
246
- f.assign(F(f, n, .2));
246
+ f.assign(I(f, n, .2));
247
247
  });
248
248
  }), f.divAssign(H(M(i), M(s))), o.assign(d.add(f));
249
249
  }), o;
@@ -1136,7 +1136,7 @@ var Mr = class {
1136
1136
  setMaterialData(e) {
1137
1137
  if (!e) return;
1138
1138
  let t = e.length / 4;
1139
- this.materialStorageNode ? (this.materialStorageAttr = new o(e, 4), this.materialStorageNode.value = this.materialStorageAttr, this.materialStorageNode.bufferCount = t) : (this.materialStorageAttr = new o(e, 4), this.materialStorageNode = Ce(this.materialStorageAttr, "vec4", t).toReadOnly()), this.materialCount = Math.floor(t / Fr), console.log(`MaterialDataManager: ${this.materialCount} materials (storage buffer)`);
1139
+ this.materialStorageNode ? (this.materialStorageAttr = new o(e, 4), this.materialStorageNode.value = this.materialStorageAttr, this.materialStorageNode.bufferCount = t) : (this.materialStorageAttr = new o(e, 4), this.materialStorageNode = Se(this.materialStorageAttr, "vec4", t).toReadOnly()), this.materialCount = Math.floor(t / Fr), console.log(`MaterialDataManager: ${this.materialCount} materials (storage buffer)`);
1140
1140
  }
1141
1141
  getStorageAttr() {
1142
1142
  return this.materialStorageAttr;
@@ -2122,7 +2122,7 @@ Cn({
2122
2122
  });
2123
2123
  //#endregion
2124
2124
  //#region src/TSL/Common.js
2125
- var Ii = 3.14159, Li = 1 / Ii, Ri = 2 * Ii, zi = 1e-6, Bi = .05, Vi = .089, Hi = .001, Ui = U(.2126, .7152, .0722), Wi = Q.SLOTS_PER_MATERIAL, Gi = Q.SLOT, Ki = Gi, qi = le(3.2404542, -.969266, .0556434, -1.5371385, 1.8760108, -.2040259, -.4985314, .041556, 1.0572252);
2125
+ var Ii = 3.14159, Li = 1 / Ii, Ri = 2 * Ii, zi = 1e-6, Bi = .05, Vi = .089, Hi = .001, Ui = U(.2126, .7152, .0722), Wi = Q.SLOTS_PER_MATERIAL, Gi = Q.SLOT, Ki = Gi, qi = ce(3.2404542, -.969266, .0556434, -1.5371385, 1.8760108, -.2040259, -.4985314, .041556, 1.0572252);
2126
2126
  G("\n fn sRGBToLinear( srgbColor: vec3f ) -> vec3f {\n\n return pow( srgbColor, vec3f( 2.2 ) );\n\n }\n"), G("\n fn gammaCorrection( color: vec3f ) -> vec3f {\n\n return pow( color, vec3f( 1.0 / 2.2 ) );\n\n }\n");
2127
2127
  var Ji = G("\n fn square( x: f32 ) -> f32 {\n\n return x * x;\n\n }\n");
2128
2128
  G("\n fn squareVec3( x: vec3f ) -> vec3f {\n\n return x * x;\n\n }\n");
@@ -2148,11 +2148,11 @@ var $i = G("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
2148
2148
  f(([e, t, n]) => {
2149
2149
  let r = t.add(n).toVar(), i = A(r, r).toVar();
2150
2150
  return r.assign(i.greaterThan(zi).select(r.div(i.sqrt()), U(0, 0, 1))), Oi({
2151
- NoL: P(A(e, n), .001),
2152
- NoV: P(A(e, t), .001),
2153
- NoH: P(A(e, r), .001),
2154
- VoH: P(A(t, r), .001),
2155
- LoH: P(A(n, r), .001),
2151
+ NoL: F(A(e, n), .001),
2152
+ NoV: F(A(e, t), .001),
2153
+ NoH: F(A(e, r), .001),
2154
+ VoH: F(A(t, r), .001),
2155
+ LoH: F(A(n, r), .001),
2156
2156
  ToH: M(0),
2157
2157
  BoH: M(0),
2158
2158
  ToV: M(0),
@@ -2175,11 +2175,11 @@ var ea = f(([e, t]) => {
2175
2175
  let a = Di.wrap(ea(e, r.anisotropyRotation));
2176
2176
  o.assign(A(a.Ta, i)), s.assign(A(a.Ba, i)), c.assign(A(a.Ta, t)), l.assign(A(a.Ba, t)), u.assign(A(a.Ta, n)), d.assign(A(a.Ba, n));
2177
2177
  }), Oi({
2178
- NoL: P(A(e, n), .001),
2179
- NoV: P(A(e, t), .001),
2180
- NoH: P(A(e, i), .001),
2181
- VoH: P(A(t, i), .001),
2182
- LoH: P(A(n, i), .001),
2178
+ NoL: F(A(e, n), .001),
2179
+ NoV: F(A(e, t), .001),
2180
+ NoH: F(A(e, i), .001),
2181
+ VoH: F(A(t, i), .001),
2182
+ LoH: F(A(n, i), .001),
2183
2183
  ToH: o,
2184
2184
  BoH: s,
2185
2185
  ToV: c,
@@ -2324,7 +2324,7 @@ var ea = f(([e, t]) => {
2324
2324
  })
2325
2325
  });
2326
2326
  }), la = f(() => {
2327
- let e = le(1, 0, 0, 0, 1, 0, 0, 0, 1);
2327
+ let e = ce(1, 0, 0, 0, 1, 0, 0, 0, 1);
2328
2328
  return yi({
2329
2329
  color: W(1, 1, 1, 1),
2330
2330
  emissive: U(0),
@@ -2411,7 +2411,7 @@ var ea = f(([e, t]) => {
2411
2411
  return t.mul(t).mul(e);
2412
2412
  };
2413
2413
  f(([e, t, n]) => {
2414
- let r = P(U(M(1).sub(n)), e);
2414
+ let r = F(U(M(1).sub(n)), e);
2415
2415
  return e.add(r.sub(e).mul(fa(M(1).sub(t))));
2416
2416
  });
2417
2417
  var pa = f(([e, t]) => {
@@ -2421,79 +2421,79 @@ var pa = f(([e, t]) => {
2421
2421
  let n = E(e, 0, 1);
2422
2422
  return t.add(U(1).sub(t).mul(fa(M(1).sub(n))));
2423
2423
  }), ha = f(([e]) => {
2424
- let t = Se(e);
2425
- return U(1).add(t).div(P(U(1).sub(t), U(da)));
2424
+ let t = xe(e);
2425
+ return U(1).add(t).div(F(U(1).sub(t), U(da)));
2426
2426
  }), ga = f(([e, t]) => {
2427
- let n = e.sub(U(t)), r = P(e.add(U(t)), U(da)), i = n.div(r);
2427
+ let n = e.sub(U(t)), r = F(e.add(U(t)), U(da)), i = n.div(r);
2428
2428
  return i.mul(i);
2429
2429
  }), _a = f(([e, t]) => {
2430
- let n = e.sub(t), r = P(e.add(t), da), i = n.div(r);
2430
+ let n = e.sub(t), r = F(e.add(t), da), i = n.div(r);
2431
2431
  return i.mul(i);
2432
2432
  }), va = (e) => U(_a(e, M(1))), ya = f(([e, t]) => {
2433
2433
  let n = t.mul(t), r = n.mul(n), i = e.mul(e).mul(r.sub(1)).add(1);
2434
- return r.div(P(M(Ii).mul(i).mul(i), zi));
2434
+ return r.div(F(M(Ii).mul(i).mul(i), zi));
2435
2435
  }), ba = f(([e, t]) => {
2436
- let n = P(t, Bi), r = n.mul(n), i = M(1).div(r), a = e.mul(e).mul(i.mul(i).sub(1)).add(1);
2437
- return ue(i.mul(i).div(P(M(Ii).mul(a).mul(a), zi)), 100);
2436
+ let n = F(t, Bi), r = n.mul(n), i = M(1).div(r), a = e.mul(e).mul(i.mul(i).sub(1)).add(1);
2437
+ return le(i.mul(i).div(F(M(Ii).mul(a).mul(a), zi)), 100);
2438
2438
  }), xa = f(([e, t]) => {
2439
2439
  let n = t.add(1), r = n.mul(n).div(8);
2440
- return e.div(P(e.mul(M(1).sub(r)).add(r), zi));
2440
+ return e.div(F(e.mul(M(1).sub(r)).add(r), zi));
2441
2441
  }), Sa = f(([e, t, n]) => {
2442
2442
  let r = xa(e, n);
2443
2443
  return xa(t, n).mul(r);
2444
2444
  }), Ca = f(([e, t, n]) => {
2445
- let r = M(1).sub(n), i = n.mul(-.0275).add(.0425), a = n.mul(-.572).add(1.04), o = n.mul(.022).sub(.04), s = ue(r.mul(r), j(M(-6.4308).mul(t))).mul(r).add(i), c = M(-1.04).mul(s).add(a), l = M(1.04).mul(s).add(o), u = P(c.add(l), .1), d = U(1).add(e.mul(M(1).div(u).sub(1)));
2445
+ let r = M(1).sub(n), i = n.mul(-.0275).add(.0425), a = n.mul(-.572).add(1.04), o = n.mul(.022).sub(.04), s = le(r.mul(r), j(M(-6.4308).mul(t))).mul(r).add(i), c = M(-1.04).mul(s).add(a), l = M(1.04).mul(s).add(o), u = F(c.add(l), .1), d = U(1).add(e.mul(M(1).div(u).sub(1)));
2446
2446
  return ki({
2447
2447
  compensation: d,
2448
- E_total: E(P(e.mul(c).add(U(l)), U(0)).mul(d), U(0), U(1))
2448
+ E_total: E(F(e.mul(c).add(U(l)), U(0)).mul(d), U(0), U(1))
2449
2449
  });
2450
2450
  });
2451
- f(([e, t, n]) => ya(e, n).mul(e).div(P(M(4).mul(t), zi)));
2451
+ f(([e, t, n]) => ya(e, n).mul(e).div(F(M(4).mul(t), zi)));
2452
2452
  var wa = f(([e, t, n]) => {
2453
2453
  let r = ya(e, n), i = xa(t, n);
2454
- return r.mul(i).div(P(t.mul(4), zi));
2454
+ return r.mul(i).div(F(t.mul(4), zi));
2455
2455
  }), Ta = f(([e, t]) => {
2456
- let n = P(e.mul(e), 1e-4).toVar();
2457
- return H(P(F(n, M(1), t.mul(t)), 1e-4), n);
2456
+ let n = F(e.mul(e), 1e-4).toVar();
2457
+ return H(F(I(n, M(1), t.mul(t)), 1e-4), n);
2458
2458
  }), Ea = f(([e, t, n, r, i]) => {
2459
- let a = e.mul(t), o = U(t.mul(r), e.mul(i), a.mul(n)), s = P(A(o, o), zi), c = a.div(s);
2459
+ let a = e.mul(t), o = U(t.mul(r), e.mul(i), a.mul(n)), s = F(A(o, o), zi), c = a.div(s);
2460
2460
  return a.mul(c.mul(c)).div(Ii);
2461
2461
  }), Da = f(([e, t, n, r, i, a, o, s]) => {
2462
2462
  let c = s.mul(U(e.mul(n), t.mul(r), o).length()), l = o.mul(U(e.mul(i), t.mul(a), s).length());
2463
- return M(.5).div(P(c.add(l), zi));
2463
+ return M(.5).div(F(c.add(l), zi));
2464
2464
  }), Oa = f(([e, t, n, r, i]) => {
2465
- let a = e.mul(n), o = t.mul(r), s = a.mul(a).add(o.mul(o)), c = P(i.mul(i), zi), l = Se(M(1).add(s.div(c))).sub(1).mul(.5);
2465
+ let a = e.mul(n), o = t.mul(r), s = a.mul(a).add(o.mul(o)), c = F(i.mul(i), zi), l = xe(M(1).add(s.div(c))).sub(1).mul(.5);
2466
2466
  return M(1).div(l.add(1));
2467
2467
  }), ka = f(([e, t, n, r, i, a, o, s]) => {
2468
2468
  let c = Ea(e, t, n, r, i), l = Oa(e, t, o, s, a);
2469
- return c.mul(l).div(P(a.mul(4), zi));
2469
+ return c.mul(l).div(F(a.mul(4), zi));
2470
2470
  }), Aa = f(([e, t, n, r]) => {
2471
2471
  let i = Oi.wrap(ta(t, n, r, e)), a = M(0).toVar();
2472
2472
  return p(e.anisotropy.greaterThan(0), () => {
2473
2473
  let t = Ta(e.roughness, e.anisotropy);
2474
2474
  a.assign(ka(t.x, t.y, i.NoH, i.ToH, i.BoH, i.NoV, i.ToV, i.BoV));
2475
2475
  }).Else(() => {
2476
- a.assign(wa(i.NoH, i.NoV, P(e.roughness, .02)));
2476
+ a.assign(wa(i.NoH, i.NoV, F(e.roughness, .02)));
2477
2477
  }), a;
2478
2478
  }), ja = f(([e, t]) => {
2479
- let n = M(Ri).mul(e).mul(1e-9), r = U(54856e-17, 44201e-17, 52481e-17), i = U(1681e3, 1795300, 2208400), a = U(43278e5, 93046e5, 66121e5), o = r.mul(Se(M(Ri).mul(a))).mul(D(i.mul(n).add(t))).mul(j(Ji({ x: n }).negate().mul(a))).toVar();
2480
- return o.x.addAssign(M(9747e-17).mul(Se(M(Ri).mul(45282e5))).mul(D(M(2239900).mul(n).add(t.x))).mul(j(M(-45282e5).mul(Ji({ x: n }))))), qi.mul(o.div(1.0685e-7));
2479
+ let n = M(Ri).mul(e).mul(1e-9), r = U(54856e-17, 44201e-17, 52481e-17), i = U(1681e3, 1795300, 2208400), a = U(43278e5, 93046e5, 66121e5), o = r.mul(xe(M(Ri).mul(a))).mul(D(i.mul(n).add(t))).mul(j(Ji({ x: n }).negate().mul(a))).toVar();
2480
+ return o.x.addAssign(M(9747e-17).mul(xe(M(Ri).mul(45282e5))).mul(D(M(2239900).mul(n).add(t.x))).mul(j(M(-45282e5).mul(Ji({ x: n }))))), qi.mul(o.div(1.0685e-7));
2481
2481
  }), Ma = f(([e, t, n, r, i]) => {
2482
- let a = F(e, t, xe(0, .03, r)).toVar(), o = Ji({ x: e.div(a) }).mul(M(1).sub(Ji({ x: n }))), s = M(1).sub(o).toVar(), c = U(0).toVar();
2482
+ let a = I(e, t, be(0, .03, r)).toVar(), o = Ji({ x: e.div(a) }).mul(M(1).sub(Ji({ x: n }))), s = M(1).sub(o).toVar(), c = U(0).toVar();
2483
2483
  return p(s.lessThan(0), () => {
2484
2484
  c.assign(U(1));
2485
2485
  }).Else(() => {
2486
- let t = Se(s).toVar(), o = pa(n, _a(a, e)).toVar(), l = M(1).sub(o).toVar(), u = a.lessThan(e).select(M(Ii), M(0)), d = M(Ii).sub(u), f = ha(E(i, 0, .9999)).toVar(), p = ga(f, a).toVar(), m = U(pa(t, p.x), pa(t, p.y), pa(t, p.z)).toVar(), h = U(f.x.lessThan(a).select(M(Ii), M(0)), f.y.lessThan(a).select(M(Ii), M(0)), f.z.lessThan(a).select(M(Ii), M(0))), g = M(2).mul(a).mul(r).mul(t).toVar(), _ = U(d).add(h).toVar(), v = E(U(o).mul(m), 1e-5, .9999).toVar(), y = Se(v).toVar(), b = U(l.mul(l)).mul(m).div(U(1).sub(v)).toVar(), x = U(o).add(b).toVar().toVar(), S = b.sub(U(l)).toVar();
2487
- S.mulAssign(y), x.addAssign(S.mul(M(2).mul(ja(M(1).mul(g), M(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(M(2).mul(ja(M(2).mul(g), M(2).mul(_))))), c.assign(P(x, U(0)));
2486
+ let t = xe(s).toVar(), o = pa(n, _a(a, e)).toVar(), l = M(1).sub(o).toVar(), u = a.lessThan(e).select(M(Ii), M(0)), d = M(Ii).sub(u), f = ha(E(i, 0, .9999)).toVar(), p = ga(f, a).toVar(), m = U(pa(t, p.x), pa(t, p.y), pa(t, p.z)).toVar(), h = U(f.x.lessThan(a).select(M(Ii), M(0)), f.y.lessThan(a).select(M(Ii), M(0)), f.z.lessThan(a).select(M(Ii), M(0))), g = M(2).mul(a).mul(r).mul(t).toVar(), _ = U(d).add(h).toVar(), v = E(U(o).mul(m), 1e-5, .9999).toVar(), y = xe(v).toVar(), b = U(l.mul(l)).mul(m).div(U(1).sub(v)).toVar(), x = U(o).add(b).toVar().toVar(), S = b.sub(U(l)).toVar();
2487
+ S.mulAssign(y), x.addAssign(S.mul(M(2).mul(ja(M(1).mul(g), M(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(M(2).mul(ja(M(2).mul(g), M(2).mul(_))))), c.assign(F(x, U(0)));
2488
2488
  }), c;
2489
2489
  }), Na = f(([e, t, n]) => {
2490
2490
  let r = n.invRoughness, i = n.metalFactor, a = M(0).toVar();
2491
2491
  p(t.isMetallic, () => {
2492
- a.assign(P(r.mul(i), .7));
2492
+ a.assign(F(r.mul(i), .7));
2493
2493
  }).ElseIf(t.isSmooth, () => {
2494
2494
  a.assign(r.mul(i).mul(1.2));
2495
2495
  }).Else(() => {
2496
- a.assign(P(r.mul(i), e.metalness.mul(.1)));
2496
+ a.assign(F(r.mul(i), e.metalness.mul(.1)));
2497
2497
  });
2498
2498
  let o = a.mul(e.specularIntensity).toVar(), s = M(1).sub(a).mul(M(1).sub(e.metalness)).toVar(), c = e.sheen.mul(n.maxSheenColor).toVar(), l = M(0).toVar();
2499
2499
  p(t.hasClearcoat, () => {
@@ -2509,9 +2509,9 @@ var wa = f(([e, t, n]) => {
2509
2509
  let t = n.iorFactor.mul(r).mul(.7);
2510
2510
  u.assign(e.transmission.mul(t).mul(M(.5).add(M(.5).mul(e.ior.div(2)))).mul(M(1).add(e.dispersion.mul(.5))));
2511
2511
  });
2512
- let d = r.mul(t.isSmooth.select(M(.6), M(.5))), f = ue(e.iridescence.mul(d).mul(M(.5).add(M(.5).mul(e.iridescenceThicknessRange.y.sub(e.iridescenceThicknessRange.x).div(1e3)))).mul(M(.5).add(M(.5).mul(e.iridescenceIOR.div(2)))), s);
2512
+ let d = r.mul(t.isSmooth.select(M(.6), M(.5))), f = le(e.iridescence.mul(d).mul(M(.5).add(M(.5).mul(e.iridescenceThicknessRange.y.sub(e.iridescenceThicknessRange.x).div(1e3)))).mul(M(.5).add(M(.5).mul(e.iridescenceIOR.div(2)))), s);
2513
2513
  o.addAssign(f), s.subAssign(f);
2514
- let m = o.add(s).add(c).add(l).add(u), h = M(1).div(P(m, .001));
2514
+ let m = o.add(s).add(c).add(l).add(u), h = M(1).div(F(m, .001));
2515
2515
  return Ti({
2516
2516
  specular: o.mul(h),
2517
2517
  diffuse: s.mul(h),
@@ -2521,7 +2521,7 @@ var wa = f(([e, t, n]) => {
2521
2521
  iridescence: M(0)
2522
2522
  });
2523
2523
  }), Pa = f(([e, t, n]) => {
2524
- let r = M(1).sub(e.roughness), i = M(.5).add(M(.5).mul(e.metalness)), a = ue(M(2).div(e.ior), 1), o = P(e.sheenColor.r, P(e.sheenColor.g, e.sheenColor.b)), s = Ni({
2524
+ let r = M(1).sub(e.roughness), i = M(.5).add(M(.5).mul(e.metalness)), a = le(M(2).div(e.ior), 1), o = F(e.sheenColor.r, F(e.sheenColor.g, e.sheenColor.b)), s = Ni({
2525
2525
  F0: va(e.ior),
2526
2526
  NoV: M(.5),
2527
2527
  diffuseColor: e.color.rgb,
@@ -2538,11 +2538,11 @@ var wa = f(([e, t, n]) => {
2538
2538
  let e = M(1).div(M(t).sub(1));
2539
2539
  u.mulAssign(M(.8).add(e.mul(.2))), f.mulAssign(M(.7).add(e.mul(.3))), l.mulAssign(M(1).add(e.mul(.2)));
2540
2540
  }), p(n.isMetallic.and(t.lessThan(N(3))), () => {
2541
- u.assign(P(u, .6)), l.mulAssign(.4);
2541
+ u.assign(F(u, .6)), l.mulAssign(.4);
2542
2542
  }), p(n.isTransmissive, () => {
2543
- d.assign(P(d, .8)), l.mulAssign(.2), u.mulAssign(.6);
2543
+ d.assign(F(d, .8)), l.mulAssign(.2), u.mulAssign(.6);
2544
2544
  }), p(n.hasClearcoat, () => {
2545
- f.assign(P(f, .4));
2545
+ f.assign(F(f, .4));
2546
2546
  });
2547
2547
  let m = l.add(u).add(d).add(f).toVar();
2548
2548
  return p(m.greaterThan(.001), () => {
@@ -2558,9 +2558,9 @@ var wa = f(([e, t, n]) => {
2558
2558
  });
2559
2559
  });
2560
2560
  f(([e, t, n, r, i]) => {
2561
- let a = P(A(e, t), .001).toVar(), o = i.isRough.and(i.isMetallic.not()).and(n.transmission.equal(0)).and(n.clearcoat.equal(0)).toVar(), s = r.roughness.mul(r.roughness).toVar(), c = s.mul(s).toVar(), l = r.roughness.add(1), u = l.mul(l).div(8).toVar();
2561
+ let a = F(A(e, t), .001).toVar(), o = i.isRough.and(i.isMetallic.not()).and(n.transmission.equal(0)).and(n.clearcoat.equal(0)).toVar(), s = r.roughness.mul(r.roughness).toVar(), c = s.mul(s).toVar(), l = r.roughness.add(1), u = l.mul(l).div(8).toVar();
2562
2562
  return Ni({
2563
- F0: F(va(n.ior).mul(n.specularColor), r.albedo.rgb, r.metalness).mul(n.specularIntensity).toVar(),
2563
+ F0: I(va(n.ior).mul(n.specularColor), r.albedo.rgb, r.metalness).mul(n.specularIntensity).toVar(),
2564
2564
  NoV: a,
2565
2565
  diffuseColor: r.albedo.rgb.mul(M(1).sub(r.metalness)).toVar(),
2566
2566
  isPurelyDiffuse: o,
@@ -2569,8 +2569,8 @@ f(([e, t, n, r, i]) => {
2569
2569
  alpha2: c,
2570
2570
  invRoughness: M(1).sub(r.roughness).toVar(),
2571
2571
  metalFactor: M(.5).add(M(.5).mul(r.metalness)).toVar(),
2572
- iorFactor: ue(M(2).div(n.ior), 1).toVar(),
2573
- maxSheenColor: P(n.sheenColor.r, P(n.sheenColor.g, n.sheenColor.b)).toVar()
2572
+ iorFactor: le(M(2).div(n.ior), 1).toVar(),
2573
+ maxSheenColor: F(n.sheenColor.r, F(n.sheenColor.g, n.sheenColor.b)).toVar()
2574
2574
  });
2575
2575
  });
2576
2576
  //#endregion
@@ -2592,13 +2592,13 @@ var Fa = /* @__PURE__ */ G("\n fn ImportanceSampleGGX( N: vec3f, roughness: f32,
2592
2592
  p(_(t).lessThan(.001), () => {
2593
2593
  r.assign(M(1).sub(n.x.mul(2)));
2594
2594
  }).Else(() => {
2595
- let e = P(M(1).sub(t).add(t.mul(2).mul(n.x)), 1e-4), i = M(1).sub(t.mul(t)).div(e);
2595
+ let e = F(M(1).sub(t).add(t.mul(2).mul(n.x)), 1e-4), i = M(1).sub(t.mul(t)).div(e);
2596
2596
  r.assign(M(1).add(t.mul(t)).sub(i.mul(i)).div(t.mul(2)));
2597
2597
  }), r.assign(E(r, -1, 1));
2598
- let i = Se(P(M(0), M(1).sub(r.mul(r)))), a = M(Ri).mul(n.y);
2599
- return $i({ N: e }).mul(U(i.mul(D(a)), i.mul(be(a)), r));
2598
+ let i = xe(F(M(0), M(1).sub(r.mul(r)))), a = M(Ri).mul(n.y);
2599
+ return $i({ N: e }).mul(U(i.mul(D(a)), i.mul(ye(a)), r));
2600
2600
  }), Wa = f(([e, t, n, r, i]) => {
2601
- let a = P(n, U(1e-4)), o = a.div(a.x.add(a.y).add(a.z)).toVar(), s = Y(i).toVar(), c = M(0).toVar();
2601
+ let a = F(n, U(1e-4)), o = a.div(a.x.add(a.y).add(a.z)).toVar(), s = Y(i).toVar(), c = M(0).toVar();
2602
2602
  p(s.lessThan(o.x), () => {
2603
2603
  c.assign(e.x);
2604
2604
  }).ElseIf(s.lessThan(o.x.add(o.y)), () => {
@@ -2606,48 +2606,48 @@ var Fa = /* @__PURE__ */ G("\n fn ImportanceSampleGGX( N: vec3f, roughness: f32,
2606
2606
  }).Else(() => {
2607
2607
  c.assign(e.z);
2608
2608
  });
2609
- let l = Y(i).toVar(), u = ce(P(M(1).sub(l), 1e-6)).negate().div(P(c, 1e-6)).toVar(), d = u.lessThan(r).toVar(), f = u.toVar(), m = U(0).toVar();
2609
+ let l = Y(i).toVar(), u = se(F(M(1).sub(l), 1e-6)).negate().div(F(c, 1e-6)).toVar(), d = u.lessThan(r).toVar(), f = u.toVar(), m = U(0).toVar();
2610
2610
  return p(d, () => {
2611
2611
  let n = j(e.mul(u).negate()).toVar(), r = A(o, e.mul(n));
2612
- m.assign(t.mul(n).div(P(r, 1e-6)));
2612
+ m.assign(t.mul(n).div(F(r, 1e-6)));
2613
2613
  }).Else(() => {
2614
2614
  let t = j(e.mul(r).negate()).toVar(), n = A(o, t);
2615
- m.assign(t.div(P(n, 1e-6))), f.assign(r);
2615
+ m.assign(t.div(F(n, 1e-6))), f.assign(r);
2616
2616
  }), Ba({
2617
2617
  didScatter: d,
2618
2618
  t: f,
2619
2619
  weight: m
2620
2620
  });
2621
2621
  }), Ga = f(([e, t, n]) => {
2622
- let r = P(t.mul(n), U(1e-4)), i = U(1).div(r), a = e.mul(i);
2622
+ let r = F(t.mul(n), U(1e-4)), i = U(1).div(r), a = e.mul(i);
2623
2623
  return Va({
2624
2624
  sigmaT: i,
2625
2625
  sigmaS: a,
2626
- sigmaA: P(i.sub(a), U(0))
2626
+ sigmaA: F(i.sub(a), U(0))
2627
2627
  });
2628
2628
  }), Ka = f(([e, t, n, r, i, a, o]) => {
2629
2629
  let s = Ha({
2630
2630
  direction: U(0),
2631
2631
  throughput: U(1),
2632
2632
  didReflect: !1
2633
- }).toVar(), c = L(r, t, t.negate()).toVar(), l = L(r, a, n.ior).toVar(), u = L(r, n.ior, o).toVar(), d = _(A(c, e)), f = l.mul(l).div(P(u.mul(u), zi)).mul(M(1).sub(d.mul(d))).greaterThan(1).toVar(), m = _a(u, l), h = L(f, M(1), pa(d, m)).toVar(), g = E(h, .02, .98).toVar(), v = f.or(Y(i).lessThan(g)).toVar();
2633
+ }).toVar(), c = R(r, t, t.negate()).toVar(), l = R(r, a, n.ior).toVar(), u = R(r, n.ior, o).toVar(), d = _(A(c, e)), f = l.mul(l).div(F(u.mul(u), zi)).mul(M(1).sub(d.mul(d))).greaterThan(1).toVar(), m = _a(u, l), h = R(f, M(1), pa(d, m)).toVar(), g = E(h, .02, .98).toVar(), v = f.or(Y(i).lessThan(g)).toVar();
2634
2634
  return s.didReflect.assign(v), p(v, () => {
2635
- let t = H(Y(i), Y(i)), r = ge(e, Fa({
2635
+ let t = H(Y(i), Y(i)), r = he(e, Fa({
2636
2636
  N: c,
2637
2637
  roughness: n.roughness,
2638
2638
  Xi: t
2639
2639
  })).toVar();
2640
2640
  p(A(r, c).lessThanEqual(0), () => {
2641
- r.assign(ge(e, c));
2642
- }), s.direction.assign(r), s.throughput.assign(U(h.div(P(g, .02))));
2641
+ r.assign(he(e, c));
2642
+ }), s.direction.assign(r), s.throughput.assign(U(h.div(F(g, .02))));
2643
2643
  }).Else(() => {
2644
- let t = _e(e, c, l.div(P(u, zi))).toVar();
2644
+ let t = ge(e, c, l.div(F(u, zi))).toVar();
2645
2645
  p(A(t, t).lessThan(1e-4), () => {
2646
- s.direction.assign(ge(e, c)), s.didReflect.assign(!0);
2646
+ s.direction.assign(he(e, c)), s.didReflect.assign(!0);
2647
2647
  }).Else(() => {
2648
- s.direction.assign(I(t));
2649
- let e = l.mul(l).div(P(u.mul(u), zi));
2650
- s.throughput.assign(U(M(1).sub(h).div(P(M(1).sub(g), .02)).mul(e)));
2648
+ s.direction.assign(L(t));
2649
+ let e = l.mul(l).div(F(u.mul(u), zi));
2650
+ s.throughput.assign(U(M(1).sub(h).div(F(M(1).sub(g), .02)).mul(e)));
2651
2651
  });
2652
2652
  }), s;
2653
2653
  }), qa = Cn({
@@ -2708,18 +2708,18 @@ var Za = /* @__PURE__ */ f(([e, t, n]) => {
2708
2708
  let r = n.div(1e3);
2709
2709
  return e.add(t.mul(.03).div(r.mul(r)));
2710
2710
  }), Qa = /* @__PURE__ */ f(([e, t, n, r]) => {
2711
- let i = L(e.lessThan(t), n, r), a = e.sub(t).mul(i);
2711
+ let i = R(e.lessThan(t), n, r), a = e.sub(t).mul(i);
2712
2712
  return j(M(-.5).mul(a).mul(a));
2713
2713
  }), $a = /* @__PURE__ */ f(([e]) => U(Qa(e, 442, .0624, .0374).mul(.362).add(Qa(e, 599.8, .0264, .0323).mul(1.056)).sub(Qa(e, 501.1, .049, .0382).mul(.065)), Qa(e, 568.8, .0213, .0247).mul(.821).add(Qa(e, 530.9, .0613, .0322).mul(.286)), Qa(e, 437, .0845, .0278).mul(1.217).add(Qa(e, 459, .0385, .0725).mul(.681)))), eo = f(([e, t, n]) => {
2714
- let r = F(M(380), M(700), n).toVar(), i = Za(e, t, r), a = $a(r).toVar();
2714
+ let r = I(M(380), M(700), n).toVar(), i = Za(e, t, r), a = $a(r).toVar();
2715
2715
  return Ya({
2716
2716
  wavelength: r,
2717
2717
  ior: i,
2718
- colorWeight: P(U(a.x.mul(3.2406).sub(a.y.mul(1.5372)).sub(a.z.mul(.4986)), a.x.mul(-.9689).add(a.y.mul(1.8758)).add(a.z.mul(.0415)), a.x.mul(.0557).sub(a.y.mul(.204)).add(a.z.mul(1.057))), U(0)).mul(U(1.819, 2.773, 2.928))
2718
+ colorWeight: F(U(a.x.mul(3.2406).sub(a.y.mul(1.5372)).sub(a.z.mul(.4986)), a.x.mul(-.9689).add(a.y.mul(1.8758)).add(a.z.mul(.0415)), a.x.mul(.0557).sub(a.y.mul(.204)).add(a.z.mul(1.057))), U(0)).mul(U(1.819, 2.773, 2.928))
2719
2719
  });
2720
2720
  }), to = /* @__PURE__ */ G("\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");
2721
2721
  f(([e, t, n, r]) => {
2722
- let i = L(r, M(1), n.ior).toVar(), a = L(r, n.ior, M(1)).toVar(), o = _(A(t, e)), s = i.mul(i).div(a.mul(a)).mul(M(1).sub(o.mul(o))), c = M(0).toVar();
2722
+ let i = R(r, M(1), n.ior).toVar(), a = R(r, n.ior, M(1)).toVar(), o = _(A(t, e)), s = i.mul(i).div(a.mul(a)).mul(M(1).sub(o.mul(o))), c = M(0).toVar();
2723
2723
  return p(s.lessThanEqual(1), () => {
2724
2724
  let e = pa(o, _a(a, i)), t = M(1).sub(e).mul(n.transmission).toVar();
2725
2725
  p(r.not().and(n.attenuationDistance.greaterThan(0)), () => {
@@ -2743,40 +2743,40 @@ var no = f(([e, t, n, r, i, a, o, s, c]) => {
2743
2743
  }).toVar();
2744
2744
  return p(r.lessThanEqual(.05).and(a.greaterThan(0)), () => {
2745
2745
  l.halfVector.assign(t), l.didReflect.assign(!1);
2746
- let r = n, o = L(i, M(1).div(r), r).toVar();
2746
+ let r = n, o = R(i, M(1).div(r), r).toVar();
2747
2747
  p(c.greaterThan(0), () => {
2748
2748
  let e = Za(n, a, c);
2749
- o.assign(L(i, M(1).div(e), e));
2749
+ o.assign(R(i, M(1).div(e), e));
2750
2750
  }).Else(() => {
2751
2751
  let e = Ya.wrap(eo(n, a, Y(s)));
2752
- o.assign(L(i, M(1).div(e.ior), e.ior)), l.colorWeight.assign(e.colorWeight), l.pathWavelength.assign(e.wavelength);
2752
+ o.assign(R(i, M(1).div(e.ior), e.ior)), l.colorWeight.assign(e.colorWeight), l.pathWavelength.assign(e.wavelength);
2753
2753
  });
2754
- let u = _e(e.negate(), t, o).toVar();
2754
+ let u = ge(e.negate(), t, o).toVar();
2755
2755
  p(A(u, u).lessThan(.001), () => {
2756
- l.direction.assign(ge(e.negate(), t)), l.didReflect.assign(!0), l.pdf.assign(1);
2756
+ l.direction.assign(he(e.negate(), t)), l.didReflect.assign(!0), l.pdf.assign(1);
2757
2757
  }).Else(() => {
2758
2758
  l.direction.assign(u), l.pdf.assign(1);
2759
2759
  });
2760
2760
  }).Else(() => {
2761
- let u = P(Bi, r), d = Fa({
2761
+ let u = F(Bi, r), d = Fa({
2762
2762
  N: t,
2763
2763
  roughness: u,
2764
2764
  Xi: o
2765
2765
  }).toVar();
2766
2766
  l.halfVector.assign(d);
2767
- let f = L(i, M(1).div(n), n).toVar();
2767
+ let f = R(i, M(1).div(n), n).toVar();
2768
2768
  p(a.greaterThan(0), () => {
2769
2769
  p(c.greaterThan(0), () => {
2770
2770
  let e = Za(n, a, c);
2771
- f.assign(L(i, M(1).div(e), e));
2771
+ f.assign(R(i, M(1).div(e), e));
2772
2772
  }).Else(() => {
2773
2773
  let e = Ya.wrap(eo(n, a, Y(s)));
2774
- f.assign(L(i, M(1).div(e.ior), e.ior)), l.colorWeight.assign(e.colorWeight), l.pathWavelength.assign(e.wavelength);
2774
+ f.assign(R(i, M(1).div(e.ior), e.ior)), l.colorWeight.assign(e.colorWeight), l.pathWavelength.assign(e.wavelength);
2775
2775
  });
2776
2776
  });
2777
- let m = E(A(d, e), .001, 1).toVar(), h = E(A(t, d), .001, 1).toVar(), g = ya(h, u).toVar(), v = _e(e.negate(), d, f).toVar();
2777
+ let m = E(A(d, e), .001, 1).toVar(), h = E(A(t, d), .001, 1).toVar(), g = ya(h, u).toVar(), v = ge(e.negate(), d, f).toVar();
2778
2778
  p(A(v, v).lessThan(.001), () => {
2779
- l.direction.assign(ge(e.negate(), d)), l.didReflect.assign(!0), l.pdf.assign(g.mul(h).div(P(M(4).mul(m), Hi)));
2779
+ l.direction.assign(he(e.negate(), d)), l.didReflect.assign(!0), l.pdf.assign(g.mul(h).div(F(M(4).mul(m), Hi)));
2780
2780
  }).Else(() => {
2781
2781
  l.direction.assign(v), l.didReflect.assign(!1);
2782
2782
  let e = E(A(d, v), .001, 1), t = m.add(f.mul(e)), n = _(e).div(t.mul(t));
@@ -2789,12 +2789,12 @@ var no = f(([e, t, n, r, i, a, o, s, c]) => {
2789
2789
  throughput: U(1),
2790
2790
  didReflect: !1,
2791
2791
  pathWavelength: s
2792
- }).toVar(), l = L(r, t, t.negate()).toVar(), u = e.negate().toVar(), d = L(r, a, n.ior).toVar(), f = L(r, n.ior, o).toVar(), m = _(A(l, e)), h = d.mul(d).div(f.mul(f)).mul(M(1).sub(m.mul(m))).greaterThan(1).toVar(), g = _a(f, d), v = L(h, M(1), pa(m, g)).toVar(), y = M(0).toVar();
2792
+ }).toVar(), l = R(r, t, t.negate()).toVar(), u = e.negate().toVar(), d = R(r, a, n.ior).toVar(), f = R(r, n.ior, o).toVar(), m = _(A(l, e)), h = d.mul(d).div(f.mul(f)).mul(M(1).sub(m.mul(m))).greaterThan(1).toVar(), g = _a(f, d), v = R(h, M(1), pa(m, g)).toVar(), y = M(0).toVar();
2793
2793
  p(h, () => {
2794
2794
  y.assign(1);
2795
2795
  }).Else(() => {
2796
2796
  let e = v, t = M(.95);
2797
- y.assign(F(e, t, n.metalness));
2797
+ y.assign(I(e, t, n.metalness));
2798
2798
  }), y.assign(E(y, .05, .95));
2799
2799
  let b = h.or(Y(i).lessThan(y)).toVar();
2800
2800
  c.didReflect.assign(b);
@@ -2804,20 +2804,20 @@ var no = f(([e, t, n, r, i, a, o, s, c]) => {
2804
2804
  let e = Xa.wrap(no(u, l, n.ior, n.roughness, r, M(0), x, i, M(0)));
2805
2805
  c.direction.assign(e.direction);
2806
2806
  }).Else(() => {
2807
- c.direction.assign(ge(e, l));
2808
- }), c.throughput.assign(n.color.xyz.mul(v).div(P(y, .05)));
2807
+ c.direction.assign(he(e, l));
2808
+ }), c.throughput.assign(n.color.xyz.mul(v).div(F(y, .05)));
2809
2809
  }).Else(() => {
2810
2810
  p(n.roughness.greaterThan(.05).or(n.dispersion.greaterThan(0)), () => {
2811
2811
  let e = Xa.wrap(no(u, l, n.ior, n.roughness, r, n.dispersion, x, i, s));
2812
2812
  c.pathWavelength.assign(e.pathWavelength), p(e.didReflect, () => {
2813
- c.direction.assign(e.direction), c.didReflect.assign(!0), c.throughput.assign(n.color.xyz.div(P(M(1).sub(y), .05)));
2813
+ c.direction.assign(e.direction), c.didReflect.assign(!0), c.throughput.assign(n.color.xyz.div(F(M(1).sub(y), .05)));
2814
2814
  }).Else(() => {
2815
2815
  c.direction.assign(e.direction), c.throughput.assign(e.colorWeight);
2816
2816
  });
2817
2817
  }).Else(() => {
2818
- c.direction.assign(_e(e, l, d.div(f))), c.throughput.assign(U(1));
2818
+ c.direction.assign(ge(e, l, d.div(f))), c.throughput.assign(U(1));
2819
2819
  }), p(c.didReflect.not(), () => {
2820
- c.throughput.mulAssign(n.color.xyz), c.throughput.mulAssign(d.mul(d).div(P(f.mul(f), zi))), c.throughput.mulAssign(M(1).sub(v).div(P(M(1).sub(y), .05)));
2820
+ c.throughput.mulAssign(n.color.xyz), c.throughput.mulAssign(d.mul(d).div(F(f.mul(f), zi))), c.throughput.mulAssign(M(1).sub(v).div(F(M(1).sub(y), .05)));
2821
2821
  });
2822
2822
  }), c;
2823
2823
  }), io = f(([e, t, n, r, i, a, o, s]) => {
@@ -2843,7 +2843,7 @@ var no = f(([e, t, n, r, i, a, o, s, c]) => {
2843
2843
  c.alpha.assign(t);
2844
2844
  });
2845
2845
  }), p(f.not().and(n.alphaMode.equal(N(1))), () => {
2846
- let t = L(n.alphaTest.greaterThan(0), n.alphaTest, M(.5));
2846
+ let t = R(n.alphaTest.greaterThan(0), n.alphaTest, M(.5));
2847
2847
  p(n.color.a.mul(n.opacity).lessThan(t), () => {
2848
2848
  c.continueRay.assign(!0), c.direction.assign(e.direction), c.throughput.assign(U(1)), c.alpha.assign(0), c.isAlphaSkip.assign(!0), f.assign(!0);
2849
2849
  }).Else(() => {
@@ -2872,7 +2872,7 @@ var lo = (e, t, n) => {
2872
2872
  return a;
2873
2873
  }, uo = (e, t, n) => {
2874
2874
  let r = W(0).toVar();
2875
- return lo(e, t, (e, t) => r.assign(ke(e, n).depth(t))), r;
2875
+ return lo(e, t, (e, t) => r.assign(Oe(e, n).depth(t))), r;
2876
2876
  }, fo = (e, t) => {
2877
2877
  let n = H(1).toVar();
2878
2878
  return lo(e, t, (e) => n.assign(H(1).div(H(Ae(e))))), n;
@@ -2893,7 +2893,7 @@ function ho(e) {
2893
2893
  let t = Cr.MATERIAL_BUCKET_COUNT, n = [];
2894
2894
  for (let r = 0; r < t; r++) {
2895
2895
  let t = e && e[r];
2896
- n.push(ke(t || mo()));
2896
+ n.push(Oe(t || mo()));
2897
2897
  }
2898
2898
  return n;
2899
2899
  }
@@ -2992,19 +2992,19 @@ var _o = /* @__PURE__ */ G("\n fn getTransformedUV( uv: vec2f, transform: mat3x3
2992
2992
  return p(t.normalMapIndex.greaterThanEqual(N(0)), () => {
2993
2993
  let i = uo(so, t.normalMapIndex, n.normalUV).xyz.mul(2).sub(1).toVar();
2994
2994
  i.x.mulAssign(t.normalScale.x), i.y.assign(i.y.negate().mul(t.normalScale.x));
2995
- let a = I(O(_(e.z).lessThan(.999).select(U(0, 0, 1), U(1, 0, 0)), e)), o = O(e, a);
2996
- r.assign(I(a.mul(i.x).add(o.mul(i.y)).add(e.mul(i.z))));
2995
+ let a = L(O(_(e.z).lessThan(.999).select(U(0, 0, 1), U(1, 0, 0)), e)), o = O(e, a);
2996
+ r.assign(L(a.mul(i.x).add(o.mul(i.y)).add(e.mul(i.z))));
2997
2997
  }), r;
2998
2998
  }), wo = f(([e, t, n]) => {
2999
2999
  let r = e.toVar();
3000
3000
  return p(t.bumpMapIndex.greaterThanEqual(N(0)).and(t.bumpScale.greaterThan(0)), () => {
3001
3001
  let i = U(0, 0, 1).toVar();
3002
3002
  lo(so, t.bumpMapIndex, (e, r) => {
3003
- let a = H(1).div(H(Ae(e))).toVar(), o = ke(e, n.bumpUV).depth(r).r, s = ke(e, H(n.bumpUV.x.add(a.x), n.bumpUV.y)).depth(r).r, c = ke(e, H(n.bumpUV.x, n.bumpUV.y.add(a.y))).depth(r).r, l = H(s.sub(o), c.sub(o)).mul(t.bumpScale);
3004
- i.assign(I(U(l.x.negate(), l.y.negate(), 1)));
3003
+ let a = H(1).div(H(Ae(e))).toVar(), o = Oe(e, n.bumpUV).depth(r).r, s = Oe(e, H(n.bumpUV.x.add(a.x), n.bumpUV.y)).depth(r).r, c = Oe(e, H(n.bumpUV.x, n.bumpUV.y.add(a.y))).depth(r).r, l = H(s.sub(o), c.sub(o)).mul(t.bumpScale);
3004
+ i.assign(L(U(l.x.negate(), l.y.negate(), 1)));
3005
3005
  });
3006
- let a = I(O(_(e.z).lessThan(.999).select(U(0, 0, 1), U(1, 0, 0)), e)), o = O(e, a), s = a.mul(i.x).add(o.mul(i.y)).add(e.mul(i.z));
3007
- r.assign(I(F(e, s, E(t.bumpScale, 0, 1))));
3006
+ let a = L(O(_(e.z).lessThan(.999).select(U(0, 0, 1), U(1, 0, 0)), e)), o = O(e, a), s = a.mul(i.x).add(o.mul(i.y)).add(e.mul(i.z));
3007
+ r.assign(L(I(e, s, E(t.bumpScale, 0, 1))));
3008
3008
  }), r;
3009
3009
  }), To = f(([e, t]) => {
3010
3010
  let n = H(e.anisotropy, e.anisotropyRotation).toVar(), r = uo(so, e.anisotropyMapIndex, t).toVar(), i = r.rg.mul(2).sub(1).toVar(), a = i.length().toVar();
@@ -3040,7 +3040,7 @@ var _o = /* @__PURE__ */ G("\n fn getTransformedUV( uv: vec2f, transform: mat3x3
3040
3040
  n.iridescence.assign(n.iridescence.mul(uo(so, e.iridescenceMapIndex, t).r));
3041
3041
  }), p(e.iridescenceThicknessMapIndex.greaterThanEqual(N(0)), () => {
3042
3042
  let r = uo(so, e.iridescenceThicknessMapIndex, t).g;
3043
- n.iridescenceThickness.assign(F(e.iridescenceThicknessRange.x, e.iridescenceThicknessRange.y, r));
3043
+ n.iridescenceThickness.assign(I(e.iridescenceThicknessRange.x, e.iridescenceThicknessRange.y, r));
3044
3044
  }), p(e.specularIntensityMapIndex.greaterThanEqual(N(0)), () => {
3045
3045
  n.specularIntensity.assign(n.specularIntensity.mul(uo(so, e.specularIntensityMapIndex, t).a));
3046
3046
  }), p(e.specularColorMapIndex.greaterThanEqual(N(0)), () => {
@@ -3112,7 +3112,7 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3112
3112
  });
3113
3113
  e.assign(uo(Ao, m.albedoMapIndex, l).a);
3114
3114
  }), p(m.alphaMode.equal(N(1)), () => {
3115
- let t = m.color.a.mul(e).mul(m.opacity), n = L(m.alphaTest.greaterThan(0), m.alphaTest, M(.5));
3115
+ let t = m.color.a.mul(e).mul(m.opacity), n = R(m.alphaTest.greaterThan(0), m.alphaTest, M(.5));
3116
3116
  p(t.lessThan(n), () => {
3117
3117
  h.assign(!0);
3118
3118
  });
@@ -3123,14 +3123,14 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3123
3123
  }), h.assign(!0);
3124
3124
  });
3125
3125
  }), p(h, () => {
3126
- let e = P(M(1e-5), ae(n.hitPoint).mul(1e-6));
3126
+ let e = F(M(1e-5), ie(n.hitPoint).mul(1e-6));
3127
3127
  c.assign(n.hitPoint.add(t.mul(e))), l.subAssign(n.dst.add(e));
3128
3128
  }).ElseIf(m.transmission.greaterThan(0), () => {
3129
- let e = N(8), r = $(a, n.triangleIndex, N(0), e).xyz, i = $(a, n.triangleIndex, N(1), e).xyz, o = $(a, n.triangleIndex, N(2), e).xyz, u = I(O(i.sub(r), o.sub(r)));
3129
+ let e = N(8), r = $(a, n.triangleIndex, N(0), e).xyz, i = $(a, n.triangleIndex, N(1), e).xyz, o = $(a, n.triangleIndex, N(2), e).xyz, u = L(O(i.sub(r), o.sub(r)));
3130
3130
  n.normal.assign(u);
3131
- let f = A(t, u).lessThan(0), h = L(f, u, u.negate());
3131
+ let f = A(t, u).lessThan(0), h = R(f, u, u.negate());
3132
3132
  p(f.not().and(m.attenuationDistance.greaterThan(0)), () => {
3133
- let e = ae(n.hitPoint.sub(c)), t = to(m.attenuationColor, m.attenuationDistance, e);
3133
+ let e = ie(n.hitPoint.sub(c)), t = to(m.attenuationColor, m.attenuationDistance, e);
3134
3134
  s.mulAssign(t.x.add(t.y).add(t.z).div(3));
3135
3135
  });
3136
3136
  let g = pa(_(A(t, h)), _a(m.ior, M(1))), v = M(1).sub(g).mul(m.transmission);
@@ -3146,14 +3146,14 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3146
3146
  });
3147
3147
  }), s;
3148
3148
  }), Fo = f(([e, t, n]) => {
3149
- let r = P(M(1e-4), ae(e).mul(1e-6)).toVar();
3149
+ let r = F(M(1e-4), ie(e).mul(1e-6)).toVar();
3150
3150
  return p(n.transmission.greaterThan(0), () => {
3151
3151
  r.mulAssign(2);
3152
3152
  }), p(n.roughness.lessThan(.1), () => {
3153
3153
  r.mulAssign(1.5);
3154
3154
  }), t.mul(r);
3155
3155
  }), Io = f(([e, t, n, r]) => {
3156
- let i = P(M(0), A(t, e.direction)), a = M(0).toVar();
3156
+ let i = F(M(0), A(t, e.direction)), a = M(0).toVar();
3157
3157
  return p(i.greaterThan(0), () => {
3158
3158
  let t = e.intensity.mul(A(e.color, Ui)), o = M(1).toVar();
3159
3159
  p(n.metalness.greaterThan(.7), () => {
@@ -3165,17 +3165,17 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3165
3165
  a.assign(t.mul(i).mul(o).mul(s));
3166
3166
  }), a;
3167
3167
  }), Lo = f(([e, t, n, r]) => {
3168
- let i = e.position.sub(t), a = ae(i), o = a.mul(a), s = i.div(a), c = P(A(n, s), 0), l = M(0).toVar();
3168
+ let i = e.position.sub(t), a = ie(i), o = a.mul(a), s = i.div(a), c = F(A(n, s), 0), l = M(0).toVar();
3169
3169
  return p(c.greaterThan(0), () => {
3170
- let t = P(A(s, e.normal).negate(), 0);
3170
+ let t = F(A(s, e.normal).negate(), 0);
3171
3171
  p(t.greaterThan(0), () => {
3172
- let n = e.area.div(P(o, .1)), i = e.intensity.mul(A(e.color, Ui)).mul(e.area), a = M(1).toVar();
3172
+ let n = e.area.div(F(o, .1)), i = e.intensity.mul(A(e.color, Ui)).mul(e.area), a = M(1).toVar();
3173
3173
  p(r.metalness.greaterThan(.7), () => {
3174
3174
  a.mulAssign(1.5), p(r.roughness.lessThan(.3), () => {
3175
3175
  a.mulAssign(M(1).add(M(1).sub(r.roughness).mul(.5)));
3176
3176
  });
3177
3177
  }), p(r.roughness.greaterThan(.6).and(r.metalness.lessThan(.3)), () => {
3178
- let t = ue(e.area.mul(2), M(2));
3178
+ let t = le(e.area.mul(2), M(2));
3179
3179
  a.mulAssign(t);
3180
3180
  }), p(r.transmission.greaterThan(.5), () => {
3181
3181
  a.mulAssign(M(1).add(r.transmission.mul(.3)));
@@ -3185,9 +3185,9 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3185
3185
  }), Ro = f(([e, t, n, r]) => {
3186
3186
  let i = e.position.sub(t), a = A(i, i), o = M(0).toVar();
3187
3187
  return p(a.greaterThanEqual(.001), () => {
3188
- let t = Se(a), s = i.div(t), c = P(M(0), A(n, s));
3188
+ let t = xe(a), s = i.div(t), c = F(M(0), A(n, s));
3189
3189
  p(c.greaterThan(0), () => {
3190
- let t = M(1).div(P(a, .1)), n = e.intensity.mul(A(e.color, Ui)), i = M(1).toVar();
3190
+ let t = M(1).div(F(a, .1)), n = e.intensity.mul(A(e.color, Ui)), i = M(1).toVar();
3191
3191
  p(r.metalness.greaterThan(.7), () => {
3192
3192
  i.mulAssign(1.5), p(r.roughness.lessThan(.3), () => {
3193
3193
  i.mulAssign(M(1).add(M(1).sub(r.roughness).mul(.4)));
@@ -3202,11 +3202,11 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3202
3202
  }), zo = f(([e, t, n, r]) => {
3203
3203
  let i = e.position.sub(t), a = A(i, i), o = M(0).toVar();
3204
3204
  return p(a.greaterThanEqual(.001), () => {
3205
- let t = i.div(Se(a)), s = P(M(0), A(n, t));
3205
+ let t = i.div(xe(a)), s = F(M(0), A(n, t));
3206
3206
  p(s.greaterThan(0), () => {
3207
3207
  let n = A(t.negate(), e.direction), i = D(e.angle);
3208
3208
  p(n.greaterThanEqual(i), () => {
3209
- let t = M(1).div(P(a, .01)), c = xe(i, i.add(.1), n), l = e.intensity.mul(A(e.color, Ui)), u = L(r.metalness.greaterThan(.7), M(1.5), L(r.roughness.greaterThan(.8), M(.8), M(1)));
3209
+ let t = M(1).div(F(a, .01)), c = be(i, i.add(.1), n), l = e.intensity.mul(A(e.color, Ui)), u = R(r.metalness.greaterThan(.7), M(1.5), R(r.roughness.greaterThan(.8), M(.8), M(1)));
3210
3210
  o.assign(l.mul(t).mul(c).mul(s).mul(u));
3211
3211
  });
3212
3212
  });
@@ -3265,7 +3265,7 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3265
3265
  }), Ko = f(([e, t]) => {
3266
3266
  let n = t.mul(12);
3267
3267
  return Bo({
3268
- direction: I(U(e.element(n), e.element(n.add(1)), e.element(n.add(2)))),
3268
+ direction: L(U(e.element(n), e.element(n.add(1)), e.element(n.add(2)))),
3269
3269
  color: U(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
3270
3270
  intensity: e.element(n.add(6)),
3271
3271
  angle: e.element(n.add(7)),
@@ -3274,7 +3274,7 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3274
3274
  goboScale: e.element(n.add(10))
3275
3275
  });
3276
3276
  }), qo = f(([e, t]) => {
3277
- let n = t.mul(16), r = U(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = U(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a = O(r, i), o = e.element(n.add(15)), s = ae(a).mul(4);
3277
+ let n = t.mul(16), r = U(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = U(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a = O(r, i), o = e.element(n.add(15)), s = ie(a).mul(4);
3278
3278
  return Vo({
3279
3279
  position: U(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
3280
3280
  u: r,
@@ -3284,8 +3284,8 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3284
3284
  normalize: e.element(n.add(13)),
3285
3285
  spread: e.element(n.add(14)),
3286
3286
  shape: o,
3287
- normal: I(a),
3288
- area: L(o.greaterThan(.5), s.mul(.7853981633974483), s)
3287
+ normal: L(a),
3288
+ area: R(o.greaterThan(.5), s.mul(.7853981633974483), s)
3289
3289
  });
3290
3290
  }), Jo = f(([e, t]) => {
3291
3291
  let n = t.mul(9);
@@ -3300,7 +3300,7 @@ var Po = f(([e, t, n, r, i, a, o]) => {
3300
3300
  let n = t.mul(20);
3301
3301
  return Uo({
3302
3302
  position: U(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
3303
- direction: I(U(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5)))),
3303
+ direction: L(U(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5)))),
3304
3304
  color: U(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))),
3305
3305
  intensity: e.element(n.add(9)),
3306
3306
  angle: e.element(n.add(10)),
@@ -3321,10 +3321,10 @@ var ts = /* @__PURE__ */ f(([e, t]) => {
3321
3321
  return p(e.goboIndex.greaterThanEqual(N(0)), () => {
3322
3322
  let r = e.direction.toVar(), i = t.negate().toVar(), a = A(i, r).toVar();
3323
3323
  p(a.greaterThan(0), () => {
3324
- let t = I(O(L(_(r.z).lessThan(.999), U(0, 0, 1), U(1, 0, 0)), r)).toVar(), o = O(r, t), s = M(1).div(a).toVar(), c = A(i, t).mul(s), l = A(i, o).mul(s), u = M(.5).div(P(Oe(e.angle), M(1e-4))).toVar(), d = E(c.mul(u).add(.5), M(0), M(1)), f = E(l.mul(u).add(.5), M(0), M(1));
3324
+ let t = L(O(R(_(r.z).lessThan(.999), U(0, 0, 1), U(1, 0, 0)), r)).toVar(), o = O(r, t), s = M(1).div(a).toVar(), c = A(i, t).mul(s), l = A(i, o).mul(s), u = M(.5).div(F(De(e.angle), M(1e-4))).toVar(), d = E(c.mul(u).add(.5), M(0), M(1)), f = E(l.mul(u).add(.5), M(0), M(1));
3325
3325
  if ($o) {
3326
- let t = ke($o, H(d, f)).depth(e.goboIndex), r = ue(t.r, t.a), i = L(e.goboIntensity.lessThan(0), M(1).sub(r), r), a = E(_(e.goboIntensity), M(0), M(1));
3327
- n.assign(F(M(1), i, a));
3326
+ let t = Oe($o, H(d, f)).depth(e.goboIndex), r = le(t.r, t.a), i = R(e.goboIntensity.lessThan(0), M(1).sub(r), r), a = E(_(e.goboIntensity), M(0), M(1));
3327
+ n.assign(I(M(1), i, a));
3328
3328
  }
3329
3329
  }).Else(() => {
3330
3330
  n.assign(0);
@@ -3333,10 +3333,10 @@ var ts = /* @__PURE__ */ f(([e, t]) => {
3333
3333
  }), ns = /* @__PURE__ */ f(([e, t]) => {
3334
3334
  let n = M(1).toVar();
3335
3335
  return p(e.goboIndex.greaterThanEqual(N(0)), () => {
3336
- let r = e.direction.toVar(), i = I(O(L(_(r.z).lessThan(.999), U(0, 0, 1), U(1, 0, 0)), r)).toVar(), a = O(r, i), o = M(1).div(P(e.goboScale, M(1e-4))).toVar(), s = A(t, i).mul(o).add(.5).toVar(), c = A(t, a).mul(o).add(.5).toVar(), l = s.sub(s.floor()), u = c.sub(c.floor());
3336
+ let r = e.direction.toVar(), i = L(O(R(_(r.z).lessThan(.999), U(0, 0, 1), U(1, 0, 0)), r)).toVar(), a = O(r, i), o = M(1).div(F(e.goboScale, M(1e-4))).toVar(), s = A(t, i).mul(o).add(.5).toVar(), c = A(t, a).mul(o).add(.5).toVar(), l = s.sub(s.floor()), u = c.sub(c.floor());
3337
3337
  if ($o) {
3338
- let t = ke($o, H(l, u)).depth(e.goboIndex), r = ue(t.r, t.a), i = L(e.goboIntensity.lessThan(0), M(1).sub(r), r), a = E(_(e.goboIntensity), M(0), M(1));
3339
- n.assign(F(M(1), i, a));
3338
+ let t = Oe($o, H(l, u)).depth(e.goboIndex), r = le(t.r, t.a), i = R(e.goboIntensity.lessThan(0), M(1).sub(r), r), a = E(_(e.goboIntensity), M(0), M(1));
3339
+ n.assign(I(M(1), i, a));
3340
3340
  }
3341
3341
  }), n;
3342
3342
  }), rs = null;
@@ -3346,10 +3346,10 @@ function is(e) {
3346
3346
  var as = /* @__PURE__ */ f(([e, t]) => {
3347
3347
  let n = M(1).toVar();
3348
3348
  return p(e.iesIndex.greaterThanEqual(N(0)), () => {
3349
- let r = e.direction.toVar(), i = t.negate().toVar(), a = E(v(E(A(i, r), M(-1), M(1))).div(M(Math.PI)), M(0), M(1)), o = I(O(L(_(r.z).lessThan(.999), U(0, 0, 1), U(1, 0, 0)), r)).toVar(), s = O(r, o), c = A(i, o), l = b(A(i, s), c).div(M(2 * Math.PI)).add(.5);
3349
+ let r = e.direction.toVar(), i = t.negate().toVar(), a = E(v(E(A(i, r), M(-1), M(1))).div(M(Math.PI)), M(0), M(1)), o = L(O(R(_(r.z).lessThan(.999), U(0, 0, 1), U(1, 0, 0)), r)).toVar(), s = O(r, o), c = A(i, o), l = b(A(i, s), c).div(M(2 * Math.PI)).add(.5);
3350
3350
  if (rs) {
3351
- let t = ke(rs, H(l, a)).depth(e.iesIndex).r, r = E(e.iesIntensity, M(0), M(1));
3352
- n.assign(F(M(1), t, r));
3351
+ let t = Oe(rs, H(l, a)).depth(e.iesIndex).r, r = E(e.iesIntensity, M(0), M(1));
3352
+ n.assign(I(M(1), t, r));
3353
3353
  }
3354
3354
  }), n;
3355
3355
  }), os = /* @__PURE__ */ G("\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"), ss = f(([e, t, n]) => {
@@ -3357,15 +3357,15 @@ var as = /* @__PURE__ */ f(([e, t]) => {
3357
3357
  return p(i.lessThan(-1e-4), () => {
3358
3358
  let o = M(1).div(i), s = A(e.position.sub(t), r).mul(o).toVar();
3359
3359
  p(s.greaterThan(.001), () => {
3360
- let r = t.add(n.mul(s)).sub(e.position), i = ae(e.u), o = ae(e.v), c = e.u.div(i), l = e.v.div(o), u = A(r, c).div(i), d = A(r, l).div(o);
3361
- p(L(e.shape.greaterThan(.5), u.mul(u).add(d.mul(d)).lessThanEqual(1), _(u).lessThanEqual(1).and(_(d).lessThanEqual(1))), () => {
3360
+ let r = t.add(n.mul(s)).sub(e.position), i = ie(e.u), o = ie(e.v), c = e.u.div(i), l = e.v.div(o), u = A(r, c).div(i), d = A(r, l).div(o);
3361
+ p(R(e.shape.greaterThan(.5), u.mul(u).add(d.mul(d)).lessThanEqual(1), _(u).lessThanEqual(1).and(_(d).lessThanEqual(1))), () => {
3362
3362
  a.assign(s);
3363
3363
  });
3364
3364
  });
3365
3365
  }), a;
3366
3366
  }), cs = /* @__PURE__ */ G("\n fn sphQuadSolidAngle( o: vec3f, s: vec3f, ex: vec3f, ey: vec3f ) -> f32 {\n let PI = 3.141592653589793f;\n let exl = length( ex );\n let eyl = length( ey );\n let x = ex / max( exl, 1e-12f );\n let y = ey / max( eyl, 1e-12f );\n var z = cross( x, y );\n let d = s - o;\n var z0 = dot( d, z );\n if ( z0 > 0.0f ) { z = -z; z0 = -z0; }\n let x0 = dot( d, x );\n let y0 = dot( d, y );\n let x1 = x0 + exl;\n let y1 = y0 + eyl;\n let v00 = vec3f( x0, y0, z0 );\n let v01 = vec3f( x0, y1, z0 );\n let v10 = vec3f( x1, y0, z0 );\n let v11 = vec3f( x1, y1, z0 );\n let n0 = normalize( cross( v00, v10 ) );\n let n1 = normalize( cross( v10, v11 ) );\n let n2 = normalize( cross( v11, v01 ) );\n let n3 = normalize( cross( v01, v00 ) );\n let g0 = acos( clamp( -dot( n0, n1 ), -1.0f, 1.0f ) );\n let g1 = acos( clamp( -dot( n1, n2 ), -1.0f, 1.0f ) );\n let g2 = acos( clamp( -dot( n2, n3 ), -1.0f, 1.0f ) );\n let g3 = acos( clamp( -dot( n3, n0 ), -1.0f, 1.0f ) );\n return g0 + g1 + g2 + g3 - 2.0f * PI;\n }\n"), ls = /* @__PURE__ */ G("\n fn sampleSphQuad( o: vec3f, s: vec3f, ex: vec3f, ey: vec3f, uv: vec2f ) -> vec4f {\n let PI = 3.141592653589793f;\n let exl = length( ex );\n let eyl = length( ey );\n let x = ex / max( exl, 1e-12f );\n let y = ey / max( eyl, 1e-12f );\n var z = cross( x, y );\n let d = s - o;\n var z0 = dot( d, z );\n if ( z0 > 0.0f ) { z = -z; z0 = -z0; }\n let z0sq = z0 * z0;\n let x0 = dot( d, x );\n let y0 = dot( d, y );\n let x1 = x0 + exl;\n let y1 = y0 + eyl;\n let y0sq = y0 * y0;\n let y1sq = y1 * y1;\n let v00 = vec3f( x0, y0, z0 );\n let v01 = vec3f( x0, y1, z0 );\n let v10 = vec3f( x1, y0, z0 );\n let v11 = vec3f( x1, y1, z0 );\n let n0 = normalize( cross( v00, v10 ) );\n let n1 = normalize( cross( v10, v11 ) );\n let n2 = normalize( cross( v11, v01 ) );\n let n3 = normalize( cross( v01, v00 ) );\n let g0 = acos( clamp( -dot( n0, n1 ), -1.0f, 1.0f ) );\n let g1 = acos( clamp( -dot( n1, n2 ), -1.0f, 1.0f ) );\n let g2 = acos( clamp( -dot( n2, n3 ), -1.0f, 1.0f ) );\n let g3 = acos( clamp( -dot( n3, n0 ), -1.0f, 1.0f ) );\n let b0 = n0.z;\n let b1 = n2.z;\n let b0sq = b0 * b0;\n let k = 2.0f * PI - g2 - g3;\n let S = g0 + g1 + g2 + g3 - 2.0f * PI;\n\n if ( S <= 1e-5f ) {\n return vec4f( 0.0f, 0.0f, 0.0f, -1.0f );\n }\n\n let au = uv.x * S + k;\n let sinAu = sin( au );\n let fu = ( cos( au ) * b0 - b1 ) / max( abs( sinAu ), 1e-7f ) * sign( sinAu );\n var cu = select( -1.0f, 1.0f, fu >= 0.0f ) / sqrt( fu * fu + b0sq );\n cu = clamp( cu, -1.0f, 1.0f );\n\n var xu = -( cu * z0 ) / max( sqrt( 1.0f - cu * cu ), 1e-7f );\n xu = clamp( xu, x0, x1 );\n\n let dd = sqrt( xu * xu + z0sq );\n let h0 = y0 / sqrt( dd * dd + y0sq );\n let h1 = y1 / sqrt( dd * dd + y1sq );\n let hv = h0 + uv.y * ( h1 - h0 );\n let hv2 = hv * hv;\n var yv = y1;\n if ( hv2 < 1.0f - 1e-6f ) {\n yv = ( hv * dd ) / sqrt( 1.0f - hv2 );\n }\n\n let p = o + xu * x + yv * y + z0 * z;\n return vec4f( p, 1.0f / S );\n }\n"), us = class {
3367
3367
  constructor() {
3368
- this.prevColorTexNode = null, this.prevAlbedoTexNode = null, this._sceneTextureNodes = null;
3368
+ this.prevColorTexNode = null, this.prevAlbedoTexNode = null, this.prevNormalDepthTexNode = null, this._sceneTextureNodes = null;
3369
3369
  }
3370
3370
  updateSceneTextures(e) {
3371
3371
  let t = this._sceneTextureNodes, n = e.environment;
@@ -3385,8 +3385,8 @@ var as = /* @__PURE__ */ f(([e, t]) => {
3385
3385
  createSceneTextureNodes(e, t) {
3386
3386
  let n = e.triangleStorageNode, r = e.bvhStorageNode, i = e.materialData.materialStorageNode, a = e.lightStorageNode;
3387
3387
  No(e.uniforms.get("enableAlphaShadows"));
3388
- let o = ke(e.environment.environmentTexture), s = t.getReadTextures();
3389
- this.prevColorTexNode = ke(s.color), this.prevAlbedoTexNode = ke(s.albedo);
3388
+ let o = Oe(e.environment.environmentTexture), s = t.getReadTextures();
3389
+ this.prevColorTexNode = Oe(s.color), this.prevAlbedoTexNode = Oe(s.albedo), this.prevNormalDepthTexNode = Oe(s.normalDepth);
3390
3390
  let c = () => {
3391
3391
  let e = new $e(new Uint8Array([
3392
3392
  255,
@@ -3394,10 +3394,10 @@ var as = /* @__PURE__ */ f(([e, t]) => {
3394
3394
  255,
3395
3395
  255
3396
3396
  ]), 1, 1, 1);
3397
- return e.minFilter = J, e.magFilter = J, e.generateMipmaps = !1, e.needsUpdate = !0, ke(e);
3398
- }, l = e.goboMaps ? ke(e.goboMaps) : c();
3397
+ return e.minFilter = J, e.magFilter = J, e.generateMipmaps = !1, e.needsUpdate = !0, Oe(e);
3398
+ }, l = e.goboMaps ? Oe(e.goboMaps) : c();
3399
3399
  es(l);
3400
- let u = e.iesProfiles ? ke(e.iesProfiles) : c();
3400
+ let u = e.iesProfiles ? Oe(e.iesProfiles) : c();
3401
3401
  is(u);
3402
3402
  let d = {
3403
3403
  triStorage: n,
@@ -3411,7 +3411,7 @@ var as = /* @__PURE__ */ f(([e, t]) => {
3411
3411
  return this._sceneTextureNodes = d, d;
3412
3412
  }
3413
3413
  dispose() {
3414
- this.prevColorTexNode = null, this.prevAlbedoTexNode = null, this._sceneTextureNodes = null;
3414
+ this.prevColorTexNode = null, this.prevAlbedoTexNode = null, this.prevNormalDepthTexNode = null, this._sceneTextureNodes = null;
3415
3415
  }
3416
3416
  }, ds = class {
3417
3417
  constructor(e, t) {
@@ -7173,7 +7173,7 @@ var cc = 4, lc = class extends Qn {
7173
7173
  }, this.environment = new _i(this.scene, this.uniforms), this.environment.callbacks.onReset = () => this.reset(), this.environment.callbacks.getSceneTextureNodes = () => this.shaderBuilder.getSceneTextureNodes(), this.shaderBuilder = new us(), this._initRenderingState(), this.setupBlueNoise(), this.tempVector2 = new tn(), this.lastCameraMatrix = new yt(), this.lastProjectionMatrix = new yt(), this.lastRenderMode = -1, this.renderModeChangeTimeout = null, this.renderModeChangeDelay = 50, this.pendingRenderMode = null, this.lastInteractionModeState = !1, this.cameraChanged = !1, this.updateCompletionThreshold();
7174
7174
  }
7175
7175
  _initDataTextures() {
7176
- 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.goboMaps = null, this.iesProfiles = null, this.stbnScalarTexture = null, this.stbnVec2Texture = null, this.lightStorageAttr = new o(new Float32Array(16), 4), this.lightStorageNode = Ce(this.lightStorageAttr, "vec4", 1).toReadOnly(), this._lbvhDataCache = null, this._emissiveDataCache = null, this._bitTrailMapCache = null, this._instanceTable = null, this.spheres = [];
7176
+ 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.goboMaps = null, this.iesProfiles = null, this.stbnScalarTexture = null, this.stbnVec2Texture = null, this.lightStorageAttr = new o(new Float32Array(16), 4), this.lightStorageNode = Se(this.lightStorageAttr, "vec4", 1).toReadOnly(), this._lbvhDataCache = null, this._emissiveDataCache = null, this._bitTrailMapCache = null, this._instanceTable = null, this.spheres = [];
7177
7177
  }
7178
7178
  _defineUniformGetters() {
7179
7179
  let e = this.uniforms;
@@ -7324,12 +7324,12 @@ var cc = 4, lc = class extends Qn {
7324
7324
  setTriangleData(e, t) {
7325
7325
  if (!e) return;
7326
7326
  let n = e.length / 4;
7327
- this.triangleStorageNode ? (this.triangleStorageAttr = new o(e, 4), this.triangleStorageNode.value = this.triangleStorageAttr, this.triangleStorageNode.bufferCount = n) : (this.triangleStorageAttr = new o(e, 4), this.triangleStorageNode = Ce(this.triangleStorageAttr, "vec4", n).toReadOnly()), this.triangleCount = t, console.log(`PathTracer: ${this.triangleCount} triangles (storage buffer)`);
7327
+ this.triangleStorageNode ? (this.triangleStorageAttr = new o(e, 4), this.triangleStorageNode.value = this.triangleStorageAttr, this.triangleStorageNode.bufferCount = n) : (this.triangleStorageAttr = new o(e, 4), this.triangleStorageNode = Se(this.triangleStorageAttr, "vec4", n).toReadOnly()), this.triangleCount = t, console.log(`PathTracer: ${this.triangleCount} triangles (storage buffer)`);
7328
7328
  }
7329
7329
  setBVHData(e) {
7330
7330
  if (!e) return;
7331
7331
  let t = e.length / 4;
7332
- this.bvhStorageNode ? (this.bvhStorageAttr = new o(e, 4), this.bvhStorageNode.value = this.bvhStorageAttr, this.bvhStorageNode.bufferCount = t) : (this.bvhStorageAttr = new o(e, 4), this.bvhStorageNode = Ce(this.bvhStorageAttr, "vec4", t).toReadOnly()), this.bvhNodeCount = Math.floor(t / cc), console.log(`PathTracer: ${this.bvhNodeCount} BVH nodes (storage buffer)`);
7332
+ this.bvhStorageNode ? (this.bvhStorageAttr = new o(e, 4), this.bvhStorageNode.value = this.bvhStorageAttr, this.bvhStorageNode.bufferCount = t) : (this.bvhStorageAttr = new o(e, 4), this.bvhStorageNode = Se(this.bvhStorageAttr, "vec4", t).toReadOnly()), this.bvhNodeCount = Math.floor(t / cc), console.log(`PathTracer: ${this.bvhNodeCount} BVH nodes (storage buffer)`);
7333
7333
  }
7334
7334
  setInstanceTable(e) {
7335
7335
  this._instanceTable = e;
@@ -7522,18 +7522,18 @@ var hc = class {
7522
7522
  this.capacity = t, fc = t;
7523
7523
  let n = t * 7, r = new o(new Float32Array(n * 4), 4);
7524
7524
  this._attrs.ray = r, this.rayBuffer = {
7525
- rw: Ce(r, "vec4"),
7526
- ro: Ce(r, "vec4").toReadOnly()
7525
+ rw: Se(r, "vec4"),
7526
+ ro: Se(r, "vec4").toReadOnly()
7527
7527
  };
7528
7528
  let i = new o(new Uint32Array(t), 1);
7529
7529
  this._attrs.rng = i, this.rngBuffer = {
7530
- rw: Ce(i, "uint"),
7531
- ro: Ce(i, "uint").toReadOnly()
7530
+ rw: Se(i, "uint"),
7531
+ ro: Se(i, "uint").toReadOnly()
7532
7532
  };
7533
7533
  let a = t * 2, s = new o(new Float32Array(a * 4), 4);
7534
7534
  this._attrs.hit = s, this.hitBuffer = {
7535
- rw: Ce(s, "vec4"),
7536
- ro: Ce(s, "vec4").toReadOnly()
7535
+ rw: Se(s, "vec4"),
7536
+ ro: Se(s, "vec4").toReadOnly()
7537
7537
  };
7538
7538
  let c = (n * 16 + t * 4 + a * 16) / (1024 * 1024);
7539
7539
  console.log(`PackedRayBuffer: capacity=${t}, total=${c.toFixed(1)} MB (ray=${(n * 16 / 1048576).toFixed(0)}MB hit=${(a * 16 / 1048576).toFixed(0)}MB) [SoA ray/hit]`);
@@ -7544,7 +7544,7 @@ var hc = class {
7544
7544
  dispose() {
7545
7545
  mc(this._renderer, this._attrs.ray), mc(this._renderer, this._attrs.rng), mc(this._renderer, this._attrs.hit), this._attrs = {}, this.rayBuffer = null, this.rngBuffer = null, this.hitBuffer = null, this.capacity = 0;
7546
7546
  }
7547
- }, gc = (e, t) => e.element(pc(t, uc.ORIGIN_META)).xyz, _c = (e, t) => e.element(pc(t, uc.DIR_FLAGS)).xyz, vc = (e, t) => ee(e.element(pc(t, uc.DIR_FLAGS)).w), yc = (e, t) => e.element(pc(t, uc.THROUGHPUT_PDF)).xyz, bc = (e, t) => e.element(pc(t, uc.THROUGHPUT_PDF)).w, xc = (e, t) => e.element(pc(t, uc.RADIANCE_ALPHA)), Sc = (e) => z(e).mul(1), Cc = (e, t, n, r, i) => e.element(Sc(t)).assign(Le(pe(H(n.x, n.y)), pe(H(n.z, r)), me(H(i.x, i.y)), me(H(i.z, 0)))), wc = (e, t) => e.element(Sc(t)), Tc = (e) => {
7547
+ }, gc = (e, t) => e.element(pc(t, uc.ORIGIN_META)).xyz, _c = (e, t) => e.element(pc(t, uc.DIR_FLAGS)).xyz, vc = (e, t) => ee(e.element(pc(t, uc.DIR_FLAGS)).w), yc = (e, t) => e.element(pc(t, uc.THROUGHPUT_PDF)).xyz, bc = (e, t) => e.element(pc(t, uc.THROUGHPUT_PDF)).w, xc = (e, t) => e.element(pc(t, uc.RADIANCE_ALPHA)), Sc = (e) => z(e).mul(1), Cc = (e, t, n, r, i) => e.element(Sc(t)).assign(Le(fe(H(n.x, n.y)), fe(H(n.z, r)), pe(H(i.x, i.y)), pe(H(i.z, 0)))), wc = (e, t) => e.element(Sc(t)), Tc = (e) => {
7548
7548
  let t = Ne(e.x), n = Ne(e.y);
7549
7549
  return W(U(t.x, t.y, n.x).mul(.5).add(.5), n.y);
7550
7550
  }, Ec = (e) => U(Pe(e.z), Pe(e.w).x), Dc = (e, t, n, r, i) => e.element(pc(t, uc.ORIGIN_META)).assign(W(n, B(z(r).bitOr(z(i).shiftLeft(8))))), Oc = (e, t, n, r) => e.element(pc(t, uc.DIR_FLAGS)).assign(W(n, B(r))), kc = (e, t, n, r) => e.element(pc(t, uc.THROUGHPUT_PDF)).assign(W(n, r)), Ac = (e, t, n) => e.element(pc(t, uc.RADIANCE_ALPHA)).assign(n), jc = (e, t) => e.element(pc(t, dc.DIST_TRI_BARY)).x, Mc = (e, t) => ee(e.element(pc(t, dc.DIST_TRI_BARY)).y), Nc = (e, t) => e.element(pc(t, dc.DIST_TRI_BARY)).zw, Pc = (e, t) => e.element(pc(t, dc.NORMAL_MAT)).xyz, Fc = (e, t) => z(ee(e.element(pc(t, dc.NORMAL_MAT)).w).bitAnd(65535)), Ic = (e, t, n, r, i, a, o, s, c) => {
@@ -7584,17 +7584,17 @@ var hc = class {
7584
7584
  this._renderer = t, this.capacity = 0, this.counters = null, this.activeIndices = null, this.activeIndicesRO = null, this.sortedIndices = null, this.sortedIndicesRO = null, this.sortGlobalHistogram = null, this.pingPong = 0, e > 0 && this.allocate(e);
7585
7585
  }
7586
7586
  allocate(e) {
7587
- this.dispose(), this.capacity = e, this._countersAttr = new o(new Uint32Array(Gc.COUNT), 1), this.counters = Ce(this._countersAttr, "uint").toAtomic(), this.MAX_BOUNCE_SNAPSHOTS = 32, this._bounceCountsAttr = new o(new Uint32Array(this.MAX_BOUNCE_SNAPSHOTS), 1), this.bounceCounts = Ce(this._bounceCountsAttr, "uint");
7587
+ this.dispose(), this.capacity = e, this._countersAttr = new o(new Uint32Array(Gc.COUNT), 1), this.counters = Se(this._countersAttr, "uint").toAtomic(), this.MAX_BOUNCE_SNAPSHOTS = 32, this._bounceCountsAttr = new o(new Uint32Array(this.MAX_BOUNCE_SNAPSHOTS), 1), this.bounceCounts = Se(this._bounceCountsAttr, "uint");
7588
7588
  let t = new o(new Uint32Array(e), 1), n = new o(new Uint32Array(e), 1);
7589
7589
  this._attrA = t, this._attrB = n, this.activeIndices = {
7590
- a: Ce(t, "uint"),
7591
- b: Ce(n, "uint")
7590
+ a: Se(t, "uint"),
7591
+ b: Se(n, "uint")
7592
7592
  }, this.activeIndicesRO = {
7593
- a: Ce(t, "uint").toReadOnly(),
7594
- b: Ce(n, "uint").toReadOnly()
7593
+ a: Se(t, "uint").toReadOnly(),
7594
+ b: Se(n, "uint").toReadOnly()
7595
7595
  };
7596
7596
  let r = new o(new Uint32Array(e), 1);
7597
- this._sortAttr = r, this.sortedIndices = Ce(r, "uint"), this.sortedIndicesRO = Ce(r, "uint").toReadOnly(), this._sortGlobalHistAttr = new o(new Uint32Array(256), 1), this.sortGlobalHistogram = Ce(this._sortGlobalHistAttr, "uint").toAtomic(), this.pingPong = 0;
7597
+ this._sortAttr = r, this.sortedIndices = Se(r, "uint"), this.sortedIndicesRO = Se(r, "uint").toReadOnly(), this._sortGlobalHistAttr = new o(new Uint32Array(256), 1), this.sortGlobalHistogram = Se(this._sortGlobalHistAttr, "uint").toAtomic(), this.pingPong = 0;
7598
7598
  let i = Gc.COUNT * 4 + e * 4 * 3;
7599
7599
  console.log(`QueueManager: Allocated capacity=${e}, total=${(i / (1024 * 1024)).toFixed(1)} MB`);
7600
7600
  }
@@ -7880,7 +7880,7 @@ var $c = class {
7880
7880
  triTests: N(0)
7881
7881
  }).toVar(), o = N(-1).toVar(), s = M(0).toVar(), c = M(0).toVar(), l = sl(), u = N(1).toVar();
7882
7882
  l.element(N(0)).assign(N(0));
7883
- let f = F(U(1), ye(e.direction), fe(e.direction, U(0))), h = F(U(1).div(e.direction), U(ol).mul(f), oe(_(e.direction), U(1e-8))).toVar(), g = e.origin, v = e.direction, y = ll({ rayDir: v }).toVar(), b = N(0).toVar();
7883
+ let f = I(U(1), ve(e.direction), de(e.direction, U(0))), h = I(U(1).div(e.direction), U(ol).mul(f), ae(_(e.direction), U(1e-8))).toVar(), g = e.origin, v = e.direction, y = ll({ rayDir: v }).toVar(), b = N(0).toVar();
7884
7884
  return m(u.greaterThan(N(0)).and(b.lessThan(N(rl))), () => {
7885
7885
  b.addAssign(1), u.subAssign(1);
7886
7886
  let e = l.element(u).toVar(), r = $(t, e, N(0), N(il));
@@ -7902,7 +7902,7 @@ var $c = class {
7902
7902
  woopParams: y
7903
7903
  });
7904
7904
  p(f.w.greaterThan(.5), () => {
7905
- let e = f.x, t = f.y, l = f.z, u = $(n, r, N(3), N(al)).xyz, d = $(n, r, N(4), N(al)).xyz, m = $(n, r, N(5), N(al)), h = m.xyz, g = N(m.w).toVar(), _ = M(1).sub(t).sub(l), y = v.dot(I(u.mul(_).add(d.mul(t)).add(h.mul(l))));
7905
+ let e = f.x, t = f.y, l = f.z, u = $(n, r, N(3), N(al)).xyz, d = $(n, r, N(4), N(al)).xyz, m = $(n, r, N(5), N(al)), h = m.xyz, g = N(m.w).toVar(), _ = M(1).sub(t).sub(l), y = v.dot(L(u.mul(_).add(d.mul(t)).add(h.mul(l))));
7906
7906
  p(i.or(g.equal(N(2))).or(g.equal(N(0)).and(y.lessThan(-1e-4))).or(g.equal(N(1)).and(y.greaterThan(1e-4))), () => {
7907
7907
  a.didHit.assign(!0), a.dst.assign(e), o.assign(r), s.assign(t), c.assign(l);
7908
7908
  });
@@ -7927,19 +7927,19 @@ var $c = class {
7927
7927
  boxMin: i.xyz,
7928
7928
  boxMax: o.xyz
7929
7929
  }).toVar();
7930
- p(ue(d, f).lessThan(a.dst), () => {
7930
+ p(le(d, f).lessThan(a.dst), () => {
7931
7931
  let e = d.lessThan(f);
7932
- p(L(e, f, d).lessThan(a.dst).and(u.lessThan(N(nl))), () => {
7933
- l.element(u).assign(L(e, c, s)), u.addAssign(1);
7932
+ p(R(e, f, d).lessThan(a.dst).and(u.lessThan(N(nl))), () => {
7933
+ l.element(u).assign(R(e, c, s)), u.addAssign(1);
7934
7934
  }), p(u.lessThan(N(nl)), () => {
7935
- l.element(u).assign(L(e, s, c)), u.addAssign(1);
7935
+ l.element(u).assign(R(e, s, c)), u.addAssign(1);
7936
7936
  });
7937
7937
  });
7938
7938
  });
7939
7939
  }), p(a.didHit, () => {
7940
7940
  a.hitPoint.assign(e.origin.add(e.direction.mul(a.dst)));
7941
7941
  let t = M(1).sub(s).sub(c), r = $(n, o, N(3), N(al)).xyz, i = $(n, o, N(4), N(al)).xyz, l = $(n, o, N(5), N(al)).xyz;
7942
- a.normal.assign(I(r.mul(t).add(i.mul(s)).add(l.mul(c))));
7942
+ a.normal.assign(L(r.mul(t).add(i.mul(s)).add(l.mul(c))));
7943
7943
  let u = $(n, o, N(6), N(al)), d = $(n, o, N(7), N(al));
7944
7944
  a.uv.assign(u.xy.mul(t).add(u.zw.mul(s)).add(d.xy.mul(c))), a.materialIndex.assign(N(d.z)), a.meshIndex.assign(N(d.w)), a.triangleIndex.assign(o);
7945
7945
  }), a;
@@ -7956,7 +7956,7 @@ var $c = class {
7956
7956
  triTests: N(0)
7957
7957
  }).toVar(), a = sl(), o = N(1).toVar();
7958
7958
  a.element(N(0)).assign(N(0));
7959
- let s = F(U(1), ye(e.direction), fe(e.direction, U(0))), c = F(U(1).div(e.direction), U(ol).mul(s), oe(_(e.direction), U(1e-8))).toVar(), l = ll({ rayDir: e.direction }).toVar(), u = N(0).toVar();
7959
+ let s = I(U(1), ve(e.direction), de(e.direction, U(0))), c = I(U(1).div(e.direction), U(ol).mul(s), ae(_(e.direction), U(1e-8))).toVar(), l = ll({ rayDir: e.direction }).toVar(), u = N(0).toVar();
7960
7960
  return m(o.greaterThan(N(0)).and(i.didHit.not()).and(u.lessThan(N(rl))), () => {
7961
7961
  u.addAssign(1), o.subAssign(1);
7962
7962
  let r = a.element(o).toVar(), s = $(t, r, N(0), N(il));
@@ -7998,21 +7998,21 @@ var $c = class {
7998
7998
  boxMin: l.xyz,
7999
7999
  boxMax: u.xyz
8000
8000
  }).toVar();
8001
- p(ue(m, h).lessThan(i.dst), () => {
8001
+ p(le(m, h).lessThan(i.dst), () => {
8002
8002
  let e = m.lessThan(h);
8003
- p(L(e, h, m).lessThan(i.dst).and(o.lessThan(N(nl))), () => {
8004
- a.element(o).assign(L(e, f, d)), o.addAssign(1);
8003
+ p(R(e, h, m).lessThan(i.dst).and(o.lessThan(N(nl))), () => {
8004
+ a.element(o).assign(R(e, f, d)), o.addAssign(1);
8005
8005
  }), p(o.lessThan(N(nl)), () => {
8006
- a.element(o).assign(L(e, d, f)), o.addAssign(1);
8006
+ a.element(o).assign(R(e, d, f)), o.addAssign(1);
8007
8007
  });
8008
8008
  });
8009
8009
  });
8010
8010
  }), i;
8011
8011
  }), pl = f(([e, t, n, r, i, a, o, s, c, l, u]) => {
8012
- let d = U(e.xy, 1), f = r.mul(W(d, 1)), m = I(le(n[0].xyz, n[1].xyz, n[2].xyz).mul(f.xyz.div(f.w))).toVar(), h = U(n[3]).toVar(), g = h.toVar(), _ = m.toVar();
8012
+ let d = U(e.xy, 1), f = r.mul(W(d, 1)), m = L(ce(n[0].xyz, n[1].xyz, n[2].xyz).mul(f.xyz.div(f.w))).toVar(), h = U(n[3]).toVar(), g = h.toVar(), _ = m.toVar();
8013
8013
  return p(i.and(a.greaterThan(0)).and(o.lessThan(64)).and(s.greaterThan(.001)), () => {
8014
- let e = a.div(o).mul(.001).mul(c).mul(l), r = Hn(t), i = r.x.mul(u.max(.01)), d = r.y, f = I(U(n[0])), p = I(U(n[1])), v = f.mul(i).add(p.mul(d)).mul(e);
8015
- g.assign(h.add(v)), _.assign(I(h.add(m.mul(s)).sub(g)));
8014
+ let e = a.div(o).mul(.001).mul(c).mul(l), r = Hn(t), i = r.x.mul(u.max(.01)), d = r.y, f = L(U(n[0])), p = L(U(n[1])), v = f.mul(i).add(p.mul(d)).mul(e);
8015
+ g.assign(h.add(v)), _.assign(L(h.add(m.mul(s)).sub(g)));
8016
8016
  }), vi({
8017
8017
  origin: g,
8018
8018
  direction: _
@@ -8021,7 +8021,7 @@ var $c = class {
8021
8021
  function ml(e) {
8022
8022
  let { rayBufferRW: t, rngBufferRW: n, gBufferRW: r, resolution: i, frame: a, cameraWorldMatrix: o, cameraProjectionMatrixInverse: s, enableDOF: c, focalLength: l, aperture: u, focusDistance: d, sceneScale: m, apertureScale: h, anamorphicRatio: g, renderWidth: _, renderHeight: v, transmissiveBounces: y, transparentBackground: b, auxGBufferEnabled: x } = e, S = x.greaterThan(z(0));
8023
8023
  return f(() => {
8024
- let e = N(K.x).mul(16).add(N(se.x)), f = N(K.y).mul(16).add(N(se.y));
8024
+ let e = N(K.x).mul(16).add(N(oe.x)), f = N(K.y).mul(16).add(N(oe.y));
8025
8025
  p(e.lessThan(_).and(f.lessThan(v)), () => {
8026
8026
  let _ = H(M(e).add(.5), M(f).add(.5)), v = f.mul(N(i.x)).add(e), x = z(v), C = _.div(i).mul(2).sub(1).toVar();
8027
8027
  C.y.assign(C.y.negate());
@@ -8030,7 +8030,7 @@ function ml(e) {
8030
8030
  rayIndex: N(0),
8031
8031
  frame: a
8032
8032
  }).toVar() }).toVar(), T = Yn(_, N(1), N(1), w, i, a).toVar(), E = H(2).div(i), D = T.sub(.5).mul(E), O = C.add(D), k = vi.wrap(pl(O, w, o, s, c, l, u, d, m, h, g));
8033
- Dc(t, x, k.origin, N(0), N(0)), Oc(t, x, k.direction, z(Kc.ACTIVE)), kc(t, x, W(1, 1, 1, 0).xyz, M(0)), Ac(t, x, W(U(0), L(b, M(1), M(0)))), p(S, () => {
8033
+ Dc(t, x, k.origin, N(0), N(0)), Oc(t, x, k.direction, z(Kc.ACTIVE)), kc(t, x, W(1, 1, 1, 0).xyz, M(0)), Ac(t, x, W(U(0), R(b, M(1), M(0)))), p(S, () => {
8034
8034
  Cc(r, z(v), U(0, 0, 1), M(1), U(0));
8035
8035
  }), Rc(t, x, z(0), z(y), M(1), M(1), M(1)), n.element(x).assign(w);
8036
8036
  });
@@ -8062,30 +8062,30 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8062
8062
  let s = gl({
8063
8063
  direction: t,
8064
8064
  environmentMatrix: n
8065
- }).toVar(), c = ke(e, s, 0).rgb.toVar(), l = be(s.y.mul(Math.PI)).toVar(), u = A(c, Ui).mul(l), d = P(M(0), u.sub(i)).div(r), f = l.greaterThan(0).select(M(1).div(M(2 * Math.PI * Math.PI).mul(l)), M(0)), p = M(a.x).mul(M(a.y)).mul(d).mul(f);
8065
+ }).toVar(), c = Oe(e, s, 0).rgb.toVar(), l = ye(s.y.mul(Math.PI)).toVar(), u = A(c, Ui).mul(l), d = F(M(0), u.sub(i)).div(r), f = l.greaterThan(0).select(M(1).div(M(2 * Math.PI * Math.PI).mul(l)), M(0)), p = M(a.x).mul(M(a.y)).mul(d).mul(f);
8066
8066
  o.assign(W(c, p));
8067
8067
  }), o;
8068
8068
  }), yl = f(([e, t, n, r, i, a, o, s, c]) => {
8069
- let l = N(o.x).toVar(), u = o.y, d = E(s.x.mul(u.sub(1)), 0, u.sub(1)), f = N(te(d)), p = ue(f.add(1), N(u).sub(1)), m = ne(d), h = F(t.load(ie(l, f)).x, t.load(ie(l, p)).x, m).toVar(), g = o.x, _ = o.y, v = E(s.y.mul(g.sub(1)), 0, g.sub(1)), y = E(h.mul(_.sub(1)), 0, _.sub(1)), b = N(te(v)), x = N(te(y)), S = ue(b.add(1), N(g).sub(1)), C = ue(x.add(1), N(_).sub(1)), w = ne(v), T = ne(y), D = t.load(ie(b, x)).x, O = t.load(ie(S, x)).x, k = t.load(ie(b, C)).x, j = t.load(ie(S, C)).x, ee = H(F(F(D, O, w), F(k, j, w), T).toVar(), h).toVar(), re = _l({
8069
+ let l = N(o.x).toVar(), u = o.y, d = E(s.x.mul(u.sub(1)), 0, u.sub(1)), f = N(te(d)), p = le(f.add(1), N(u).sub(1)), m = ne(d), h = I(t.load(P(l, f)).x, t.load(P(l, p)).x, m).toVar(), g = o.x, _ = o.y, v = E(s.y.mul(g.sub(1)), 0, g.sub(1)), y = E(h.mul(_.sub(1)), 0, _.sub(1)), b = N(te(v)), x = N(te(y)), S = le(b.add(1), N(g).sub(1)), C = le(x.add(1), N(_).sub(1)), w = ne(v), T = ne(y), D = t.load(P(b, x)).x, O = t.load(P(S, x)).x, k = t.load(P(b, C)).x, j = t.load(P(S, C)).x, ee = H(I(I(D, O, w), I(k, j, w), T).toVar(), h).toVar(), re = _l({
8070
8070
  uv: ee,
8071
8071
  environmentMatrix: n
8072
- }).toVar(), ae = ke(e, ee, 0).rgb.mul(r).toVar();
8073
- c.assign(ae);
8074
- let oe = be(ee.y.mul(Math.PI)).toVar(), se = A(ae.div(r), Ui).mul(oe), ce = P(M(0), se.sub(a)).div(i), le = oe.greaterThan(0).select(M(1).div(M(2 * Math.PI * Math.PI).mul(oe)), M(0));
8075
- return W(re, M(o.x).mul(M(o.y)).mul(ce).mul(le));
8072
+ }).toVar(), ie = Oe(e, ee, 0).rgb.mul(r).toVar();
8073
+ c.assign(ie);
8074
+ let ae = ye(ee.y.mul(Math.PI)).toVar(), oe = A(ie.div(r), Ui).mul(ae), se = F(M(0), oe.sub(a)).div(i), ce = ae.greaterThan(0).select(M(1).div(M(2 * Math.PI * Math.PI).mul(ae)), M(0));
8075
+ return W(re, M(o.x).mul(M(o.y)).mul(se).mul(ce));
8076
8076
  }), bl = /* @__PURE__ */ G("\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", [gl]), xl = f(([e, t, n, r]) => {
8077
8077
  let i = t.toConst(), a = e.toVar();
8078
8078
  a.y.subAssign(r);
8079
8079
  let o = n.mul(n).toConst(), s = a.dot(i).toConst(), c = a.dot(a).sub(o).toConst(), l = s.mul(s).sub(c).toConst(), u = t.toVar();
8080
8080
  return p(l.greaterThanEqual(0), () => {
8081
- let t = Se(l).sub(s).toVar(), r = M(1e6).toVar(), c = i.y.toConst();
8081
+ let t = xe(l).sub(s).toVar(), r = M(1e6).toVar(), c = i.y.toConst();
8082
8082
  p(c.lessThanEqual(0), () => {
8083
8083
  let t = e.y.negate().div(c).toConst(), n = e.add(i.mul(t)).toConst();
8084
8084
  p(n.dot(n).lessThan(o), () => {
8085
8085
  r.assign(t);
8086
8086
  });
8087
8087
  }), p(t.greaterThan(0), () => {
8088
- u.assign(a.add(i.mul(ue(t, r))).div(n));
8088
+ u.assign(a.add(i.mul(le(t, r))).div(n));
8089
8089
  });
8090
8090
  }), u;
8091
8091
  }), Sl = f(([e, t, n, r, i, a]) => {
@@ -8099,16 +8099,16 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8099
8099
  return p(e.roughness.greaterThan(.98).and(e.metalness.lessThan(.02)).and(e.transmission.equal(0)).and(e.clearcoat.equal(0)).and(e.iridescence.equal(0)), () => {
8100
8100
  n.assign(e.color.rgb.mul(M(1).sub(e.metalness)).mul(Li));
8101
8101
  }).Else(() => {
8102
- let r = E(F(va(e.ior).mul(e.specularColor), e.color.rgb, e.metalness).mul(e.specularIntensity), U(0), U(1)).toVar(), i = e.color.rgb.toVar();
8102
+ let r = E(I(va(e.ior).mul(e.specularColor), e.color.rgb, e.metalness).mul(e.specularIntensity), U(0), U(1)).toVar(), i = e.color.rgb.toVar();
8103
8103
  p(e.dispersion.greaterThan(0).and(e.transmission.greaterThan(.5)), () => {
8104
- let t = E(e.dispersion.mul(.1), 0, .8), n = P(P(i.r, i.g), i.b), r = ue(ue(i.r, i.g), i.b);
8104
+ let t = E(e.dispersion.mul(.1), 0, .8), n = F(F(i.r, i.g), i.b), r = le(le(i.r, i.g), i.b);
8105
8105
  p(n.greaterThan(r), () => {
8106
8106
  let e = i.sub(r).div(n.sub(r));
8107
- i.assign(F(i, e, t.mul(.3)));
8107
+ i.assign(I(i, e, t.mul(.3)));
8108
8108
  });
8109
8109
  }), p(e.iridescence.greaterThan(0), () => {
8110
8110
  let n = e.iridescenceThicknessRange.y, i = Ma(M(1), e.iridescenceIOR, t.VoH, n, r);
8111
- r.assign(F(r, i, e.iridescence));
8111
+ r.assign(I(r, i, e.iridescence));
8112
8112
  });
8113
8113
  let a = ma(t.VoH, r), o = U(0).toVar();
8114
8114
  p(e.anisotropy.greaterThan(0), () => {
@@ -8116,7 +8116,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8116
8116
  o.assign(a.mul(r.mul(i)));
8117
8117
  }).Else(() => {
8118
8118
  let n = ya(t.NoH, e.roughness), r = Sa(t.NoV, t.NoL, e.roughness);
8119
- o.assign(n.mul(r).mul(a).div(P(M(4).mul(t.NoV).mul(t.NoL), zi)));
8119
+ o.assign(n.mul(r).mul(a).div(F(M(4).mul(t.NoV).mul(t.NoL), zi)));
8120
8120
  });
8121
8121
  let s = ki.wrap(Ca(r, t.NoV, e.roughness)), c = o.mul(s.compensation), l = U(1).sub(s.E_total).mul(M(1).sub(e.metalness)).mul(i).mul(Li).add(c).toVar();
8122
8122
  p(e.sheen.greaterThan(0), () => {
@@ -8127,32 +8127,32 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8127
8127
  });
8128
8128
  }), n;
8129
8129
  }), wl = f(([e, t, n, r]) => Cl(r, Oi.wrap(ta(n, e, t, r)))), Tl = f(([e, t]) => {
8130
- let n = E(F(va(t.ior).mul(t.specularColor), t.color.rgb, t.metalness).mul(t.specularIntensity), U(0), U(1)).toVar(), r = ma(e.VoH, n), i = U(0).toVar();
8130
+ let n = E(I(va(t.ior).mul(t.specularColor), t.color.rgb, t.metalness).mul(t.specularIntensity), U(0), U(1)).toVar(), r = ma(e.VoH, n), i = U(0).toVar();
8131
8131
  p(t.anisotropy.greaterThan(0), () => {
8132
8132
  let n = Ta(t.roughness, t.anisotropy), a = Ea(n.x, n.y, e.NoH, e.ToH, e.BoH), o = Da(n.x, n.y, e.ToV, e.BoV, e.ToL, e.BoL, e.NoV, e.NoL);
8133
8133
  i.assign(r.mul(a.mul(o)));
8134
8134
  }).Else(() => {
8135
8135
  let n = ya(e.NoH, t.roughness), a = Sa(e.NoV, e.NoL, t.roughness);
8136
- i.assign(n.mul(a).mul(r).div(P(M(4).mul(e.NoV).mul(e.NoL), zi)));
8136
+ i.assign(n.mul(a).mul(r).div(F(M(4).mul(e.NoV).mul(e.NoL), zi)));
8137
8137
  });
8138
- let a = ki.wrap(Ca(n, e.NoV, t.roughness)), o = i.mul(a.compensation), s = U(1).sub(a.E_total).mul(M(1).sub(t.metalness)).mul(t.color.rgb).div(Ii).add(o), c = P(t.clearcoatRoughness, Vi), l = ya(e.NoH, c), u = Sa(e.NoV, e.NoL, c), d = pa(e.VoH, M(.04)), f = l.mul(u).mul(d).div(P(M(4).mul(e.NoV).mul(e.NoL), zi)), m = M(1).sub(t.clearcoat.mul(d).mul(M(2).sub(d)));
8138
+ let a = ki.wrap(Ca(n, e.NoV, t.roughness)), o = i.mul(a.compensation), s = U(1).sub(a.E_total).mul(M(1).sub(t.metalness)).mul(t.color.rgb).div(Ii).add(o), c = F(t.clearcoatRoughness, Vi), l = ya(e.NoH, c), u = Sa(e.NoV, e.NoL, c), d = pa(e.VoH, M(.04)), f = l.mul(u).mul(d).div(F(M(4).mul(e.NoV).mul(e.NoL), zi)), m = M(1).sub(t.clearcoat.mul(d).mul(M(2).sub(d)));
8139
8139
  return s.mul(m).add(U(f).mul(t.clearcoat));
8140
8140
  }), El = 2 * Ii, Dl = f(([e, t]) => {
8141
8141
  let n = M(1).toVar();
8142
8142
  return p(t.lessThan(M(Ii).sub(.001)).and(e.greaterThan(0)), () => {
8143
- let r = t.mul(.5).toVar(), i = Oe(r).toVar(), a = Se(P(M(1).sub(e.mul(e)), 0)).div(P(e, 1e-4)), o = L(r.greaterThan(.05), M(1).div(P(i.sub(r), 1e-6)), M(3).div(P(r.mul(r).mul(r), 1e-9)));
8144
- n.assign(P(i.sub(a).mul(o), 0));
8143
+ let r = t.mul(.5).toVar(), i = De(r).toVar(), a = xe(F(M(1).sub(e.mul(e)), 0)).div(F(e, 1e-4)), o = R(r.greaterThan(.05), M(1).div(F(i.sub(r), 1e-6)), M(3).div(F(r.mul(r).mul(r), 1e-9)));
8144
+ n.assign(F(i.sub(a).mul(o), 0));
8145
8145
  }), n;
8146
8146
  }), Ol = f(([e]) => {
8147
- let t = L(e.normalize.greaterThan(.5), M(1).div(P(e.area, 1e-10)), M(1));
8147
+ let t = R(e.normalize.greaterThan(.5), M(1).div(F(e.area, 1e-10)), M(1));
8148
8148
  return e.color.mul(e.intensity).mul(Li).mul(t);
8149
8149
  }), kl = f(([e, t, n, r]) => {
8150
8150
  let i = T(!1).toVar(), a = U(0, 1, 0).toVar(), o = U(0).toVar(), s = M(0).toVar(), c = M(0).toVar(), l = N(2).toVar();
8151
8151
  return p(e.area.greaterThan(0), () => {
8152
8152
  let u = U(0).toVar(), d = M(-1).toVar();
8153
8153
  p(e.shape.greaterThan(.5), () => {
8154
- let t = Se(n.x).toVar(), r = M(El).mul(n.y).toVar();
8155
- u.assign(e.position.add(e.u.mul(t.mul(D(r)))).add(e.v.mul(t.mul(be(r)))));
8154
+ let t = xe(n.x).toVar(), r = M(El).mul(n.y).toVar();
8155
+ u.assign(e.position.add(e.u.mul(t.mul(D(r)))).add(e.v.mul(t.mul(ye(r)))));
8156
8156
  }).Else(() => {
8157
8157
  let r = ls(t, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2), n).toVar();
8158
8158
  p(r.w.greaterThan(0), () => {
@@ -8163,9 +8163,9 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8163
8163
  });
8164
8164
  let f = u.sub(t).toVar(), m = A(f, f).toVar();
8165
8165
  p(m.greaterThanEqual(1e-10), () => {
8166
- let t = Se(m).toVar(), n = f.div(t).toVar(), u = A(n.negate(), e.normal).toVar();
8166
+ let t = xe(m).toVar(), n = f.div(t).toVar(), u = A(n.negate(), e.normal).toVar();
8167
8167
  l.assign(N(1)), s.assign(t), a.assign(n), o.assign(Ol(e).mul(Dl(u, e.spread)));
8168
- let p = m.div(P(e.area.mul(P(u, .001)), 1e-10)), h = L(d.greaterThan(0), d, p);
8168
+ let p = m.div(F(e.area.mul(F(u, .001)), 1e-10)), h = R(d.greaterThan(0), d, p);
8169
8169
  c.assign(h.mul(r)), i.assign(u.greaterThan(0));
8170
8170
  });
8171
8171
  }), Wo({
@@ -8179,7 +8179,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8179
8179
  }), Al = f(([e, t, n]) => {
8180
8180
  let r = T(!1).toVar(), i = U(0, 1, 0).toVar(), a = U(0).toVar(), o = M(0).toVar(), s = M(0).toVar(), c = N(3).toVar(), l = e.position.sub(t).toVar(), u = A(l, l).toVar();
8181
8181
  return p(u.greaterThanEqual(1e-20), () => {
8182
- let t = Se(u).toVar(), c = l.div(t).toVar(), d = A(c.negate(), e.direction).toVar(), f = D(e.angle).toVar();
8182
+ let t = xe(u).toVar(), c = l.div(t).toVar(), d = A(c.negate(), e.direction).toVar(), f = D(e.angle).toVar();
8183
8183
  i.assign(c), o.assign(t), s.assign(n), r.assign(d.greaterThanEqual(f)), p(r, () => {
8184
8184
  let n = Qo({
8185
8185
  coneCosine: f,
@@ -8203,7 +8203,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8203
8203
  }), jl = f(([e, t, n]) => {
8204
8204
  let r = T(!1).toVar(), i = U(0, 1, 0).toVar(), a = U(0).toVar(), o = M(0).toVar(), s = M(0).toVar(), c = N(2).toVar(), l = e.position.sub(t).toVar(), u = A(l, l).toVar();
8205
8205
  return p(u.greaterThanEqual(1e-20), () => {
8206
- let t = Se(u).toVar(), d = l.div(t), f = Zo({
8206
+ let t = xe(u).toVar(), d = l.div(t), f = Zo({
8207
8207
  lightDistance: t,
8208
8208
  cutoffDistance: e.distance,
8209
8209
  decayExponent: e.decay
@@ -8243,7 +8243,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8243
8243
  condition: "<"
8244
8244
  }, ({ i: r }) => {
8245
8245
  p(r.lessThan(N(16)), () => {
8246
- let i = Vo.wrap(qo(c, r)), o = L(i.intensity.greaterThan(0), Lo(i, e, t, n), M(0)).toVar();
8246
+ let i = Vo.wrap(qo(c, r)), o = R(i.intensity.greaterThan(0), Lo(i, e, t, n), M(0)).toVar();
8247
8247
  w.addAssign(o), p(o.greaterThan(0).and(Y(a).mul(w).lessThan(o)), () => {
8248
8248
  E.assign(1), k.assign(r), A.assign(o);
8249
8249
  });
@@ -8278,7 +8278,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8278
8278
  });
8279
8279
  });
8280
8280
  }), p(w.lessThanEqual(0), () => {
8281
- let t = N(r.x.mul(M(C))).toVar(), n = M(1).div(P(M(C), 1)).toVar();
8281
+ let t = N(r.x.mul(M(C))).toVar(), n = M(1).div(F(M(C), 1)).toVar();
8282
8282
  x.assign(n);
8283
8283
  let i = T(!1).toVar(), m = N(0).toVar();
8284
8284
  p(s.greaterThan(N(0)), () => {
@@ -8286,7 +8286,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8286
8286
  let n = Bo.wrap(Ko(o, t.sub(m)));
8287
8287
  p(n.intensity.greaterThan(0), () => {
8288
8288
  let t = ns(n, e);
8289
- v.assign(I(n.direction)), y.assign(n.color.mul(n.intensity).mul(t)), b.assign(1e6), S.assign(N(0)), g.assign(T(!0)), i.assign(T(!0));
8289
+ v.assign(L(n.direction)), y.assign(n.color.mul(n.intensity).mul(t)), b.assign(1e6), S.assign(N(0)), g.assign(T(!0)), i.assign(T(!0));
8290
8290
  });
8291
8291
  }), m.addAssign(s);
8292
8292
  }), p(l.greaterThan(N(0)), () => {
@@ -8315,13 +8315,13 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8315
8315
  });
8316
8316
  });
8317
8317
  }).Else(() => {
8318
- let t = A.div(P(w, 1e-10)).toVar();
8318
+ let t = A.div(F(w, 1e-10)).toVar();
8319
8319
  p(E.equal(N(0)).and(k.greaterThanEqual(N(0))), () => {
8320
- let n = Bo.wrap(Ko(o, k)), i = I(n.direction).toVar(), s = M(1).toVar();
8320
+ let n = Bo.wrap(Ko(o, k)), i = L(n.direction).toVar(), s = M(1).toVar();
8321
8321
  p(n.angle.greaterThan(0), () => {
8322
- let e = D(n.angle.mul(.5)).toVar(), t = F(e, M(1), r.y).toVar(), o = Se(P(M(0), M(1).sub(t.mul(t)))).toVar(), c = M(El).mul(Y(a)).toVar(), l = I(n.direction).toVar(), u = I(O(L(_(l.x).greaterThan(.9), U(0, 1, 0), U(1, 0, 0)), l)).toVar(), d = O(l, u).toVar();
8323
- i.assign(I(l.mul(t).add(u.mul(D(c)).add(d.mul(be(c))).mul(o))));
8324
- let f = M(El).mul(P(M(1).sub(e), 1e-10));
8322
+ let e = D(n.angle.mul(.5)).toVar(), t = I(e, M(1), r.y).toVar(), o = xe(F(M(0), M(1).sub(t.mul(t)))).toVar(), c = M(El).mul(Y(a)).toVar(), l = L(n.direction).toVar(), u = L(O(R(_(l.x).greaterThan(.9), U(0, 1, 0), U(1, 0, 0)), l)).toVar(), d = O(l, u).toVar();
8323
+ i.assign(L(l.mul(t).add(u.mul(D(c)).add(d.mul(ye(c))).mul(o))));
8324
+ let f = M(El).mul(F(M(1).sub(e), 1e-10));
8325
8325
  s.assign(M(1).div(f));
8326
8326
  });
8327
8327
  let c = ns(n, e);
@@ -8348,11 +8348,11 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8348
8348
  }), Nl = f(([e, t]) => {
8349
8349
  let n = t.NoV, r = t.NoL.toVar(), i = t.NoH, a = M(1).sub(e.metalness).mul(M(1).sub(e.transmission)).toVar(), o = M(1).sub(a.mul(M(1).sub(e.metalness))).toVar(), s = a.add(o).toVar(), c = M(0).toVar();
8350
8350
  return p(s.greaterThan(0), () => {
8351
- let l = M(1).div(P(s, 1e-10)).toVar();
8351
+ let l = M(1).div(F(s, 1e-10)).toVar();
8352
8352
  a.mulAssign(l), o.mulAssign(l), p(a.greaterThan(0).and(r.greaterThan(0)), () => {
8353
8353
  c.addAssign(a.mul(r).mul(Li));
8354
8354
  }), p(o.greaterThan(0).and(r.greaterThan(0)), () => {
8355
- let r = P(e.roughness, .02), a = M(0).toVar();
8355
+ let r = F(e.roughness, .02), a = M(0).toVar();
8356
8356
  p(e.anisotropy.greaterThan(0), () => {
8357
8357
  let n = Ta(e.roughness, e.anisotropy);
8358
8358
  a.assign(ka(n.x, n.y, t.NoH, t.ToH, t.BoH, t.NoV, t.ToV, t.BoV));
@@ -8360,7 +8360,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8360
8360
  a.assign(wa(i, n, r));
8361
8361
  }), c.addAssign(o.mul(a));
8362
8362
  });
8363
- }), P(c, 1e-8);
8363
+ }), F(c, 1e-8);
8364
8364
  }), Pl = f(([e, t, n, r]) => Nl(r, Oi.wrap(ta(n, e, t, r)))), Fl = f(([e, t, n, r, i, a, o, s, c, l, u, d]) => {
8365
8365
  let f = M(0).toVar();
8366
8366
  return p(a.greaterThan(N(0)), () => {
@@ -8384,7 +8384,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8384
8384
  }, ({ i: r }) => {
8385
8385
  p(r.lessThan(N(16)), () => {
8386
8386
  let i = Vo.wrap(qo(o, r));
8387
- f.addAssign(L(i.intensity.greaterThan(0), Lo(i, e, t, n), M(0)));
8387
+ f.addAssign(R(i.intensity.greaterThan(0), Lo(i, e, t, n), M(0)));
8388
8388
  });
8389
8389
  });
8390
8390
  }), p(l.greaterThan(N(0)), () => {
@@ -8413,36 +8413,36 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8413
8413
  });
8414
8414
  }), f;
8415
8415
  }), Il = f(([e, t, n, r, i, a, o, s, c, l, u, d, h, g, _, v, y, b, x, S, C, w, E, D, O, k, j, ee, te]) => {
8416
- let ne = U(0).toVar(), re = U(0).toVar(), ie = e.add(t.mul(.001)).toVar(), ae = f(([e, t, n]) => Po(e, t, n, fl, b, x, S));
8416
+ let ne = U(0).toVar(), re = U(0).toVar(), P = e.add(t.mul(.001)).toVar(), ie = f(([e, t, n]) => Po(e, t, n, fl, b, x, S));
8417
8417
  return p(n.emissiveIntensity.lessThanEqual(10), () => {
8418
- let f = U(1).toVar(), b = Fi.wrap(oa(n.roughness, n.metalness, s, f)), x = b.useBRDFSampling.toVar(), S = b.useLightSampling.toVar(), oe = b.brdfWeight.toVar(), se = b.lightWeight.toVar(), ce = u.add(h).add(_).add(y).toVar(), le = M(.001).mul(M(1).add(M(s).mul(.5))).toVar(), F = ce.greaterThan(N(0)).toVar(), de = M(0).toVar();
8419
- p(S.and(F), () => {
8420
- de.addAssign(se);
8418
+ let f = U(1).toVar(), b = Fi.wrap(oa(n.roughness, n.metalness, s, f)), x = b.useBRDFSampling.toVar(), S = b.useLightSampling.toVar(), ae = b.brdfWeight.toVar(), oe = b.lightWeight.toVar(), se = u.add(h).add(_).add(y).toVar(), ce = M(.001).mul(M(1).add(M(s).mul(.5))).toVar(), I = se.greaterThan(N(0)).toVar(), ue = M(0).toVar();
8419
+ p(S.and(I), () => {
8420
+ ue.addAssign(oe);
8421
8421
  }), p(x, () => {
8422
- de.addAssign(oe);
8423
- }), p(de.lessThanEqual(0), () => {
8424
- de.assign(1), x.assign(T(!0)), oe.assign(1);
8422
+ ue.addAssign(ae);
8423
+ }), p(ue.lessThanEqual(0), () => {
8424
+ ue.assign(1), x.assign(T(!0)), ae.assign(1);
8425
8425
  });
8426
- let I = Y(c).toVar(), fe = Y(c).toVar(), pe = I, me = T(!1).toVar(), he = T(!1).toVar(), ge = L(F, se, M(0)), _e = M(1).div(P(de, 1e-10)), ve = ge.mul(_e);
8427
- p(pe.lessThan(ve).and(S).and(F), () => {
8428
- me.assign(T(!0));
8426
+ let L = Y(c).toVar(), de = Y(c).toVar(), fe = L, pe = T(!1).toVar(), me = T(!1).toVar(), he = R(I, oe, M(0)), ge = M(1).div(F(ue, 1e-10)), _e = he.mul(ge);
8427
+ p(fe.lessThan(_e).and(S).and(I), () => {
8428
+ pe.assign(T(!0));
8429
8429
  }).ElseIf(x, () => {
8430
- he.assign(T(!0));
8431
- }).ElseIf(F, () => {
8432
8430
  me.assign(T(!0));
8433
- }), p(me, () => {
8434
- let e = H(fe, Y(c)).toVar(), i = Wo.wrap(Ml(ie, t, n, e, s, c, l, u, d, h, g, _, v, y));
8431
+ }).ElseIf(I, () => {
8432
+ pe.assign(T(!0));
8433
+ }), p(pe, () => {
8434
+ let e = H(de, Y(c)).toVar(), i = Wo.wrap(Ml(P, t, n, e, s, c, l, u, d, h, g, _, v, y));
8435
8435
  p(i.valid.and(i.pdf.greaterThan(0)), () => {
8436
- let e = P(M(0), A(t, i.direction)).toVar(), a = i.emission.x.add(i.emission.y).add(i.emission.z);
8437
- p(e.greaterThan(0).and(a.mul(e).greaterThan(le)).and(Xo({
8436
+ let e = F(M(0), A(t, i.direction)).toVar(), a = i.emission.x.add(i.emission.y).add(i.emission.z);
8437
+ p(e.greaterThan(0).and(a.mul(e).greaterThan(ce)).and(Xo({
8438
8438
  direction: i.direction,
8439
8439
  surfaceNormal: t
8440
8440
  })), () => {
8441
- let a = ue(i.distance.sub(.001), M(1e3)), o = ae(ie, i.direction, a);
8441
+ let a = le(i.distance.sub(.001), M(1e3)), o = ie(P, i.direction, a);
8442
8442
  p(o.greaterThan(0).or(te), () => {
8443
8443
  let a = Oi.wrap(ta(t, r, i.direction, n)), s = Cl(n, a), c = Nl(n, a).toVar(), l = M(1).toVar();
8444
8444
  p(c.greaterThan(0).and(x), () => {
8445
- let e = i.pdf.mul(se), t = c.mul(oe);
8445
+ let e = i.pdf.mul(oe), t = c.mul(ae);
8446
8446
  p(i.lightType.equal(N(1)), () => {
8447
8447
  l.assign(Zi({
8448
8448
  pdf1: e,
@@ -8450,16 +8450,16 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8450
8450
  }));
8451
8451
  });
8452
8452
  });
8453
- let u = i.emission.mul(s).mul(e).mul(l).div(P(i.pdf, 1e-10)).mul(de).div(P(se, 1e-10));
8453
+ let u = i.emission.mul(s).mul(e).mul(l).div(F(i.pdf, 1e-10)).mul(ue).div(F(oe, 1e-10));
8454
8454
  ne.addAssign(u.mul(o)), p(te, () => {
8455
8455
  re.addAssign(u);
8456
8456
  });
8457
8457
  });
8458
8458
  });
8459
8459
  });
8460
- }), p(he, () => {
8460
+ }), p(me, () => {
8461
8461
  p(a.greaterThan(0).and(x), () => {
8462
- let r = P(M(0), A(t, i)).toVar();
8462
+ let r = F(M(0), A(t, i)).toVar();
8463
8463
  p(r.greaterThan(0).and(Xo({
8464
8464
  direction: i,
8465
8465
  surfaceNormal: t
@@ -8475,8 +8475,8 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8475
8475
  let a = Vo.wrap(qo(d, r));
8476
8476
  p(a.intensity.greaterThan(0), () => {
8477
8477
  let o = Lo(a, e, t, n).toVar();
8478
- p(o.greaterThanEqual(le), () => {
8479
- p(ss(a, ie, i).toVar().greaterThan(0), () => {
8478
+ p(o.greaterThanEqual(ce), () => {
8479
+ p(ss(a, P, i).toVar().greaterThan(0), () => {
8480
8480
  p(o.greaterThan(f), () => {
8481
8481
  f.assign(o), b.assign(r);
8482
8482
  }), c.assign(T(!0));
@@ -8484,16 +8484,16 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8484
8484
  });
8485
8485
  });
8486
8486
  }), p(c.and(b.greaterThanEqual(N(0))), () => {
8487
- let e = Vo.wrap(qo(d, b)), c = ss(e, ie, i).toVar();
8487
+ let e = Vo.wrap(qo(d, b)), c = ss(e, P, i).toVar();
8488
8488
  p(c.greaterThan(0), () => {
8489
- let f = ae(ie, i, ue(c.sub(.001), M(1e3)));
8489
+ let f = ie(P, i, le(c.sub(.001), M(1e3)));
8490
8490
  p(f.greaterThan(0).or(te), () => {
8491
- let m = P(M(0), A(i, e.normal).negate()).toVar();
8491
+ let m = F(M(0), A(i, e.normal).negate()).toVar();
8492
8492
  p(m.greaterThan(0), () => {
8493
- let i = c.mul(c), b = cs(ie, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2)).toVar(), x = i.div(P(e.area.mul(m), zi)), S = L(e.shape.lessThan(.5).and(b.greaterThan(1e-5)), M(1).div(P(b, 1e-10)), x).toVar(), C = Lo(e, ie, t, n), w = Fl(ie, t, n, s, l, u, d, h, g, _, v, y).toVar(), T = L(w.greaterThan(0), C.div(P(w, 1e-10)), M(1).div(P(M(ce), 1))), E = S.mul(T).toVar(), D = Zi({
8494
- pdf1: a.mul(oe),
8495
- pdf2: E.mul(se)
8496
- }).toVar(), O = Ol(e).mul(Dl(m, e.spread)).mul(o).mul(r).mul(D).div(P(a, 1e-10)).mul(de).div(P(oe, 1e-10));
8493
+ let i = c.mul(c), b = cs(P, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2)).toVar(), x = i.div(F(e.area.mul(m), zi)), S = R(e.shape.lessThan(.5).and(b.greaterThan(1e-5)), M(1).div(F(b, 1e-10)), x).toVar(), C = Lo(e, P, t, n), w = Fl(P, t, n, s, l, u, d, h, g, _, v, y).toVar(), T = R(w.greaterThan(0), C.div(F(w, 1e-10)), M(1).div(F(M(se), 1))), E = S.mul(T).toVar(), D = Zi({
8494
+ pdf1: a.mul(ae),
8495
+ pdf2: E.mul(oe)
8496
+ }).toVar(), O = Ol(e).mul(Dl(m, e.spread)).mul(o).mul(r).mul(D).div(F(a, 1e-10)).mul(ue).div(F(ae, 1e-10));
8497
8497
  ne.addAssign(O.mul(f)), p(te, () => {
8498
8498
  re.addAssign(O);
8499
8499
  });
@@ -8507,17 +8507,17 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8507
8507
  }), p(ee, () => {
8508
8508
  let e = H(Y(c).toVar(), Y(c).toVar()).toVar(), i = U(0).toVar(), a = yl(C, D, E, w, O, k, j, e, i).toVar(), o = a.xyz.toVar(), s = a.w.toVar();
8509
8509
  p(s.greaterThan(0), () => {
8510
- let e = P(M(0), A(t, o)).toVar();
8510
+ let e = F(M(0), A(t, o)).toVar();
8511
8511
  p(e.greaterThan(0).and(Xo({
8512
8512
  direction: o,
8513
8513
  surfaceNormal: t
8514
8514
  })), () => {
8515
- let a = ae(ie, o, M(1e3));
8515
+ let a = ie(P, o, M(1e3));
8516
8516
  p(a.greaterThan(0).or(te), () => {
8517
- let c = Oi.wrap(ta(t, r, o, n)), l = Cl(n, c), u = Nl(n, c).toVar(), d = L(u.greaterThan(0), Qi({
8517
+ let c = Oi.wrap(ta(t, r, o, n)), l = Cl(n, c), u = Nl(n, c).toVar(), d = R(u.greaterThan(0), Qi({
8518
8518
  pdf1: s,
8519
8519
  pdf2: u
8520
- }), M(1)).toVar(), f = i.mul(l).mul(e).mul(d).div(P(s, 1e-10));
8520
+ }), M(1)).toVar(), f = i.mul(l).mul(e).mul(d).div(F(s, 1e-10));
8521
8521
  ne.addAssign(f.mul(a)), p(te, () => {
8522
8522
  re.addAssign(f);
8523
8523
  });
@@ -8530,15 +8530,15 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8530
8530
  unoccluded: re
8531
8531
  });
8532
8532
  }), Ll = f(([e, t, n, r, i, a]) => {
8533
- let o = L(a, r, M(1).div(r)).toVar(), s = e.add(t.mul(o)).toVar(), c = A(s, s).toVar(), l = L(c.greaterThan(zi), s.div(Se(c)), n).toVar();
8533
+ let o = R(a, r, M(1).div(r)).toVar(), s = e.add(t.mul(o)).toVar(), c = A(s, s).toVar(), l = R(c.greaterThan(zi), s.div(xe(c)), n).toVar();
8534
8534
  p(A(l, n).lessThan(0), () => {
8535
8535
  l.assign(l.negate());
8536
8536
  });
8537
- let u = _(A(e, l)), d = _(A(t, l)).toVar(), f = _(A(n, l)).toVar(), m = ya(f, i), h = u.add(d.mul(o)).toVar(), g = h.mul(h), v = d.mul(o).mul(o).div(P(g, zi));
8537
+ let u = _(A(e, l)), d = _(A(t, l)).toVar(), f = _(A(n, l)).toVar(), m = ya(f, i), h = u.add(d.mul(o)).toVar(), g = h.mul(h), v = d.mul(o).mul(o).div(F(g, zi));
8538
8538
  return m.mul(f).mul(v);
8539
8539
  }), Rl = f(([e, t, n, r]) => {
8540
8540
  let i = e.add(t).toVar(), a = A(i, i).toVar();
8541
- return wa(P(A(n, L(a.greaterThan(zi), i.div(Se(a)), n)), 0), P(A(n, e), 0), r);
8541
+ return wa(F(A(n, R(a.greaterThan(zi), i.div(xe(a)), n)), 0), F(A(n, e), 0), r);
8542
8542
  }), zl = f(([e]) => {
8543
8543
  let t = e.specularImportance.toVar(), n = t.greaterThan(.001).toVar(), r = e.diffuseImportance.toVar(), i = r.greaterThan(.001).toVar(), a = e.transmissionImportance.toVar(), o = a.greaterThan(.001).toVar(), s = e.clearcoatImportance.toVar(), c = s.greaterThan(.001).toVar(), l = t.add(r).add(a).add(s).toVar();
8544
8544
  return p(l.lessThan(.001), () => {
@@ -8576,7 +8576,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8576
8576
  }), p(e.useClearcoat.and(i.not()), () => {
8577
8577
  n.assign(4);
8578
8578
  }), n;
8579
- }), Vl = f(([e]) => P(e, 0).mul(Li)), Hl = f(([e, t, n, r, i, a, o, s]) => {
8579
+ }), Vl = f(([e]) => F(e, 0).mul(Li)), Hl = f(([e, t, n, r, i, a, o, s]) => {
8580
8580
  let c = U(0).toVar(), l = U(0).toVar(), u = M(0).toVar(), d = M(0).toVar(), f = M(0).toVar();
8581
8581
  return p(s.diffuseImportance.greaterThanEqual(0).and(s.specularImportance.greaterThanEqual(0)).and(s.transmissionImportance.greaterThanEqual(0)).and(s.clearcoatImportance.greaterThanEqual(0)).not(), () => {
8582
8582
  let e = H(Y(o).toVar(), Y(o).toVar());
@@ -8586,14 +8586,14 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8586
8586
  p(_.equal(N(1)), () => {
8587
8587
  v.assign(r), y.assign(i), b.assign(a);
8588
8588
  }).ElseIf(_.equal(N(2)), () => {
8589
- v.assign(La(t, g)), y.assign(Vl(P(A(t, v), 0))), b.assign(wl(e, v, t, n));
8589
+ v.assign(La(t, g)), y.assign(Vl(F(A(t, v), 0))), b.assign(wl(e, v, t, n));
8590
8590
  }).ElseIf(_.equal(N(3)), () => {
8591
8591
  let r = A(e, t).greaterThan(0), i = Xa.wrap(no(e, t, n.ior, n.roughness, r, n.dispersion, g, o, M(0)).toVar());
8592
8592
  v.assign(i.direction), y.assign(i.pdf), x.assign(i.colorWeight);
8593
8593
  }).Else(() => {
8594
8594
  v.assign(r), y.assign(i), b.assign(a);
8595
8595
  });
8596
- let S = P(A(t, v), 0).toVar(), C = M(0).toVar();
8596
+ let S = F(A(t, v), 0).toVar(), C = M(0).toVar();
8597
8597
  p(m.useSpecular, () => {
8598
8598
  let r = Aa(n, t, e, v);
8599
8599
  C.addAssign(m.specularWeight.mul(r));
@@ -8604,9 +8604,9 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8604
8604
  C.addAssign(m.transmissionWeight.mul(Ll(e, v, t, n.ior, n.roughness, r)));
8605
8605
  }), p(m.useClearcoat.and(n.clearcoat.greaterThan(0)), () => {
8606
8606
  C.addAssign(m.clearcoatWeight.mul(Rl(e, v, t, n.clearcoatRoughness)));
8607
- }), y.assign(P(y, Hi)), C.assign(P(C, Hi));
8607
+ }), y.assign(F(y, Hi)), C.assign(F(C, Hi));
8608
8608
  let w = y.div(C).toVar(), T = b.mul(S).mul(w).div(y), E = n.color.xyz.mul(x).mul(w);
8609
- c.assign(v), l.assign(L(_.equal(N(3)), E, T)), u.assign(w), d.assign(y), f.assign(C);
8609
+ c.assign(v), l.assign(R(_.equal(N(3)), E, T)), u.assign(w), d.assign(y), f.assign(C);
8610
8610
  }), Go({
8611
8611
  direction: c,
8612
8612
  throughput: l,
@@ -8630,8 +8630,8 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8630
8630
  alpha2: M(0),
8631
8631
  invRoughness: M(1).sub(n.roughness),
8632
8632
  metalFactor: M(.5).add(M(.5).mul(n.metalness)),
8633
- iorFactor: ue(M(2).div(n.ior), 1),
8634
- maxSheenColor: P(n.sheenColor.x, P(n.sheenColor.y, n.sheenColor.z))
8633
+ iorFactor: le(M(2).div(n.ior), 1),
8634
+ maxSheenColor: F(n.sheenColor.x, F(n.sheenColor.y, n.sheenColor.z))
8635
8635
  }).toVar();
8636
8636
  m.assign(Na(n, a, e));
8637
8637
  });
@@ -8654,7 +8654,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8654
8654
  });
8655
8655
  _.assign(a.mul(l.x).add(o.mul(l.y)).add(t.mul(l.z)));
8656
8656
  let p = E(A(t, _), .001, 1);
8657
- u.assign(ge(e.negate(), _)), f.assign(ka(c.x, c.y, p, A(a, _), A(o, _), S, A(a, e), A(o, e))), d.assign(wl(e, u, t, n));
8657
+ u.assign(he(e.negate(), _)), f.assign(ka(c.x, c.y, p, A(a, _), A(o, _), S, A(a, e), A(o, e))), d.assign(wl(e, u, t, n));
8658
8658
  }).Else(() => {
8659
8659
  let i = $i({ N: t }), a = Ra({
8660
8660
  V: i.transpose().mul(e),
@@ -8663,7 +8663,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8663
8663
  });
8664
8664
  _.assign(i.mul(a));
8665
8665
  let o = E(A(t, _), .001, 1);
8666
- u.assign(ge(e.negate(), _)), f.assign(wa(o, S, n.roughness)), d.assign(wl(e, u, t, n));
8666
+ u.assign(he(e.negate(), _)), f.assign(wa(o, S, n.roughness)), d.assign(wl(e, u, t, n));
8667
8667
  });
8668
8668
  }).ElseIf(h.lessThan(b), () => {
8669
8669
  _.assign(Fa({
@@ -8672,7 +8672,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8672
8672
  Xi: r
8673
8673
  }));
8674
8674
  let i = E(A(t, _), .001, 1), a = E(A(e, _), .001, 1);
8675
- u.assign(ge(e.negate(), _));
8675
+ u.assign(he(e.negate(), _));
8676
8676
  let o = A(t, u).toVar();
8677
8677
  p(o.lessThanEqual(0), () => {
8678
8678
  u.assign(Ia({
@@ -8680,7 +8680,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8680
8680
  xi: r
8681
8681
  })), o.assign(E(A(t, u), 0, 1)), f.assign(o.mul(Li)), d.assign(wl(e, u, t, n));
8682
8682
  }).Else(() => {
8683
- f.assign(ba(i, n.sheenRoughness).mul(i).div(M(4).mul(a))), f.assign(P(f, Hi)), d.assign(wl(e, u, t, n));
8683
+ f.assign(ba(i, n.sheenRoughness).mul(i).div(M(4).mul(a))), f.assign(F(f, Hi)), d.assign(wl(e, u, t, n));
8684
8684
  });
8685
8685
  }).ElseIf(h.lessThan(x), () => {
8686
8686
  let i = E(n.clearcoatRoughness, Vi, 1);
@@ -8690,11 +8690,11 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8690
8690
  Xi: r
8691
8691
  }));
8692
8692
  let a = E(A(t, _), 0, 1);
8693
- u.assign(ge(e.negate(), _)), f.assign(wa(a, S, i)), f.assign(P(f, Hi)), d.assign(wl(e, u, t, n));
8693
+ u.assign(he(e.negate(), _)), f.assign(wa(a, S, i)), f.assign(F(f, Hi)), d.assign(wl(e, u, t, n));
8694
8694
  }).Else(() => {
8695
8695
  let a = A(e, t).greaterThan(0), o = Xa.wrap(no(e, t, n.ior, n.roughness, a, n.dispersion, r, i, M(0)));
8696
- u.assign(o.direction), f.assign(P(o.pdf, Hi)), d.assign(wl(e, u, t, n));
8697
- }), f.assign(P(f, Hi)), wi({
8696
+ u.assign(o.direction), f.assign(F(o.pdf, Hi)), d.assign(wl(e, u, t, n));
8697
+ }), f.assign(F(f, Hi)), wi({
8698
8698
  direction: u,
8699
8699
  value: d,
8700
8700
  pdf: f
@@ -8702,10 +8702,10 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8702
8702
  }), Wl = /* @__PURE__ */ G("\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", [na, ia]), Gl = /* @__PURE__ */ G("\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"), Kl = f(([e, t, n, r, i, a, o]) => {
8703
8703
  let s = M(1).toVar();
8704
8704
  return p(e.greaterThanEqual(N(3)), () => {
8705
- let c = P(P(P(t.x, t.y), t.z), 0).toVar();
8705
+ let c = F(F(F(t.x, t.y), t.z), 0).toVar();
8706
8706
  p(c.lessThan(8e-4).and(e.greaterThan(N(4))), () => {
8707
- let e = P(c.mul(125), .01), t = Y(i);
8708
- s.assign(L(t.lessThan(e), e, M(0)));
8707
+ let e = F(c.mul(125), .01), t = Y(i);
8708
+ s.assign(R(t.lessThan(e), e, M(0)));
8709
8709
  }).Else(() => {
8710
8710
  let t = n.complexityScore.toVar();
8711
8711
  p(n.isMetallic.and(n.isSmooth).and(e.lessThan(N(7))), () => {
@@ -8734,19 +8734,19 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8734
8734
  let d = M(.5).toVar();
8735
8735
  p(a.and(o).and(c.greaterThan(.01)), () => {
8736
8736
  let e = E(r.y, 0, 1);
8737
- d.assign(F(M(.3), M(.8), e.mul(e)));
8737
+ d.assign(I(M(.3), M(.8), e.mul(e)));
8738
8738
  });
8739
- let f = xe(M(.001), M(.1), c), m = c.mul(F(u.mul(.7), d, .3)).mul(f).toVar(), h = F(E(t.mul(.4).add(c.mul(.6)).mul(1.2), .15, .95), E(c.mul(.4).add(t.mul(.1)), .03, .6), E(M(e.sub(l)).div(10), 0, 1)).toVar();
8740
- h.assign(F(h, P(h, m), .4)), p(t.greaterThan(.5), () => {
8739
+ let f = be(M(.001), M(.1), c), m = c.mul(I(u.mul(.7), d, .3)).mul(f).toVar(), h = I(E(t.mul(.4).add(c.mul(.6)).mul(1.2), .15, .95), E(c.mul(.4).add(t.mul(.1)), .03, .6), E(M(e.sub(l)).div(10), 0, 1)).toVar();
8740
+ h.assign(I(h, F(h, m), .4)), p(t.greaterThan(.5), () => {
8741
8741
  let e = t.sub(.5).mul(.6);
8742
- h.assign(F(h, M(1), e));
8742
+ h.assign(I(h, M(1), e));
8743
8743
  });
8744
8744
  let g = M(.12).add(t.mul(.08)), _ = j(M(e.sub(l)).negate().mul(g));
8745
8745
  h.mulAssign(_);
8746
- let v = L(n.isEmissive, M(.04), M(.02));
8747
- h.assign(P(h, v));
8746
+ let v = R(n.isEmissive, M(.04), M(.02));
8747
+ h.assign(F(h, v));
8748
8748
  let y = Y(i);
8749
- s.assign(L(y.lessThan(h), h, M(0)));
8749
+ s.assign(R(y.lessThan(h), h, M(0)));
8750
8750
  });
8751
8751
  });
8752
8752
  }), s;
@@ -8755,7 +8755,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8755
8755
  L: "vec3",
8756
8756
  pdf: "float"
8757
8757
  }), Jl = f(([e, t, n, r, i]) => {
8758
- let a = t.normal, o = e.direction.negate(), s = P(n.clearcoatRoughness, Vi), c = P(n.roughness, Vi), l = M(1).sub(c).mul(M(.5).add(M(.5).mul(n.metalness))).toVar(), u = n.clearcoat.mul(M(1).sub(s)).toVar(), d = M(1).sub(l).mul(M(1).sub(n.metalness)).toVar(), f = l.add(u).add(d);
8758
+ let a = t.normal, o = e.direction.negate(), s = F(n.clearcoatRoughness, Vi), c = F(n.roughness, Vi), l = M(1).sub(c).mul(M(.5).add(M(.5).mul(n.metalness))).toVar(), u = n.clearcoat.mul(M(1).sub(s)).toVar(), d = M(1).sub(l).mul(M(1).sub(n.metalness)).toVar(), f = l.add(u).add(d);
8759
8759
  l.divAssign(f), u.divAssign(f), d.divAssign(f);
8760
8760
  let m = Y(i), h = U(0).toVar(), g = U(0).toVar();
8761
8761
  p(m.lessThan(u), () => {
@@ -8763,7 +8763,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8763
8763
  N: a,
8764
8764
  roughness: s,
8765
8765
  Xi: r
8766
- })), h.assign(ge(o.negate(), g));
8766
+ })), h.assign(he(o.negate(), g));
8767
8767
  }).ElseIf(m.lessThan(u.add(l)), () => {
8768
8768
  p(n.anisotropy.greaterThan(0), () => {
8769
8769
  let e = Di.wrap(ea(a, n.anisotropyRotation)), t = U(A(o, e.Ta), A(o, e.Ba), A(o, a)), i = Ta(n.roughness, n.anisotropy), s = za({
@@ -8779,12 +8779,12 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8779
8779
  roughness: c,
8780
8780
  Xi: r
8781
8781
  }));
8782
- }), h.assign(ge(o.negate(), g));
8782
+ }), h.assign(he(o.negate(), g));
8783
8783
  }).Else(() => {
8784
8784
  h.assign(Ia({
8785
8785
  N: a,
8786
8786
  xi: r
8787
- })), g.assign(I(o.add(h)));
8787
+ })), g.assign(L(o.add(h)));
8788
8788
  });
8789
8789
  let _ = Oi.wrap(ta(a, o, h, n)), v = ya(_.NoH, s).mul(_.NoH).div(M(4).mul(_.VoH)).mul(u), y = M(0).toVar();
8790
8790
  p(n.anisotropy.greaterThan(0), () => {
@@ -8793,7 +8793,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8793
8793
  }).Else(() => {
8794
8794
  y.assign(ya(_.NoH, c).mul(_.NoH).div(M(4).mul(_.VoH)).mul(l));
8795
8795
  });
8796
- let b = _.NoL.div(Ii).mul(d), x = P(v.add(y).add(b), .001);
8796
+ let b = _.NoL.div(Ii).mul(d), x = F(v.add(y).add(b), .001);
8797
8797
  return ql({
8798
8798
  brdf: Tl(_, n),
8799
8799
  L: h,
@@ -8809,7 +8809,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8809
8809
  return p(_(T).greaterThan(1e-8), () => {
8810
8810
  let n = M(1).div(T), l = x.mul(w.y).sub(S.mul(C.y)).mul(n).toVar(), u = S.mul(C.x).sub(x.mul(w.x)).mul(n).toVar(), d = t.normal.toVar(), f = r.displacementScale.div(M(10)), h = e.direction, g = A(h, d).toVar(), v = h.sub(d.mul(g)).toVar(), y = A(l, l), b = A(l, u), E = A(u, u), D = y.mul(E).sub(b.mul(b)).toVar();
8811
8811
  p(_(D).greaterThan(1e-10), () => {
8812
- let e = M(1).div(D), n = A(v, l), x = A(v, u), S = H(E.mul(n).sub(b.mul(x)).mul(e), y.mul(x).sub(b.mul(n)).mul(e)).toVar(), C = g.toVar(), w = P(_(C), .001), T = f.div(w).toVar(), O = N(i.equal(N(0)).select(N(Yl), N(Xl))).toVar(), k = T.negate().toVar(), j = T.sub(k).div(M(O)).toVar(), ee = k.toVar(), te = k.toVar(), ne = N(0).toVar();
8812
+ let e = M(1).div(D), n = A(v, l), x = A(v, u), S = H(E.mul(n).sub(b.mul(x)).mul(e), y.mul(x).sub(b.mul(n)).mul(e)).toVar(), C = g.toVar(), w = F(_(C), .001), T = f.div(w).toVar(), O = N(i.equal(N(0)).select(N(Yl), N(Xl))).toVar(), k = T.negate().toVar(), j = T.sub(k).div(M(O)).toVar(), ee = k.toVar(), te = k.toVar(), ne = N(0).toVar();
8813
8813
  m({
8814
8814
  start: N(0),
8815
8815
  end: O,
@@ -8839,7 +8839,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8839
8839
  e.assign(i);
8840
8840
  });
8841
8841
  });
8842
- let i = e.add(n).mul(.5).toVar(), g = t.uv.add(S.mul(i)).toVar(), _ = t.hitPoint.add(h.mul(i)), v = ko(r.displacementMapIndex, g, r.displacementTransform), y = v.sub(.5).mul(f), b = fo(po(), r.displacementMapIndex).toVar(), x = v, w = ko(r.displacementMapIndex, g.add(H(b.x, 0)), r.displacementTransform), T = ko(r.displacementMapIndex, g.add(H(0, b.y)), r.displacementTransform), E = I(l).toVar(), D = I(u).toVar(), O = w.sub(x).mul(f), k = T.sub(x).mul(f), A = I(d.sub(E.mul(O)).sub(D.mul(k)));
8842
+ let i = e.add(n).mul(.5).toVar(), g = t.uv.add(S.mul(i)).toVar(), _ = t.hitPoint.add(h.mul(i)), v = ko(r.displacementMapIndex, g, r.displacementTransform), y = v.sub(.5).mul(f), b = fo(po(), r.displacementMapIndex).toVar(), x = v, w = ko(r.displacementMapIndex, g.add(H(b.x, 0)), r.displacementTransform), T = ko(r.displacementMapIndex, g.add(H(0, b.y)), r.displacementTransform), E = L(l).toVar(), D = L(u).toVar(), O = w.sub(x).mul(f), k = T.sub(x).mul(f), A = L(d.sub(E.mul(O)).sub(D.mul(k)));
8843
8843
  a.assign(_), o.assign(g), s.assign(A), c.assign(y);
8844
8844
  });
8845
8845
  });
@@ -8865,13 +8865,13 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8865
8865
  emissionOnly: "vec3",
8866
8866
  distance: "float"
8867
8867
  }), ru = f(([e, t, n, r]) => {
8868
- let i = Se(r.x), a = M(1).sub(i), o = r.y.mul(i), s = M(1).sub(a).sub(o);
8868
+ let i = xe(r.x), a = M(1).sub(i), o = r.y.mul(i), s = M(1).sub(a).sub(o);
8869
8869
  return e.mul(a).add(t.mul(o)).add(n.mul(s));
8870
- }), iu = f(([e, t, n]) => ae(O(t.sub(e), n.sub(e))).mul(.5)), au = f(([e, t, n, r]) => {
8871
- let i = I(e.sub(r)), a = I(t.sub(r)), o = I(n.sub(r)), s = _(A(i, O(a, o))), c = M(1).add(A(a, o)).add(A(i, o)).add(A(i, a));
8872
- return P(M(2).mul(b(s, P(c, M(1e-10)))), M(0));
8870
+ }), iu = f(([e, t, n]) => ie(O(t.sub(e), n.sub(e))).mul(.5)), au = f(([e, t, n, r]) => {
8871
+ let i = L(e.sub(r)), a = L(t.sub(r)), o = L(n.sub(r)), s = _(A(i, O(a, o))), c = M(1).add(A(a, o)).add(A(i, o)).add(A(i, a));
8872
+ return F(M(2).mul(b(s, F(c, M(1e-10)))), M(0));
8873
8873
  }), ou = f(([e, t, n, r]) => {
8874
- let i = t.sub(e), a = n.sub(e), o = n.sub(t), s = P(A(i, i), P(A(a, a), A(o, o))), c = O(i, a), l = A(c, c), u = T(!1).toVar();
8874
+ let i = t.sub(e), a = n.sub(e), o = n.sub(t), s = F(A(i, i), F(A(a, a), A(o, o))), c = O(i, a), l = A(c, c), u = T(!1).toVar();
8875
8875
  return p(l.greaterThan(1e-20), () => {
8876
8876
  let t = A(c, r.sub(e)), n = t.mul(t).div(l);
8877
8877
  u.assign(s.greaterThan(n));
@@ -8882,32 +8882,32 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
8882
8882
  solidAngle: "float",
8883
8883
  valid: "bool"
8884
8884
  }), cu = f(([e]) => {
8885
- let t = ae(e);
8886
- return L(t.greaterThan(1e-10), e.div(t), U(0));
8885
+ let t = ie(e);
8886
+ return R(t.greaterThan(1e-10), e.div(t), U(0));
8887
8887
  }), lu = f(([e, t, n, r, i]) => {
8888
8888
  let a = su({
8889
8889
  direction: U(0),
8890
8890
  position: U(0),
8891
8891
  solidAngle: M(0),
8892
8892
  valid: !1
8893
- }).toVar(), o = I(e.sub(r)), s = I(t.sub(r)), c = I(n.sub(r)), l = au(e, t, n, r);
8893
+ }).toVar(), o = L(e.sub(r)), s = L(t.sub(r)), c = L(n.sub(r)), l = au(e, t, n, r);
8894
8894
  return a.solidAngle.assign(l), p(l.greaterThan(1e-7), () => {
8895
- let u = E(A(cu(O(o, s)), cu(O(o, c))), -1, 1), d = Se(P(M(1).sub(u.mul(u)), 0)), f = v(u), m = i.x.mul(l).sub(f), h = be(m), g = D(m), y = E(A(o, s), -1, 1), b = g.sub(u), x = h.add(d.mul(y)), S = x.mul(g).sub(b.mul(h)).mul(u).sub(x), C = x.mul(h).add(b.mul(g)).mul(d), w = E(L(_(C).greaterThan(1e-10), S.div(C), M(1)), -1, 1), T = A(c, o), k = cu(c.sub(o.mul(T))), j = Se(P(M(1).sub(w.mul(w)), 0)), ee = I(o.mul(w).add(k.mul(j))), te = A(ee, s), ne = M(1).sub(i.y.mul(M(1).sub(te))), re = Se(P(M(1).sub(ne.mul(ne)), 0)), N = cu(ee.sub(s.mul(te))), ie = I(s.mul(ne).add(N.mul(re))), ae = I(O(t.sub(e), n.sub(e))), oe = A(ae, ie);
8896
- p(_(oe).greaterThan(1e-10), () => {
8897
- let t = A(ae, e.sub(r)).div(oe);
8895
+ let u = E(A(cu(O(o, s)), cu(O(o, c))), -1, 1), d = xe(F(M(1).sub(u.mul(u)), 0)), f = v(u), m = i.x.mul(l).sub(f), h = ye(m), g = D(m), y = E(A(o, s), -1, 1), b = g.sub(u), x = h.add(d.mul(y)), S = x.mul(g).sub(b.mul(h)).mul(u).sub(x), C = x.mul(h).add(b.mul(g)).mul(d), w = E(R(_(C).greaterThan(1e-10), S.div(C), M(1)), -1, 1), T = A(c, o), k = cu(c.sub(o.mul(T))), j = xe(F(M(1).sub(w.mul(w)), 0)), ee = L(o.mul(w).add(k.mul(j))), te = A(ee, s), ne = M(1).sub(i.y.mul(M(1).sub(te))), re = xe(F(M(1).sub(ne.mul(ne)), 0)), N = cu(ee.sub(s.mul(te))), P = L(s.mul(ne).add(N.mul(re))), ie = L(O(t.sub(e), n.sub(e))), ae = A(ie, P);
8896
+ p(_(ae).greaterThan(1e-10), () => {
8897
+ let t = A(ie, e.sub(r)).div(ae);
8898
8898
  p(t.greaterThan(0), () => {
8899
- a.direction.assign(ie), a.position.assign(r.add(ie.mul(t))), a.valid.assign(!0);
8899
+ a.direction.assign(P), a.position.assign(r.add(P.mul(t))), a.valid.assign(!0);
8900
8900
  });
8901
8901
  });
8902
8902
  }), a;
8903
8903
  }), uu = f(([e, t, n, r]) => {
8904
- let i = n.sub(t), a = r.sub(t), o = e.sub(t), s = A(i, i), c = A(i, a), l = A(a, a), u = A(o, i), d = A(o, a), f = M(1).div(P(s.mul(l).sub(c.mul(c)), M(1e-10))), p = l.mul(u).sub(c.mul(d)).mul(f), m = s.mul(d).sub(c.mul(u)).mul(f);
8904
+ let i = n.sub(t), a = r.sub(t), o = e.sub(t), s = A(i, i), c = A(i, a), l = A(a, a), u = A(o, i), d = A(o, a), f = M(1).div(F(s.mul(l).sub(c.mul(c)), M(1e-10))), p = l.mul(u).sub(c.mul(d)).mul(f), m = s.mul(d).sub(c.mul(u)).mul(f);
8905
8905
  return U(M(1).sub(p).sub(m), p, m);
8906
8906
  }), du = f(([e, t, n, r]) => {
8907
- let i = Se(r.x), a = M(1).sub(i), o = r.y.mul(i), s = M(1).sub(a).sub(o);
8908
- return I(e.mul(a).add(t.mul(o)).add(n.mul(s)));
8907
+ let i = xe(r.x), a = M(1).sub(i), o = r.y.mul(i), s = M(1).sub(a).sub(o);
8908
+ return L(e.mul(a).add(t.mul(o)).add(n.mul(s)));
8909
8909
  });
8910
- f(([e]) => e.emissiveIntensity.greaterThan(0).and(ae(e.emissive).greaterThan(0)));
8910
+ f(([e]) => e.emissiveIntensity.greaterThan(0).and(ie(e.emissive).greaterThan(0)));
8911
8911
  var fu = 8, pu = 2, mu = Cn({
8912
8912
  v0: "vec3",
8913
8913
  v1: "vec3",
@@ -8928,14 +8928,14 @@ var fu = 8, pu = 2, mu = Cn({
8928
8928
  materialIndex: N(c.z)
8929
8929
  });
8930
8930
  }), gu = f(([e, t, n, r, i, a, o]) => {
8931
- let s = mu.wrap(hu(e, i)), c = iu(s.v0, s.v1, s.v2), l = $(a, s.materialIndex, N(Gi.EMISSIVE_ROUGHNESS), Wi), u = $(a, s.materialIndex, N(Gi.IOR_TRANSMISSION), Wi), d = P(l.x.mul(.2126).add(l.y.mul(.7152)).add(l.z.mul(.0722)).mul(u.a).mul(c), M(1e-10)).div(P(o, M(1e-10))), f = M(0).toVar();
8931
+ let s = mu.wrap(hu(e, i)), c = iu(s.v0, s.v1, s.v2), l = $(a, s.materialIndex, N(Gi.EMISSIVE_ROUGHNESS), Wi), u = $(a, s.materialIndex, N(Gi.IOR_TRANSMISSION), Wi), d = F(l.x.mul(.2126).add(l.y.mul(.7152)).add(l.z.mul(.0722)).mul(u.a).mul(c), M(1e-10)).div(F(o, M(1e-10))), f = M(0).toVar();
8932
8932
  return p(ou(s.v0, s.v1, s.v2, r), () => {
8933
8933
  let e = au(s.v0, s.v1, s.v2, r);
8934
- f.assign(d.div(P(e, M(1e-10))));
8934
+ f.assign(d.div(F(e, M(1e-10))));
8935
8935
  }).Else(() => {
8936
- let e = I(O(s.v1.sub(s.v0), s.v2.sub(s.v0))), r = P(A(n.negate(), e), .001), i = t.mul(t), a = d.div(c);
8936
+ let e = L(O(s.v1.sub(s.v0), s.v2.sub(s.v0))), r = F(A(n.negate(), e), .001), i = t.mul(t), a = d.div(c);
8937
8937
  f.assign(a.mul(i).div(r));
8938
- }), P(f, Hi);
8938
+ }), F(f, Hi);
8939
8939
  }), _u = f(([e, t, n, r]) => {
8940
8940
  let i = N(0).toVar(), a = n.sub(1).toVar();
8941
8941
  return m(i.lessThan(a), () => {
@@ -8959,21 +8959,21 @@ var fu = 8, pu = 2, mu = Cn({
8959
8959
  valid: !1
8960
8960
  }).toVar();
8961
8961
  return p(a.greaterThan(N(0)), () => {
8962
- let l = _u(r, i, a, Y(n)).toVar(), u = i.add(l.mul(N(pu))), d = r.element(u), f = r.element(u.add(1)), m = N(d.r), h = P(d.g, M(1e-10)), g = f.xyz, _ = f.w, v = mu.wrap(hu(m, s)), y = H(Y(n).toVar(), Y(n).toVar()), b = I(O(v.v1.sub(v.v0), v.v2.sub(v.v0)));
8962
+ let l = _u(r, i, a, Y(n)).toVar(), u = i.add(l.mul(N(pu))), d = r.element(u), f = r.element(u.add(1)), m = N(d.r), h = F(d.g, M(1e-10)), g = f.xyz, _ = f.w, v = mu.wrap(hu(m, s)), y = H(Y(n).toVar(), Y(n).toVar()), b = L(O(v.v1.sub(v.v0), v.v2.sub(v.v0)));
8963
8963
  p(ou(v.v0, v.v1, v.v2, e), () => {
8964
8964
  let n = su.wrap(lu(v.v0, v.v1, v.v2, e, y));
8965
8965
  p(n.valid.and(n.solidAngle.greaterThan(1e-7)), () => {
8966
8966
  let r = n.direction, i = n.position, a = A(r, t), s = A(r, b.negate());
8967
8967
  p(a.greaterThan(0).and(s.greaterThan(0)), () => {
8968
- let t = uu(i, v.v0, v.v1, v.v2), a = I(v.n0.mul(t.x).add(v.n1.mul(t.y)).add(v.n2.mul(t.z))), l = ae(i.sub(e)), u = h.div(P(o, M(1e-10))).div(n.solidAngle);
8969
- c.position.assign(i), c.normal.assign(a), c.emission.assign(g), c.direction.assign(r), c.distance.assign(l), c.pdf.assign(P(u, Hi)), c.area.assign(_), c.cosThetaLight.assign(s), c.valid.assign(!0);
8968
+ let t = uu(i, v.v0, v.v1, v.v2), a = L(v.n0.mul(t.x).add(v.n1.mul(t.y)).add(v.n2.mul(t.z))), l = ie(i.sub(e)), u = h.div(F(o, M(1e-10))).div(n.solidAngle);
8969
+ c.position.assign(i), c.normal.assign(a), c.emission.assign(g), c.direction.assign(r), c.distance.assign(l), c.pdf.assign(F(u, Hi)), c.area.assign(_), c.cosThetaLight.assign(s), c.valid.assign(!0);
8970
8970
  });
8971
8971
  });
8972
8972
  }).Else(() => {
8973
- let n = ru(v.v0, v.v1, v.v2, y), r = du(v.n0, v.n1, v.n2, y), i = n.sub(e), a = A(i, i), s = Se(a), l = i.div(s), u = A(l, t), d = A(l, r.negate());
8973
+ let n = ru(v.v0, v.v1, v.v2, y), r = du(v.n0, v.n1, v.n2, y), i = n.sub(e), a = A(i, i), s = xe(a), l = i.div(s), u = A(l, t), d = A(l, r.negate());
8974
8974
  p(u.greaterThan(0).and(d.greaterThan(0)), () => {
8975
- let e = h.div(P(o, M(1e-10)).mul(_)).mul(a).div(d);
8976
- c.position.assign(n), c.normal.assign(r), c.emission.assign(g), c.direction.assign(l), c.distance.assign(s), c.pdf.assign(P(e, Hi)), c.area.assign(_), c.cosThetaLight.assign(d), c.valid.assign(!0);
8975
+ let e = h.div(F(o, M(1e-10)).mul(_)).mul(a).div(d);
8976
+ c.position.assign(n), c.normal.assign(r), c.emission.assign(g), c.direction.assign(l), c.distance.assign(s), c.pdf.assign(F(e, Hi)), c.area.assign(_), c.cosThetaLight.assign(d), c.valid.assign(!0);
8977
8977
  });
8978
8978
  });
8979
8979
  }), c;
@@ -8988,11 +8988,11 @@ var fu = 8, pu = 2, mu = Cn({
8988
8988
  let i = tu.wrap(vu(e, t, a, s, c, l, u, d));
8989
8989
  p(i.valid.and(i.pdf.greaterThan(0)), () => {
8990
8990
  h.hasEmissive.assign(!0), h.emissionOnly.assign(i.emission), h.distance.assign(i.distance);
8991
- let a = P(M(0), A(t, i.direction));
8991
+ let a = F(M(0), A(t, i.direction));
8992
8992
  p(a.greaterThan(0), () => {
8993
8993
  let s = m(e, t, r), c = e.add(s), l = i.distance.sub(.001), u = f(c, i.direction, l);
8994
8994
  p(u.greaterThan(0), () => {
8995
- let e = Oi.wrap(ta(t, n, i.direction, r)), s = Cl(r, e), c = Nl(r, e), l = L(c.greaterThan(0), Zi({
8995
+ let e = Oi.wrap(ta(t, n, i.direction, r)), s = Cl(r, e), c = Nl(r, e), l = R(c.greaterThan(0), Zi({
8996
8996
  pdf1: i.pdf,
8997
8997
  pdf2: c
8998
8998
  }), M(1));
@@ -9001,9 +9001,9 @@ var fu = 8, pu = 2, mu = Cn({
9001
9001
  });
9002
9002
  });
9003
9003
  }), h;
9004
- }), bu = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, p]) => nu.wrap(yu(e, t, n, r, i, a, o, s, c, l, u, d, f, p)).contribution), xu = 4, Su = 2, Cu = 32, wu = f(([e, t, n, r]) => L(t.greaterThan(r), M(1), t.mul(r).add(e.mul(n)))), Tu = f(([e, t, n, r]) => L(t.greaterThan(r), M(0), e.mul(r).sub(t.mul(n)))), Eu = f(([e, t, n, r, i, a]) => {
9005
- let o = e.add(n).mul(.5), s = ae(n.sub(e)), c = a.sub(o), l = P(A(c, c), M(1e-12)), u = P(l, s.mul(.5)), d = A(r, c.div(Se(l))), f = Se(P(M(1).sub(d.mul(d)), M(0))), p = s.mul(s).mul(.25), m = E(p.div(l), M(0), M(1)), h = L(l.lessThan(p), M(-1), Se(P(M(1).sub(m), M(0)))), g = Se(P(M(1).sub(h.mul(h)), M(0))), _ = Se(P(M(1).sub(i.mul(i)), M(0))), v = wu(f, d, _, i), y = wu(Tu(f, d, _, i), v, g, h);
9006
- return P(L(y.greaterThan(M(0)), t.mul(y).div(u), M(0)), M(0));
9004
+ }), bu = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, p]) => nu.wrap(yu(e, t, n, r, i, a, o, s, c, l, u, d, f, p)).contribution), xu = 4, Su = 2, Cu = 32, wu = f(([e, t, n, r]) => R(t.greaterThan(r), M(1), t.mul(r).add(e.mul(n)))), Tu = f(([e, t, n, r]) => R(t.greaterThan(r), M(0), e.mul(r).sub(t.mul(n)))), Eu = f(([e, t, n, r, i, a]) => {
9005
+ let o = e.add(n).mul(.5), s = ie(n.sub(e)), c = a.sub(o), l = F(A(c, c), M(1e-12)), u = F(l, s.mul(.5)), d = A(r, c.div(xe(l))), f = xe(F(M(1).sub(d.mul(d)), M(0))), p = s.mul(s).mul(.25), m = E(p.div(l), M(0), M(1)), h = R(l.lessThan(p), M(-1), xe(F(M(1).sub(m), M(0)))), g = xe(F(M(1).sub(h.mul(h)), M(0))), _ = xe(F(M(1).sub(i.mul(i)), M(0))), v = wu(f, d, _, i), y = wu(Tu(f, d, _, i), v, g, h);
9006
+ return F(R(y.greaterThan(M(0)), t.mul(y).div(u), M(0)), M(0));
9007
9007
  }), Du = f(([e, t, n, r, i, a, o]) => {
9008
9008
  let s = tu({
9009
9009
  position: U(0),
@@ -9033,36 +9033,36 @@ var fu = 8, pu = 2, mu = Cn({
9033
9033
  });
9034
9034
  });
9035
9035
  }), p(u, () => {
9036
- let u = l.mul(N(xu)), f = r.element(u), h = r.element(u.add(N(2))), g = N(h.x), _ = N(h.y), v = P(f.w, M(1e-10)), y = Y(n).mul(v), b = M(0).toVar(), x = g.add(_.sub(N(1))).toVar(), S = M(1e-10).toVar();
9036
+ let u = l.mul(N(xu)), f = r.element(u), h = r.element(u.add(N(2))), g = N(h.x), _ = N(h.y), v = F(f.w, M(1e-10)), y = Y(n).mul(v), b = M(0).toVar(), x = g.add(_.sub(N(1))).toVar(), S = M(1e-10).toVar();
9037
9037
  m({
9038
9038
  start: N(0),
9039
9039
  end: _
9040
9040
  }, ({ i: e }) => {
9041
- let t = g.add(e), n = a.add(t.mul(N(Su))), r = P(i.element(n).g, M(0));
9041
+ let t = g.add(e), n = a.add(t.mul(N(Su))), r = F(i.element(n).g, M(0));
9042
9042
  b.addAssign(r), p(b.greaterThanEqual(y).and(r.greaterThan(M(0))), () => {
9043
9043
  x.assign(t), S.assign(r), d();
9044
9044
  });
9045
9045
  }), c.mulAssign(S.div(v));
9046
- let C = a.add(x.mul(N(Su))), w = i.element(C), T = i.element(C.add(N(1))), E = N(w.r), D = T.xyz, k = T.w, j = mu.wrap(hu(E, o)), ee = H(Y(n).toVar(), Y(n).toVar()), te = I(O(j.v1.sub(j.v0), j.v2.sub(j.v0)));
9046
+ let C = a.add(x.mul(N(Su))), w = i.element(C), T = i.element(C.add(N(1))), E = N(w.r), D = T.xyz, k = T.w, j = mu.wrap(hu(E, o)), ee = H(Y(n).toVar(), Y(n).toVar()), te = L(O(j.v1.sub(j.v0), j.v2.sub(j.v0)));
9047
9047
  p(ou(j.v0, j.v1, j.v2, e), () => {
9048
9048
  let n = su.wrap(lu(j.v0, j.v1, j.v2, e, ee));
9049
9049
  p(n.valid.and(n.solidAngle.greaterThan(M(1e-7))), () => {
9050
9050
  let r = n.direction, i = n.position, a = A(r, t), o = A(r, te.negate());
9051
9051
  p(a.greaterThan(M(0)).and(o.greaterThan(M(0))), () => {
9052
- let t = uu(i, j.v0, j.v1, j.v2), a = I(j.n0.mul(t.x).add(j.n1.mul(t.y)).add(j.n2.mul(t.z))), l = ae(i.sub(e)), u = c.div(P(n.solidAngle, M(1e-10)));
9053
- s.position.assign(i), s.normal.assign(a), s.emission.assign(D), s.direction.assign(r), s.distance.assign(l), s.pdf.assign(P(u, Hi)), s.area.assign(k), s.cosThetaLight.assign(o), s.valid.assign(!0);
9052
+ let t = uu(i, j.v0, j.v1, j.v2), a = L(j.n0.mul(t.x).add(j.n1.mul(t.y)).add(j.n2.mul(t.z))), l = ie(i.sub(e)), u = c.div(F(n.solidAngle, M(1e-10)));
9053
+ s.position.assign(i), s.normal.assign(a), s.emission.assign(D), s.direction.assign(r), s.distance.assign(l), s.pdf.assign(F(u, Hi)), s.area.assign(k), s.cosThetaLight.assign(o), s.valid.assign(!0);
9054
9054
  });
9055
9055
  });
9056
9056
  }).Else(() => {
9057
- let n = ru(j.v0, j.v1, j.v2, ee), r = du(j.n0, j.n1, j.n2, ee), i = n.sub(e), a = A(i, i), o = Se(a), l = i.div(o), u = A(l, t), d = A(l, r.negate());
9057
+ let n = ru(j.v0, j.v1, j.v2, ee), r = du(j.n0, j.n1, j.n2, ee), i = n.sub(e), a = A(i, i), o = xe(a), l = i.div(o), u = A(l, t), d = A(l, r.negate());
9058
9058
  p(u.greaterThan(M(0)).and(d.greaterThan(M(0))), () => {
9059
- let e = c.div(P(k, M(1e-10))).mul(a).div(d);
9060
- s.position.assign(n), s.normal.assign(r), s.emission.assign(D), s.direction.assign(l), s.distance.assign(o), s.pdf.assign(P(e, Hi)), s.area.assign(k), s.cosThetaLight.assign(d), s.valid.assign(!0);
9059
+ let e = c.div(F(k, M(1e-10))).mul(a).div(d);
9060
+ s.position.assign(n), s.normal.assign(r), s.emission.assign(D), s.direction.assign(l), s.distance.assign(o), s.pdf.assign(F(e, Hi)), s.area.assign(k), s.cosThetaLight.assign(d), s.valid.assign(!0);
9061
9061
  });
9062
9062
  });
9063
9063
  }), s;
9064
9064
  }), Ou = f(([e, t, n, r, i, a, o, s]) => {
9065
- let c = M(0).toVar(), l = N(e).toVar(), u = i.element(o.add(l.shiftRight(N(2)))), f = l.bitAnd(N(3)), h = L(f.equal(N(0)), u.x, L(f.equal(N(1)), u.y, L(f.equal(N(2)), u.z, u.w))).toVar();
9065
+ let c = M(0).toVar(), l = N(e).toVar(), u = i.element(o.add(l.shiftRight(N(2)))), f = l.bitAnd(N(3)), h = R(f.equal(N(0)), u.x, R(f.equal(N(1)), u.y, R(f.equal(N(2)), u.z, u.w))).toVar();
9066
9066
  return p(h.greaterThanEqual(M(0)), () => {
9067
9067
  let e = N(h).toVar(), o = M(1).toVar(), u = N(0).toVar(), f = N(0).toVar(), g = T(!1).toVar();
9068
9068
  m(Cu, () => {
@@ -9086,30 +9086,30 @@ var fu = 8, pu = 2, mu = Cn({
9086
9086
  });
9087
9087
  }), f.addAssign(N(1));
9088
9088
  }), p(g.and(o.greaterThan(M(0))), () => {
9089
- let e = u.mul(N(xu)), f = i.element(e), h = i.element(e.add(N(2))), g = N(h.x), _ = N(h.y), v = P(f.w, M(1e-10)), y = M(0).toVar();
9089
+ let e = u.mul(N(xu)), f = i.element(e), h = i.element(e.add(N(2))), g = N(h.x), _ = N(h.y), v = F(f.w, M(1e-10)), y = M(0).toVar();
9090
9090
  m({
9091
9091
  start: N(0),
9092
9092
  end: _
9093
9093
  }, ({ i: e }) => {
9094
9094
  let t = g.add(e), n = i.element(a.add(t.mul(N(Su))));
9095
9095
  p(N(n.r).equal(l), () => {
9096
- y.assign(P(n.g, M(0))), d();
9096
+ y.assign(F(n.g, M(0))), d();
9097
9097
  });
9098
9098
  }), o.mulAssign(y.div(v));
9099
9099
  let b = mu.wrap(hu(l, s));
9100
9100
  p(ou(b.v0, b.v1, b.v2, r), () => {
9101
9101
  let e = au(b.v0, b.v1, b.v2, r);
9102
- c.assign(o.div(P(e, M(1e-10))));
9102
+ c.assign(o.div(F(e, M(1e-10))));
9103
9103
  }).Else(() => {
9104
- let e = I(O(b.v1.sub(b.v0), b.v2.sub(b.v0))), r = P(A(n.negate(), e), M(.001)), i = iu(b.v0, b.v1, b.v2), a = t.mul(t), s = o.div(P(i, M(1e-10)));
9104
+ let e = L(O(b.v1.sub(b.v0), b.v2.sub(b.v0))), r = F(A(n.negate(), e), M(.001)), i = iu(b.v0, b.v1, b.v2), a = t.mul(t), s = o.div(F(i, M(1e-10)));
9105
9105
  c.assign(s.mul(a).div(r));
9106
9106
  });
9107
9107
  });
9108
- }), P(c, Hi);
9108
+ }), F(c, Hi);
9109
9109
  }), ku = 0x8ac7230489e80000, Au = 1e-4, ju = 1e-4, Mu = .001;
9110
9110
  function Nu(e) {
9111
- let { bvhBuffer: t, triangleBuffer: n, materialBuffer: r, envCDFTexture: i, lightBuffer: a, rayBufferRW: o, rngBufferRW: s, hitBufferRO: c, gBufferRW: l, counters: u, activeIndicesRO: d, envTexture: g, environmentIntensity: _, envMatrix: v, enableEnvironmentLight: y, useEnvMapIS: b, groundProjectionEnabled: x, groundProjectionRadius: C, groundProjectionHeight: w, groundProjectionLevel: D, enableGroundCatcher: O, groundCatcherHeight: k, envTotalSum: ee, envCompensationDelta: te, envResolution: ne, directionalLightsBuffer: ie, numDirectionalLights: oe, areaLightsBuffer: se, numAreaLights: le, pointLightsBuffer: ue, numPointLights: F, spotLightsBuffer: de, numSpotLights: fe, maxBounceCount: pe, maxSubsurfaceSteps: me, currentBounce: he, transparentBackground: ge, backgroundIntensity: _e, backgroundColor: ye, backgroundBlurriness: be, backgroundBlurSamples: xe, showBackground: Se, globalIlluminationIntensity: Ce, cameraProjectionMatrix: we, cameraViewMatrix: Te, fireflyThreshold: Ee, frame: De, resolution: Oe, emissiveTriangleCount: ke, emissiveVec4Offset: R, emissiveTotalPower: Ae, emissiveBoost: je, totalTriangleCount: B, enableEmissiveTriangleSampling: V, lightBVHNodeCount: Me, reverseMapVec4Offset: Ne, maxRayCount: Pe, auxGBufferEnabled: Fe } = e, Ie = Fe.greaterThan(z(0)), Le = a !== void 0, G = (e, t, n, r) => {
9112
- let i = I(e).toVar(), a = P(n, N(1)).toVar(), o = U(0).toVar();
9111
+ let { bvhBuffer: t, triangleBuffer: n, materialBuffer: r, envCDFTexture: i, lightBuffer: a, rayBufferRW: o, rngBufferRW: s, hitBufferRO: c, gBufferRW: l, counters: u, activeIndicesRO: d, envTexture: g, environmentIntensity: _, envMatrix: v, enableEnvironmentLight: y, useEnvMapIS: b, groundProjectionEnabled: x, groundProjectionRadius: C, groundProjectionHeight: w, groundProjectionLevel: D, enableGroundCatcher: O, groundCatcherHeight: k, envTotalSum: ee, envCompensationDelta: te, envResolution: ne, directionalLightsBuffer: P, numDirectionalLights: ae, areaLightsBuffer: oe, numAreaLights: ce, pointLightsBuffer: le, numPointLights: I, spotLightsBuffer: ue, numSpotLights: de, maxBounceCount: fe, maxSubsurfaceSteps: pe, currentBounce: me, transparentBackground: he, backgroundIntensity: ge, backgroundColor: ve, backgroundBlurriness: ye, backgroundBlurSamples: be, showBackground: xe, globalIlluminationIntensity: Se, cameraProjectionMatrix: Ce, cameraViewMatrix: we, fireflyThreshold: Te, frame: Ee, resolution: De, emissiveTriangleCount: Oe, emissiveVec4Offset: ke, emissiveTotalPower: Ae, emissiveBoost: je, totalTriangleCount: B, enableEmissiveTriangleSampling: V, lightBVHNodeCount: Me, reverseMapVec4Offset: Ne, maxRayCount: Pe, auxGBufferEnabled: Fe } = e, Ie = Fe.greaterThan(z(0)), Le = a !== void 0, G = (e, t, n, r) => {
9112
+ let i = L(e).toVar(), a = F(n, N(1)).toVar(), o = U(0).toVar();
9113
9113
  return m({
9114
9114
  start: N(0),
9115
9115
  end: a,
@@ -9119,7 +9119,7 @@ function Nu(e) {
9119
9119
  let e = os(i, t, H(Y(r).toVar(), Y(r).toVar())).toVar();
9120
9120
  o.addAssign(bl({
9121
9121
  tex: g,
9122
- samp: ve(g),
9122
+ samp: _e(g),
9123
9123
  direction: e,
9124
9124
  environmentMatrix: v,
9125
9125
  environmentIntensity: _,
@@ -9136,24 +9136,24 @@ function Nu(e) {
9136
9136
  p(Fe.bitAnd(z(Kc.ACTIVE)).equal(z(0)), () => {
9137
9137
  h();
9138
9138
  });
9139
- let Re = Fe.bitAnd(z(Kc.REDIRECTED)).equal(z(0)).toVar(), ze = gc(o, B).toVar(), K = _c(o, B).toVar(), Be = yc(o, B).toVar(), Ve = xc(o, B).toVar(), He = B, Ue = s.element(B).toVar(), We = jc(c, B).toVar(), Ge = Pc(c, B).toVar(), Ke = Nc(c, B).toVar(), qe = Fc(c, B).toVar(), Je = Mc(c, B).toVar(), Ye = Vc(o, B).toVar(), Xe = N(he).toVar(), Ze = Hc(o, B).toVar();
9139
+ let Re = Fe.bitAnd(z(Kc.REDIRECTED)).equal(z(0)).toVar(), ze = gc(o, B).toVar(), K = _c(o, B).toVar(), Be = yc(o, B).toVar(), Ve = xc(o, B).toVar(), He = B, Ue = s.element(B).toVar(), We = jc(c, B).toVar(), Ge = Pc(c, B).toVar(), Ke = Nc(c, B).toVar(), qe = Fc(c, B).toVar(), Je = Mc(c, B).toVar(), Ye = Vc(o, B).toVar(), Xe = N(me).toVar(), Ze = Hc(o, B).toVar();
9140
9140
  p(O.and(Xe.equal(0)), () => {
9141
9141
  let e = K.y.toVar();
9142
9142
  p(e.abs().greaterThan(M(zi)), () => {
9143
9143
  let a = k.sub(ze.y).div(e).toVar();
9144
9144
  p(a.greaterThan(M(Au)).and(a.lessThan(We)), () => {
9145
- let e = ze.add(K.mul(a)).toVar(), c = U(0, 1, 0), u = K.negate().toVar(), d = yi.wrap(la()).toVar(), f = La(c, H(Y(Ue).toVar(), Y(Ue).toVar())).toVar(), m = f.y.mul(Li).toVar(), b = U(Li), S = Si.wrap(Il(e, c, d, u, f, m, b, Xe, Ue, ie, oe, se, le, ue, F, de, fe, t, n, r, g, _, v, i, ee, te, ne, y, T(!0))).toVar(), O = P(A(S.shadowed, Ui), M(0)), k = P(A(S.unoccluded, Ui), M(0)).toVar(), j = E(O.div(P(k, M(ju))), 0, 1).toVar();
9145
+ let e = ze.add(K.mul(a)).toVar(), c = U(0, 1, 0), u = K.negate().toVar(), d = yi.wrap(la()).toVar(), f = La(c, H(Y(Ue).toVar(), Y(Ue).toVar())).toVar(), m = f.y.mul(Li).toVar(), b = U(Li), S = Si.wrap(Il(e, c, d, u, f, m, b, Xe, Ue, P, ae, oe, ce, le, I, ue, de, t, n, r, g, _, v, i, ee, te, ne, y, T(!0))).toVar(), O = F(A(S.shadowed, Ui), M(0)), k = F(A(S.unoccluded, Ui), M(0)).toVar(), j = E(O.div(F(k, M(ju))), 0, 1).toVar();
9146
9146
  p(k.lessThan(M(Mu)), () => {
9147
9147
  j.assign(1);
9148
9148
  });
9149
9149
  let re = Sl(ze, K, x, C, w, D).toVar(), N = U(0).toVar();
9150
- p(Se, () => {
9151
- p(be.greaterThan(0), () => {
9152
- N.assign(G(re, be.mul(1.3), xe, Ue));
9150
+ p(xe, () => {
9151
+ p(ye.greaterThan(0), () => {
9152
+ N.assign(G(re, ye.mul(1.3), be, Ue));
9153
9153
  }).Else(() => {
9154
9154
  N.assign(bl({
9155
9155
  tex: g,
9156
- samp: ve(g),
9156
+ samp: _e(g),
9157
9157
  direction: re,
9158
9158
  environmentMatrix: v,
9159
9159
  environmentIntensity: _,
@@ -9161,69 +9161,74 @@ function Nu(e) {
9161
9161
  }).xyz);
9162
9162
  });
9163
9163
  });
9164
- let ae = L(Se, N.mul(_e), ye), ce = L(ge, U(0), ae.mul(j)), I = L(ge, M(1).sub(j), M(1));
9164
+ let ie = R(xe, N.mul(ge), ve), se = R(he, U(0), ie.mul(j)), L = R(he, M(1).sub(j), M(1));
9165
9165
  p(Ie, () => {
9166
9166
  Cc(l, He, c, Gl({
9167
9167
  worldPos: e,
9168
- cameraProjectionMatrix: we,
9169
- cameraViewMatrix: Te
9168
+ cameraProjectionMatrix: Ce,
9169
+ cameraViewMatrix: we
9170
9170
  }), U(1));
9171
- }), Ac(o, B, W(ce, I)), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), s.element(B).assign(Ue), h();
9171
+ }), Ac(o, B, W(se, L)), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), s.element(B).assign(Ue), h();
9172
9172
  });
9173
9173
  });
9174
9174
  }), p(We.greaterThan(ku), () => {
9175
- let e = Re.and(Se), t = Re.not().and(y);
9175
+ let e = Re.and(xe), t = Re.not().and(y), n = U(0).toVar();
9176
9176
  p(e.or(t), () => {
9177
9177
  let e = K.toVar();
9178
9178
  p(Re, () => {
9179
9179
  e.assign(Sl(ze, K, x, C, w, D));
9180
9180
  });
9181
9181
  let t = U(0).toVar();
9182
- p(Re.and(be.greaterThan(0)), () => {
9183
- t.assign(G(e, be.mul(1.3), xe, Ue));
9182
+ p(Re.and(ye.greaterThan(0)), () => {
9183
+ t.assign(G(e, ye.mul(1.3), be, Ue));
9184
9184
  }).Else(() => {
9185
9185
  t.assign(bl({
9186
9186
  tex: g,
9187
- samp: ve(g),
9187
+ samp: _e(g),
9188
9188
  direction: e,
9189
9189
  environmentMatrix: v,
9190
9190
  environmentIntensity: _,
9191
9191
  enableEnvironmentLight: M(1)
9192
9192
  }).xyz);
9193
- });
9194
- let n = M(1).toVar();
9193
+ }), n.assign(E(t, U(0), U(1)));
9194
+ let r = M(1).toVar();
9195
9195
  p(Re.not().and(b), () => {
9196
9196
  let e = bc(o, B);
9197
9197
  p(e.greaterThan(0), () => {
9198
9198
  let t = vl(g, K, v, ee, te, ne).w;
9199
9199
  p(t.greaterThan(0), () => {
9200
- n.assign(Qi({
9200
+ r.assign(Qi({
9201
9201
  pdf1: e,
9202
9202
  pdf2: t
9203
9203
  }));
9204
9204
  });
9205
9205
  });
9206
9206
  });
9207
- let r = L(Re.not(), Ce, M(1)), i = L(Re, _e, n.mul(r)), a = L(Re, M(0), M(Xe));
9208
- Ve.assign(W(Ve.xyz.add(Wl(Be.mul(t).mul(i), a, Ee, N(De))), Ve.w));
9209
- }), p(Re.and(Se.not()).and(ge.not()), () => {
9210
- Ve.assign(W(Ve.xyz.add(Be.mul(ye)), Ve.w));
9211
- }), p(ge.and(Fe.bitAnd(z(Kc.HAS_HIT_OPAQUE)).equal(z(0))), () => {
9207
+ let i = R(Re.not(), Se, M(1)), a = R(Re, ge, r.mul(i)), s = R(Re, M(0), M(Xe));
9208
+ Ve.assign(W(Ve.xyz.add(Wl(Be.mul(t).mul(a), s, Te, N(Ee))), Ve.w));
9209
+ }), p(Re.and(xe.not()).and(he.not()), () => {
9210
+ Ve.assign(W(Ve.xyz.add(Be.mul(ve)), Ve.w));
9211
+ }), p(he.and(Fe.bitAnd(z(Kc.HAS_HIT_OPAQUE)).equal(z(0))), () => {
9212
9212
  Ve.w.assign(0);
9213
+ }), p(Ie.and(Fe.bitAnd(z(Kc.AUX_LOCKED)).equal(z(0))).and(Fe.bitAnd(z(Kc.REDIRECTED)).notEqual(z(0))), () => {
9214
+ let e = wc(l, He);
9215
+ p(A(Ec(e), U(1)).lessThan(M(1e-4)), () => {
9216
+ Cc(l, He, L(K), Tc(e).w, n);
9217
+ });
9213
9218
  }), Ac(o, B, Ve), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), h();
9214
9219
  });
9215
- let Qe = ze.add(K.mul(We)).toVar(), $e = I(Ge).toVar(), et = Lc(o, B), tt = N(et.stackDepth).toVar(), nt = et.ior1.toVar(), rt = et.ior2.toVar(), it = et.ior3.toVar(), at = N(et.transTraversals).toVar(), ot = M(et.wavelength).toVar();
9220
+ let Qe = ze.add(K.mul(We)).toVar(), $e = L(Ge).toVar(), et = Lc(o, B), tt = N(et.stackDepth).toVar(), nt = et.ior1.toVar(), rt = et.ior2.toVar(), it = et.ior3.toVar(), at = N(et.transTraversals).toVar(), ot = M(et.wavelength).toVar();
9216
9221
  p(tt.greaterThan(0), () => {
9217
9222
  let e = zc(o, B).toVar(), t = Uc(o, B), n = t.sigmaS.toVar(), r = t.g.toVar();
9218
- p(P(P(n.x, n.y), n.z).lessThanEqual(0), () => {
9223
+ p(F(F(n.x, n.y), n.z).lessThanEqual(0), () => {
9219
9224
  Be.mulAssign(j(e.mul(We).negate()));
9220
9225
  }).Else(() => {
9221
9226
  let t = e.add(n), i = Ba.wrap(Wa(t, n, Be, We, Ue)).toVar();
9222
9227
  Be.mulAssign(i.weight), p(i.didScatter, () => {
9223
9228
  let e = H(Y(Ue), Y(Ue)), t = ze.add(K.mul(i.t)), n = Ua(K, r, e).toVar();
9224
9229
  Ze.addAssign(1);
9225
- let a = E(P(P(Be.x, Be.y), Be.z), .02, 1).toVar();
9226
- p(Ze.greaterThanEqual(me).or(Y(Ue).greaterThan(a)).toVar(), () => {
9230
+ let a = E(F(F(Be.x, Be.y), Be.z), .02, 1).toVar();
9231
+ p(Ze.greaterThanEqual(pe).or(Y(Ue).greaterThan(a)).toVar(), () => {
9227
9232
  Ac(o, B, Ve), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), s.element(B).assign(Ue), h();
9228
9233
  }), Be.divAssign(a), Fe.assign(Fe.bitOr(z(Kc.REDIRECTED))), Dc(o, B, t, Ye, Ze), Oc(o, B, n, Fe), kc(o, B, Be, bc(o, B)), Ac(o, B, Ve), s.element(B).assign(Ue), h();
9229
9234
  });
@@ -9262,16 +9267,20 @@ function Nu(e) {
9262
9267
  q.transmission.assign(dt.transmission), q.clearcoat.assign(dt.clearcoat), q.clearcoatRoughness.assign(dt.clearcoatRoughness), q.sheenColor.assign(dt.sheenColor), q.sheenRoughness.assign(dt.sheenRoughness), q.iridescence.assign(dt.iridescence), q.iridescenceThicknessRange.assign(H(q.iridescenceThicknessRange.x, dt.iridescenceThickness)), q.specularIntensity.assign(dt.specularIntensity), q.specularColor.assign(dt.specularColor);
9263
9268
  let J = lt.albedo.toVar();
9264
9269
  p(q.displacementMapIndex.greaterThanEqual(N(0)).and(q.displacementScale.greaterThan(0)), () => {
9265
- $e.assign(I(ct.add(lt.normal.sub(I(Ge)))));
9270
+ $e.assign(L(ct.add(lt.normal.sub(L(Ge)))));
9266
9271
  }).Else(() => {
9267
9272
  $e.assign(lt.normal);
9268
9273
  }), p(Xe.equal(0).and(Ie), () => {
9269
9274
  let e = Gl({
9270
9275
  worldPos: Qe,
9271
- cameraProjectionMatrix: we,
9272
- cameraViewMatrix: Te
9276
+ cameraProjectionMatrix: Ce,
9277
+ cameraViewMatrix: we
9278
+ });
9279
+ p(q.alphaMode.equal(N(2)), () => {
9280
+ Cc(l, He, $e, e, J.xyz), Fe.assign(Fe.bitOr(z(Kc.AUX_LOCKED)));
9281
+ }).Else(() => {
9282
+ Cc(l, He, U(0, 0, 1), e, U(0));
9273
9283
  });
9274
- Cc(l, He, U(0, 0, 1), e, U(0));
9275
9284
  });
9276
9285
  let ft = M(1).toVar(), pt = M(1).toVar();
9277
9286
  p(tt.equal(1), () => {
@@ -9295,7 +9304,7 @@ function Nu(e) {
9295
9304
  rt.assign(q.ior);
9296
9305
  }), p(tt.equal(3), () => {
9297
9306
  it.assign(q.ior);
9298
- }), Bc(o, B, L(q.attenuationDistance.greaterThan(0), ce(P(q.attenuationColor, U(.001))).negate().div(q.attenuationDistance), U(0))), Wc(o, B, U(0), M(0));
9307
+ }), Bc(o, B, R(q.attenuationDistance.greaterThan(0), se(F(q.attenuationColor, U(.001))).negate().div(q.attenuationDistance), U(0))), Wc(o, B, U(0), M(0));
9299
9308
  });
9300
9309
  }).Else(() => {
9301
9310
  p(tt.greaterThan(0), () => {
@@ -9322,21 +9331,24 @@ function Nu(e) {
9322
9331
  });
9323
9332
  }), p(ht.isTransmissive.and(at.greaterThan(0)), () => {
9324
9333
  at.subAssign(1);
9325
- }), Be.mulAssign(ht.throughput);
9326
- let e = L(ht.entering, $e, $e.negate()), t = L(ht.didReflect, e, K), n = Qe.add(t.mul(.001));
9334
+ }), Be.mulAssign(ht.throughput), p(Ie.and(Fe.bitAnd(z(Kc.AUX_LOCKED)).equal(z(0))).and(ht.isTransmissive).and(ht.isAlphaSkip.not()).and(ht.isSubsurface.not()).and(q.roughness.greaterThan(.05).or(q.dispersion.greaterThan(0))), () => {
9335
+ let e = Tc(wc(l, He)).w;
9336
+ Cc(l, He, $e, e, J.xyz), Fe.assign(Fe.bitOr(z(Kc.AUX_LOCKED)));
9337
+ });
9338
+ let e = R(ht.entering, $e, $e.negate()), t = R(ht.didReflect, e, K), n = Qe.add(t.mul(.001));
9327
9339
  p(ht.isAlphaSkip.not(), () => {
9328
9340
  Fe.assign(Fe.bitOr(z(Kc.REDIRECTED)));
9329
9341
  }), Dc(o, B, n, Ye, Ze), Oc(o, B, ht.direction, Fe), kc(o, B, Be, bc(o, B)), Ac(o, B, Ve), Rc(o, B, z(tt), z(at), nt, rt, it, z(ot.add(.5))), s.element(B).assign(Ue), h();
9330
9342
  }), Fe.assign(Fe.bitOr(z(Kc.HAS_HIT_OPAQUE | Kc.REDIRECTED)));
9331
9343
  let gt = lt.emissive.toVar();
9332
- p(ae(gt).greaterThan(0), () => {
9333
- let e = L(Re.not(), Ce, M(1)), t = M(1).toVar();
9334
- Le && p(V.equal(N(1)).and(ke.greaterThan(N(0))).and(Xe.greaterThan(0)), () => {
9344
+ p(ie(gt).greaterThan(0), () => {
9345
+ let e = R(Re.not(), Se, M(1)), t = M(1).toVar();
9346
+ Le && p(V.equal(N(1)).and(Oe.greaterThan(N(0))).and(Xe.greaterThan(0)), () => {
9335
9347
  let e = bc(o, B);
9336
9348
  p(e.greaterThan(0), () => {
9337
9349
  let i = M(0).toVar();
9338
9350
  p(Me.greaterThan(N(0)), () => {
9339
- i.assign(Ou(N(Je), We, K, ze, a, R, Ne, n));
9351
+ i.assign(Ou(N(Je), We, K, ze, a, ke, Ne, n));
9340
9352
  }).Else(() => {
9341
9353
  i.assign(gu(N(Je), We, K, ze, n, r, Ae));
9342
9354
  }), t.assign(Zi({
@@ -9344,7 +9356,7 @@ function Nu(e) {
9344
9356
  pdf2: i
9345
9357
  }));
9346
9358
  });
9347
- }), Ve.assign(W(Ve.xyz.add(Wl(gt.mul(Be).mul(e).mul(t), M(Xe), Ee, N(De))), Ve.w));
9359
+ }), Ve.assign(W(Ve.xyz.add(Wl(gt.mul(Be).mul(e).mul(t), M(Xe), Te, N(Ee))), Ve.w));
9348
9360
  });
9349
9361
  let _t = K.negate().toVar();
9350
9362
  p(A($e, _t).lessThan(0), () => {
@@ -9357,7 +9369,7 @@ function Nu(e) {
9357
9369
  Fe.assign(Fe.bitOr(z(Kc.AUX_LOCKED)));
9358
9370
  });
9359
9371
  });
9360
- let vt = ji.wrap(aa(q.metalness, q.roughness, q.transmission, q.clearcoat, q.emissive, q.subsurface)).toVar(), yt = N(Oe.x).toVar(), bt = Jn(H(M(N(He).mod(yt)).add(.5), M(N(He).div(yt)).add(.5)), N(0), Xe, Ue, N(-1), Oe, De).toVar(), xt = Ti({
9372
+ let vt = ji.wrap(aa(q.metalness, q.roughness, q.transmission, q.clearcoat, q.emissive, q.subsurface)).toVar(), yt = N(De.x).toVar(), bt = Jn(H(M(N(He).mod(yt)).add(.5), M(N(He).div(yt)).add(.5)), N(0), Xe, Ue, N(-1), De, Ee).toVar(), xt = Ti({
9361
9373
  specular: M(0),
9362
9374
  diffuse: M(0),
9363
9375
  sheen: M(0),
@@ -9398,35 +9410,35 @@ function Nu(e) {
9398
9410
  let e = wi.wrap(Ul(_t, $e, q, bt, Ue, vt, !1, xt, !1, St));
9399
9411
  Ct.assign(e.direction), wt.assign(e.value), Tt.assign(e.pdf);
9400
9412
  });
9401
- let Et = Si.wrap(Il(Qe, $e, q, _t, Ct, Tt, wt, Xe, Ue, ie, oe, se, le, ue, F, de, fe, t, n, r, g, _, v, i, ee, te, ne, y, T(!1))).shadowed.toVar(), Dt = L(Xe.greaterThan(0), Ce, M(1));
9402
- Ve.assign(W(Ve.xyz.add(Wl(Be.mul(Et).mul(Dt), M(Xe), Ee, N(De))), Ve.w)), Le && p(V.equal(N(1)).and(ke.greaterThan(N(0))), () => {
9413
+ let Et = Si.wrap(Il(Qe, $e, q, _t, Ct, Tt, wt, Xe, Ue, P, ae, oe, ce, le, I, ue, de, t, n, r, g, _, v, i, ee, te, ne, y, T(!1))).shadowed.toVar(), Dt = R(Xe.greaterThan(0), Se, M(1));
9414
+ Ve.assign(W(Ve.xyz.add(Wl(Be.mul(Et).mul(Dt), M(Xe), Te, N(Ee))), Ve.w)), Le && p(V.equal(N(1)).and(Oe.greaterThan(N(0))), () => {
9403
9415
  let e = f(([e, i, a]) => Po(e, i, a, fl, t, n, r));
9404
9416
  p(Me.greaterThan(N(0)), () => {
9405
- let t = tu.wrap(Du(Qe, $e, Ue, a, a, R, n));
9417
+ let t = tu.wrap(Du(Qe, $e, Ue, a, a, ke, n));
9406
9418
  p(Xe.greaterThan(N(1)).and(q.roughness.greaterThan(.9)).and(q.metalness.lessThan(.1)).not().and(t.valid).and(t.pdf.greaterThan(0)), () => {
9407
- let n = P(M(0), A($e, t.direction));
9419
+ let n = F(M(0), A($e, t.direction));
9408
9420
  p(n.greaterThan(0), () => {
9409
9421
  let r = Fo(Qe, $e, q), i = Qe.add(r), a = t.distance.sub(.001), o = e(i, t.direction, a);
9410
9422
  p(o.greaterThan(0), () => {
9411
- let e = wl(_t, t.direction, $e, q), r = Pl(_t, t.direction, $e, q), i = L(r.greaterThan(0), Zi({
9423
+ let e = wl(_t, t.direction, $e, q), r = Pl(_t, t.direction, $e, q), i = R(r.greaterThan(0), Zi({
9412
9424
  pdf1: t.pdf,
9413
9425
  pdf2: r
9414
9426
  }), M(1)), a = t.emission.mul(e).mul(n).div(t.pdf).mul(o).mul(je).mul(i);
9415
- Ve.assign(W(Ve.xyz.add(Wl(a.mul(Be).mul(Dt), M(Xe), Ee, N(De))), Ve.w));
9427
+ Ve.assign(W(Ve.xyz.add(Wl(a.mul(Be).mul(Dt), M(Xe), Te, N(Ee))), Ve.w));
9416
9428
  });
9417
9429
  });
9418
9430
  });
9419
9431
  }).Else(() => {
9420
- let t = bu(Qe, $e, _t, q, Xe, Ue, je, a, R, ke, Ae, n, e, Fo);
9421
- Ve.assign(W(Ve.xyz.add(Wl(t.mul(Be).mul(Dt), M(Xe), Ee, N(De))), Ve.w));
9432
+ let t = bu(Qe, $e, _t, q, Xe, Ue, je, a, ke, Oe, Ae, n, e, Fo);
9433
+ Ve.assign(W(Ve.xyz.add(Wl(t.mul(Be).mul(Dt), M(Xe), Te, N(Ee))), Ve.w));
9422
9434
  });
9423
9435
  });
9424
- let Ot = Ei.wrap(Pa(q, Xe, vt)).toVar(), kt = Go.wrap(Hl(_t, $e, q, Ct, Tt, wt, Ue, Ot)).toVar(), At = kt.direction.toVar(), jt = P(kt.combinedPdf, .001).toVar();
9436
+ let Ot = Ei.wrap(Pa(q, Xe, vt)).toVar(), kt = Go.wrap(Hl(_t, $e, q, Ct, Tt, wt, Ue, Ot)).toVar(), At = kt.direction.toVar(), jt = F(kt.combinedPdf, .001).toVar();
9425
9437
  Be.mulAssign(kt.throughput);
9426
9438
  let Mt = Kl(Xe, Be, vt, At, Ue, y, b).toVar();
9427
9439
  p(Mt.lessThanEqual(0), () => {
9428
9440
  Ac(o, B, Ve), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), s.element(B).assign(Ue), h();
9429
- }), Be.divAssign(Mt), p(Ye.greaterThanEqual(pe), () => {
9441
+ }), Be.divAssign(Mt), p(Ye.greaterThanEqual(fe), () => {
9430
9442
  Ac(o, B, Ve), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), s.element(B).assign(Ue), h();
9431
9443
  }), Dc(o, B, Qe.add($e.mul(.001)), Ye.add(1), Ze), Oc(o, B, At, Fe), kc(o, B, Be, jt), Ac(o, B, Ve), Rc(o, B, z(tt), z(at), nt, rt, it, z(ot.add(.5))), s.element(B).assign(Ue);
9432
9444
  });
@@ -9450,11 +9462,11 @@ function Pu(e) {
9450
9462
  function Fu(e) {
9451
9463
  let { rayBufferRO: t, activeIndicesReadRO: n, activeIndicesWriteRW: r, counters: i, currentActiveCount: a } = e;
9452
9464
  return f(() => {
9453
- let e = re, o = i ? S(i.element(z(Gc.ENTERING_COUNT))) : a, s = e.lessThan(o), c = n.element(e), l = vc(t, c), u = s.and(l.bitAnd(z(Kc.ACTIVE)).notEqual(z(0))), d = L(u, z(1), z(0)), f = De(d).toVar(), m = Te(d).toVar(), h = De(z(1)).toVar(), g = z(0).toVar();
9465
+ let e = re, o = i ? S(i.element(z(Gc.ENTERING_COUNT))) : a, s = e.lessThan(o), c = n.element(e), l = vc(t, c), u = s.and(l.bitAnd(z(Kc.ACTIVE)).notEqual(z(0))), d = R(u, z(1), z(0)), f = Ee(d).toVar(), m = we(d).toVar(), h = Ee(z(1)).toVar(), g = z(0).toVar();
9454
9466
  p(h.equal(z(0)), () => {
9455
9467
  g.assign(x(i.element(z(Gc.ACTIVE_RAY_COUNT)), m));
9456
9468
  });
9457
- let _ = Ee(g, z(0)).toVar();
9469
+ let _ = Te(g, z(0)).toVar();
9458
9470
  p(u, () => {
9459
9471
  r.element(_.add(f)).assign(c);
9460
9472
  });
@@ -9462,29 +9474,32 @@ function Fu(e) {
9462
9474
  }
9463
9475
  var Iu = /* @__PURE__ */ G("\n fn nanInfToRed( c: vec3f ) -> vec3f {\n let isNan = c.x != c.x || c.y != c.y || c.z != c.z;\n let isInf = abs( c.x ) > 1e30f || abs( c.y ) > 1e30f || abs( c.z ) > 1e30f;\n if ( isNan || isInf ) { return vec3f( 1.0f, 0.0f, 0.0f ); }\n return vec3f( 0.0f );\n }\n");
9464
9476
  function Lu(e) {
9465
- let { rayBufferRO: t, gBufferRO: n, writeColorTex: r, writeNDTex: i, writeAlbedoTex: a, resolution: o, frame: s, enableAccumulation: c, hasPreviousAccumulated: l, accumulationAlpha: u, cameraIsMoving: d, transparentBackground: m, prevAccumTexture: h, prevAlbedoTexture: g, renderWidth: _, renderHeight: v, visMode: y, auxGBufferEnabled: b } = e, x = b.greaterThan(z(0));
9477
+ let { rayBufferRO: t, gBufferRO: n, writeColorTex: r, writeNDTex: i, writeAlbedoTex: a, resolution: o, frame: s, enableAccumulation: c, hasPreviousAccumulated: l, accumulationAlpha: u, cameraIsMoving: d, transparentBackground: m, prevAccumTexture: h, prevAlbedoTexture: g, prevNormalDepthTexture: _, renderWidth: v, renderHeight: y, visMode: b, auxGBufferEnabled: x, cleanAuxNormalEnabled: S } = e, C = x.greaterThan(z(0)), w = S.greaterThan(z(0));
9466
9478
  return f(() => {
9467
- let e = N(K.x).mul(16).add(N(se.x)), f = N(K.y).mul(16).add(N(se.y));
9468
- p(e.lessThan(_).and(f.lessThan(v)), () => {
9469
- let _ = z(f.mul(N(o.x)).add(e)), v = xc(t, _), b = v.xyz.toVar(), S = L(m, v.w, M(1)).toVar(), C = W(0).toVar(), w = W(0).xyz.toVar();
9470
- p(x, () => {
9471
- let e = wc(n, _);
9472
- C.assign(Tc(e)), w.assign(W(Ec(e), 0).xyz);
9479
+ let e = N(K.x).mul(16).add(N(oe.x)), f = N(K.y).mul(16).add(N(oe.y));
9480
+ p(e.lessThan(v).and(f.lessThan(y)), () => {
9481
+ let v = z(f.mul(N(o.x)).add(e)), y = xc(t, v), x = y.xyz.toVar(), S = R(m, y.w, M(1)).toVar(), T = W(0).toVar(), E = W(0).xyz.toVar();
9482
+ p(C, () => {
9483
+ let e = wc(n, v);
9484
+ T.assign(Tc(e)), E.assign(W(Ec(e), 0).xyz);
9473
9485
  });
9474
- let T = H(M(e).add(.5), M(f).add(.5)).div(o);
9475
- p(c.and(d.not()).and(s.greaterThan(z(0))).and(l).and(y.notEqual(N(11))), () => {
9476
- let e = ke(h, T, 0).toVar();
9477
- b.assign(F(e.xyz, v.xyz, u)), p(x, () => {
9478
- w.assign(F(ke(g, T, 0).xyz, w, u));
9486
+ let D = H(M(e).add(.5), M(f).add(.5)).div(o);
9487
+ p(c.and(d.not()).and(s.greaterThan(z(0))).and(l).and(b.notEqual(N(11))), () => {
9488
+ let e = Oe(h, D, 0).toVar();
9489
+ x.assign(I(e.xyz, y.xyz, u)), p(C, () => {
9490
+ E.assign(I(Oe(g, D, 0).xyz, E, u)), p(w, () => {
9491
+ let e = Oe(_, D, 0).xyz.mul(2).sub(1), t = T.xyz.mul(2).sub(1).toVar(), n = I(e, t, u).toVar(), r = ie(n), i = R(r.greaterThan(1e-4), n.div(r), t);
9492
+ T.assign(W(i.mul(.5).add(.5), T.w));
9493
+ });
9479
9494
  }), p(m, () => {
9480
- S.assign(F(e.w, v.w, u));
9495
+ S.assign(I(e.w, y.w, u));
9481
9496
  });
9482
- }), p(y.equal(N(11)), () => {
9483
- b.assign(Iu(b));
9497
+ }), p(b.equal(N(11)), () => {
9498
+ x.assign(Iu(x));
9484
9499
  });
9485
- let E = Ie(z(e), z(f));
9486
- je(r, E, W(b, S)).toWriteOnly(), p(x, () => {
9487
- je(i, E, C).toWriteOnly(), je(a, E, W(w, 1)).toWriteOnly();
9500
+ let O = Ie(z(e), z(f));
9501
+ je(r, O, W(x, S)).toWriteOnly(), p(C, () => {
9502
+ je(i, O, T).toWriteOnly(), je(a, O, W(E, 1)).toWriteOnly();
9488
9503
  });
9489
9504
  });
9490
9505
  });
@@ -9498,32 +9513,32 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
9498
9513
  }), y = Ci.wrap(dl(v, n, r).toVar());
9499
9514
  return p(l.equal(N(7)), () => {
9500
9515
  let e = M(y.triTests).div(u);
9501
- _.assign(L(e.lessThan(1), W(U(e), 1), W(1, 0, 0, 1)));
9516
+ _.assign(R(e.lessThan(1), W(U(e), 1), W(1, 0, 0, 1)));
9502
9517
  }), p(l.equal(N(8)), () => {
9503
9518
  let e = M(y.boxTests).div(u);
9504
- _.assign(L(e.lessThan(1), W(U(e), 1), W(1, 0, 0, 1)));
9519
+ _.assign(R(e.lessThan(1), W(U(e), 1), W(1, 0, 0, 1)));
9505
9520
  }), p(l.equal(N(10)), () => {
9506
9521
  p(c, () => {
9507
9522
  let e = bl({
9508
9523
  tex: a,
9509
- samp: ve(a),
9524
+ samp: _e(a),
9510
9525
  direction: t,
9511
9526
  environmentMatrix: o,
9512
9527
  environmentIntensity: s,
9513
9528
  enableEnvironmentLight: c
9514
- }).toVar(), n = A(e.xyz, Ui).toVar(), r = n, i = P(u.mul(.1), .001), l = n.div(i), m = ce(n.add(1e-6)).add(10).div(10), h = L(u.greaterThan(1), l, m).toVar(), g = U(0).toVar();
9529
+ }).toVar(), n = A(e.xyz, Ui).toVar(), r = n, i = F(u.mul(.1), .001), l = n.div(i), m = se(n.add(1e-6)).add(10).div(10), h = R(u.greaterThan(1), l, m).toVar(), g = U(0).toVar();
9515
9530
  p(h.lessThan(.2), () => {
9516
- g.assign(F(U(0, 0, 0), U(0, 0, .5), h.mul(5)));
9531
+ g.assign(I(U(0, 0, 0), U(0, 0, .5), h.mul(5)));
9517
9532
  }).ElseIf(h.lessThan(.4), () => {
9518
- g.assign(F(U(0, 0, .5), U(0, 0, 1), h.sub(.2).mul(5)));
9533
+ g.assign(I(U(0, 0, .5), U(0, 0, 1), h.sub(.2).mul(5)));
9519
9534
  }).ElseIf(h.lessThan(.6), () => {
9520
- g.assign(F(U(0, 0, 1), U(0, 1, 0), h.sub(.4).mul(5)));
9535
+ g.assign(I(U(0, 0, 1), U(0, 1, 0), h.sub(.4).mul(5)));
9521
9536
  }).ElseIf(h.lessThan(.8), () => {
9522
- g.assign(F(U(0, 1, 0), U(1, 1, 0), h.sub(.6).mul(5)));
9537
+ g.assign(I(U(0, 1, 0), U(1, 1, 0), h.sub(.6).mul(5)));
9523
9538
  }).ElseIf(h.lessThan(1), () => {
9524
- g.assign(F(U(1, 1, 0), U(1, 0, 0), h.sub(.8).mul(5)));
9539
+ g.assign(I(U(1, 1, 0), U(1, 0, 0), h.sub(.8).mul(5)));
9525
9540
  }).Else(() => {
9526
- g.assign(F(U(1, 0, 0), U(1, 1, 1), ue(h.sub(1), 1)));
9541
+ g.assign(I(U(1, 0, 0), U(1, 1, 1), le(h.sub(1), 1)));
9527
9542
  });
9528
9543
  let v = d.div(f);
9529
9544
  p(v.x.lessThan(.1).and(v.y.lessThan(.1)), () => {
@@ -9539,9 +9554,9 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
9539
9554
  p(y.didHit.not(), () => {
9540
9555
  _.assign(W(0, 0, 0, 1));
9541
9556
  }).Else(() => {
9542
- let t = yi.wrap(ca(y.materialIndex, i)).toVar(), n = Ai.wrap(Oo(t, y.uv, y.normal)).toVar().emissive.toVar(), r = ae(n).toVar();
9557
+ let t = yi.wrap(ca(y.materialIndex, i)).toVar(), n = Ai.wrap(Oo(t, y.uv, y.normal)).toVar().emissive.toVar(), r = ie(n).toVar();
9543
9558
  p(r.greaterThan(0), () => {
9544
- let t = n.div(P(r.mul(.1), .001)).toVar(), i = ae(e.sub(y.hitPoint)), a = E(M(1).sub(i.div(10)), 0, 1), o = F(t, t.mul(U(1, .8, .6)), a.mul(.3));
9559
+ let t = n.div(F(r.mul(.1), .001)).toVar(), i = ie(e.sub(y.hitPoint)), a = E(M(1).sub(i.div(10)), 0, 1), o = I(t, t.mul(U(1, .8, .6)), a.mul(.3));
9545
9560
  _.assign(W(o, 1));
9546
9561
  }).Else(() => {
9547
9562
  _.assign(W(0, 0, .1, 1));
@@ -9551,7 +9566,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
9551
9566
  p(y.didHit.not(), () => {
9552
9567
  _.assign(W(.5, .5, 1, 1));
9553
9568
  }).Else(() => {
9554
- let e = yi.wrap(ca(y.materialIndex, i)).toVar(), t = I(Ai.wrap(Oo(e, y.uv, y.normal)).toVar().normal);
9569
+ let e = yi.wrap(ca(y.materialIndex, i)).toVar(), t = L(Ai.wrap(Oo(e, y.uv, y.normal)).toVar().normal);
9555
9570
  _.assign(W(zu({ normal: t }), 1));
9556
9571
  });
9557
9572
  }), p(l.equal(N(2)), () => {
@@ -9576,7 +9591,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
9576
9591
  p(y.didHit.not(), () => {
9577
9592
  _.assign(W(0, 0, 0, 1));
9578
9593
  }).Else(() => {
9579
- let e = yi.wrap(ca(y.materialIndex, i)).toVar(), t = Ai.wrap(Oo(e, y.uv, y.normal)).toVar(), l = t.albedo.rgb, u = I(t.normal).toVar(), f = zn({ state: Bn({ seed: z(d.x).mul(z(1973)).add(z(d.y).mul(z(9277))).add(g.mul(z(26699))) }) }).toVar(), m = La({
9594
+ let e = yi.wrap(ca(y.materialIndex, i)).toVar(), t = Ai.wrap(Oo(e, y.uv, y.normal)).toVar(), l = t.albedo.rgb, u = L(t.normal).toVar(), f = zn({ state: Bn({ seed: z(d.x).mul(z(1973)).add(z(d.y).mul(z(9277))).add(g.mul(z(26699))) }) }).toVar(), m = La({
9580
9595
  N: u,
9581
9596
  xi: H(Y(f).toVar(), Y(f).toVar())
9582
9597
  }).toVar(), h = vi({
@@ -9587,7 +9602,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
9587
9602
  p(c, () => {
9588
9603
  b.assign(bl({
9589
9604
  tex: a,
9590
- samp: ve(a),
9605
+ samp: _e(a),
9591
9606
  direction: m,
9592
9607
  environmentMatrix: o,
9593
9608
  environmentIntensity: s,
@@ -9597,9 +9612,9 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
9597
9612
  }).Else(() => {
9598
9613
  let e = yi.wrap(ca(v.materialIndex, i)).toVar(), t = Ai.wrap(Oo(e, v.uv, v.normal)).toVar();
9599
9614
  b.assign(t.emissive), p(c, () => {
9600
- let e = I(t.normal).toVar(), n = bl({
9615
+ let e = L(t.normal).toVar(), n = bl({
9601
9616
  tex: a,
9602
- samp: ve(a),
9617
+ samp: _e(a),
9603
9618
  direction: e,
9604
9619
  environmentMatrix: o,
9605
9620
  environmentIntensity: s,
@@ -9613,9 +9628,9 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
9613
9628
  });
9614
9629
  }), p(l.equal(N(6)), () => {
9615
9630
  p(y.didHit, () => {
9616
- let e = y.normal.toVar(), n = I(t.sub(e.mul(A(t, e).mul(2)))).toVar(), r = bl({
9631
+ let e = y.normal.toVar(), n = L(t.sub(e.mul(A(t, e).mul(2)))).toVar(), r = bl({
9617
9632
  tex: a,
9618
- samp: ve(a),
9633
+ samp: _e(a),
9619
9634
  direction: n,
9620
9635
  environmentMatrix: o,
9621
9636
  environmentIntensity: s,
@@ -9625,7 +9640,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
9625
9640
  }).Else(() => {
9626
9641
  let e = bl({
9627
9642
  tex: a,
9628
- samp: ve(a),
9643
+ samp: _e(a),
9629
9644
  direction: t,
9630
9645
  environmentMatrix: o,
9631
9646
  environmentIntensity: s,
@@ -9638,7 +9653,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
9638
9653
  function Hu(e) {
9639
9654
  let { writeColorTex: t, writeNDTex: n, writeAlbedoTex: r, resolution: i, renderWidth: a, renderHeight: o, cameraWorldMatrix: s, cameraProjectionMatrixInverse: c, cameraProjectionMatrix: l, cameraViewMatrix: u, enableDOF: d, focalLength: m, aperture: h, focusDistance: g, sceneScale: _, apertureScale: v, anamorphicRatio: y, bvhBuffer: b, triangleBuffer: x, materialBuffer: S, envTexture: C, environmentMatrix: w, environmentIntensity: T, enableEnvironmentLight: E, visMode: D, debugVisScale: O, frame: k } = e;
9640
9655
  return f(() => {
9641
- let e = N(K.x).mul(16).add(N(se.x)), f = N(K.y).mul(16).add(N(se.y));
9656
+ let e = N(K.x).mul(16).add(N(oe.x)), f = N(K.y).mul(16).add(N(oe.y));
9642
9657
  p(e.lessThan(a).and(f.lessThan(o)), () => {
9643
9658
  let a = H(M(e).add(.5), M(f).add(.5)), o = zn({ state: z(f.mul(N(i.x)).add(e)).add(z(1)) }).toVar(), A = a.div(i).mul(2).sub(1).toVar();
9644
9659
  A.y.assign(A.y.negate());
@@ -9663,7 +9678,7 @@ function Uu({ sortGlobalHistogram: e, bins: t = 256 }) {
9663
9678
  }
9664
9679
  function Wu({ hitBufferRO: e, activeIndicesReadRO: t, sortGlobalHistogram: n, counters: r, bins: i = 256 }) {
9665
9680
  return f(() => {
9666
- let a = re, o = se.x, s = En("uint", i);
9681
+ let a = re, o = oe.x, s = En("uint", i);
9667
9682
  p(o.lessThan(z(i)), () => {
9668
9683
  C(s.element(o), z(0));
9669
9684
  }), ze();
@@ -9707,7 +9722,7 @@ function Ku({ hitBufferRO: e, activeIndicesReadRO: t, sortedIndicesRW: n, sortGl
9707
9722
  //#region src/Stages/PathTracer.js
9708
9723
  var qu = class extends lc {
9709
9724
  constructor(e, t, n, r = {}) {
9710
- super(e, t, n, r), this.name = "PathTracer", this._packedBuffers = null, this._queueManager = null, this._kernelManager = null, this._gBufferAttr = null, this._wavefrontReady = !1, this._auxGBufferEnabled = !1, this._auxGBufferUniform = V(0, "uint"), this._useDynamicDispatch = !0, this._sortMaterials = !1, this._useSubgroupCompact = !1, this._lastBounceCounts = null, this._lastBounceCountsBudget = -1, this._readbackPending = !1, this._readbackEveryNFrames = 4, this._readbackFrameCounter = 0, this._readbackGeneration = 0, this._curveSizingValid = !1, this._bounceEarlyExitThreshold = 100, this._wfRenderWidth = V(1920, "int"), this._wfRenderHeight = V(1080, "int"), this._wfMaxRayCount = V(0, "uint"), this._wfCurrentBounce = V(0, "int"), this.vramTracker = new $c(this.renderer), this._registerVRAMProviders(), console.log("PathTracer: initialized (wavefront)");
9725
+ super(e, t, n, r), this.name = "PathTracer", this._packedBuffers = null, this._queueManager = null, this._kernelManager = null, this._gBufferAttr = null, this._wavefrontReady = !1, this._auxGBufferEnabled = !1, this._auxGBufferUniform = V(0, "uint"), this._cleanAuxNormalEnabled = !1, this._cleanAuxNormalUniform = V(0, "uint"), this._useDynamicDispatch = !0, this._sortMaterials = !1, this._useSubgroupCompact = !1, this._lastBounceCounts = null, this._lastBounceCountsBudget = -1, this._readbackPending = !1, this._readbackEveryNFrames = 4, this._readbackFrameCounter = 0, this._readbackGeneration = 0, this._curveSizingValid = !1, this._bounceEarlyExitThreshold = 100, this._wfRenderWidth = V(1920, "int"), this._wfRenderHeight = V(1080, "int"), this._wfMaxRayCount = V(0, "uint"), this._wfCurrentBounce = V(0, "int"), this.vramTracker = new $c(this.renderer), this._registerVRAMProviders(), console.log("PathTracer: initialized (wavefront)");
9711
9726
  }
9712
9727
  _registerVRAMProviders() {
9713
9728
  let e = this.vramTracker;
@@ -9764,7 +9779,7 @@ var qu = class extends lc {
9764
9779
  let t = this.frameCount, n = this.renderMode.value, r = null;
9765
9780
  n === 1 && t === 0 && (r = this.maxBounces.value, this.maxBounces.value = 1), this._handleResize(), this.manageASVGFForRenderMode(n), e && e.setState("tileRenderingComplete", !0), this.cameraChanged = this._updateCameraUniforms(), this.cameraOptimizer?.updateInteractionMode(this.cameraChanged), this.cameraChanged && (this._curveSizingValid = !1, this._readbackGeneration++), this._updateAccumulationUniforms(t, n), this.frame.value = t, this._setWfDispatch();
9766
9781
  let i = this.storageTextures.getReadTextures();
9767
- this.shaderBuilder.prevColorTexNode && (this.shaderBuilder.prevColorTexNode.value = i.color, this.shaderBuilder.prevAlbedoTexNode.value = i.albedo), this._refreshWfTextureNodes();
9782
+ this.shaderBuilder.prevColorTexNode && (this.shaderBuilder.prevColorTexNode.value = i.color, this.shaderBuilder.prevAlbedoTexNode.value = i.albedo, this.shaderBuilder.prevNormalDepthTexNode.value = i.normalDepth), this._refreshWfTextureNodes();
9768
9783
  let a = this._kernelManager;
9769
9784
  if ((this.visMode?.value | 0) > 0 && this.visMode.value !== 11) {
9770
9785
  a.dispatch("debug"), this.storageTextures.copyToReadTargets(this.renderer);
@@ -9811,6 +9826,9 @@ var qu = class extends lc {
9811
9826
  setAuxGBufferEnabled(e) {
9812
9827
  e = !!e, this._auxGBufferEnabled !== e && (this._auxGBufferEnabled = e, this._auxGBufferUniform.value = +!!e, this.reset());
9813
9828
  }
9829
+ setCleanAuxNormal(e) {
9830
+ e = !!e, this._cleanAuxNormalEnabled !== e && (this._cleanAuxNormalEnabled = e, this._cleanAuxNormalUniform.value = +!!e, this.reset());
9831
+ }
9814
9832
  setSize(e, t) {
9815
9833
  let n = this.storageTextures.renderWidth, r = this.storageTextures.renderHeight;
9816
9834
  super.setSize(e, t), this._rebuildKernelsIfResized(n, r);
@@ -9862,14 +9880,14 @@ var qu = class extends lc {
9862
9880
  this._bounceEarlyExitThreshold !== -1 && (this._bounceEarlyExitThreshold = Math.max(100, Math.floor(r / 1e3))), this._packedBuffers ? this._packedBuffers.resize(r) : this._packedBuffers = new hc(r, this.renderer);
9863
9881
  let i = hc.requiredCapacity(r) * 1;
9864
9882
  mc(this.renderer, this._gBufferAttr), this._gBufferAttr = new o(new Uint32Array(i * 4), 4);
9865
- let a = Ce(this._gBufferAttr, "uvec4"), s = Ce(this._gBufferAttr, "uvec4").toReadOnly();
9883
+ let a = Se(this._gBufferAttr, "uvec4"), s = Se(this._gBufferAttr, "uvec4").toReadOnly();
9866
9884
  this._queueManager ? this._queueManager.resize(this._packedBuffers.capacity) : this._queueManager = new qc(this._packedBuffers.capacity, this.renderer), this._kernelManager ||= new tl(this.renderer);
9867
9885
  let c = this._packedBuffers, l = this._queueManager;
9868
9886
  this._wfRenderWidth.value = t, this._wfRenderHeight.value = n, this._wfMaxRayCount.value = r;
9869
- let u = this.shaderBuilder.prevColorTexNode, d = this.shaderBuilder.prevAlbedoTexNode, m = this.storageTextures.getWriteTextures(), g = l.getCounters(), _ = f(() => {
9870
- C(g.element(z(Gc.ACTIVE_RAY_COUNT)), z(0));
9887
+ let u = this.shaderBuilder.prevColorTexNode, d = this.shaderBuilder.prevAlbedoTexNode, m = this.shaderBuilder.prevNormalDepthTexNode, g = this.storageTextures.getWriteTextures(), _ = l.getCounters(), v = f(() => {
9888
+ C(_.element(z(Gc.ACTIVE_RAY_COUNT)), z(0));
9871
9889
  });
9872
- this._kernelManager.register("resetCounters", _().compute([
9890
+ this._kernelManager.register("resetCounters", v().compute([
9873
9891
  1,
9874
9892
  1,
9875
9893
  1
@@ -9878,10 +9896,10 @@ var qu = class extends lc {
9878
9896
  1,
9879
9897
  1
9880
9898
  ]));
9881
- let v = f(() => {
9882
- C(g.element(z(Gc.ACTIVE_RAY_COUNT)), z(0));
9899
+ let y = f(() => {
9900
+ C(_.element(z(Gc.ACTIVE_RAY_COUNT)), z(0));
9883
9901
  });
9884
- this._kernelManager.register("resetActiveCounter", v().compute([
9902
+ this._kernelManager.register("resetActiveCounter", y().compute([
9885
9903
  1,
9886
9904
  1,
9887
9905
  1
@@ -9890,11 +9908,11 @@ var qu = class extends lc {
9890
9908
  1,
9891
9909
  1
9892
9910
  ]));
9893
- let y = l.getBounceCounts(), b = this._wfCurrentBounce, x = f(() => {
9894
- let e = S(g.element(z(Gc.ACTIVE_RAY_COUNT))), t = z(b).clamp(z(0), z(l.MAX_BOUNCE_SNAPSHOTS - 1));
9895
- y.element(t).assign(e), C(g.element(z(Gc.ENTERING_COUNT)), e);
9911
+ let b = l.getBounceCounts(), x = this._wfCurrentBounce, w = f(() => {
9912
+ let e = S(_.element(z(Gc.ACTIVE_RAY_COUNT))), t = z(x).clamp(z(0), z(l.MAX_BOUNCE_SNAPSHOTS - 1));
9913
+ b.element(t).assign(e), C(_.element(z(Gc.ENTERING_COUNT)), e);
9896
9914
  });
9897
- this._kernelManager.register("snapshotBounceCount", x().compute([
9915
+ this._kernelManager.register("snapshotBounceCount", w().compute([
9898
9916
  1,
9899
9917
  1,
9900
9918
  1
@@ -9903,13 +9921,13 @@ var qu = class extends lc {
9903
9921
  1,
9904
9922
  1
9905
9923
  ]));
9906
- let w = l.activeIndices.a, T = f(() => {
9924
+ let T = l.activeIndices.a, E = f(() => {
9907
9925
  let e = re;
9908
- w.element(e).assign(e), p(e.equal(z(0)), () => {
9909
- C(g.element(z(Gc.ACTIVE_RAY_COUNT)), this._wfMaxRayCount), C(g.element(z(Gc.ENTERING_COUNT)), this._wfMaxRayCount);
9926
+ T.element(e).assign(e), p(e.equal(z(0)), () => {
9927
+ C(_.element(z(Gc.ACTIVE_RAY_COUNT)), this._wfMaxRayCount), C(_.element(z(Gc.ENTERING_COUNT)), this._wfMaxRayCount);
9910
9928
  });
9911
9929
  });
9912
- this._kernelManager.register("initActiveIndices", T().compute([
9930
+ this._kernelManager.register("initActiveIndices", E().compute([
9913
9931
  Math.ceil(r / 256),
9914
9932
  1,
9915
9933
  1
@@ -9918,7 +9936,7 @@ var qu = class extends lc {
9918
9936
  1,
9919
9937
  1
9920
9938
  ]));
9921
- let E = ml({
9939
+ let D = ml({
9922
9940
  rayBufferRW: c.rayBuffer.rw,
9923
9941
  rngBufferRW: c.rngBuffer.rw,
9924
9942
  gBufferRW: a,
@@ -9939,7 +9957,7 @@ var qu = class extends lc {
9939
9957
  transparentBackground: this.transparentBackground,
9940
9958
  auxGBufferEnabled: this._auxGBufferUniform
9941
9959
  });
9942
- this._kernelManager.register("generate", E().compute([
9960
+ this._kernelManager.register("generate", D().compute([
9943
9961
  Math.ceil(t / 16),
9944
9962
  Math.ceil(n / 16),
9945
9963
  1
@@ -9948,23 +9966,23 @@ var qu = class extends lc {
9948
9966
  16,
9949
9967
  1
9950
9968
  ]));
9951
- let D = this.bvhStorageNode, O = this.triangleStorageNode, k = this.materialData.materialStorageNode, A = ke(this.environment.envCDFTexture), j = this.lightStorageNode, M = this.materialData, ee = this.environment, te = ho(M.srgbBuckets), ne = ho(M.linearBuckets);
9952
- co(te, ne), Mo(te);
9953
- let N = ee.environmentTexture ? ke(ee.environmentTexture) : e.envTex;
9969
+ let O = this.bvhStorageNode, k = this.triangleStorageNode, A = this.materialData.materialStorageNode, j = Oe(this.environment.envCDFTexture), M = this.lightStorageNode, ee = this.materialData, te = this.environment, ne = ho(ee.srgbBuckets), N = ho(ee.linearBuckets);
9970
+ co(ne, N), Mo(ne);
9971
+ let P = te.environmentTexture ? Oe(te.environmentTexture) : e.envTex;
9954
9972
  this._wfTexNodes = {
9955
- envTex: N,
9956
- envCDFTex: A,
9957
- srgbBuckets: te,
9958
- linearBuckets: ne
9973
+ envTex: P,
9974
+ envCDFTex: j,
9975
+ srgbBuckets: ne,
9976
+ linearBuckets: N
9959
9977
  }, this._sortMaterials = (X.wavefrontSortMaterials ?? !1) && (this.materialData?.materialCount ?? 0) > 8;
9960
9978
  let ie = hl({
9961
- bvhBuffer: D,
9962
- triangleBuffer: O,
9963
- materialBuffer: k,
9979
+ bvhBuffer: O,
9980
+ triangleBuffer: k,
9981
+ materialBuffer: A,
9964
9982
  rayBufferRO: c.rayBuffer.ro,
9965
9983
  hitBufferRW: c.hitBuffer.rw,
9966
9984
  activeIndicesRO: l.getActiveReadRO(),
9967
- counters: g,
9985
+ counters: _,
9968
9986
  maxRayCount: this._wfMaxRayCount
9969
9987
  });
9970
9988
  if (this._kernelManager.register("extend", ie().compute([
@@ -9992,7 +10010,7 @@ var qu = class extends lc {
9992
10010
  hitBufferRO: c.hitBuffer.ro,
9993
10011
  activeIndicesReadRO: l.getActiveReadRO(),
9994
10012
  sortGlobalHistogram: e,
9995
- counters: g,
10013
+ counters: _,
9996
10014
  bins: t
9997
10015
  })().compute([
9998
10016
  Math.ceil(r / 256),
@@ -10018,7 +10036,7 @@ var qu = class extends lc {
10018
10036
  activeIndicesReadRO: l.getActiveReadRO(),
10019
10037
  sortedIndicesRW: l.getSortedRW(),
10020
10038
  sortGlobalHistogram: e,
10021
- counters: g,
10039
+ counters: _,
10022
10040
  bins: t
10023
10041
  })().compute([
10024
10042
  Math.ceil(r / 256),
@@ -10033,17 +10051,17 @@ var qu = class extends lc {
10033
10051
  let ae = Nu({
10034
10052
  gBufferRW: a,
10035
10053
  envCompensationDelta: this.envCompensationDelta,
10036
- bvhBuffer: D,
10037
- triangleBuffer: O,
10038
- materialBuffer: k,
10039
- envCDFTexture: A,
10040
- lightBuffer: j,
10054
+ bvhBuffer: O,
10055
+ triangleBuffer: k,
10056
+ materialBuffer: A,
10057
+ envCDFTexture: j,
10058
+ lightBuffer: M,
10041
10059
  rayBufferRW: c.rayBuffer.rw,
10042
10060
  rngBufferRW: c.rngBuffer.rw,
10043
10061
  hitBufferRO: c.hitBuffer.ro,
10044
- counters: g,
10062
+ counters: _,
10045
10063
  activeIndicesRO: this._sortMaterials ? l.getSortedRO() : l.getActiveReadRO(),
10046
- envTexture: N,
10064
+ envTexture: P,
10047
10065
  environmentIntensity: this.environmentIntensity,
10048
10066
  envMatrix: this.environmentMatrix,
10049
10067
  enableEnvironmentLight: this.enableEnvironment,
@@ -10105,7 +10123,7 @@ var qu = class extends lc {
10105
10123
  rayBufferRO: c.rayBuffer.ro,
10106
10124
  activeIndicesReadRO: l.getActiveReadRO(),
10107
10125
  activeIndicesWriteRW: l.getActiveWrite(),
10108
- counters: g,
10126
+ counters: _,
10109
10127
  currentActiveCount: this._wfMaxRayCount
10110
10128
  });
10111
10129
  this._kernelManager.register("compact", se().compute([
@@ -10118,7 +10136,7 @@ var qu = class extends lc {
10118
10136
  1
10119
10137
  ]));
10120
10138
  let ce = f(() => {
10121
- C(g.element(z(Gc.ENTERING_COUNT)), this._wfMaxRayCount);
10139
+ C(_.element(z(Gc.ENTERING_COUNT)), this._wfMaxRayCount);
10122
10140
  });
10123
10141
  this._kernelManager.register("enterFull", ce().compute([
10124
10142
  1,
@@ -10129,13 +10147,13 @@ var qu = class extends lc {
10129
10147
  1,
10130
10148
  1
10131
10149
  ]));
10132
- let le = l.activeIndicesRO.b, P = l.activeIndices.a, ue = f(() => {
10150
+ let F = l.activeIndicesRO.b, le = l.activeIndices.a, I = f(() => {
10133
10151
  let e = re;
10134
- p(e.greaterThanEqual(S(g.element(z(Gc.ACTIVE_RAY_COUNT)))), () => {
10152
+ p(e.greaterThanEqual(S(_.element(z(Gc.ACTIVE_RAY_COUNT)))), () => {
10135
10153
  h();
10136
- }), P.element(e).assign(le.element(e));
10154
+ }), le.element(e).assign(F.element(e));
10137
10155
  });
10138
- this._kernelManager.register("compactCopyback", ue().compute([
10156
+ this._kernelManager.register("compactCopyback", I().compute([
10139
10157
  Math.ceil(r / 256),
10140
10158
  1,
10141
10159
  1
@@ -10144,12 +10162,12 @@ var qu = class extends lc {
10144
10162
  1,
10145
10163
  1
10146
10164
  ]));
10147
- let F = Lu({
10165
+ let ue = Lu({
10148
10166
  rayBufferRO: c.rayBuffer.ro,
10149
10167
  gBufferRO: s,
10150
- writeColorTex: m.color,
10151
- writeNDTex: m.normalDepth,
10152
- writeAlbedoTex: m.albedo,
10168
+ writeColorTex: g.color,
10169
+ writeNDTex: g.normalDepth,
10170
+ writeAlbedoTex: g.albedo,
10153
10171
  resolution: this.resolution,
10154
10172
  frame: this.frame,
10155
10173
  enableAccumulation: this.enableAccumulation,
@@ -10159,12 +10177,14 @@ var qu = class extends lc {
10159
10177
  transparentBackground: this.transparentBackground,
10160
10178
  prevAccumTexture: u,
10161
10179
  prevAlbedoTexture: d,
10180
+ prevNormalDepthTexture: m,
10162
10181
  renderWidth: this._wfRenderWidth,
10163
10182
  renderHeight: this._wfRenderHeight,
10164
10183
  visMode: this.visMode,
10165
- auxGBufferEnabled: this._auxGBufferUniform
10184
+ auxGBufferEnabled: this._auxGBufferUniform,
10185
+ cleanAuxNormalEnabled: this._cleanAuxNormalUniform
10166
10186
  });
10167
- this._kernelManager.register("finalWrite", F().compute([
10187
+ this._kernelManager.register("finalWrite", ue().compute([
10168
10188
  Math.ceil(t / 16),
10169
10189
  Math.ceil(n / 16),
10170
10190
  1
@@ -10173,10 +10193,10 @@ var qu = class extends lc {
10173
10193
  16,
10174
10194
  1
10175
10195
  ]));
10176
- let de = Hu({
10177
- writeColorTex: m.color,
10178
- writeNDTex: m.normalDepth,
10179
- writeAlbedoTex: m.albedo,
10196
+ let L = Hu({
10197
+ writeColorTex: g.color,
10198
+ writeNDTex: g.normalDepth,
10199
+ writeAlbedoTex: g.albedo,
10180
10200
  resolution: this.resolution,
10181
10201
  renderWidth: this._wfRenderWidth,
10182
10202
  renderHeight: this._wfRenderHeight,
@@ -10191,10 +10211,10 @@ var qu = class extends lc {
10191
10211
  sceneScale: this.sceneScale,
10192
10212
  apertureScale: this.apertureScale,
10193
10213
  anamorphicRatio: this.anamorphicRatio,
10194
- bvhBuffer: D,
10195
- triangleBuffer: O,
10196
- materialBuffer: k,
10197
- envTexture: N,
10214
+ bvhBuffer: O,
10215
+ triangleBuffer: k,
10216
+ materialBuffer: A,
10217
+ envTexture: P,
10198
10218
  environmentMatrix: this.environmentMatrix,
10199
10219
  environmentIntensity: this.environmentIntensity,
10200
10220
  enableEnvironmentLight: this.enableEnvironment,
@@ -10202,7 +10222,7 @@ var qu = class extends lc {
10202
10222
  debugVisScale: this.debugVisScale,
10203
10223
  frame: this.frame
10204
10224
  });
10205
- this._kernelManager.register("debug", de().compute([
10225
+ this._kernelManager.register("debug", L().compute([
10206
10226
  Math.ceil(t / 16),
10207
10227
  Math.ceil(n / 16),
10208
10228
  1
@@ -10267,19 +10287,19 @@ var qu = class extends lc {
10267
10287
  let e = this.pathTracer;
10268
10288
  if (!e) return !1;
10269
10289
  let t = e.materialData?.materialStorageAttr, n = e.triangleStorageAttr && e.triangleStorageAttr !== this._lastTriAttr, r = e.bvhStorageAttr && e.bvhStorageAttr !== this._lastBvhAttr, i = t && t !== this._lastMatAttr;
10270
- return (n || r || i) && (this._computeNode?.dispose?.(), this._computeNode = null, this._computeBuilt = !1, this._triStorageNode = null, this._bvhStorageNode = null, this._matStorageNode = null, this._dirty = !0), e.triangleStorageAttr && !this._triStorageNode && (this._triStorageNode = Ce(e.triangleStorageAttr, "vec4", e.triangleStorageAttr.count).toReadOnly()), e.bvhStorageAttr && !this._bvhStorageNode && (this._bvhStorageNode = Ce(e.bvhStorageAttr, "vec4", e.bvhStorageAttr.count).toReadOnly()), t && !this._matStorageNode && (this._matStorageNode = Ce(t, "vec4", t.count).toReadOnly()), this._linearBuckets && go(this._linearBuckets, e.materialData?.linearBuckets), this._lastTriAttr = e.triangleStorageAttr || this._lastTriAttr, this._lastBvhAttr = e.bvhStorageAttr || this._lastBvhAttr, this._lastMatAttr = t || this._lastMatAttr, !!(this._triStorageNode && this._bvhStorageNode && this._matStorageNode);
10290
+ return (n || r || i) && (this._computeNode?.dispose?.(), this._computeNode = null, this._computeBuilt = !1, this._triStorageNode = null, this._bvhStorageNode = null, this._matStorageNode = null, this._dirty = !0), e.triangleStorageAttr && !this._triStorageNode && (this._triStorageNode = Se(e.triangleStorageAttr, "vec4", e.triangleStorageAttr.count).toReadOnly()), e.bvhStorageAttr && !this._bvhStorageNode && (this._bvhStorageNode = Se(e.bvhStorageAttr, "vec4", e.bvhStorageAttr.count).toReadOnly()), t && !this._matStorageNode && (this._matStorageNode = Se(t, "vec4", t.count).toReadOnly()), this._linearBuckets && go(this._linearBuckets, e.materialData?.linearBuckets), this._lastTriAttr = e.triangleStorageAttr || this._lastTriAttr, this._lastBvhAttr = e.bvhStorageAttr || this._lastBvhAttr, this._lastMatAttr = t || this._lastMatAttr, !!(this._triStorageNode && this._bvhStorageNode && this._matStorageNode);
10271
10291
  }
10272
10292
  _buildCompute() {
10273
10293
  let e = this._triStorageNode, t = this._bvhStorageNode, n = this._matStorageNode;
10274
10294
  this._linearBuckets = ho(this.pathTracer?.materialData?.linearBuckets), co(ho(null), this._linearBuckets);
10275
10295
  let r = this.cameraWorldMatrix, i = this.cameraProjectionMatrixInverse, a = this.resolutionWidth, o = this.resolutionHeight, s = this._outputStorageTex, c = this._shadingStorageTex;
10276
10296
  this._computeNode = f(([r, i]) => {
10277
- let l = N(K.x).mul(8).add(N(se.x)), u = N(K.y).mul(8).add(N(se.y));
10297
+ let l = N(K.x).mul(8).add(N(oe.x)), u = N(K.y).mul(8).add(N(oe.y));
10278
10298
  p(l.lessThan(N(a)).and(u.lessThan(N(o))), () => {
10279
- let d = U(M(l).add(.5).div(a).mul(2).sub(1), M(u).add(.5).div(o).mul(2).sub(1).negate(), 1), f = i.mul(W(d, 1)), m = I(le(r[0].xyz, r[1].xyz, r[2].xyz).mul(f.xyz.div(f.w))), h = vi({
10299
+ let d = U(M(l).add(.5).div(a).mul(2).sub(1), M(u).add(.5).div(o).mul(2).sub(1).negate(), 1), f = i.mul(W(d, 1)), m = L(ce(r[0].xyz, r[1].xyz, r[2].xyz).mul(f.xyz.div(f.w))), h = vi({
10280
10300
  origin: U(r[3]),
10281
10301
  direction: m
10282
- }), g = Ci.wrap(dl(h, t, e)), _ = g.normal.mul(.5).add(.5), v = ue(g.dst, M(65504)), y = g.didHit.select(W(_, v), W(0, 0, 0, M(65504)));
10302
+ }), g = Ci.wrap(dl(h, t, e)), _ = g.normal.mul(.5).add(.5), v = le(g.dst, M(65504)), y = g.didHit.select(W(_, v), W(0, 0, 0, M(65504)));
10283
10303
  je(s, Ie(z(l), z(u)), y).toWriteOnly();
10284
10304
  let b = g.normal.toVar();
10285
10305
  p(g.didHit, () => {
@@ -10354,11 +10374,11 @@ var qu = class extends lc {
10354
10374
  _buildScreenSpaceCompute() {
10355
10375
  let e = this._normalDepthTexNode, t = this.cameraWorldMatrix, n = this.cameraProjectionMatrixInverse, r = this.prevVP, i = this.resolutionWidth, a = this.resolutionHeight, o = this._screenSpaceStorageTex;
10356
10376
  this._screenSpaceComputeNode = f(([t, n]) => {
10357
- let s = N(K.x).mul(16).add(N(se.x)), c = N(K.y).mul(16).add(N(se.y));
10377
+ let s = N(K.x).mul(16).add(N(oe.x)), c = N(K.y).mul(16).add(N(oe.y));
10358
10378
  p(s.lessThan(N(i)).and(c.lessThan(N(a))), () => {
10359
- let l = R(e, ie(s, c)).w, u = H(M(s).add(.5).div(i), M(c).add(.5).div(a)), d = W(0, 0, l, 1).toVar();
10379
+ let l = ke(e, P(s, c)).w, u = H(M(s).add(.5).div(i), M(c).add(.5).div(a)), d = W(0, 0, l, 1).toVar();
10360
10380
  p(l.lessThan(M(6e4)), () => {
10361
- let e = U(M(s).add(.5).div(i).mul(2).sub(1), M(c).add(.5).div(a).mul(2).sub(1).negate(), 1), o = n.mul(W(e, 1)), f = I(le(t[0].xyz, t[1].xyz, t[2].xyz).mul(o.xyz.div(o.w))), p = U(t[3]).add(f.mul(l)), m = r.mul(W(p, 1)), h = m.xy.div(m.w), g = H(h.x.mul(.5).add(.5), h.y.mul(-.5).add(.5)), _ = u.sub(g), v = g.x.greaterThanEqual(0).and(g.x.lessThanEqual(1)).and(g.y.greaterThanEqual(0)).and(g.y.lessThanEqual(1));
10381
+ let e = U(M(s).add(.5).div(i).mul(2).sub(1), M(c).add(.5).div(a).mul(2).sub(1).negate(), 1), o = n.mul(W(e, 1)), f = L(ce(t[0].xyz, t[1].xyz, t[2].xyz).mul(o.xyz.div(o.w))), p = U(t[3]).add(f.mul(l)), m = r.mul(W(p, 1)), h = m.xy.div(m.w), g = H(h.x.mul(.5).add(.5), h.y.mul(-.5).add(.5)), _ = u.sub(g), v = g.x.greaterThanEqual(0).and(g.x.lessThanEqual(1)).and(g.y.greaterThanEqual(0)).and(g.y.lessThanEqual(1));
10362
10382
  d.assign(v.select(W(_, l, 1), W(M(1e3), M(1e3), l, 0)));
10363
10383
  }), je(o, Ie(z(s), z(c)), d).toWriteOnly();
10364
10384
  });
@@ -10375,11 +10395,11 @@ var qu = class extends lc {
10375
10395
  _buildWorldSpaceCompute() {
10376
10396
  let e = this._normalDepthTexNode, t = this.cameraWorldMatrix, n = this.cameraProjectionMatrixInverse, r = this.prevVP, i = this.isFirstFrameU, a = this.deltaTime, o = this.velocityScale, s = this.resolutionWidth, c = this.resolutionHeight, l = this._worldSpaceStorageTex;
10377
10397
  this._worldSpaceComputeNode = f(([t, n]) => {
10378
- let u = N(K.x).mul(16).add(N(se.x)), d = N(K.y).mul(16).add(N(se.y));
10398
+ let u = N(K.x).mul(16).add(N(oe.x)), d = N(K.y).mul(16).add(N(oe.y));
10379
10399
  p(u.lessThan(N(s)).and(d.lessThan(N(c))), () => {
10380
- let f = R(e, ie(u, d)).w, m = W(0, 0, 0, 0).toVar();
10400
+ let f = ke(e, P(u, d)).w, m = W(0, 0, 0, 0).toVar();
10381
10401
  p(i.lessThan(.5).and(f.lessThan(M(6e4))), () => {
10382
- let e = U(M(u).add(.5).div(s).mul(2).sub(1), M(d).add(.5).div(c).mul(2).sub(1).negate(), 1), i = n.mul(W(e, 1)), l = I(le(t[0].xyz, t[1].xyz, t[2].xyz).mul(i.xyz.div(i.w))), p = U(t[3]).add(l.mul(f)), h = H(M(u).add(.5).div(s), M(d).add(.5).div(c)), g = r.mul(W(p, 1)), _ = g.xy.div(g.w), v = H(_.x.mul(.5).add(.5), _.y.mul(-.5).add(.5)), y = v.x.greaterThanEqual(0).and(v.x.lessThanEqual(1)).and(v.y.greaterThanEqual(0)).and(v.y.lessThanEqual(1)), b = h.sub(v), x = U(b.x.div(a).mul(o), b.y.div(a).mul(o), 0);
10402
+ let e = U(M(u).add(.5).div(s).mul(2).sub(1), M(d).add(.5).div(c).mul(2).sub(1).negate(), 1), i = n.mul(W(e, 1)), l = L(ce(t[0].xyz, t[1].xyz, t[2].xyz).mul(i.xyz.div(i.w))), p = U(t[3]).add(l.mul(f)), h = H(M(u).add(.5).div(s), M(d).add(.5).div(c)), g = r.mul(W(p, 1)), _ = g.xy.div(g.w), v = H(_.x.mul(.5).add(.5), _.y.mul(-.5).add(.5)), y = v.x.greaterThanEqual(0).and(v.x.lessThanEqual(1)).and(v.y.greaterThanEqual(0)).and(v.y.lessThanEqual(1)), b = h.sub(v), x = U(b.x.div(a).mul(o), b.y.div(a).mul(o), 0);
10383
10403
  m.assign(y.select(W(x, 1), W(0, 0, 0, .5)));
10384
10404
  }), je(l, Ie(z(u), z(d)), m).toWriteOnly();
10385
10405
  });
@@ -10445,7 +10465,7 @@ var qu = class extends lc {
10445
10465
  dispose() {
10446
10466
  this._screenSpaceComputeNode?.dispose(), this._worldSpaceComputeNode?.dispose(), this._screenSpaceStorageTex?.dispose(), this._worldSpaceStorageTex?.dispose(), this.screenSpaceTarget?.dispose(), this.worldSpaceTarget?.dispose(), this._normalDepthTexNode?.dispose();
10447
10467
  }
10448
- }, Xu = (e) => L(e.equal(e), e, M(0)).clamp(0, 1e7), Zu = (e) => U(Xu(e.x), Xu(e.y), Xu(e.z)), Qu = class extends Qn {
10468
+ }, Xu = (e) => R(e.equal(e), e, M(0)).clamp(0, 1e7), Zu = (e) => U(Xu(e.x), Xu(e.y), Xu(e.z)), Qu = class extends Qn {
10449
10469
  constructor(e, t = {}) {
10450
10470
  super("ASVGF", {
10451
10471
  ...t,
@@ -10485,10 +10505,10 @@ var qu = class extends lc {
10485
10505
  _buildGradientCompute() {
10486
10506
  let e = this._colorTexNode, t = this._albedoTexNode, n = this._motionTexNode, r = this._readTemporalTexNode, i = this.gradientNoiseFloor, a = this.gradientSigmaScale, o = this._gradientStorageTex, s = this.resW, c = this.resH, l = Re("float", 144), u = Re("float", 144);
10487
10507
  this._gradientNode = f(() => {
10488
- let d = se.x, f = se.y, m = f.mul(8).add(d), h = N(K.x).mul(8).sub(2).toVar(), g = N(K.y).mul(8).sub(2).toVar(), v = (i) => {
10489
- let a = i.mod(z(12)), o = i.div(z(12)), d = h.add(N(a)).clamp(N(0), N(s).sub(1)), f = g.add(N(o)).clamp(N(0), N(c).sub(1)), p = R(e, ie(d, f)).xyz, m = R(t, ie(d, f)).xyz, _ = Xi(Zu(p.div(P(m, U(mr))))).toVar();
10508
+ let d = oe.x, f = oe.y, m = f.mul(8).add(d), h = N(K.x).mul(8).sub(2).toVar(), g = N(K.y).mul(8).sub(2).toVar(), v = (i) => {
10509
+ let a = i.mod(z(12)), o = i.div(z(12)), d = h.add(N(a)).clamp(N(0), N(s).sub(1)), f = g.add(N(o)).clamp(N(0), N(c).sub(1)), p = ke(e, P(d, f)).xyz, m = ke(t, P(d, f)).xyz, _ = Xi(Zu(p.div(F(m, U(mr))))).toVar();
10490
10510
  l.element(i).assign(_);
10491
- let v = R(n, ie(d, f)), y = M(d).sub(v.x.mul(s)), b = M(f).sub(v.y.mul(c)), x = N(y.add(.5)).clamp(N(0), N(s).sub(1)), S = N(b.add(.5)).clamp(N(0), N(c).sub(1)), C = v.w.greaterThan(.5), w = R(r, ie(x, S)).xyz, T = C.select(Xi(w), _);
10511
+ let v = ke(n, P(d, f)), y = M(d).sub(v.x.mul(s)), b = M(f).sub(v.y.mul(c)), x = N(y.add(.5)).clamp(N(0), N(s).sub(1)), S = N(b.add(.5)).clamp(N(0), N(c).sub(1)), C = v.w.greaterThan(.5), w = ke(r, P(x, S)).xyz, T = C.select(Xi(w), _);
10492
10512
  u.element(i).assign(T);
10493
10513
  };
10494
10514
  v(m);
@@ -10507,12 +10527,12 @@ var qu = class extends lc {
10507
10527
  let i = f.add(z(2 + n)).mul(z(12)).add(d.add(z(2 + r))), a = l.element(i);
10508
10528
  e.addAssign(a), t.addAssign(a.mul(a));
10509
10529
  }
10510
- let p = e.div(25), m = Se(P(t.div(25).sub(p.mul(p)), M(0))).mul(a).toVar(), h = M(0).toVar();
10530
+ let p = e.div(25), m = xe(F(t.div(25).sub(p.mul(p)), M(0))).mul(a).toVar(), h = M(0).toVar();
10511
10531
  for (let e = -2; e <= 2; e++) for (let t = -2; t <= 2; t++) {
10512
- let n = f.add(z(2 + e)).mul(z(12)).add(d.add(z(2 + t))), r = l.element(n), a = u.element(n), o = P(P(_(r.sub(a)).sub(m), M(0)).div(P(P(r, a), M(.001))).sub(i), M(0)).div(P(M(1).sub(i), M(1e-4)));
10532
+ let n = f.add(z(2 + e)).mul(z(12)).add(d.add(z(2 + t))), r = l.element(n), a = u.element(n), o = F(F(_(r.sub(a)).sub(m), M(0)).div(F(F(r, a), M(.001))).sub(i), M(0)).div(F(M(1).sub(i), M(1e-4)));
10513
10533
  h.addAssign(o.mul(o));
10514
10534
  }
10515
- let g = h.div(25).clamp(0, 1).toVar(), v = R(n, ie(x, S)), y = N(M(x).sub(v.x.mul(s)).add(.5)).clamp(N(0), N(s).sub(1)), b = N(M(S).sub(v.y.mul(c)).add(.5)).clamp(N(0), N(c).sub(1)), C = v.w.greaterThan(.5).select(R(r, ie(y, b)).w, M(0)).div(4).clamp(0, 1), w = g.mul(C);
10535
+ let g = h.div(25).clamp(0, 1).toVar(), v = ke(n, P(x, S)), y = N(M(x).sub(v.x.mul(s)).add(.5)).clamp(N(0), N(s).sub(1)), b = N(M(S).sub(v.y.mul(c)).add(.5)).clamp(N(0), N(c).sub(1)), C = v.w.greaterThan(.5).select(ke(r, P(y, b)).w, M(0)).div(4).clamp(0, 1), w = g.mul(C);
10516
10536
  je(o, Ie(z(x), z(S)), W(w, g, m, 1)).toWriteOnly();
10517
10537
  });
10518
10538
  })().compute([
@@ -10531,18 +10551,18 @@ var qu = class extends lc {
10531
10551
  _buildTemporalForDirection(e) {
10532
10552
  let t = this._colorTexNode, n = this._albedoTexNode, r = this._motionTexNode, i = this._normalDepthTexNode, a = this._prevNormalDepthTexNode, o = this._readTemporalTexNode, s = this._gradientReadTexNode, c = this._outputModulatedTex, l = this.maxAccumFrames, u = this.temporalAlpha, d = this.gradientStrength, m = this.temporalEnabledU, h = this.forceResetU, g = this.resW, v = this.resH;
10533
10553
  return f(() => {
10534
- let f = N(K.x).mul(8).add(N(se.x)), y = N(K.y).mul(8).add(N(se.y));
10554
+ let f = N(K.x).mul(8).add(N(oe.x)), y = N(K.y).mul(8).add(N(oe.y));
10535
10555
  p(f.lessThan(N(g)).and(y.lessThan(N(v))), () => {
10536
- let b = ie(f, y), x = R(t, b).xyz, S = R(n, b).xyz, C = P(S, U(mr)), w = Zu(x.div(C)), T = W(w, 1).toVar(), E = W(x, 1).toVar();
10556
+ let b = P(f, y), x = ke(t, b).xyz, S = ke(n, b).xyz, C = F(S, U(mr)), w = Zu(x.div(C)), T = W(w, 1).toVar(), E = W(x, 1).toVar();
10537
10557
  p(m.greaterThan(.5).and(h.lessThan(.5)), () => {
10538
- let e = R(r, b), t = e.w.greaterThan(.5), n = M(f).sub(e.x.mul(g)), c = M(y).sub(e.y.mul(v)), m = n.greaterThanEqual(0).and(n.lessThan(M(g))).and(c.greaterThanEqual(0)).and(c.lessThan(M(v)));
10558
+ let e = ke(r, b), t = e.w.greaterThan(.5), n = M(f).sub(e.x.mul(g)), c = M(y).sub(e.y.mul(v)), m = n.greaterThanEqual(0).and(n.lessThan(M(g))).and(c.greaterThanEqual(0)).and(c.lessThan(M(v)));
10539
10559
  p(t.and(m), () => {
10540
- let e = R(i, b), t = e.xyz.mul(2).sub(1), r = e.w, f = N(n), m = N(c), h = f.add(N(1)), y = m.add(N(1)), x = n.sub(M(f)), S = c.sub(M(m)), D = f.clamp(N(0), N(g).sub(1)), O = h.clamp(N(0), N(g).sub(1)), k = m.clamp(N(0), N(v).sub(1)), ee = y.clamp(N(0), N(v).sub(1)), te = M(1).sub(x).mul(M(1).sub(S)), ne = x.mul(M(1).sub(S)), re = M(1).sub(x).mul(S), ae = x.mul(S), oe = (e, n, i) => {
10541
- let o = R(a, ie(e, n)), s = o.xyz.mul(2).sub(1), c = o.w, l = he(A(t, s).clamp(0, 1), M(16)), u = j(_(r.sub(c)).div(P(r, M(.001))).div(M(.05)).negate());
10560
+ let e = ke(i, b), t = e.xyz.mul(2).sub(1), r = e.w, f = N(n), m = N(c), h = f.add(N(1)), y = m.add(N(1)), x = n.sub(M(f)), S = c.sub(M(m)), D = f.clamp(N(0), N(g).sub(1)), O = h.clamp(N(0), N(g).sub(1)), k = m.clamp(N(0), N(v).sub(1)), ee = y.clamp(N(0), N(v).sub(1)), te = M(1).sub(x).mul(M(1).sub(S)), ne = x.mul(M(1).sub(S)), re = M(1).sub(x).mul(S), ie = x.mul(S), ae = (e, n, i) => {
10561
+ let o = ke(a, P(e, n)), s = o.xyz.mul(2).sub(1), c = o.w, l = me(A(t, s).clamp(0, 1), M(16)), u = j(_(r.sub(c)).div(F(r, M(.001))).div(M(.05)).negate());
10542
10562
  return i.mul(l).mul(u);
10543
- }, se = oe(D, k, te), ce = oe(O, k, ne), le = oe(D, ee, re), de = oe(O, ee, ae), I = se.add(ce).add(le).add(de);
10544
- p(I.greaterThan(M(.01)), () => {
10545
- let e = R(o, ie(D, k)), t = R(o, ie(O, k)), n = R(o, ie(D, ee)), r = R(o, ie(O, ee)), i = M(1).div(I), a = e.xyz.mul(se).add(t.xyz.mul(ce)).add(n.xyz.mul(le)).add(r.xyz.mul(de)).mul(i), c = e.w.mul(se).add(t.w.mul(ce)).add(n.w.mul(le)).add(r.w.mul(de)).mul(i), f = R(s, b).x.mul(d).clamp(0, 1), p = Zu(F(a, w, F(P(M(1).div(c.add(1)), u), M(1), f))), m = ue(c.add(1), l);
10563
+ }, oe = ae(D, k, te), se = ae(O, k, ne), ce = ae(D, ee, re), ue = ae(O, ee, ie), L = oe.add(se).add(ce).add(ue);
10564
+ p(L.greaterThan(M(.01)), () => {
10565
+ let e = ke(o, P(D, k)), t = ke(o, P(O, k)), n = ke(o, P(D, ee)), r = ke(o, P(O, ee)), i = M(1).div(L), a = e.xyz.mul(oe).add(t.xyz.mul(se)).add(n.xyz.mul(ce)).add(r.xyz.mul(ue)).mul(i), c = e.w.mul(oe).add(t.w.mul(se)).add(n.w.mul(ce)).add(r.w.mul(ue)).mul(i), f = ke(s, b).x.mul(d).clamp(0, 1), p = Zu(I(a, w, I(F(M(1).div(c.add(1)), u), M(1), f))), m = le(c.add(1), l);
10546
10566
  T.assign(W(p, m)), E.assign(W(p.mul(C), 1));
10547
10567
  });
10548
10568
  });
@@ -10561,32 +10581,32 @@ var qu = class extends lc {
10561
10581
  _buildHeatmapCompute() {
10562
10582
  let e = this._heatmapRawColorTexNode, t = this._heatmapColorTexNode, n = this._heatmapTemporalTexNode, r = this._heatmapNDTexNode, i = this._heatmapMotionTexNode, a = this._heatmapGradientTexNode, o = this._heatmapStorageTex, s = this.debugMode, c = this.resW, l = this.resH;
10563
10583
  this._heatmapComputeNode = f(() => {
10564
- let u = N(K.x).mul(8).add(N(se.x)), d = N(K.y).mul(8).add(N(se.y));
10584
+ let u = N(K.x).mul(8).add(N(oe.x)), d = N(K.y).mul(8).add(N(oe.y));
10565
10585
  p(u.lessThan(N(c)).and(d.lessThan(N(l))), () => {
10566
- let f = ie(u, d), m = W(0, 0, 0, 1).toVar();
10586
+ let f = P(u, d), m = W(0, 0, 0, 1).toVar();
10567
10587
  p(s.equal(N(0)), () => {
10568
- let e = R(t, f).xyz;
10588
+ let e = ke(t, f).xyz;
10569
10589
  m.assign(W(e, 1));
10570
10590
  }).ElseIf(s.equal(N(1)), () => {
10571
10591
  let t = M(0).toVar(), n = M(0).toVar();
10572
10592
  for (let r = -1; r <= 1; r++) for (let i = -1; i <= 1; i++) {
10573
- let a = R(e, ie(u.add(i).clamp(N(0), N(c).sub(1)), d.add(r).clamp(N(0), N(l).sub(1)))).xyz, o = Xi(a);
10593
+ let a = ke(e, P(u.add(i).clamp(N(0), N(c).sub(1)), d.add(r).clamp(N(0), N(l).sub(1)))).xyz, o = Xi(a);
10574
10594
  t.addAssign(o), n.addAssign(o.mul(o));
10575
10595
  }
10576
10596
  t.divAssign(9), n.divAssign(9);
10577
- let r = P(n.sub(t.mul(t)), M(0)).div(P(t.mul(t), M(1e-4))).mul(10).clamp(0, 1), i = r.sub(.5).mul(4).clamp(0, 1), a = r.mul(4).clamp(0, 1).sub(r.sub(.75).mul(4).clamp(0, 1)), o = M(1).sub(r.sub(.25).mul(4).clamp(0, 1));
10597
+ let r = F(n.sub(t.mul(t)), M(0)).div(F(t.mul(t), M(1e-4))).mul(10).clamp(0, 1), i = r.sub(.5).mul(4).clamp(0, 1), a = r.mul(4).clamp(0, 1).sub(r.sub(.75).mul(4).clamp(0, 1)), o = M(1).sub(r.sub(.25).mul(4).clamp(0, 1));
10578
10598
  m.assign(W(i, a, o, 1));
10579
10599
  }).ElseIf(s.equal(N(2)), () => {
10580
- let e = R(n, f).w.div(32).clamp(0, 1);
10600
+ let e = ke(n, f).w.div(32).clamp(0, 1);
10581
10601
  m.assign(W(M(1).sub(e), e, M(.2), 1));
10582
10602
  }).ElseIf(s.equal(N(3)), () => {
10583
- let e = R(i, f), t = _(e.x).mul(100).clamp(0, 1), n = _(e.y).mul(100).clamp(0, 1), r = t.add(n).clamp(0, 1);
10603
+ let e = ke(i, f), t = _(e.x).mul(100).clamp(0, 1), n = _(e.y).mul(100).clamp(0, 1), r = t.add(n).clamp(0, 1);
10584
10604
  m.assign(W(t, n, r.mul(.3), 1));
10585
10605
  }).ElseIf(s.equal(N(4)), () => {
10586
- let e = R(r, f);
10606
+ let e = ke(r, f);
10587
10607
  m.assign(W(e.xyz, 1));
10588
10608
  }).Else(() => {
10589
- let e = R(a, f).x.mul(5).clamp(0, 1);
10609
+ let e = ke(a, f).x.mul(5).clamp(0, 1);
10590
10610
  m.assign(W(e, e.mul(.5), M(1).sub(e), 1));
10591
10611
  }), je(o, Ie(z(u), z(d)), m).toWriteOnly();
10592
10612
  });
@@ -10654,7 +10674,7 @@ var qu = class extends lc {
10654
10674
  dispose() {
10655
10675
  this._gradientNode?.dispose(), this._temporalNodeA?.dispose(), this._temporalNodeB?.dispose(), this._temporalTexA?.dispose(), this._temporalTexB?.dispose(), this._outputModulatedTex?.dispose(), this._gradientStorageTex?.dispose(), this._demodulatedRT?.dispose(), this._outputRT?.dispose(), this._gradientRT?.dispose(), this._heatmapComputeNode?.dispose(), this._heatmapStorageTex?.dispose(), this.heatmapTarget?.dispose(), this._colorTexNode?.dispose(), this._albedoTexNode?.dispose(), this._motionTexNode?.dispose(), this._normalDepthTexNode?.dispose(), this._prevNormalDepthTexNode?.dispose(), this._readTemporalTexNode?.dispose(), this._gradientReadTexNode?.dispose(), this._heatmapRawColorTexNode?.dispose(), this._heatmapColorTexNode?.dispose(), this._heatmapTemporalTexNode?.dispose(), this._heatmapNDTexNode?.dispose(), this._heatmapMotionTexNode?.dispose(), this._heatmapGradientTexNode?.dispose();
10656
10676
  }
10657
- }, $u = (e) => L(e.equal(e), e, M(0)).clamp(0, 1e7), ed = /* @__PURE__ */ G("\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"), td = class extends Qn {
10677
+ }, $u = (e) => R(e.equal(e), e, M(0)).clamp(0, 1e7), ed = /* @__PURE__ */ G("\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"), td = class extends Qn {
10658
10678
  constructor(e, t = {}) {
10659
10679
  super("VarianceEstimation", {
10660
10680
  ...t,
@@ -10679,9 +10699,9 @@ var qu = class extends lc {
10679
10699
  _buildComputeForDirection(e, t) {
10680
10700
  let n = this._colorTexNode, r = this.temporalAlpha, i = this.varianceBoost, a = this.resW, o = this.resH, s = Re("float", 100);
10681
10701
  return f(() => {
10682
- let c = se.x, l = se.y, u = l.mul(8).add(c), d = N(K.x).mul(8).sub(1), f = N(K.y).mul(8).sub(1), m = u.mod(10), h = u.div(10), g = R(n, ie(d.add(N(m)).clamp(N(0), N(a).sub(1)), f.add(N(h)).clamp(N(0), N(o).sub(1)))).xyz;
10702
+ let c = oe.x, l = oe.y, u = l.mul(8).add(c), d = N(K.x).mul(8).sub(1), f = N(K.y).mul(8).sub(1), m = u.mod(10), h = u.div(10), g = ke(n, P(d.add(N(m)).clamp(N(0), N(a).sub(1)), f.add(N(h)).clamp(N(0), N(o).sub(1)))).xyz;
10683
10703
  s.element(u).assign($u(Xi(g))), p(u.lessThan(z(36)), () => {
10684
- let e = u.add(z(64)), t = e.mod(10), r = e.div(10), i = R(n, ie(d.add(N(t)).clamp(N(0), N(a).sub(1)), f.add(N(r)).clamp(N(0), N(o).sub(1)))).xyz;
10704
+ let e = u.add(z(64)), t = e.mod(10), r = e.div(10), i = ke(n, P(d.add(N(t)).clamp(N(0), N(a).sub(1)), f.add(N(r)).clamp(N(0), N(o).sub(1)))).xyz;
10685
10705
  s.element(e).assign($u(Xi(i)));
10686
10706
  }), ze();
10687
10707
  let _ = N(K.x).mul(8).add(N(c)), v = N(K.y).mul(8).add(N(l));
@@ -10692,7 +10712,7 @@ var qu = class extends lc {
10692
10712
  n.addAssign(r), a.addAssign(r.mul(r));
10693
10713
  }
10694
10714
  n.divAssign(9), a.divAssign(9);
10695
- let o = P(a.sub(n.mul(n)), M(0)), u = s.element(l.add(1).mul(10).add(c.add(1))), d = R(t, ie(_, v));
10715
+ let o = F(a.sub(n.mul(n)), M(0)), u = s.element(l.add(1).mul(10).add(c.add(1))), d = ke(t, P(_, v));
10696
10716
  je(e, Ie(z(_), z(v)), ed(u, d.x, d.y, r, o, i)).toWriteOnly();
10697
10717
  });
10698
10718
  })().compute([
@@ -10787,14 +10807,14 @@ var qu = class extends lc {
10787
10807
  1 / 256
10788
10808
  ];
10789
10809
  return f(() => {
10790
- let f = N(K.x).mul(8).add(N(se.x)), v = N(K.y).mul(8).add(N(se.y));
10810
+ let f = N(K.x).mul(8).add(N(oe.x)), v = N(K.y).mul(8).add(N(oe.y));
10791
10811
  p(f.lessThan(N(h)).and(v.lessThan(N(g))), () => {
10792
- let p = ie(f, v), y = R(t, p).xyz, b = R(n, p), x = R(r, p).xyz.mul(2).sub(1), S = b.w, C = Xi(y), w = P(R(i, p).xyz, U(mr)), T = P(Xi(w), M(mr)).toVar(), E = R(a, p), D = F(E.z, P(E.z, E.w), u), O = l.mul(Se(P(D, M(0)))).div(T).add(M(1e-4)), k = U(0).toVar(), A = M(0).toVar();
10812
+ let p = P(f, v), y = ke(t, p).xyz, b = ke(n, p), x = ke(r, p).xyz.mul(2).sub(1), S = b.w, C = Xi(y), w = F(ke(i, p).xyz, U(mr)), T = F(Xi(w), M(mr)).toVar(), E = ke(a, p), D = I(E.z, F(E.z, E.w), u), O = l.mul(xe(F(D, M(0)))).div(T).add(M(1e-4)), k = U(0).toVar(), A = M(0).toVar();
10793
10813
  for (let e = 0; e < 5; e++) for (let i = 0; i < 5; i++) {
10794
- let a = i - 2, l = e - 2, u = _[e * 5 + i], p = f.add(d.mul(a)).clamp(N(0), N(h).sub(1)), m = v.add(d.mul(l)).clamp(N(0), N(g).sub(1)), b = R(t, ie(p, m)).xyz, w = R(n, ie(p, m)), T = R(r, ie(p, m)).xyz.mul(2).sub(1), E = w.w, D = nd(C, Xi(b), x, T, S, E, y, b, M(u), O, s, c, o);
10814
+ let a = i - 2, l = e - 2, u = _[e * 5 + i], p = f.add(d.mul(a)).clamp(N(0), N(h).sub(1)), m = v.add(d.mul(l)).clamp(N(0), N(g).sub(1)), b = ke(t, P(p, m)).xyz, w = ke(n, P(p, m)), T = ke(r, P(p, m)).xyz.mul(2).sub(1), E = w.w, D = nd(C, Xi(b), x, T, S, E, y, b, M(u), O, s, c, o);
10795
10815
  k.addAssign(b.mul(D)), A.addAssign(D);
10796
10816
  }
10797
- let j = k.div(P(A, M(1e-4))), ee = m.equal(N(1)).select(j.mul(w), j);
10817
+ let j = k.div(F(A, M(1e-4))), ee = m.equal(N(1)).select(j.mul(w), j);
10798
10818
  je(e, Ie(z(f), z(v)), W(ee, 1)).toWriteOnly();
10799
10819
  });
10800
10820
  })().compute([
@@ -10842,7 +10862,7 @@ var qu = class extends lc {
10842
10862
  dispose() {
10843
10863
  this._computeNodeA?.dispose(), this._computeNodeB?.dispose(), this._storageTexA?.dispose(), this._storageTexB?.dispose(), this._outputTarget?.dispose(), this._readTexNode?.dispose(), this._normalDepthTexNode?.dispose(), this._shadingNormalTexNode?.dispose(), this._albedoTexNode?.dispose(), this._varianceTexNode?.dispose();
10844
10864
  }
10845
- }, id = 6e4, ad = (e) => L(e.equal(e), e, M(0)).clamp(0, 1e7), od = (e) => U(ad(e.x), ad(e.y), ad(e.z)), sd = [
10865
+ }, id = 6e4, ad = (e) => R(e.equal(e), e, M(0)).clamp(0, 1e7), od = (e) => U(ad(e.x), ad(e.y), ad(e.z)), sd = [
10846
10866
  1 / 256,
10847
10867
  4 / 256,
10848
10868
  6 / 256,
@@ -10894,9 +10914,9 @@ var qu = class extends lc {
10894
10914
  _buildDemod() {
10895
10915
  let e = this._colorTexNode, t = this._ndTexNode, n = this._albedoTexNode, r = this._demodTex, i = this.resW, a = this.resH;
10896
10916
  return f(() => {
10897
- let o = N(K.x).mul(16).add(N(se.x)), s = N(K.y).mul(16).add(N(se.y));
10917
+ let o = N(K.x).mul(16).add(N(oe.x)), s = N(K.y).mul(16).add(N(oe.y));
10898
10918
  p(o.lessThan(N(i)).and(s.lessThan(N(a))), () => {
10899
- let i = ie(o, s), a = R(e, i).xyz, c = R(t, i).w.lessThan(M(id)), l = R(n, i).xyz, u = L(c, P(l, U(mr)), U(1)), d = od(a.div(u));
10919
+ let i = P(o, s), a = ke(e, i).xyz, c = ke(t, i).w.lessThan(M(id)), l = ke(n, i).xyz, u = R(c, F(l, U(mr)), U(1)), d = od(a.div(u));
10900
10920
  je(r, Ie(z(o), z(s)), W(d, 1)).toWriteOnly();
10901
10921
  });
10902
10922
  })().compute([
@@ -10912,15 +10932,15 @@ var qu = class extends lc {
10912
10932
  _buildAtrous(e) {
10913
10933
  let t = this._readTexNode, n = this._colorTexNode, r = this._ndTexNode, i = this._snTexNode, a = this._albedoTexNode, o = this._varTexNode, s = this.filterStrength, c = this.phiLuminance, l = this.phiNormal, u = this.phiDepth, d = this.stepSizeU, m = this.isLastIterationU, h = this.resW, g = this.resH;
10914
10934
  return f(() => {
10915
- let f = N(K.x).mul(16).add(N(se.x)), _ = N(K.y).mul(16).add(N(se.y));
10935
+ let f = N(K.x).mul(16).add(N(oe.x)), _ = N(K.y).mul(16).add(N(oe.y));
10916
10936
  p(f.lessThan(N(h)).and(_.lessThan(N(g))), () => {
10917
- let p = ie(f, _), v = R(t, p).xyz, y = Xi(v), b = R(r, p).w, x = R(i, p).xyz.mul(2).sub(1), S = b.lessThan(M(id)), C = L(S, M(1), M(0)), w = R(a, p).xyz, T = L(S, P(w, U(mr)), U(1)), E = P(Xi(T), M(mr)), D = R(o, p), O = P(D.z, D.w), k = c.mul(Se(P(O, M(0)))).div(E).add(M(1e-4)), j = U(0).toVar(), ee = M(0).toVar();
10937
+ let p = P(f, _), v = ke(t, p).xyz, y = Xi(v), b = ke(r, p).w, x = ke(i, p).xyz.mul(2).sub(1), S = b.lessThan(M(id)), C = R(S, M(1), M(0)), w = ke(a, p).xyz, T = R(S, F(w, U(mr)), U(1)), E = F(Xi(T), M(mr)), D = ke(o, p), O = F(D.z, D.w), k = c.mul(xe(F(O, M(0)))).div(E).add(M(1e-4)), j = U(0).toVar(), ee = M(0).toVar();
10918
10938
  for (let e = 0; e < 5; e++) for (let n = 0; n < 5; n++) {
10919
- let a = n - 2, o = e - 2, s = sd[e * 5 + n], c = ie(f.add(d.mul(a)).clamp(N(0), N(h).sub(1)), _.add(d.mul(o)).clamp(N(0), N(g).sub(1))), p = R(t, c).xyz, m = Xi(p), v = R(r, c).w, S = R(i, c).xyz.mul(2).sub(1), w = L(v.lessThan(M(id)), M(1), M(0)), T = y.sub(m).abs().div(k).negate().exp(), E = he(A(x, S).clamp(0, 1), l), D = b.sub(v).abs().div(P(b.mul(u), M(.001))).negate().exp(), O = C.mul(w), te = C.oneMinus().mul(w.oneMinus()), ne = O.add(te), re = F(M(1), E.mul(D), O), ae = M(s).mul(T).mul(re).mul(ne);
10920
- j.addAssign(p.mul(ae)), ee.addAssign(ae);
10939
+ let a = n - 2, o = e - 2, s = sd[e * 5 + n], c = P(f.add(d.mul(a)).clamp(N(0), N(h).sub(1)), _.add(d.mul(o)).clamp(N(0), N(g).sub(1))), p = ke(t, c).xyz, m = Xi(p), v = ke(r, c).w, S = ke(i, c).xyz.mul(2).sub(1), w = R(v.lessThan(M(id)), M(1), M(0)), T = y.sub(m).abs().div(k).negate().exp(), E = me(A(x, S).clamp(0, 1), l), D = b.sub(v).abs().div(F(b.mul(u), M(.001))).negate().exp(), O = C.mul(w), te = C.oneMinus().mul(w.oneMinus()), ne = O.add(te), re = I(M(1), E.mul(D), O), ie = M(s).mul(T).mul(re).mul(ne);
10940
+ j.addAssign(p.mul(ie)), ee.addAssign(ie);
10921
10941
  }
10922
- let te = j.div(P(ee, M(1e-4))), ne = m.equal(N(1)), re = R(n, p).xyz, ae = F(re, te.mul(T), s), oe = ne.select(ae, te);
10923
- je(e, Ie(z(f), z(_)), W(oe, 1)).toWriteOnly();
10942
+ let te = j.div(F(ee, M(1e-4))), ne = m.equal(N(1)), re = ke(n, p).xyz, ie = I(re, te.mul(T), s), ae = ne.select(ie, te);
10943
+ je(e, Ie(z(f), z(_)), W(ae, 1)).toWriteOnly();
10924
10944
  });
10925
10945
  })().compute([
10926
10946
  this._dispatchX,
@@ -10999,9 +11019,9 @@ var qu = class extends lc {
10999
11019
  _buildDownsampleCompute() {
11000
11020
  let e = this._inputTexNode, t = this._downsampleStorageTex, n = this.epsilonU, r = this.inputResW, i = this.inputResH;
11001
11021
  this._downsampleComputeNode = f(() => {
11002
- let a = N(K.x).mul(8).add(N(se.x)), o = N(K.y).mul(8).add(N(se.y)), s = r.div(M(64)), c = i.div(M(64)), l = M(a).mul(s), u = M(o).mul(c), d = M(0).toVar(), f = M(0).toVar();
11022
+ let a = N(K.x).mul(8).add(N(oe.x)), o = N(K.y).mul(8).add(N(oe.y)), s = r.div(M(64)), c = i.div(M(64)), l = M(a).mul(s), u = M(o).mul(c), d = M(0).toVar(), f = M(0).toVar();
11003
11023
  for (let t = 0; t < 4; t++) for (let r = 0; r < 4; r++) {
11004
- let i = Xi(R(e, ie(N(l.add(M((r + .5) / 4).mul(s))), N(u.add(M((t + .5) / 4).mul(c))))).xyz);
11024
+ let i = Xi(ke(e, P(N(l.add(M((r + .5) / 4).mul(s))), N(u.add(M((t + .5) / 4).mul(c))))).xyz);
11005
11025
  p(i.greaterThan(n), () => {
11006
11026
  d.addAssign(i.add(n).log()), f.addAssign(1);
11007
11027
  });
@@ -11020,10 +11040,10 @@ var qu = class extends lc {
11020
11040
  _buildHistogramCompute() {
11021
11041
  let e = this._downsampleTarget.texture, t = this._histogramBuffer, n = this.centerWeightU;
11022
11042
  this._histogramComputeNode = f(() => {
11023
- let r = se.x;
11043
+ let r = oe.x;
11024
11044
  C(t.element(r), z(0)), ze();
11025
11045
  for (let i = 0; i < 16; i++) {
11026
- let a = r.mul(16).add(i), o = a.mod(64), s = a.div(64), c = R(e, ie(N(o), N(s))), l = c.x, u = c.y;
11046
+ let a = r.mul(16).add(i), o = a.mod(64), s = a.div(64), c = ke(e, P(N(o), N(s))), l = c.x, u = c.y;
11027
11047
  p(u.greaterThan(0), () => {
11028
11048
  let e = z(l.div(u).sub(M(ud)).div(M(dd)).mul(M(ld)).floor().clamp(0, M(ld - 1))), r = M(o).add(.5).div(M(64)), i = M(s).add(.5).div(M(64)), a = r.sub(.5), c = i.sub(.5), d = z(a.mul(a).add(c.mul(c)).mul(n).negate().exp().mul(M(pd)));
11029
11049
  x(t.element(e), d);
@@ -11054,7 +11074,7 @@ var qu = class extends lc {
11054
11074
  c.addAssign(e.mul(n)), l.addAssign(n);
11055
11075
  });
11056
11076
  });
11057
- let d = P(l, M(1)), f = c.div(d), h = f.exp();
11077
+ let d = F(l, M(1)), f = c.div(d), h = f.exp();
11058
11078
  je(t, Ie(z(0), z(0)), W(h, i, f, 1)).toWriteOnly();
11059
11079
  })().compute(1, [
11060
11080
  1,
@@ -11065,7 +11085,7 @@ var qu = class extends lc {
11065
11085
  _buildAdaptationCompute() {
11066
11086
  let e = this._reductionReadTexNode, t = this._adaptationResult, n = this.keyValueU, r = this.minExposureU, i = this.maxExposureU, a = this.adaptSpeedBrightU, o = this.adaptSpeedDarkU, s = this.deltaTimeU, c = this.isFirstFrameU, l = this.previousExposureU;
11067
11087
  this._adaptationComputeNode = f(() => {
11068
- let u = R(e, ie(N(0), N(0))).x, d = md(u, l, n, r, i, a, o, s, c);
11088
+ let u = ke(e, P(N(0), N(0))).x, d = md(u, l, n, r, i, a, o, s, c);
11069
11089
  t.element(z(0)).assign(d);
11070
11090
  })().compute(1, [
11071
11091
  1,
@@ -11135,7 +11155,7 @@ var qu = class extends lc {
11135
11155
  ...r,
11136
11156
  executionMode: Zn.ALWAYS
11137
11157
  }), this.renderer = n, this.saturation = V(r.saturation ?? 1), this._transparentBackground = V(0, "int"), this._sourceTexNode = new c();
11138
- let i = this._sourceTexNode.sample(Fe()), a = F(U(A(i.xyz, Ui)), i.xyz, this.saturation), o = L(this._transparentBackground, i.w, 1);
11158
+ let i = this._sourceTexNode.sample(Fe()), a = I(U(A(i.xyz, Ui)), i.xyz, this.saturation), o = R(this._transparentBackground, i.w, 1);
11139
11159
  this.compositorMaterial = new e(), this.compositorMaterial.colorNode = W(a, o), this.compositorMaterial.blending = Et, this.compositorQuad = new t(this.compositorMaterial);
11140
11160
  }
11141
11161
  _resolveSourceTexture(e) {
@@ -15471,7 +15491,7 @@ var qf = {
15471
15491
  }
15472
15492
  _syncGBufferStages() {
15473
15493
  let e = this._stages, t = e.normalDepth, n = e.motionVector, r = !!e.asvgf?.enabled, i = r || !!(e.edgeFilter?.enabled || e.bilateralFilter?.enabled);
15474
- t && (i && !t.enabled && t.reset(), t.enabled = i), n && (r && !n.enabled && (n.matricesInitialized = !1, n.isFirstFrame = !0, n.frameCount = 0), n.enabled = r), e.pathTracer?.setAuxGBufferEnabled?.(i || !!this.denoiser?.enabled);
15494
+ t && (i && !t.enabled && t.reset(), t.enabled = i), n && (r && !n.enabled && (n.matricesInitialized = !1, n.isFirstFrame = !0, n.frameCount = 0), n.enabled = r), e.pathTracer?.setAuxGBufferEnabled?.(i || !!this.denoiser?.enabled), e.pathTracer?.setCleanAuxNormal?.(!!this.denoiser?.enabled && this.denoiser?.quality !== "fast");
15475
15495
  for (let r of [
15476
15496
  e.asvgf,
15477
15497
  e.variance,
@@ -15525,7 +15545,7 @@ var qf = {
15525
15545
  this.denoiser && (this.denoiser.enabled = e), this._syncGBufferStages();
15526
15546
  }
15527
15547
  setOIDNQuality(e) {
15528
- this.denoiser?.updateQuality(e);
15548
+ this.denoiser?.updateQuality(e), this._stages.pathTracer?.setCleanAuxNormal?.(!!this.denoiser?.enabled && e !== "fast");
15529
15549
  }
15530
15550
  setTileHelperEnabled(e) {
15531
15551
  this._setTileHelper(e);
@@ -16030,7 +16050,7 @@ var qf = {
16030
16050
  }
16031
16051
  this._sceneHelpers?.clear(), this._sceneHelpers = null, this.scene?.clear(), this.scene = null, this.renderer?._canvasTarget && this.renderer._onCanvasTargetResize && this.renderer._canvasTarget.removeEventListener("resize", this.renderer._onCanvasTargetResize);
16032
16052
  try {
16033
- let e = ke().value, t = k().value;
16053
+ let e = Oe().value, t = k().value;
16034
16054
  e?._listeners?.dispose && (e._listeners.dispose.length = 0), t?._listeners?.dispose && (t._listeners.dispose.length = 0);
16035
16055
  } catch (e) {
16036
16056
  console.warn("PathTracerApp: failed to clear TSL texture singleton listeners", e);