rayzee 7.22.4 → 7.22.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/rayzee.es.js CHANGED
@@ -9721,7 +9721,7 @@ var Au = /* @__PURE__ */ K("\n fn equirectDirectionToUv( direction: vec3f, envir
9721
9721
  let y = j(.12).add(t.mul(.08)), b = ee(j(e.sub(f)).negate().mul(y));
9722
9722
  v.mulAssign(b);
9723
9723
  let x = R(n.isEmissive, j(.04), j(.02));
9724
- v.assign(F(v, x));
9724
+ v.assign(E(v, x, 1));
9725
9725
  let S = ir(a, N(0), c.add(N(3)), i, o, s);
9726
9726
  u.assign(R(S.lessThan(v), v, j(0)));
9727
9727
  });
@@ -626,7 +626,7 @@
626
626
  let ndcDepth = clipPos.z / clipPos.w * 0.5f + 0.5f;
627
627
  return clamp( ndcDepth, 0.0f, 1.0f );
628
628
  }
629
- `),tc=(0,n.Fn)(([e,t,r,i,a,o,s,c,l,u])=>{let d=(0,n.float)(1).toVar();return(0,n.If)(e.greaterThanEqual((0,n.int)(3)),()=>{let f=(0,n.max)((0,n.max)((0,n.max)(t.x,t.y),t.z),0).toVar();(0,n.If)(f.lessThan(8e-4).and(e.greaterThan((0,n.int)(4))),()=>{let e=(0,n.max)(f.mul(125),.01),t=ge(o,(0,n.int)(0),l.add((0,n.int)(3)),a,s,c);d.assign((0,n.select)(t.lessThan(e),e,(0,n.float)(0)))}).Else(()=>{let t=r.complexityScore.toVar();(0,n.If)(r.isMetallic.and(r.isSmooth).and(e.lessThan((0,n.int)(7))),()=>{t.addAssign(.3)}),(0,n.If)(r.isTransmissive.and(e.lessThan((0,n.int)(6))),()=>{t.addAssign(.25)}),(0,n.If)(r.isEmissive.and(e.lessThan((0,n.int)(4))),()=>{t.addAssign(.15)}),t.assign((0,n.clamp)(t,0,1));let p=(0,n.int)(3).toVar();(0,n.If)(t.greaterThan(.6),()=>{p.assign(5)}).ElseIf(t.greaterThan(.4),()=>{p.assign(4)}),(0,n.If)(e.lessThan(p),()=>{d.assign(1)}).Else(()=>{let m=r.complexityScore.toVar();(0,n.If)(r.isMetallic.and(r.isSmooth),()=>{m.addAssign(.15)}),(0,n.If)(r.isTransmissive.and(r.hasClearcoat),()=>{m.addAssign(.12)}),(0,n.If)(r.isEmissive,()=>{m.addAssign(.1)}),m.assign((0,n.clamp)(m,0,1));let h=(0,n.float)(.5).toVar();(0,n.If)(u.and(f.greaterThan(.01)),()=>{let e=(0,n.clamp)(i.y,0,1);h.assign((0,n.mix)((0,n.float)(.3),(0,n.float)(.8),e.mul(e)))});let g=(0,n.smoothstep)((0,n.float)(.001),(0,n.float)(.1),f),_=f.mul((0,n.mix)(m.mul(.7),h,.3)).mul(g).toVar(),v=(0,n.mix)((0,n.clamp)(t.mul(.4).add(f.mul(.6)).mul(1.2),.15,.95),(0,n.clamp)(f.mul(.4).add(t.mul(.1)),.03,.6),(0,n.clamp)((0,n.float)(e.sub(p)).div(10),0,1)).toVar();v.assign((0,n.mix)(v,(0,n.max)(v,_),.4)),(0,n.If)(t.greaterThan(.5),()=>{let e=t.sub(.5).mul(.6);v.assign((0,n.mix)(v,(0,n.float)(1),e))});let y=(0,n.float)(.12).add(t.mul(.08)),b=(0,n.exp)((0,n.float)(e.sub(p)).negate().mul(y));v.mulAssign(b);let x=(0,n.select)(r.isEmissive,(0,n.float)(.04),(0,n.float)(.02));v.assign((0,n.max)(v,x));let S=ge(o,(0,n.int)(0),l.add((0,n.int)(3)),a,s,c);d.assign((0,n.select)(S.lessThan(v),v,(0,n.float)(0)))})})}),d}),nc=S({brdf:`vec3`,L:`vec3`,pdf:`float`}),rc=(0,n.Fn)(([e,t,r,i,a,o,s,c,l])=>{let u=t.normal,d=e.direction.negate(),f=(0,n.max)(r.clearcoatRoughness,En),p=(0,n.max)(r.roughness,En),m=pn.wrap(Sr(r)).toVar(),h=m.clearcoat.toVar(),g=m.specular.toVar(),_=ge(o,(0,n.int)(0),l.add((0,n.int)(13)),a,s,c),v=(0,n.vec3)(0).toVar(),y=(0,n.vec3)(0).toVar();(0,n.If)(_.lessThan(h),()=>{let e=Fn({N:u});y.assign(e.mul(Dr({V:e.transpose().mul(d),roughness:f,Xi:i}))),v.assign((0,n.reflect)(d.negate(),y))}).ElseIf(_.lessThan(h.add(g)),()=>{(0,n.If)(r.anisotropy.greaterThan(0),()=>{let e=mn.wrap(In(u,r.anisotropyRotation)),t=(0,n.vec3)((0,n.dot)(d,e.Ta),(0,n.dot)(d,e.Ba),(0,n.dot)(d,u)),a=pr(r.roughness,r.anisotropy),o=Or({V:t,alphaX:a.x,alphaY:a.y,Xi:i});y.assign(e.Ta.mul(o.x).add(e.Ba.mul(o.y)).add(u.mul(o.z)))}).Else(()=>{let e=Fn({N:u});y.assign(e.mul(Dr({V:e.transpose().mul(d),roughness:p,Xi:i})))}),v.assign((0,n.reflect)(d.negate(),y))}).Else(()=>{v.assign(Tr({N:u,xi:i})),y.assign((0,n.normalize)(d.add(v)))});let b=hn.wrap(Ln(u,d,v,r)),x=(0,n.max)(xr(r,m,b),.001);return nc({brdf:zs(r,b),L:v,pdf:x})}),ic=32,ac=16,oc=5,sc=8,cc=S({hitPoint:`vec3`,uv:`vec2`,normal:`vec3`,height:`float`}),lc=(0,n.Fn)(([e,t,r,i,a])=>{let o=t.hitPoint.toVar(),s=t.uv.toVar(),c=t.normal.toVar(),l=(0,n.float)(0).toVar(),u=t.triangleIndex,d=X(r,u,(0,n.int)(0),(0,n.int)(sc)).xyz.toVar(),f=X(r,u,(0,n.int)(1),(0,n.int)(sc)).xyz,p=X(r,u,(0,n.int)(2),(0,n.int)(sc)).xyz,m=X(r,u,(0,n.int)(6),(0,n.int)(sc)).toVar(),h=X(r,u,(0,n.int)(7),(0,n.int)(sc)),g=m.xy.toVar(),_=m.zw,v=h.xy,y=f.sub(d).toVar(),b=p.sub(d).toVar(),x=_.sub(g).toVar(),S=v.sub(g).toVar(),C=x.x.mul(S.y).sub(S.x.mul(x.y)).toVar();return(0,n.If)((0,n.abs)(C).greaterThan(1e-8),()=>{let r=(0,n.float)(1).div(C),u=y.mul(S.y).sub(b.mul(x.y)).mul(r).toVar(),d=b.mul(x.x).sub(y.mul(S.x)).mul(r).toVar(),f=t.normal.toVar(),p=i.displacementScale.div((0,n.float)(10)),m=e.direction,h=(0,n.dot)(m,f).toVar(),g=m.sub(f.mul(h)).toVar(),_=(0,n.dot)(u,u),v=(0,n.dot)(u,d),w=(0,n.dot)(d,d),T=_.mul(w).sub(v.mul(v)).toVar();(0,n.If)((0,n.abs)(T).greaterThan(1e-10),()=>{let e=(0,n.float)(1).div(T),r=(0,n.dot)(g,u),y=(0,n.dot)(g,d),b=(0,n.vec2)(w.mul(r).sub(v.mul(y)).mul(e),_.mul(y).sub(v.mul(r)).mul(e)).toVar(),x=h.toVar(),S=(0,n.max)((0,n.abs)(x),.001),C=p.div(S).toVar(),E=(0,n.int)(a.equal((0,n.int)(0)).select((0,n.int)(ic),(0,n.int)(ac))).toVar(),D=C.negate().toVar(),O=C.sub(D).div((0,n.float)(E)).toVar(),k=D.toVar(),A=D.toVar(),j=(0,n.int)(0).toVar();(0,n.Loop)({start:(0,n.int)(0),end:E,type:`int`,condition:`<`},({i:e})=>{(0,n.If)(j.equal((0,n.int)(0)),()=>{let r=D.add(O.mul((0,n.float)(e))).toVar(),a=t.uv.add(b.mul(r)),o=r.mul(x),s=vi(i.displacementMapIndex,a,i.displacementTransform).sub(.5).mul(p);(0,n.If)(o.lessThanEqual(s).and(e.greaterThan((0,n.int)(0))),()=>{j.assign(1),A.assign(r)}).Else(()=>{k.assign(r)})})}),(0,n.If)(j.equal((0,n.int)(1)),()=>{let e=k.toVar(),r=A.toVar();(0,n.Loop)({start:(0,n.int)(0),end:(0,n.int)(oc),type:`int`,condition:`<`},()=>{let a=e.add(r).mul(.5).toVar(),o=t.uv.add(b.mul(a)),s=a.mul(x),c=vi(i.displacementMapIndex,o,i.displacementTransform).sub(.5).mul(p);(0,n.If)(s.lessThanEqual(c),()=>{r.assign(a)}).Else(()=>{e.assign(a)})});let a=e.add(r).mul(.5).toVar(),h=t.uv.add(b.mul(a)).toVar(),g=t.hitPoint.add(m.mul(a)),_=vi(i.displacementMapIndex,h,i.displacementTransform),v=_.sub(.5).mul(p),y=ei(ti(),i.displacementMapIndex).toVar(),S=_,C=vi(i.displacementMapIndex,h.add((0,n.vec2)(y.x,0)),i.displacementTransform),w=vi(i.displacementMapIndex,h.add((0,n.vec2)(0,y.y)),i.displacementTransform),T=(0,n.normalize)(u).toVar(),E=(0,n.normalize)(d).toVar(),D=C.sub(S).mul(p),O=w.sub(S).mul(p),j=(0,n.normalize)(f.sub(T.mul(D)).sub(E.mul(O)));o.assign(g),s.assign(h),c.assign(j),l.assign(v)})})}),cc({hitPoint:o,uv:s,normal:c,height:l})}),uc=S({position:`vec3`,normal:`vec3`,emission:`vec3`,direction:`vec3`,distance:`float`,pdf:`float`,area:`float`,cosThetaLight:`float`,valid:`bool`}),dc=S({contribution:`vec3`,hasEmissive:`bool`,emissionOnly:`vec3`,distance:`float`}),fc=(0,n.Fn)(([e,t,r,i])=>{let a=(0,n.sqrt)(i.x),o=(0,n.float)(1).sub(a),s=i.y.mul(a),c=(0,n.float)(1).sub(o).sub(s);return e.mul(o).add(t.mul(s)).add(r.mul(c))}),pc=(0,n.Fn)(([e,t,r])=>(0,n.length)((0,n.cross)(t.sub(e),r.sub(e))).mul(.5)),mc=(0,n.Fn)(([e,t,r,i])=>{let a=(0,n.normalize)(e.sub(i)),o=(0,n.normalize)(t.sub(i)),s=(0,n.normalize)(r.sub(i)),c=(0,n.abs)((0,n.dot)(a,(0,n.cross)(o,s))),l=(0,n.float)(1).add((0,n.dot)(o,s)).add((0,n.dot)(a,s)).add((0,n.dot)(a,o));return(0,n.max)((0,n.float)(2).mul((0,n.atan)(c,(0,n.max)(l,(0,n.float)(1e-10)))),(0,n.float)(0))}),hc=(0,n.Fn)(([e,t,r,i])=>{let a=t.sub(e),o=r.sub(e),s=r.sub(t),c=(0,n.max)((0,n.dot)(a,a),(0,n.max)((0,n.dot)(o,o),(0,n.dot)(s,s))),l=(0,n.cross)(a,o),u=(0,n.dot)(l,l),d=(0,n.bool)(!1).toVar();return(0,n.If)(u.greaterThan(1e-20),()=>{let t=(0,n.dot)(l,i.sub(e)),r=t.mul(t).div(u),a=c.mul(c).lessThan(u.mul(64));d.assign(c.greaterThan(r).and(a))}),d}),gc=S({direction:`vec3`,position:`vec3`,solidAngle:`float`,valid:`bool`}),_c=(0,n.Fn)(([e])=>{let t=(0,n.length)(e);return(0,n.select)(t.greaterThan(1e-10),e.div(t),(0,n.vec3)(0))}),vc=(0,n.Fn)(([e,t,r,i,a])=>{let o=gc({direction:(0,n.vec3)(0),position:(0,n.vec3)(0),solidAngle:(0,n.float)(0),valid:!1}).toVar(),s=(0,n.normalize)(e.sub(i)),c=(0,n.normalize)(t.sub(i)),l=(0,n.normalize)(r.sub(i)),u=mc(e,t,r,i);return o.solidAngle.assign(u),(0,n.If)(u.greaterThan(1e-7),()=>{let d=(0,n.clamp)((0,n.dot)(_c((0,n.cross)(s,c)),_c((0,n.cross)(s,l))),-1,1),f=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(d.mul(d)),0)),p=(0,n.acos)(d),m=a.x.mul(u).sub(p),h=(0,n.sin)(m),g=(0,n.cos)(m),_=(0,n.clamp)((0,n.dot)(s,c),-1,1),v=g.sub(d),y=h.add(f.mul(_)),b=y.mul(g).sub(v.mul(h)).mul(d).sub(y),x=y.mul(h).add(v.mul(g)).mul(f),S=(0,n.clamp)((0,n.select)((0,n.abs)(x).greaterThan(1e-10),b.div(x),(0,n.float)(1)),-1,1),C=(0,n.dot)(l,s),w=_c(l.sub(s.mul(C))),T=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(S.mul(S)),0)),E=(0,n.normalize)(s.mul(S).add(w.mul(T))),D=(0,n.dot)(E,c),O=(0,n.float)(1).sub(a.y.mul((0,n.float)(1).sub(D))),k=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(O.mul(O)),0)),A=_c(E.sub(c.mul(D))),j=(0,n.normalize)(c.mul(O).add(A.mul(k))),M=(0,n.normalize)((0,n.cross)(t.sub(e),r.sub(e))),N=(0,n.dot)(M,j);(0,n.If)((0,n.abs)(N).greaterThan(1e-10),()=>{let t=(0,n.dot)(M,e.sub(i)).div(N);(0,n.If)(t.greaterThan(0),()=>{o.direction.assign(j),o.position.assign(i.add(j.mul(t))),o.valid.assign(!0)})})}),o}),yc=(0,n.Fn)(([e,t,r,i])=>{let a=r.sub(t),o=i.sub(t),s=e.sub(t),c=(0,n.dot)(a,a),l=(0,n.dot)(a,o),u=(0,n.dot)(o,o),d=(0,n.dot)(s,a),f=(0,n.dot)(s,o),p=(0,n.float)(1).div((0,n.max)(c.mul(u).sub(l.mul(l)),(0,n.float)(1e-10))),m=u.mul(d).sub(l.mul(f)).mul(p),h=c.mul(f).sub(l.mul(d)).mul(p);return(0,n.vec3)((0,n.float)(1).sub(m).sub(h),m,h)}),bc=(0,n.Fn)(([e,t,r,i])=>{let a=(0,n.sqrt)(i.x),o=(0,n.float)(1).sub(a),s=i.y.mul(a),c=(0,n.float)(1).sub(o).sub(s);return(0,n.normalize)(e.mul(o).add(t.mul(s)).add(r.mul(c)))});(0,n.Fn)(([e])=>e.emissiveIntensity.greaterThan(0).and((0,n.length)(e.emissive).greaterThan(0)));var xc=8,Sc=2,Cc=S({v0:`vec3`,v1:`vec3`,v2:`vec3`,n0:`vec3`,n1:`vec3`,n2:`vec3`,materialIndex:`int`}),wc=(0,n.Fn)(([e,t])=>{let r=X(t,e,(0,n.int)(0),(0,n.int)(xc)),i=X(t,e,(0,n.int)(1),(0,n.int)(xc)),a=X(t,e,(0,n.int)(2),(0,n.int)(xc)),o=X(t,e,(0,n.int)(3),(0,n.int)(xc)),s=X(t,e,(0,n.int)(4),(0,n.int)(xc)),c=X(t,e,(0,n.int)(5),(0,n.int)(xc)),l=X(t,e,(0,n.int)(7),(0,n.int)(xc));return Cc({v0:r.xyz,v1:i.xyz,v2:a.xyz,n0:o.xyz,n1:s.xyz,n2:c.xyz,materialIndex:(0,n.int)(l.z)})}),Tc=(0,n.Fn)(([e,t,r,i,a,o,s])=>{let c=Cc.wrap(wc(e,a)),l=pc(c.v0,c.v1,c.v2),u=X(o,c.materialIndex,(0,n.int)(kn.EMISSIVE_ROUGHNESS),J),d=X(o,c.materialIndex,(0,n.int)(kn.IOR_TRANSMISSION),J),f=(0,n.max)(u.x.mul(.2126).add(u.y.mul(.7152)).add(u.z.mul(.0722)).mul(d.a).mul(l),(0,n.float)(1e-10)).div((0,n.max)(s,(0,n.float)(1e-10))),p=(0,n.float)(0).toVar();return(0,n.If)(hc(c.v0,c.v1,c.v2,i),()=>{let e=mc(c.v0,c.v1,c.v2,i);p.assign(f.div((0,n.max)(e,(0,n.float)(1e-10))))}).Else(()=>{let e=(0,n.normalize)((0,n.cross)(c.v1.sub(c.v0),c.v2.sub(c.v0))),i=(0,n.max)((0,n.dot)(r.negate(),e),.001),a=t.mul(t),o=f.div(l);p.assign(o.mul(a).div(i))}),(0,n.max)(p,Dn)}),Ec=(0,n.Fn)(([e,t,r,i])=>{let a=(0,n.int)(0).toVar(),o=r.sub(1).toVar();return(0,n.Loop)(a.lessThan(o),()=>{let r=a.add(o).div(2).toVar(),s=e.element(t.add(r.mul((0,n.int)(Sc)))).b;(0,n.If)(s.lessThan(i),()=>{a.assign(r.add(1))}).Else(()=>{o.assign(r)})}),a}),Dc=(0,n.Fn)(([e,t,r,i,a,o,s,c,l,u,d,f])=>{let p=uc({position:(0,n.vec3)(0),normal:(0,n.vec3)(0),emission:(0,n.vec3)(0),direction:(0,n.vec3)(0),distance:(0,n.float)(0),pdf:(0,n.float)(0),area:(0,n.float)(0),cosThetaLight:(0,n.float)(0),valid:!1}).toVar();return(0,n.If)(u.greaterThan((0,n.int)(0)),()=>{let m=Ec(c,l,u,ge(i,(0,n.int)(0),s.add((0,n.int)(1)),r,a,o)).toVar(),h=l.add(m.mul((0,n.int)(Sc))),g=c.element(h),_=c.element(h.add(1)),v=(0,n.int)(g.r),y=(0,n.max)(g.g,(0,n.float)(1e-10)),b=_.xyz,x=_.w,S=Cc.wrap(wc(v,f)),C=he(i,(0,n.int)(0),s.add((0,n.int)(3)),r,a,o).toVar(),w=(0,n.normalize)((0,n.cross)(S.v1.sub(S.v0),S.v2.sub(S.v0)));(0,n.If)(hc(S.v0,S.v1,S.v2,e),()=>{let r=gc.wrap(vc(S.v0,S.v1,S.v2,e,C));(0,n.If)(r.valid.and(r.solidAngle.greaterThan(1e-7)),()=>{let i=r.direction,a=r.position,o=(0,n.dot)(i,t),s=(0,n.dot)(i,w.negate());(0,n.If)(o.greaterThan(0).and(s.greaterThan(0)),()=>{let t=yc(a,S.v0,S.v1,S.v2),o=(0,n.normalize)(S.n0.mul(t.x).add(S.n1.mul(t.y)).add(S.n2.mul(t.z))),c=(0,n.length)(a.sub(e)),l=y.div((0,n.max)(d,(0,n.float)(1e-10))).div(r.solidAngle);p.position.assign(a),p.normal.assign(o),p.emission.assign(b),p.direction.assign(i),p.distance.assign(c),p.pdf.assign((0,n.max)(l,Dn)),p.area.assign(x),p.cosThetaLight.assign(s),p.valid.assign(!0)})})}).Else(()=>{let r=fc(S.v0,S.v1,S.v2,C),i=bc(S.n0,S.n1,S.n2,C),a=r.sub(e),o=(0,n.dot)(a,a),s=(0,n.sqrt)(o),c=a.div(s),l=(0,n.dot)(c,t),u=(0,n.dot)(c,i.negate());(0,n.If)(l.greaterThan(0).and(u.greaterThan(0)),()=>{let e=y.div((0,n.max)(d,(0,n.float)(1e-10)).mul(x)).mul(o).div(u);p.position.assign(r),p.normal.assign(i),p.emission.assign(b),p.direction.assign(c),p.distance.assign(s),p.pdf.assign((0,n.max)(e,Dn)),p.area.assign(x),p.cosThetaLight.assign(u),p.valid.assign(!0)})})}),p}),Oc=(0,n.Fn)(([e,t,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v])=>{let y=dc({contribution:(0,n.vec3)(0),hasEmissive:!1,emissionOnly:(0,n.vec3)(0),distance:(0,n.float)(0)}).toVar(),b=uc.wrap(Dc(e,t,o,s,c,l,u,f,p,m,h,g));return(0,n.If)(b.valid.and(b.pdf.greaterThan(0)),()=>{y.hasEmissive.assign(!0),y.emissionOnly.assign(b.emission),y.distance.assign(b.distance);let a=(0,n.max)((0,n.float)(0),(0,n.dot)(t,b.direction));(0,n.If)(a.greaterThan(0),()=>{let o=v(e,t,i),s=e.add(o),c=b.distance.sub(.001),l=_(s,b.direction,c);(0,n.If)(l.greaterThan(0),()=>{let e=hn.wrap(Ln(t,r,b.direction,i)),o=zs(i,e),s=Js(i,e),c=(0,n.select)(s.greaterThan(0),Nn({pdf1:b.pdf,pdf2:s}),(0,n.float)(1));y.contribution.assign(b.emission.mul(o).mul(a).div(b.pdf).mul(l).mul(d).mul(c))})})}),y}),kc=(0,n.Fn)(([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_])=>dc.wrap(Oc(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)).contribution),Ac=4,jc=2,Mc=32,Nc=(0,n.Fn)(([e,t,r,i])=>(0,n.select)(t.greaterThan(i),(0,n.float)(1),t.mul(i).add(e.mul(r)))),Pc=(0,n.Fn)(([e,t,r,i])=>(0,n.select)(t.greaterThan(i),(0,n.float)(0),e.mul(i).sub(t.mul(r)))),Fc=(0,n.Fn)(([e,t,r,i,a,o])=>{let s=e.add(r).mul(.5),c=(0,n.length)(r.sub(e)),l=o.sub(s),u=(0,n.max)((0,n.dot)(l,l),(0,n.float)(1e-12)),d=(0,n.max)(u,c.mul(.5)),f=(0,n.dot)(i,l.div((0,n.sqrt)(u))),p=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(f.mul(f)),(0,n.float)(0))),m=c.mul(c).mul(.25),h=(0,n.clamp)(m.div(u),(0,n.float)(0),(0,n.float)(1)),g=(0,n.select)(u.lessThan(m),(0,n.float)(-1),(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(h),(0,n.float)(0)))),_=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(g.mul(g)),(0,n.float)(0))),v=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(a.mul(a)),(0,n.float)(0))),y=Nc(p,f,v,a),b=Nc(Pc(p,f,v,a),y,_,g);return(0,n.max)((0,n.select)(b.greaterThan((0,n.float)(0)),t.mul(b).div(d),(0,n.float)(0)),(0,n.float)(0))}),Ic=(0,n.Fn)(([e,t,r,i,a,o,s,c,l,u,d])=>{let f=uc({position:(0,n.vec3)(0),normal:(0,n.vec3)(0),emission:(0,n.vec3)(0),direction:(0,n.vec3)(0),distance:(0,n.float)(0),pdf:(0,n.float)(0),area:(0,n.float)(0),cosThetaLight:(0,n.float)(0),valid:!1}).toVar(),p=(0,n.float)(1).toVar(),m=(0,n.int)(0).toVar(),h=(0,n.bool)(!1).toVar(),g=ge(i,(0,n.int)(0),s.add((0,n.int)(1)),r,a,o).toVar();return(0,n.Loop)(Mc,()=>{let t=m.mul((0,n.int)(Ac)),r=c.element(t.add((0,n.int)(1))),i=c.element(t.add((0,n.int)(2)));(0,n.If)(r.w.greaterThan(.5),()=>{h.assign((0,n.bool)(!0)),(0,n.Break)()});let a=(0,n.int)(i.x),o=(0,n.int)(i.y),s=a.mul((0,n.int)(Ac)),l=c.element(s),u=c.element(s.add((0,n.int)(1))),d=o.mul((0,n.int)(Ac)),f=c.element(d),_=c.element(d.add((0,n.int)(1))),v=c.element(s.add((0,n.int)(3))),y=c.element(d.add((0,n.int)(3))),b=Fc(l.xyz,l.w,u.xyz,v.xyz,v.w,e),x=Fc(f.xyz,f.w,_.xyz,y.xyz,y.w,e),S=b.add(x);(0,n.If)(S.lessThanEqual((0,n.float)(0)),()=>{m.assign(a)}).Else(()=>{let e=b.div(S);(0,n.If)(g.lessThan(e),()=>{g.assign((0,n.clamp)(g.div((0,n.max)(e,(0,n.float)(1e-6))),0,.999999)),p.mulAssign(e),m.assign(a)}).Else(()=>{let t=(0,n.float)(1).sub(e).toVar();g.assign((0,n.clamp)(g.sub(e).div((0,n.max)(t,(0,n.float)(1e-6))),0,.999999)),p.mulAssign(t),m.assign(o)})})}),(0,n.If)(h,()=>{let h=m.mul((0,n.int)(Ac)),_=c.element(h),v=c.element(h.add((0,n.int)(2))),y=(0,n.int)(v.x),b=(0,n.int)(v.y),x=(0,n.max)(_.w,(0,n.float)(1e-10)),S=g.mul(x),C=(0,n.float)(0).toVar(),w=y.add(b.sub((0,n.int)(1))).toVar(),T=(0,n.float)(1e-10).toVar();(0,n.Loop)({start:(0,n.int)(0),end:b},({i:e})=>{let t=y.add(e),r=u.add(t.mul((0,n.int)(jc))),i=(0,n.max)(l.element(r).g,(0,n.float)(0));C.addAssign(i),(0,n.If)(C.greaterThanEqual(S).and(i.greaterThan((0,n.float)(0))),()=>{w.assign(t),T.assign(i),(0,n.Break)()})}),p.mulAssign(T.div(x));let E=u.add(w.mul((0,n.int)(jc))),D=l.element(E),O=l.element(E.add((0,n.int)(1))),k=(0,n.int)(D.r),A=O.xyz,j=O.w,M=Cc.wrap(wc(k,d)),N=he(i,(0,n.int)(0),s.add((0,n.int)(3)),r,a,o).toVar(),P=(0,n.normalize)((0,n.cross)(M.v1.sub(M.v0),M.v2.sub(M.v0)));(0,n.If)(hc(M.v0,M.v1,M.v2,e),()=>{let r=gc.wrap(vc(M.v0,M.v1,M.v2,e,N));(0,n.If)(r.valid.and(r.solidAngle.greaterThan((0,n.float)(1e-7))),()=>{let i=r.direction,a=r.position,o=(0,n.dot)(i,t),s=(0,n.dot)(i,P.negate());(0,n.If)(o.greaterThan((0,n.float)(0)).and(s.greaterThan((0,n.float)(0))),()=>{let t=yc(a,M.v0,M.v1,M.v2),o=(0,n.normalize)(M.n0.mul(t.x).add(M.n1.mul(t.y)).add(M.n2.mul(t.z))),c=(0,n.length)(a.sub(e)),l=p.div((0,n.max)(r.solidAngle,(0,n.float)(1e-10)));f.position.assign(a),f.normal.assign(o),f.emission.assign(A),f.direction.assign(i),f.distance.assign(c),f.pdf.assign((0,n.max)(l,Dn)),f.area.assign(j),f.cosThetaLight.assign(s),f.valid.assign(!0)})})}).Else(()=>{let r=fc(M.v0,M.v1,M.v2,N),i=bc(M.n0,M.n1,M.n2,N),a=r.sub(e),o=(0,n.dot)(a,a),s=(0,n.sqrt)(o),c=a.div(s),l=(0,n.dot)(c,t),u=(0,n.dot)(c,i.negate());(0,n.If)(l.greaterThan((0,n.float)(0)).and(u.greaterThan((0,n.float)(0))),()=>{let e=p.div((0,n.max)(j,(0,n.float)(1e-10))).mul(o).div(u);f.position.assign(r),f.normal.assign(i),f.emission.assign(A),f.direction.assign(c),f.distance.assign(s),f.pdf.assign((0,n.max)(e,Dn)),f.area.assign(j),f.cosThetaLight.assign(u),f.valid.assign(!0)})})}),f}),Lc=(0,n.Fn)(([e,t,r,i,a,o,s,c])=>{let l=(0,n.float)(0).toVar(),u=(0,n.int)(e).toVar(),d=a.element(s.add(u.shiftRight((0,n.int)(2)))),f=u.bitAnd((0,n.int)(3)),p=(0,n.select)(f.equal((0,n.int)(0)),d.x,(0,n.select)(f.equal((0,n.int)(1)),d.y,(0,n.select)(f.equal((0,n.int)(2)),d.z,d.w))).toVar();return(0,n.If)(p.greaterThanEqual((0,n.float)(0)),()=>{let e=(0,n.int)(p).toVar(),s=(0,n.float)(1).toVar(),d=(0,n.int)(0).toVar(),f=(0,n.int)(0).toVar(),m=(0,n.bool)(!1).toVar();(0,n.Loop)(Mc,()=>{let t=d.mul((0,n.int)(Ac));(0,n.If)(a.element(t.add((0,n.int)(1))).w.greaterThan(.5),()=>{m.assign((0,n.bool)(!0)),(0,n.Break)()});let r=a.element(t.add((0,n.int)(2))),o=(0,n.int)(r.x),c=(0,n.int)(r.y),l=o.mul((0,n.int)(Ac)),u=a.element(l),p=a.element(l.add((0,n.int)(1))),h=a.element(l.add((0,n.int)(3))),g=c.mul((0,n.int)(Ac)),_=a.element(g),v=a.element(g.add((0,n.int)(1))),y=a.element(g.add((0,n.int)(3))),b=Fc(u.xyz,u.w,p.xyz,h.xyz,h.w,i),x=Fc(_.xyz,_.w,v.xyz,y.xyz,y.w,i),S=b.add(x),C=e.shiftRight(f).bitAnd((0,n.int)(1)).equal((0,n.int)(1));(0,n.If)(S.lessThanEqual((0,n.float)(0)),()=>{(0,n.If)(C,()=>{s.assign((0,n.float)(0)),d.assign(c)}).Else(()=>{d.assign(o)})}).Else(()=>{let e=b.div(S);(0,n.If)(C,()=>{s.mulAssign((0,n.float)(1).sub(e)),d.assign(c)}).Else(()=>{s.mulAssign(e),d.assign(o)})}),f.addAssign((0,n.int)(1))}),(0,n.If)(m.and(s.greaterThan((0,n.float)(0))),()=>{let e=d.mul((0,n.int)(Ac)),f=a.element(e),p=a.element(e.add((0,n.int)(2))),m=(0,n.int)(p.x),h=(0,n.int)(p.y),g=(0,n.max)(f.w,(0,n.float)(1e-10)),_=(0,n.float)(0).toVar();(0,n.Loop)({start:(0,n.int)(0),end:h},({i:e})=>{let t=m.add(e),r=a.element(o.add(t.mul((0,n.int)(jc))));(0,n.If)((0,n.int)(r.r).equal(u),()=>{_.assign((0,n.max)(r.g,(0,n.float)(0))),(0,n.Break)()})}),s.mulAssign(_.div(g));let v=Cc.wrap(wc(u,c));(0,n.If)(hc(v.v0,v.v1,v.v2,i),()=>{let e=mc(v.v0,v.v1,v.v2,i);l.assign(s.div((0,n.max)(e,(0,n.float)(1e-10))))}).Else(()=>{let e=(0,n.normalize)((0,n.cross)(v.v1.sub(v.v0),v.v2.sub(v.v0))),i=(0,n.max)((0,n.dot)(r.negate(),e),(0,n.float)(.001)),a=pc(v.v0,v.v1,v.v2),o=t.mul(t),c=s.div((0,n.max)(a,(0,n.float)(1e-10)));l.assign(c.mul(o).div(i))})})}),(0,n.max)(l,Dn)}),Rc=0x8ac7230489e80000,zc=1e-4,Bc=1e-4,Vc=.001;function Hc(e){let{bvhBuffer:t,triangleBuffer:r,materialBuffer:i,envCDFTexture:a,lightBuffer:o,rayBufferRW:s,rngBufferRW:c,hitBufferRO:l,gBufferRW:u,counters:d,activeIndicesRO:f,envTexture:p,environmentIntensity:m,envMatrix:h,enableEnvironmentLight:g,groundProjectionEnabled:_,groundProjectionRadius:v,groundProjectionHeight:y,groundProjectionLevel:b,enableGroundCatcher:x,groundCatcherHeight:S,envTotalSum:C,envCompensationDelta:w,envResolution:T,directionalLightsBuffer:E,numDirectionalLights:D,areaLightsBuffer:O,numAreaLights:k,pointLightsBuffer:A,numPointLights:j,spotLightsBuffer:M,numSpotLights:N,maxBounceCount:P,maxSubsurfaceSteps:F,maxTransparentBounces:ee,currentBounce:I,transparentBackground:te,backgroundIntensity:ne,backgroundColor:re,backgroundBlurriness:ie,backgroundBlurSamples:oe,showBackground:se,globalIlluminationIntensity:ce,cameraProjectionMatrix:le,cameraViewMatrix:ue,fireflyThreshold:de,frame:fe,resolution:pe,accumFrame:_e,chunkRowBase:ve,emissiveTriangleCount:ye,emissiveVec4Offset:be,emissiveTotalPower:xe,emissiveBoost:L,totalTriangleCount:R,enableEmissiveTriangleSampling:Se,lightBVHNodeCount:Ce,reverseMapVec4Offset:z,maxRayCount:we,auxGBufferEnabled:B}=e,Te=B.greaterThan((0,n.uint)(0)),Ee=o!==void 0,De=(e,t,r,i,a)=>{let o=(0,n.normalize)(e).toVar(),s=(0,n.max)(r,(0,n.int)(1)).toVar(),c=(0,n.vec3)(0).toVar();return(0,n.Loop)({start:(0,n.int)(0),end:s,type:`int`,condition:`<`},({i:e})=>{let r=Yi(o,t,he(a,(0,n.int)(0),(0,n.int)(ae).add(e),i,pe,fe).toVar()).toVar();c.addAssign(Is({tex:p,samp:(0,n.sampler)(p),direction:r,environmentMatrix:h,environmentIntensity:m,enableEnvironmentLight:(0,n.float)(1)}).xyz)}),c.div((0,n.float)(s))};return(0,n.Fn)(()=>{let e=n.instanceIndex;d&&(0,n.If)(e.equal((0,n.uint)(0)),()=>{(0,n.atomicStore)(d.element((0,n.uint)($.ACTIVE_RAY_COUNT)),(0,n.uint)(0))});let ae=d?(0,n.atomicLoad)(d.element((0,n.uint)($.ENTERING_COUNT))):we;(0,n.If)(e.greaterThanEqual(ae),()=>{(0,n.Return)()});let R=f.element(e),B=wo(s,R).toVar();(0,n.If)(B.bitAnd((0,n.uint)(as.ACTIVE)).equal((0,n.uint)(0)),()=>{(0,n.Return)()});let Oe=B.bitAnd((0,n.uint)(as.REDIRECTED)).equal((0,n.uint)(0)).toVar(),ke=So(s,R).toVar(),Ae=Co(s,R).toVar(),je=To(s,R).toVar(),Me=Do(s,R).toVar(),V=R,Ne=c.element(R).toVar(),Pe=(0,n.int)(pe.x).toVar(),H=(0,n.int)(V).add(ve.mul(Pe)),Fe=(0,n.vec2)((0,n.float)(H.mod(Pe)).add(.5),(0,n.float)(H.div(Pe)).add(.5)),Ie=(0,n.int)(I).mul((0,n.int)(32)),Le=Zo(s,R).toVar(),Re=zo(l,R).toVar(),ze=Ho(l,R).toVar(),Be=Vo(l,R).toVar(),Ve=Uo(l,R).toVar(),U=Bo(l,R).toVar(),W=$o(s,R).toVar(),He=(0,n.int)(I).toVar(),Ue=es(s,R).toVar(),We=ts(s,R).toVar();(0,n.If)(x.and(He.equal(0)),()=>{let e=Ae.y.toVar();(0,n.If)(e.abs().greaterThan((0,n.float)(wn)),()=>{let o=S.sub(ke.y).div(e).toVar();(0,n.If)(o.greaterThan((0,n.float)(zc)).and(o.lessThan(Re)),()=>{let e=ke.add(Ae.mul(o)).toVar(),l=(0,n.vec3)(0,1,0),d=Ae.negate().toVar(),f=sn.wrap(Wn()).toVar(),x=Er(l,he(Fe,(0,n.int)(0),Ie.add((0,n.int)(7)),Ne,pe,fe).toVar()).toVar(),S=x.y.mul(Sn).toVar(),P=(0,n.vec3)(Sn),F=un.wrap(Xs(e,l,f,d,x,S,P,He,Ne,Fe,pe,fe,Ie,E,D,O,k,A,j,M,N,t,r,i,p,m,h,a,C,w,T,g,(0,n.bool)(!0))).toVar(),ee=(0,n.max)((0,n.dot)(F.shadowed,On),(0,n.float)(0)),I=(0,n.max)((0,n.dot)(F.unoccluded,On),(0,n.float)(0)).toVar(),ae=(0,n.clamp)(ee.div((0,n.max)(I,(0,n.float)(Bc))),0,1).toVar();(0,n.If)(I.lessThan((0,n.float)(Vc)),()=>{ae.assign(1)});let ce=Rs(ke,Ae,_,v,y,b).toVar(),de=(0,n.vec3)(0).toVar();(0,n.If)(se,()=>{(0,n.If)(ie.greaterThan(0),()=>{de.assign(De(ce,ie.mul(1.3),oe,Ne,Fe))}).Else(()=>{de.assign(Is({tex:p,samp:(0,n.sampler)(p),direction:ce,environmentMatrix:h,environmentIntensity:m,enableEnvironmentLight:(0,n.float)(1)}).xyz)})});let me=(0,n.select)(se,de.mul(ne),re),ge=(0,n.select)(te,(0,n.vec3)(0),me.mul(ae)),_e=(0,n.select)(te,(0,n.float)(1).sub(ae),(0,n.float)(1));(0,n.If)(Te,()=>{ko(u,V,l,ec({worldPos:e,cameraProjectionMatrix:le,cameraViewMatrix:ue}),(0,n.vec3)(1))}),Ro(s,R,(0,n.vec4)(ge,_e)),Io(s,R,Ae,B.bitOr((0,n.uint)(as.AUX_LOCKED)).bitAnd((0,n.uint)(~as.ACTIVE))),c.element(R).assign(Ne),(0,n.Return)()})})}),(0,n.If)(Re.greaterThan(Rc),()=>{let e=Oe.and(se),t=Oe.not().and(g),r=(0,n.vec3)(0).toVar();(0,n.If)(e.or(t),()=>{let e=Ae.toVar();(0,n.If)(Oe,()=>{e.assign(Rs(ke,Ae,_,v,y,b))});let t=(0,n.vec3)(0).toVar();(0,n.If)(Oe.and(ie.greaterThan(0)),()=>{t.assign(De(e,ie.mul(1.3),oe,Ne,Fe))}).Else(()=>{t.assign(Is({tex:p,samp:(0,n.sampler)(p),direction:e,environmentMatrix:h,environmentIntensity:m,enableEnvironmentLight:(0,n.float)(1)}).xyz)}),r.assign((0,n.clamp)(t,(0,n.vec3)(0),(0,n.vec3)(1)));let i=(0,n.float)(1).toVar();(0,n.If)(Oe.not(),()=>{let e=Eo(s,R);(0,n.If)(e.greaterThan(0),()=>{let t=Ps(p,Ae,h,C,w,T).w;(0,n.If)(t.greaterThan(0),()=>{i.assign(Pn({pdf1:e,pdf2:t}))})})});let a=(0,n.select)(Oe.not(),ce,(0,n.float)(1)),o=(0,n.select)(Oe,ne,i.mul(a)),c=(0,n.select)(Oe,(0,n.float)(0),(0,n.float)(He));Me.assign((0,n.vec4)(Me.xyz.add($s(je.mul(t).mul(o),c,de,(0,n.int)(_e))),Me.w))}),(0,n.If)(Oe.and(se.not()).and(te.not()),()=>{Me.assign((0,n.vec4)(Me.xyz.add(je.mul(re)),Me.w))}),(0,n.If)(B.bitAnd((0,n.uint)(as.HAS_HIT_OPAQUE)).equal((0,n.uint)(0)),()=>{Me.w.assign(0)}),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))).and(B.bitAnd((0,n.uint)(as.REDIRECTED)).notEqual((0,n.uint)(0))),()=>{let e=Ao(u,V);ko(u,V,(0,n.normalize)(Ae),jo(e).w,(0,n.clamp)(r.mul(Le),(0,n.vec3)(0),(0,n.vec3)(1)))}),Ro(s,R,Me),Io(s,R,Ae,B.bitAnd((0,n.uint)(~as.ACTIVE))),(0,n.Return)()});let Ge=ke.add(Ae.mul(Re)).toVar(),G=(0,n.normalize)(ze).toVar(),Ke=Go(s,R),qe=(0,n.int)(Ke.stackDepth).toVar(),Je=Ke.ior1.toVar(),Ye=Ke.ior2.toVar(),Xe=Ke.ior3.toVar(),Ze=(0,n.int)(Ke.transTraversals).toVar(),Qe=(0,n.float)(Ke.wavelength).toVar();(0,n.If)(qe.greaterThan(0),()=>{let e=qo(s,R).toVar(),t=ns(s,R),r=t.sigmaS.toVar(),i=t.g.toVar();(0,n.If)((0,n.max)((0,n.max)(r.x,r.y),r.z).lessThanEqual(0),()=>{let t=(0,n.exp)(e.mul(Re).negate()).toVar();je.mulAssign(t),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{Le.mulAssign(t)})}).Else(()=>{let t=e.add(r),a=kr.wrap(Nr(t,r,je,Re,Ne,Fe,pe,fe,Ie)).toVar();je.mulAssign(a.weight),(0,n.If)(a.didScatter,()=>{let e=he(Fe,(0,n.int)(0),Ie.add((0,n.int)(6)),Ne,pe,fe),t=ke.add(Ae.mul(a.t)),r=Mr(Ae,i,e).toVar();Ue.addAssign(1);let o=(0,n.clamp)((0,n.max)((0,n.max)(je.x,je.y),je.z),.02,1).toVar();(0,n.If)(Ue.greaterThanEqual(F).or(ge(Fe,(0,n.int)(0),Ie.add((0,n.int)(12)),Ne,pe,fe).greaterThan(o)).toVar(),()=>{Ro(s,R,Me),Io(s,R,Ae,B.bitAnd((0,n.uint)(~as.ACTIVE))),c.element(R).assign(Ne),(0,n.Return)()}),je.divAssign(o),B.assign(B.bitOr((0,n.uint)(as.REDIRECTED))),Fo(s,R,t,W,Ue,We),Io(s,R,r,B),Lo(s,R,je,Eo(s,R)),Ro(s,R,Me),c.element(R).assign(Ne),(0,n.Return)()})})});let K=sn.wrap(Un((0,n.int)(Ve),i)).toVar(),$e=Be.toVar(),et=G.toVar();(0,n.If)(K.displacementMapIndex.greaterThanEqual((0,n.int)(0)).and(K.displacementScale.greaterThan(0)),()=>{let e=on({origin:ke,direction:Ae}),t=dn({didHit:!0,dst:Re,hitPoint:Ge,normal:G,uv:Be,materialIndex:(0,n.int)(Ve),meshIndex:(0,n.int)(0),triangleIndex:(0,n.int)(U),boxTests:(0,n.int)(0),triTests:(0,n.int)(0)}),i=cc.wrap(lc(e,t,r,K,He)).toVar();$e.assign(i.uv),et.assign(i.normal),Ge.assign(i.hitPoint)});let tt=_n.wrap(_i(K,$e,G)).toVar(),nt=tt.roughness.toVar();K.color.assign(tt.albedo),K.metalness.assign(tt.metalness.clamp(0,1)),K.roughness.assign(tt.roughness.clamp(.05,1)),K.sheenRoughness.assign(K.sheenRoughness.clamp(.05,1));let rt=oi({uv:$e,transform:K.albedoTransform}).toVar();(0,n.If)(K.anisotropyMapIndex.greaterThanEqual((0,n.int)(0)),()=>{let e=mi(K,rt).toVar();K.anisotropy.assign(e.x),K.anisotropyRotation.assign(e.y)});let it=cn.wrap(hi(K,rt)).toVar();K.transmission.assign(it.transmission),K.clearcoat.assign(it.clearcoat),K.clearcoatRoughness.assign(it.clearcoatRoughness),K.sheenColor.assign(it.sheenColor),K.sheenRoughness.assign(it.sheenRoughness),K.iridescence.assign(it.iridescence),K.iridescenceThicknessRange.assign((0,n.vec2)(K.iridescenceThicknessRange.x,it.iridescenceThickness)),K.specularIntensity.assign(it.specularIntensity),K.specularColor.assign(it.specularColor);let at=tt.albedo.toVar();(0,n.If)(K.displacementMapIndex.greaterThanEqual((0,n.int)(0)).and(K.displacementScale.greaterThan(0)),()=>{G.assign((0,n.normalize)(et.add(tt.normal.sub((0,n.normalize)(ze)))))}).Else(()=>{G.assign(tt.normal)});let ot=K.metalness.toVar(),st=K.transmission.toVar(),ct=(0,n.smoothstep)((0,n.float)(0),(0,n.float)(.15),nt).toVar(),q=(0,n.clamp)((0,n.float)(1).sub(ot).mul((0,n.float)(1).sub(st)).add(ct.mul(ot.mul((0,n.float)(1).sub(st)).add(st))),0,1).greaterThanEqual((0,n.float)(.25)).toVar(),lt=Le.toVar(),ut=e=>{(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{let t=jo(Ao(u,V)).w;ko(u,V,e,t,(0,n.clamp)(at.mul(lt),(0,n.vec3)(0),(0,n.vec3)(1)))})},dt=()=>{Ro(s,R,Me),Io(s,R,Ae,B.bitAnd((0,n.uint)(~as.ACTIVE))),c.element(R).assign(Ne)};(0,n.If)(He.equal(0).and(Te),()=>{let e=ec({worldPos:Ge,cameraProjectionMatrix:le,cameraViewMatrix:ue});ko(u,V,(0,n.vec3)(0,0,1),e,(0,n.vec3)(0))});let ft=(0,n.float)(1).toVar(),pt=(0,n.float)(1).toVar();(0,n.If)(qe.equal(1),()=>{ft.assign(Je)}).ElseIf(qe.equal(2),()=>{ft.assign(Ye),pt.assign(Je)}).ElseIf(qe.equal(3),()=>{ft.assign(Xe),pt.assign(Ye)});let mt=on({origin:ke,direction:Ae}),ht=Lr.wrap(qr(mt,G,K,Ne,Fe,pe,fe,Ie,(0,n.int)(Ze),ft,pt,Qe)).toVar();Qe.assign(ht.pathWavelength),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{let e=jo(Ao(u,V)).w,t=(0,n.select)((0,n.dot)(G,Ae.negate()).lessThan(0),G.negate(),G).toVar(),r=(0,n.clamp)(at.mul(lt),(0,n.vec3)(0),(0,n.vec3)(1)).toVar();(0,n.If)(K.alphaMode.equal((0,n.int)(2)),()=>{ko(u,V,t,e,r),B.assign(B.bitOr((0,n.uint)(as.AUX_LOCKED)))}).ElseIf(ht.isAlphaSkip,()=>{}).ElseIf(ht.isSubsurface,()=>{ko(u,V,t,e,r),B.assign(B.bitOr((0,n.uint)(as.AUX_LOCKED)))}).ElseIf(ht.isTransmissive,()=>{(0,n.If)(q.or(K.dispersion.greaterThan(0)),()=>{ko(u,V,t,e,r),B.assign(B.bitOr((0,n.uint)(as.AUX_LOCKED)))}).Else(()=>{Le.mulAssign((0,n.clamp)(at,(0,n.vec3)(0),(0,n.vec3)(1)))})})}),(0,n.If)(ht.continueRay,()=>{(0,n.If)(ht.isTransmissive.and(ht.didReflect.not()),()=>{(0,n.If)(ht.entering,()=>{(0,n.If)(qe.lessThan(3),()=>{qe.addAssign(1),(0,n.If)(qe.equal(1),()=>{Je.assign(K.ior)}),(0,n.If)(qe.equal(2),()=>{Ye.assign(K.ior)}),(0,n.If)(qe.equal(3),()=>{Xe.assign(K.ior)}),Jo(s,R,(0,n.select)(K.attenuationDistance.greaterThan(0),(0,n.log)((0,n.max)(K.attenuationColor,(0,n.vec3)(.001))).negate().div(K.attenuationDistance),(0,n.vec3)(0))),rs(s,R,(0,n.vec3)(0),(0,n.float)(0))})}).Else(()=>{(0,n.If)(qe.greaterThan(0),()=>{qe.subAssign(1)})})}),(0,n.If)(ht.isSubsurface.and(ht.didReflect.not()),()=>{(0,n.If)(ht.entering,()=>{(0,n.If)(qe.lessThan(3),()=>{qe.addAssign(1),(0,n.If)(qe.equal(1),()=>{Je.assign(K.ior)}),(0,n.If)(qe.equal(2),()=>{Ye.assign(K.ior)}),(0,n.If)(qe.equal(3),()=>{Xe.assign(K.ior)});let e=Ar.wrap(Pr(K.subsurfaceColor,K.subsurfaceRadius,K.subsurfaceRadiusScale)).toVar();Jo(s,R,e.sigmaT.sub(e.sigmaS)),rs(s,R,e.sigmaS,(0,n.clamp)(K.subsurfaceAnisotropy,-.99,.99))})}).Else(()=>{(0,n.If)(qe.greaterThan(0),()=>{qe.subAssign(1)})})}),(0,n.If)(ht.isTransmissive.and(Ze.greaterThan(0)),()=>{Ze.subAssign(1)}),je.mulAssign(ht.throughput);let e=(0,n.select)(ht.entering,G,G.negate()),t=(0,n.select)(ht.didReflect,e,Ae),r=Ge.add(t.mul(.001));(0,n.If)(ht.isAlphaSkip.not(),()=>{B.assign(B.bitOr((0,n.uint)(as.REDIRECTED)))}).Else(()=>{We.addAssign(1),(0,n.If)(We.greaterThan(ee),()=>{ut((0,n.select)((0,n.dot)(G,Ae.negate()).lessThan(0),G.negate(),G)),dt(),(0,n.Return)()})}),Fo(s,R,r,W,Ue,We,(0,n.select)(ht.isAlphaSkip,Po(s,R).add(Re),(0,n.float)(0))),Io(s,R,ht.direction,B),Lo(s,R,je,Eo(s,R)),Ro(s,R,Me),Ko(s,R,(0,n.uint)(qe),(0,n.uint)(Ze),Je,Ye,Xe,(0,n.uint)(Qe.add(.5))),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{Qo(s,R,Le)}),c.element(R).assign(Ne),(0,n.Return)()}),B.assign(B.bitOr((0,n.uint)(as.HAS_HIT_OPAQUE|as.REDIRECTED)));let gt=tt.emissive.toVar();(0,n.If)((0,n.length)(gt).greaterThan(0),()=>{let e=(0,n.select)(Oe.not(),ce,(0,n.float)(1)),t=(0,n.float)(1).toVar();Ee&&(0,n.If)(Se.equal((0,n.int)(1)).and(ye.greaterThan((0,n.int)(0))).and(He.greaterThan(0)),()=>{let e=Eo(s,R);(0,n.If)(e.greaterThan(0),()=>{let a=Po(s,R).toVar(),c=ke.sub(Ae.mul(a)).toVar(),l=Re.add(a).toVar(),u=(0,n.float)(0).toVar();(0,n.If)(Ce.greaterThan((0,n.int)(0)),()=>{u.assign(Lc((0,n.int)(U),l,Ae,c,o,be,z,r))}).Else(()=>{u.assign(Tc((0,n.int)(U),l,Ae,c,r,i,xe))}),t.assign(Nn({pdf1:e,pdf2:u}))})}),Me.assign((0,n.vec4)(Me.xyz.add($s(gt.mul(je).mul(e).mul(t),(0,n.float)(He),de,(0,n.int)(_e))),Me.w))});let _t=Ae.negate().toVar();(0,n.If)((0,n.dot)(G,_t).lessThan(0),()=>{G.assign(G.negate())}),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{let e=jo(Ao(u,V)).w;(0,n.If)(q,()=>{ko(u,V,G,e,(0,n.clamp)(at.mul(lt),(0,n.vec3)(0),(0,n.vec3)(1))),B.assign(B.bitOr((0,n.uint)(as.AUX_LOCKED)))}).Else(()=>{let e=(0,n.max)((0,n.dot)(G,_t),(0,n.float)(.001)),t=(0,n.clamp)((0,n.mix)($n(K.ior).mul(K.specularColor),at,K.metalness).mul(K.specularIntensity),(0,n.vec3)(0),(0,n.vec3)(1));Le.mulAssign(gn.wrap(dr(t,e,(0,n.max)(nt,(0,n.float)(.02)))).E_total)})});let vt=vn.wrap(Vn(K.metalness,K.roughness,K.transmission,K.clearcoat,K.emissive,K.subsurface)).toVar(),yt=me(Fe,(0,n.int)(0),He,Ne,(0,n.int)(-1),pe,fe).toVar(),bt=ge(Fe,(0,n.int)(0),Ie.add((0,n.int)(2)),Ne,pe,fe).toVar(),xt=pn({specular:(0,n.float)(0),diffuse:(0,n.float)(0),sheen:(0,n.float)(0),clearcoat:(0,n.float)(0),transmission:(0,n.float)(0),iridescence:(0,n.float)(0)}),St=bn({invRoughness:(0,n.float)(0),metalFactor:(0,n.float)(.5),iorFactor:(0,n.float)(.67),maxSheenColor:(0,n.float)(0)}),Ct=(0,n.vec3)(0).toVar(),wt=(0,n.vec3)(0).toVar(),Tt=(0,n.float)(0).toVar(),Et=(0,n.bool)(!1).toVar(),Dt=(0,n.vec3)(1).toVar();(0,n.If)(K.clearcoat.greaterThan(0),()=>{let e=on({origin:ke,direction:Ae}),t=dn({didHit:!0,dst:Re,hitPoint:Ge,normal:G,uv:Be,materialIndex:(0,n.int)(Ve),meshIndex:(0,n.int)(0),triangleIndex:(0,n.int)(0),boxTests:(0,n.int)(0),triTests:(0,n.int)(0)}),r=nc.wrap(rc(e,t,K,yt,Ne,Fe,pe,fe,Ie));Ct.assign(r.L),wt.assign(r.brdf),Tt.assign(r.pdf)}).Else(()=>{let e=fn.wrap(Qs(_t,G,K,yt,bt,Ne,Fe,pe,fe,Ie,vt,!1,xt,!1,St));Ct.assign(e.direction),wt.assign(e.value),Tt.assign(e.pdf),Et.assign(e.isTransmission),Dt.assign(e.colorWeight)});let Ot=un.wrap(Xs(Ge,G,K,_t,Ct,Tt,wt,He,Ne,Fe,pe,fe,Ie,E,D,O,k,A,j,M,N,t,r,i,p,m,h,a,C,w,T,g,(0,n.bool)(!1))).shadowed.toVar(),kt=(0,n.select)(He.greaterThan(0),ce,(0,n.float)(1));Me.assign((0,n.vec4)(Me.xyz.add($s(je.mul(Ot).mul(kt),(0,n.float)(He),de,(0,n.int)(_e))),Me.w)),Ee&&(0,n.If)(Se.equal((0,n.int)(1)).and(ye.greaterThan((0,n.int)(0))),()=>{let e=(0,n.Fn)(([e,n,a])=>Ci(e,n,a,As,t,r,i));(0,n.If)(Ce.greaterThan((0,n.int)(0)),()=>{let t=uc.wrap(Ic(Ge,G,Ne,Fe,pe,fe,Ie,o,o,be,r));(0,n.If)(t.valid.and(t.pdf.greaterThan(0)),()=>{let r=(0,n.max)((0,n.float)(0),(0,n.dot)(G,t.direction));(0,n.If)(r.greaterThan(0),()=>{let i=wi(Ge,G,K),a=Ge.add(i),o=t.distance.sub(.001),s=e(a,t.direction,o);(0,n.If)(s.greaterThan(0),()=>{let e=Bs(_t,t.direction,G,K),i=Ys(_t,t.direction,G,K),a=(0,n.select)(i.greaterThan(0),Nn({pdf1:t.pdf,pdf2:i}),(0,n.float)(1)),o=t.emission.mul(e).mul(r).div(t.pdf).mul(s).mul(L).mul(a);Me.assign((0,n.vec4)(Me.xyz.add($s(o.mul(je).mul(kt),(0,n.float)(He),de,(0,n.int)(_e))),Me.w))})})})}).Else(()=>{let t=kc(Ge,G,_t,K,He,Ne,Fe,pe,fe,Ie,L,o,be,ye,xe,r,e,wi);Me.assign((0,n.vec4)(Me.xyz.add($s(t.mul(je).mul(kt),(0,n.float)(He),de,(0,n.int)(_e))),Me.w))})});let At=Pi.wrap(Zs(G,K,Ct,Tt,wt,Et,Dt,Ne,Fe,pe,fe,Ie)).toVar(),jt=At.direction.toVar(),Mt=(0,n.select)((0,n.dot)(ze,_t).lessThan(0),ze.negate(),ze);(0,n.If)(Et.not().and((0,n.dot)(jt,Mt).lessThanEqual(0)),()=>{ut(G),dt(),(0,n.Return)()});let Nt=(0,n.max)(At.combinedPdf,.001).toVar();je.mulAssign(At.throughput);let Pt=tc(He,je,vt,jt,Ne,Fe,pe,fe,Ie,g).toVar();(0,n.If)(Pt.lessThanEqual(0),()=>{ut(G),dt(),(0,n.Return)()}),je.divAssign(Pt),(0,n.If)(W.greaterThanEqual(P),()=>{ut(G),dt(),(0,n.Return)()}),Fo(s,R,Ge.add(G.mul(.001)),W.add(1),Ue,We),Io(s,R,jt,B),Lo(s,R,je,Nt),Ro(s,R,Me),Ko(s,R,(0,n.uint)(qe),(0,n.uint)(Ze),Je,Ye,Xe,(0,n.uint)(Qe.add(.5))),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{Qo(s,R,Le)}),c.element(R).assign(Ne)})}function Uc(e){let{rayBufferRO:t,activeIndicesReadRO:r,activeIndicesWriteRW:i,counters:a,currentActiveCount:o}=e;return(0,n.Fn)(()=>{let e=n.instanceIndex,s=a?(0,n.atomicLoad)(a.element((0,n.uint)($.ENTERING_COUNT))):o;(0,n.If)(e.greaterThanEqual(s),()=>{(0,n.Return)()});let c=r.element(e);(0,n.If)(wo(t,c).bitAnd((0,n.uint)(as.ACTIVE)).notEqual((0,n.uint)(0)),()=>{let e=(0,n.atomicAdd)(a.element((0,n.uint)($.ACTIVE_RAY_COUNT)),(0,n.uint)(1));i.element(e).assign(c)})})}function Wc(e){let{rayBufferRO:t,activeIndicesReadRO:r,activeIndicesWriteRW:i,counters:a,currentActiveCount:o}=e;return(0,n.Fn)(()=>{let e=n.instanceIndex,s=a?(0,n.atomicLoad)(a.element((0,n.uint)($.ENTERING_COUNT))):o,c=e.lessThan(s),l=r.element(e),u=wo(t,l),d=c.and(u.bitAnd((0,n.uint)(as.ACTIVE)).notEqual((0,n.uint)(0))),f=(0,n.select)(d,(0,n.uint)(1),(0,n.uint)(0)),p=(0,n.subgroupExclusiveAdd)(f).toVar(),m=(0,n.subgroupAdd)(f).toVar(),h=(0,n.subgroupExclusiveAdd)((0,n.uint)(1)).toVar(),g=(0,n.uint)(0).toVar();(0,n.If)(h.equal((0,n.uint)(0)),()=>{g.assign((0,n.atomicAdd)(a.element((0,n.uint)($.ACTIVE_RAY_COUNT)),m))});let _=(0,n.subgroupBroadcast)(g,(0,n.uint)(0)).toVar();(0,n.If)(d,()=>{i.element(_.add(p)).assign(l)})})}var Gc=(0,n.wgslFn)(`
629
+ `),tc=(0,n.Fn)(([e,t,r,i,a,o,s,c,l,u])=>{let d=(0,n.float)(1).toVar();return(0,n.If)(e.greaterThanEqual((0,n.int)(3)),()=>{let f=(0,n.max)((0,n.max)((0,n.max)(t.x,t.y),t.z),0).toVar();(0,n.If)(f.lessThan(8e-4).and(e.greaterThan((0,n.int)(4))),()=>{let e=(0,n.max)(f.mul(125),.01),t=ge(o,(0,n.int)(0),l.add((0,n.int)(3)),a,s,c);d.assign((0,n.select)(t.lessThan(e),e,(0,n.float)(0)))}).Else(()=>{let t=r.complexityScore.toVar();(0,n.If)(r.isMetallic.and(r.isSmooth).and(e.lessThan((0,n.int)(7))),()=>{t.addAssign(.3)}),(0,n.If)(r.isTransmissive.and(e.lessThan((0,n.int)(6))),()=>{t.addAssign(.25)}),(0,n.If)(r.isEmissive.and(e.lessThan((0,n.int)(4))),()=>{t.addAssign(.15)}),t.assign((0,n.clamp)(t,0,1));let p=(0,n.int)(3).toVar();(0,n.If)(t.greaterThan(.6),()=>{p.assign(5)}).ElseIf(t.greaterThan(.4),()=>{p.assign(4)}),(0,n.If)(e.lessThan(p),()=>{d.assign(1)}).Else(()=>{let m=r.complexityScore.toVar();(0,n.If)(r.isMetallic.and(r.isSmooth),()=>{m.addAssign(.15)}),(0,n.If)(r.isTransmissive.and(r.hasClearcoat),()=>{m.addAssign(.12)}),(0,n.If)(r.isEmissive,()=>{m.addAssign(.1)}),m.assign((0,n.clamp)(m,0,1));let h=(0,n.float)(.5).toVar();(0,n.If)(u.and(f.greaterThan(.01)),()=>{let e=(0,n.clamp)(i.y,0,1);h.assign((0,n.mix)((0,n.float)(.3),(0,n.float)(.8),e.mul(e)))});let g=(0,n.smoothstep)((0,n.float)(.001),(0,n.float)(.1),f),_=f.mul((0,n.mix)(m.mul(.7),h,.3)).mul(g).toVar(),v=(0,n.mix)((0,n.clamp)(t.mul(.4).add(f.mul(.6)).mul(1.2),.15,.95),(0,n.clamp)(f.mul(.4).add(t.mul(.1)),.03,.6),(0,n.clamp)((0,n.float)(e.sub(p)).div(10),0,1)).toVar();v.assign((0,n.mix)(v,(0,n.max)(v,_),.4)),(0,n.If)(t.greaterThan(.5),()=>{let e=t.sub(.5).mul(.6);v.assign((0,n.mix)(v,(0,n.float)(1),e))});let y=(0,n.float)(.12).add(t.mul(.08)),b=(0,n.exp)((0,n.float)(e.sub(p)).negate().mul(y));v.mulAssign(b);let x=(0,n.select)(r.isEmissive,(0,n.float)(.04),(0,n.float)(.02));v.assign((0,n.clamp)(v,x,1));let S=ge(o,(0,n.int)(0),l.add((0,n.int)(3)),a,s,c);d.assign((0,n.select)(S.lessThan(v),v,(0,n.float)(0)))})})}),d}),nc=S({brdf:`vec3`,L:`vec3`,pdf:`float`}),rc=(0,n.Fn)(([e,t,r,i,a,o,s,c,l])=>{let u=t.normal,d=e.direction.negate(),f=(0,n.max)(r.clearcoatRoughness,En),p=(0,n.max)(r.roughness,En),m=pn.wrap(Sr(r)).toVar(),h=m.clearcoat.toVar(),g=m.specular.toVar(),_=ge(o,(0,n.int)(0),l.add((0,n.int)(13)),a,s,c),v=(0,n.vec3)(0).toVar(),y=(0,n.vec3)(0).toVar();(0,n.If)(_.lessThan(h),()=>{let e=Fn({N:u});y.assign(e.mul(Dr({V:e.transpose().mul(d),roughness:f,Xi:i}))),v.assign((0,n.reflect)(d.negate(),y))}).ElseIf(_.lessThan(h.add(g)),()=>{(0,n.If)(r.anisotropy.greaterThan(0),()=>{let e=mn.wrap(In(u,r.anisotropyRotation)),t=(0,n.vec3)((0,n.dot)(d,e.Ta),(0,n.dot)(d,e.Ba),(0,n.dot)(d,u)),a=pr(r.roughness,r.anisotropy),o=Or({V:t,alphaX:a.x,alphaY:a.y,Xi:i});y.assign(e.Ta.mul(o.x).add(e.Ba.mul(o.y)).add(u.mul(o.z)))}).Else(()=>{let e=Fn({N:u});y.assign(e.mul(Dr({V:e.transpose().mul(d),roughness:p,Xi:i})))}),v.assign((0,n.reflect)(d.negate(),y))}).Else(()=>{v.assign(Tr({N:u,xi:i})),y.assign((0,n.normalize)(d.add(v)))});let b=hn.wrap(Ln(u,d,v,r)),x=(0,n.max)(xr(r,m,b),.001);return nc({brdf:zs(r,b),L:v,pdf:x})}),ic=32,ac=16,oc=5,sc=8,cc=S({hitPoint:`vec3`,uv:`vec2`,normal:`vec3`,height:`float`}),lc=(0,n.Fn)(([e,t,r,i,a])=>{let o=t.hitPoint.toVar(),s=t.uv.toVar(),c=t.normal.toVar(),l=(0,n.float)(0).toVar(),u=t.triangleIndex,d=X(r,u,(0,n.int)(0),(0,n.int)(sc)).xyz.toVar(),f=X(r,u,(0,n.int)(1),(0,n.int)(sc)).xyz,p=X(r,u,(0,n.int)(2),(0,n.int)(sc)).xyz,m=X(r,u,(0,n.int)(6),(0,n.int)(sc)).toVar(),h=X(r,u,(0,n.int)(7),(0,n.int)(sc)),g=m.xy.toVar(),_=m.zw,v=h.xy,y=f.sub(d).toVar(),b=p.sub(d).toVar(),x=_.sub(g).toVar(),S=v.sub(g).toVar(),C=x.x.mul(S.y).sub(S.x.mul(x.y)).toVar();return(0,n.If)((0,n.abs)(C).greaterThan(1e-8),()=>{let r=(0,n.float)(1).div(C),u=y.mul(S.y).sub(b.mul(x.y)).mul(r).toVar(),d=b.mul(x.x).sub(y.mul(S.x)).mul(r).toVar(),f=t.normal.toVar(),p=i.displacementScale.div((0,n.float)(10)),m=e.direction,h=(0,n.dot)(m,f).toVar(),g=m.sub(f.mul(h)).toVar(),_=(0,n.dot)(u,u),v=(0,n.dot)(u,d),w=(0,n.dot)(d,d),T=_.mul(w).sub(v.mul(v)).toVar();(0,n.If)((0,n.abs)(T).greaterThan(1e-10),()=>{let e=(0,n.float)(1).div(T),r=(0,n.dot)(g,u),y=(0,n.dot)(g,d),b=(0,n.vec2)(w.mul(r).sub(v.mul(y)).mul(e),_.mul(y).sub(v.mul(r)).mul(e)).toVar(),x=h.toVar(),S=(0,n.max)((0,n.abs)(x),.001),C=p.div(S).toVar(),E=(0,n.int)(a.equal((0,n.int)(0)).select((0,n.int)(ic),(0,n.int)(ac))).toVar(),D=C.negate().toVar(),O=C.sub(D).div((0,n.float)(E)).toVar(),k=D.toVar(),A=D.toVar(),j=(0,n.int)(0).toVar();(0,n.Loop)({start:(0,n.int)(0),end:E,type:`int`,condition:`<`},({i:e})=>{(0,n.If)(j.equal((0,n.int)(0)),()=>{let r=D.add(O.mul((0,n.float)(e))).toVar(),a=t.uv.add(b.mul(r)),o=r.mul(x),s=vi(i.displacementMapIndex,a,i.displacementTransform).sub(.5).mul(p);(0,n.If)(o.lessThanEqual(s).and(e.greaterThan((0,n.int)(0))),()=>{j.assign(1),A.assign(r)}).Else(()=>{k.assign(r)})})}),(0,n.If)(j.equal((0,n.int)(1)),()=>{let e=k.toVar(),r=A.toVar();(0,n.Loop)({start:(0,n.int)(0),end:(0,n.int)(oc),type:`int`,condition:`<`},()=>{let a=e.add(r).mul(.5).toVar(),o=t.uv.add(b.mul(a)),s=a.mul(x),c=vi(i.displacementMapIndex,o,i.displacementTransform).sub(.5).mul(p);(0,n.If)(s.lessThanEqual(c),()=>{r.assign(a)}).Else(()=>{e.assign(a)})});let a=e.add(r).mul(.5).toVar(),h=t.uv.add(b.mul(a)).toVar(),g=t.hitPoint.add(m.mul(a)),_=vi(i.displacementMapIndex,h,i.displacementTransform),v=_.sub(.5).mul(p),y=ei(ti(),i.displacementMapIndex).toVar(),S=_,C=vi(i.displacementMapIndex,h.add((0,n.vec2)(y.x,0)),i.displacementTransform),w=vi(i.displacementMapIndex,h.add((0,n.vec2)(0,y.y)),i.displacementTransform),T=(0,n.normalize)(u).toVar(),E=(0,n.normalize)(d).toVar(),D=C.sub(S).mul(p),O=w.sub(S).mul(p),j=(0,n.normalize)(f.sub(T.mul(D)).sub(E.mul(O)));o.assign(g),s.assign(h),c.assign(j),l.assign(v)})})}),cc({hitPoint:o,uv:s,normal:c,height:l})}),uc=S({position:`vec3`,normal:`vec3`,emission:`vec3`,direction:`vec3`,distance:`float`,pdf:`float`,area:`float`,cosThetaLight:`float`,valid:`bool`}),dc=S({contribution:`vec3`,hasEmissive:`bool`,emissionOnly:`vec3`,distance:`float`}),fc=(0,n.Fn)(([e,t,r,i])=>{let a=(0,n.sqrt)(i.x),o=(0,n.float)(1).sub(a),s=i.y.mul(a),c=(0,n.float)(1).sub(o).sub(s);return e.mul(o).add(t.mul(s)).add(r.mul(c))}),pc=(0,n.Fn)(([e,t,r])=>(0,n.length)((0,n.cross)(t.sub(e),r.sub(e))).mul(.5)),mc=(0,n.Fn)(([e,t,r,i])=>{let a=(0,n.normalize)(e.sub(i)),o=(0,n.normalize)(t.sub(i)),s=(0,n.normalize)(r.sub(i)),c=(0,n.abs)((0,n.dot)(a,(0,n.cross)(o,s))),l=(0,n.float)(1).add((0,n.dot)(o,s)).add((0,n.dot)(a,s)).add((0,n.dot)(a,o));return(0,n.max)((0,n.float)(2).mul((0,n.atan)(c,(0,n.max)(l,(0,n.float)(1e-10)))),(0,n.float)(0))}),hc=(0,n.Fn)(([e,t,r,i])=>{let a=t.sub(e),o=r.sub(e),s=r.sub(t),c=(0,n.max)((0,n.dot)(a,a),(0,n.max)((0,n.dot)(o,o),(0,n.dot)(s,s))),l=(0,n.cross)(a,o),u=(0,n.dot)(l,l),d=(0,n.bool)(!1).toVar();return(0,n.If)(u.greaterThan(1e-20),()=>{let t=(0,n.dot)(l,i.sub(e)),r=t.mul(t).div(u),a=c.mul(c).lessThan(u.mul(64));d.assign(c.greaterThan(r).and(a))}),d}),gc=S({direction:`vec3`,position:`vec3`,solidAngle:`float`,valid:`bool`}),_c=(0,n.Fn)(([e])=>{let t=(0,n.length)(e);return(0,n.select)(t.greaterThan(1e-10),e.div(t),(0,n.vec3)(0))}),vc=(0,n.Fn)(([e,t,r,i,a])=>{let o=gc({direction:(0,n.vec3)(0),position:(0,n.vec3)(0),solidAngle:(0,n.float)(0),valid:!1}).toVar(),s=(0,n.normalize)(e.sub(i)),c=(0,n.normalize)(t.sub(i)),l=(0,n.normalize)(r.sub(i)),u=mc(e,t,r,i);return o.solidAngle.assign(u),(0,n.If)(u.greaterThan(1e-7),()=>{let d=(0,n.clamp)((0,n.dot)(_c((0,n.cross)(s,c)),_c((0,n.cross)(s,l))),-1,1),f=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(d.mul(d)),0)),p=(0,n.acos)(d),m=a.x.mul(u).sub(p),h=(0,n.sin)(m),g=(0,n.cos)(m),_=(0,n.clamp)((0,n.dot)(s,c),-1,1),v=g.sub(d),y=h.add(f.mul(_)),b=y.mul(g).sub(v.mul(h)).mul(d).sub(y),x=y.mul(h).add(v.mul(g)).mul(f),S=(0,n.clamp)((0,n.select)((0,n.abs)(x).greaterThan(1e-10),b.div(x),(0,n.float)(1)),-1,1),C=(0,n.dot)(l,s),w=_c(l.sub(s.mul(C))),T=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(S.mul(S)),0)),E=(0,n.normalize)(s.mul(S).add(w.mul(T))),D=(0,n.dot)(E,c),O=(0,n.float)(1).sub(a.y.mul((0,n.float)(1).sub(D))),k=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(O.mul(O)),0)),A=_c(E.sub(c.mul(D))),j=(0,n.normalize)(c.mul(O).add(A.mul(k))),M=(0,n.normalize)((0,n.cross)(t.sub(e),r.sub(e))),N=(0,n.dot)(M,j);(0,n.If)((0,n.abs)(N).greaterThan(1e-10),()=>{let t=(0,n.dot)(M,e.sub(i)).div(N);(0,n.If)(t.greaterThan(0),()=>{o.direction.assign(j),o.position.assign(i.add(j.mul(t))),o.valid.assign(!0)})})}),o}),yc=(0,n.Fn)(([e,t,r,i])=>{let a=r.sub(t),o=i.sub(t),s=e.sub(t),c=(0,n.dot)(a,a),l=(0,n.dot)(a,o),u=(0,n.dot)(o,o),d=(0,n.dot)(s,a),f=(0,n.dot)(s,o),p=(0,n.float)(1).div((0,n.max)(c.mul(u).sub(l.mul(l)),(0,n.float)(1e-10))),m=u.mul(d).sub(l.mul(f)).mul(p),h=c.mul(f).sub(l.mul(d)).mul(p);return(0,n.vec3)((0,n.float)(1).sub(m).sub(h),m,h)}),bc=(0,n.Fn)(([e,t,r,i])=>{let a=(0,n.sqrt)(i.x),o=(0,n.float)(1).sub(a),s=i.y.mul(a),c=(0,n.float)(1).sub(o).sub(s);return(0,n.normalize)(e.mul(o).add(t.mul(s)).add(r.mul(c)))});(0,n.Fn)(([e])=>e.emissiveIntensity.greaterThan(0).and((0,n.length)(e.emissive).greaterThan(0)));var xc=8,Sc=2,Cc=S({v0:`vec3`,v1:`vec3`,v2:`vec3`,n0:`vec3`,n1:`vec3`,n2:`vec3`,materialIndex:`int`}),wc=(0,n.Fn)(([e,t])=>{let r=X(t,e,(0,n.int)(0),(0,n.int)(xc)),i=X(t,e,(0,n.int)(1),(0,n.int)(xc)),a=X(t,e,(0,n.int)(2),(0,n.int)(xc)),o=X(t,e,(0,n.int)(3),(0,n.int)(xc)),s=X(t,e,(0,n.int)(4),(0,n.int)(xc)),c=X(t,e,(0,n.int)(5),(0,n.int)(xc)),l=X(t,e,(0,n.int)(7),(0,n.int)(xc));return Cc({v0:r.xyz,v1:i.xyz,v2:a.xyz,n0:o.xyz,n1:s.xyz,n2:c.xyz,materialIndex:(0,n.int)(l.z)})}),Tc=(0,n.Fn)(([e,t,r,i,a,o,s])=>{let c=Cc.wrap(wc(e,a)),l=pc(c.v0,c.v1,c.v2),u=X(o,c.materialIndex,(0,n.int)(kn.EMISSIVE_ROUGHNESS),J),d=X(o,c.materialIndex,(0,n.int)(kn.IOR_TRANSMISSION),J),f=(0,n.max)(u.x.mul(.2126).add(u.y.mul(.7152)).add(u.z.mul(.0722)).mul(d.a).mul(l),(0,n.float)(1e-10)).div((0,n.max)(s,(0,n.float)(1e-10))),p=(0,n.float)(0).toVar();return(0,n.If)(hc(c.v0,c.v1,c.v2,i),()=>{let e=mc(c.v0,c.v1,c.v2,i);p.assign(f.div((0,n.max)(e,(0,n.float)(1e-10))))}).Else(()=>{let e=(0,n.normalize)((0,n.cross)(c.v1.sub(c.v0),c.v2.sub(c.v0))),i=(0,n.max)((0,n.dot)(r.negate(),e),.001),a=t.mul(t),o=f.div(l);p.assign(o.mul(a).div(i))}),(0,n.max)(p,Dn)}),Ec=(0,n.Fn)(([e,t,r,i])=>{let a=(0,n.int)(0).toVar(),o=r.sub(1).toVar();return(0,n.Loop)(a.lessThan(o),()=>{let r=a.add(o).div(2).toVar(),s=e.element(t.add(r.mul((0,n.int)(Sc)))).b;(0,n.If)(s.lessThan(i),()=>{a.assign(r.add(1))}).Else(()=>{o.assign(r)})}),a}),Dc=(0,n.Fn)(([e,t,r,i,a,o,s,c,l,u,d,f])=>{let p=uc({position:(0,n.vec3)(0),normal:(0,n.vec3)(0),emission:(0,n.vec3)(0),direction:(0,n.vec3)(0),distance:(0,n.float)(0),pdf:(0,n.float)(0),area:(0,n.float)(0),cosThetaLight:(0,n.float)(0),valid:!1}).toVar();return(0,n.If)(u.greaterThan((0,n.int)(0)),()=>{let m=Ec(c,l,u,ge(i,(0,n.int)(0),s.add((0,n.int)(1)),r,a,o)).toVar(),h=l.add(m.mul((0,n.int)(Sc))),g=c.element(h),_=c.element(h.add(1)),v=(0,n.int)(g.r),y=(0,n.max)(g.g,(0,n.float)(1e-10)),b=_.xyz,x=_.w,S=Cc.wrap(wc(v,f)),C=he(i,(0,n.int)(0),s.add((0,n.int)(3)),r,a,o).toVar(),w=(0,n.normalize)((0,n.cross)(S.v1.sub(S.v0),S.v2.sub(S.v0)));(0,n.If)(hc(S.v0,S.v1,S.v2,e),()=>{let r=gc.wrap(vc(S.v0,S.v1,S.v2,e,C));(0,n.If)(r.valid.and(r.solidAngle.greaterThan(1e-7)),()=>{let i=r.direction,a=r.position,o=(0,n.dot)(i,t),s=(0,n.dot)(i,w.negate());(0,n.If)(o.greaterThan(0).and(s.greaterThan(0)),()=>{let t=yc(a,S.v0,S.v1,S.v2),o=(0,n.normalize)(S.n0.mul(t.x).add(S.n1.mul(t.y)).add(S.n2.mul(t.z))),c=(0,n.length)(a.sub(e)),l=y.div((0,n.max)(d,(0,n.float)(1e-10))).div(r.solidAngle);p.position.assign(a),p.normal.assign(o),p.emission.assign(b),p.direction.assign(i),p.distance.assign(c),p.pdf.assign((0,n.max)(l,Dn)),p.area.assign(x),p.cosThetaLight.assign(s),p.valid.assign(!0)})})}).Else(()=>{let r=fc(S.v0,S.v1,S.v2,C),i=bc(S.n0,S.n1,S.n2,C),a=r.sub(e),o=(0,n.dot)(a,a),s=(0,n.sqrt)(o),c=a.div(s),l=(0,n.dot)(c,t),u=(0,n.dot)(c,i.negate());(0,n.If)(l.greaterThan(0).and(u.greaterThan(0)),()=>{let e=y.div((0,n.max)(d,(0,n.float)(1e-10)).mul(x)).mul(o).div(u);p.position.assign(r),p.normal.assign(i),p.emission.assign(b),p.direction.assign(c),p.distance.assign(s),p.pdf.assign((0,n.max)(e,Dn)),p.area.assign(x),p.cosThetaLight.assign(u),p.valid.assign(!0)})})}),p}),Oc=(0,n.Fn)(([e,t,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v])=>{let y=dc({contribution:(0,n.vec3)(0),hasEmissive:!1,emissionOnly:(0,n.vec3)(0),distance:(0,n.float)(0)}).toVar(),b=uc.wrap(Dc(e,t,o,s,c,l,u,f,p,m,h,g));return(0,n.If)(b.valid.and(b.pdf.greaterThan(0)),()=>{y.hasEmissive.assign(!0),y.emissionOnly.assign(b.emission),y.distance.assign(b.distance);let a=(0,n.max)((0,n.float)(0),(0,n.dot)(t,b.direction));(0,n.If)(a.greaterThan(0),()=>{let o=v(e,t,i),s=e.add(o),c=b.distance.sub(.001),l=_(s,b.direction,c);(0,n.If)(l.greaterThan(0),()=>{let e=hn.wrap(Ln(t,r,b.direction,i)),o=zs(i,e),s=Js(i,e),c=(0,n.select)(s.greaterThan(0),Nn({pdf1:b.pdf,pdf2:s}),(0,n.float)(1));y.contribution.assign(b.emission.mul(o).mul(a).div(b.pdf).mul(l).mul(d).mul(c))})})}),y}),kc=(0,n.Fn)(([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_])=>dc.wrap(Oc(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)).contribution),Ac=4,jc=2,Mc=32,Nc=(0,n.Fn)(([e,t,r,i])=>(0,n.select)(t.greaterThan(i),(0,n.float)(1),t.mul(i).add(e.mul(r)))),Pc=(0,n.Fn)(([e,t,r,i])=>(0,n.select)(t.greaterThan(i),(0,n.float)(0),e.mul(i).sub(t.mul(r)))),Fc=(0,n.Fn)(([e,t,r,i,a,o])=>{let s=e.add(r).mul(.5),c=(0,n.length)(r.sub(e)),l=o.sub(s),u=(0,n.max)((0,n.dot)(l,l),(0,n.float)(1e-12)),d=(0,n.max)(u,c.mul(.5)),f=(0,n.dot)(i,l.div((0,n.sqrt)(u))),p=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(f.mul(f)),(0,n.float)(0))),m=c.mul(c).mul(.25),h=(0,n.clamp)(m.div(u),(0,n.float)(0),(0,n.float)(1)),g=(0,n.select)(u.lessThan(m),(0,n.float)(-1),(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(h),(0,n.float)(0)))),_=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(g.mul(g)),(0,n.float)(0))),v=(0,n.sqrt)((0,n.max)((0,n.float)(1).sub(a.mul(a)),(0,n.float)(0))),y=Nc(p,f,v,a),b=Nc(Pc(p,f,v,a),y,_,g);return(0,n.max)((0,n.select)(b.greaterThan((0,n.float)(0)),t.mul(b).div(d),(0,n.float)(0)),(0,n.float)(0))}),Ic=(0,n.Fn)(([e,t,r,i,a,o,s,c,l,u,d])=>{let f=uc({position:(0,n.vec3)(0),normal:(0,n.vec3)(0),emission:(0,n.vec3)(0),direction:(0,n.vec3)(0),distance:(0,n.float)(0),pdf:(0,n.float)(0),area:(0,n.float)(0),cosThetaLight:(0,n.float)(0),valid:!1}).toVar(),p=(0,n.float)(1).toVar(),m=(0,n.int)(0).toVar(),h=(0,n.bool)(!1).toVar(),g=ge(i,(0,n.int)(0),s.add((0,n.int)(1)),r,a,o).toVar();return(0,n.Loop)(Mc,()=>{let t=m.mul((0,n.int)(Ac)),r=c.element(t.add((0,n.int)(1))),i=c.element(t.add((0,n.int)(2)));(0,n.If)(r.w.greaterThan(.5),()=>{h.assign((0,n.bool)(!0)),(0,n.Break)()});let a=(0,n.int)(i.x),o=(0,n.int)(i.y),s=a.mul((0,n.int)(Ac)),l=c.element(s),u=c.element(s.add((0,n.int)(1))),d=o.mul((0,n.int)(Ac)),f=c.element(d),_=c.element(d.add((0,n.int)(1))),v=c.element(s.add((0,n.int)(3))),y=c.element(d.add((0,n.int)(3))),b=Fc(l.xyz,l.w,u.xyz,v.xyz,v.w,e),x=Fc(f.xyz,f.w,_.xyz,y.xyz,y.w,e),S=b.add(x);(0,n.If)(S.lessThanEqual((0,n.float)(0)),()=>{m.assign(a)}).Else(()=>{let e=b.div(S);(0,n.If)(g.lessThan(e),()=>{g.assign((0,n.clamp)(g.div((0,n.max)(e,(0,n.float)(1e-6))),0,.999999)),p.mulAssign(e),m.assign(a)}).Else(()=>{let t=(0,n.float)(1).sub(e).toVar();g.assign((0,n.clamp)(g.sub(e).div((0,n.max)(t,(0,n.float)(1e-6))),0,.999999)),p.mulAssign(t),m.assign(o)})})}),(0,n.If)(h,()=>{let h=m.mul((0,n.int)(Ac)),_=c.element(h),v=c.element(h.add((0,n.int)(2))),y=(0,n.int)(v.x),b=(0,n.int)(v.y),x=(0,n.max)(_.w,(0,n.float)(1e-10)),S=g.mul(x),C=(0,n.float)(0).toVar(),w=y.add(b.sub((0,n.int)(1))).toVar(),T=(0,n.float)(1e-10).toVar();(0,n.Loop)({start:(0,n.int)(0),end:b},({i:e})=>{let t=y.add(e),r=u.add(t.mul((0,n.int)(jc))),i=(0,n.max)(l.element(r).g,(0,n.float)(0));C.addAssign(i),(0,n.If)(C.greaterThanEqual(S).and(i.greaterThan((0,n.float)(0))),()=>{w.assign(t),T.assign(i),(0,n.Break)()})}),p.mulAssign(T.div(x));let E=u.add(w.mul((0,n.int)(jc))),D=l.element(E),O=l.element(E.add((0,n.int)(1))),k=(0,n.int)(D.r),A=O.xyz,j=O.w,M=Cc.wrap(wc(k,d)),N=he(i,(0,n.int)(0),s.add((0,n.int)(3)),r,a,o).toVar(),P=(0,n.normalize)((0,n.cross)(M.v1.sub(M.v0),M.v2.sub(M.v0)));(0,n.If)(hc(M.v0,M.v1,M.v2,e),()=>{let r=gc.wrap(vc(M.v0,M.v1,M.v2,e,N));(0,n.If)(r.valid.and(r.solidAngle.greaterThan((0,n.float)(1e-7))),()=>{let i=r.direction,a=r.position,o=(0,n.dot)(i,t),s=(0,n.dot)(i,P.negate());(0,n.If)(o.greaterThan((0,n.float)(0)).and(s.greaterThan((0,n.float)(0))),()=>{let t=yc(a,M.v0,M.v1,M.v2),o=(0,n.normalize)(M.n0.mul(t.x).add(M.n1.mul(t.y)).add(M.n2.mul(t.z))),c=(0,n.length)(a.sub(e)),l=p.div((0,n.max)(r.solidAngle,(0,n.float)(1e-10)));f.position.assign(a),f.normal.assign(o),f.emission.assign(A),f.direction.assign(i),f.distance.assign(c),f.pdf.assign((0,n.max)(l,Dn)),f.area.assign(j),f.cosThetaLight.assign(s),f.valid.assign(!0)})})}).Else(()=>{let r=fc(M.v0,M.v1,M.v2,N),i=bc(M.n0,M.n1,M.n2,N),a=r.sub(e),o=(0,n.dot)(a,a),s=(0,n.sqrt)(o),c=a.div(s),l=(0,n.dot)(c,t),u=(0,n.dot)(c,i.negate());(0,n.If)(l.greaterThan((0,n.float)(0)).and(u.greaterThan((0,n.float)(0))),()=>{let e=p.div((0,n.max)(j,(0,n.float)(1e-10))).mul(o).div(u);f.position.assign(r),f.normal.assign(i),f.emission.assign(A),f.direction.assign(c),f.distance.assign(s),f.pdf.assign((0,n.max)(e,Dn)),f.area.assign(j),f.cosThetaLight.assign(u),f.valid.assign(!0)})})}),f}),Lc=(0,n.Fn)(([e,t,r,i,a,o,s,c])=>{let l=(0,n.float)(0).toVar(),u=(0,n.int)(e).toVar(),d=a.element(s.add(u.shiftRight((0,n.int)(2)))),f=u.bitAnd((0,n.int)(3)),p=(0,n.select)(f.equal((0,n.int)(0)),d.x,(0,n.select)(f.equal((0,n.int)(1)),d.y,(0,n.select)(f.equal((0,n.int)(2)),d.z,d.w))).toVar();return(0,n.If)(p.greaterThanEqual((0,n.float)(0)),()=>{let e=(0,n.int)(p).toVar(),s=(0,n.float)(1).toVar(),d=(0,n.int)(0).toVar(),f=(0,n.int)(0).toVar(),m=(0,n.bool)(!1).toVar();(0,n.Loop)(Mc,()=>{let t=d.mul((0,n.int)(Ac));(0,n.If)(a.element(t.add((0,n.int)(1))).w.greaterThan(.5),()=>{m.assign((0,n.bool)(!0)),(0,n.Break)()});let r=a.element(t.add((0,n.int)(2))),o=(0,n.int)(r.x),c=(0,n.int)(r.y),l=o.mul((0,n.int)(Ac)),u=a.element(l),p=a.element(l.add((0,n.int)(1))),h=a.element(l.add((0,n.int)(3))),g=c.mul((0,n.int)(Ac)),_=a.element(g),v=a.element(g.add((0,n.int)(1))),y=a.element(g.add((0,n.int)(3))),b=Fc(u.xyz,u.w,p.xyz,h.xyz,h.w,i),x=Fc(_.xyz,_.w,v.xyz,y.xyz,y.w,i),S=b.add(x),C=e.shiftRight(f).bitAnd((0,n.int)(1)).equal((0,n.int)(1));(0,n.If)(S.lessThanEqual((0,n.float)(0)),()=>{(0,n.If)(C,()=>{s.assign((0,n.float)(0)),d.assign(c)}).Else(()=>{d.assign(o)})}).Else(()=>{let e=b.div(S);(0,n.If)(C,()=>{s.mulAssign((0,n.float)(1).sub(e)),d.assign(c)}).Else(()=>{s.mulAssign(e),d.assign(o)})}),f.addAssign((0,n.int)(1))}),(0,n.If)(m.and(s.greaterThan((0,n.float)(0))),()=>{let e=d.mul((0,n.int)(Ac)),f=a.element(e),p=a.element(e.add((0,n.int)(2))),m=(0,n.int)(p.x),h=(0,n.int)(p.y),g=(0,n.max)(f.w,(0,n.float)(1e-10)),_=(0,n.float)(0).toVar();(0,n.Loop)({start:(0,n.int)(0),end:h},({i:e})=>{let t=m.add(e),r=a.element(o.add(t.mul((0,n.int)(jc))));(0,n.If)((0,n.int)(r.r).equal(u),()=>{_.assign((0,n.max)(r.g,(0,n.float)(0))),(0,n.Break)()})}),s.mulAssign(_.div(g));let v=Cc.wrap(wc(u,c));(0,n.If)(hc(v.v0,v.v1,v.v2,i),()=>{let e=mc(v.v0,v.v1,v.v2,i);l.assign(s.div((0,n.max)(e,(0,n.float)(1e-10))))}).Else(()=>{let e=(0,n.normalize)((0,n.cross)(v.v1.sub(v.v0),v.v2.sub(v.v0))),i=(0,n.max)((0,n.dot)(r.negate(),e),(0,n.float)(.001)),a=pc(v.v0,v.v1,v.v2),o=t.mul(t),c=s.div((0,n.max)(a,(0,n.float)(1e-10)));l.assign(c.mul(o).div(i))})})}),(0,n.max)(l,Dn)}),Rc=0x8ac7230489e80000,zc=1e-4,Bc=1e-4,Vc=.001;function Hc(e){let{bvhBuffer:t,triangleBuffer:r,materialBuffer:i,envCDFTexture:a,lightBuffer:o,rayBufferRW:s,rngBufferRW:c,hitBufferRO:l,gBufferRW:u,counters:d,activeIndicesRO:f,envTexture:p,environmentIntensity:m,envMatrix:h,enableEnvironmentLight:g,groundProjectionEnabled:_,groundProjectionRadius:v,groundProjectionHeight:y,groundProjectionLevel:b,enableGroundCatcher:x,groundCatcherHeight:S,envTotalSum:C,envCompensationDelta:w,envResolution:T,directionalLightsBuffer:E,numDirectionalLights:D,areaLightsBuffer:O,numAreaLights:k,pointLightsBuffer:A,numPointLights:j,spotLightsBuffer:M,numSpotLights:N,maxBounceCount:P,maxSubsurfaceSteps:F,maxTransparentBounces:ee,currentBounce:I,transparentBackground:te,backgroundIntensity:ne,backgroundColor:re,backgroundBlurriness:ie,backgroundBlurSamples:oe,showBackground:se,globalIlluminationIntensity:ce,cameraProjectionMatrix:le,cameraViewMatrix:ue,fireflyThreshold:de,frame:fe,resolution:pe,accumFrame:_e,chunkRowBase:ve,emissiveTriangleCount:ye,emissiveVec4Offset:be,emissiveTotalPower:xe,emissiveBoost:L,totalTriangleCount:R,enableEmissiveTriangleSampling:Se,lightBVHNodeCount:Ce,reverseMapVec4Offset:z,maxRayCount:we,auxGBufferEnabled:B}=e,Te=B.greaterThan((0,n.uint)(0)),Ee=o!==void 0,De=(e,t,r,i,a)=>{let o=(0,n.normalize)(e).toVar(),s=(0,n.max)(r,(0,n.int)(1)).toVar(),c=(0,n.vec3)(0).toVar();return(0,n.Loop)({start:(0,n.int)(0),end:s,type:`int`,condition:`<`},({i:e})=>{let r=Yi(o,t,he(a,(0,n.int)(0),(0,n.int)(ae).add(e),i,pe,fe).toVar()).toVar();c.addAssign(Is({tex:p,samp:(0,n.sampler)(p),direction:r,environmentMatrix:h,environmentIntensity:m,enableEnvironmentLight:(0,n.float)(1)}).xyz)}),c.div((0,n.float)(s))};return(0,n.Fn)(()=>{let e=n.instanceIndex;d&&(0,n.If)(e.equal((0,n.uint)(0)),()=>{(0,n.atomicStore)(d.element((0,n.uint)($.ACTIVE_RAY_COUNT)),(0,n.uint)(0))});let ae=d?(0,n.atomicLoad)(d.element((0,n.uint)($.ENTERING_COUNT))):we;(0,n.If)(e.greaterThanEqual(ae),()=>{(0,n.Return)()});let R=f.element(e),B=wo(s,R).toVar();(0,n.If)(B.bitAnd((0,n.uint)(as.ACTIVE)).equal((0,n.uint)(0)),()=>{(0,n.Return)()});let Oe=B.bitAnd((0,n.uint)(as.REDIRECTED)).equal((0,n.uint)(0)).toVar(),ke=So(s,R).toVar(),Ae=Co(s,R).toVar(),je=To(s,R).toVar(),Me=Do(s,R).toVar(),V=R,Ne=c.element(R).toVar(),Pe=(0,n.int)(pe.x).toVar(),H=(0,n.int)(V).add(ve.mul(Pe)),Fe=(0,n.vec2)((0,n.float)(H.mod(Pe)).add(.5),(0,n.float)(H.div(Pe)).add(.5)),Ie=(0,n.int)(I).mul((0,n.int)(32)),Le=Zo(s,R).toVar(),Re=zo(l,R).toVar(),ze=Ho(l,R).toVar(),Be=Vo(l,R).toVar(),Ve=Uo(l,R).toVar(),U=Bo(l,R).toVar(),W=$o(s,R).toVar(),He=(0,n.int)(I).toVar(),Ue=es(s,R).toVar(),We=ts(s,R).toVar();(0,n.If)(x.and(He.equal(0)),()=>{let e=Ae.y.toVar();(0,n.If)(e.abs().greaterThan((0,n.float)(wn)),()=>{let o=S.sub(ke.y).div(e).toVar();(0,n.If)(o.greaterThan((0,n.float)(zc)).and(o.lessThan(Re)),()=>{let e=ke.add(Ae.mul(o)).toVar(),l=(0,n.vec3)(0,1,0),d=Ae.negate().toVar(),f=sn.wrap(Wn()).toVar(),x=Er(l,he(Fe,(0,n.int)(0),Ie.add((0,n.int)(7)),Ne,pe,fe).toVar()).toVar(),S=x.y.mul(Sn).toVar(),P=(0,n.vec3)(Sn),F=un.wrap(Xs(e,l,f,d,x,S,P,He,Ne,Fe,pe,fe,Ie,E,D,O,k,A,j,M,N,t,r,i,p,m,h,a,C,w,T,g,(0,n.bool)(!0))).toVar(),ee=(0,n.max)((0,n.dot)(F.shadowed,On),(0,n.float)(0)),I=(0,n.max)((0,n.dot)(F.unoccluded,On),(0,n.float)(0)).toVar(),ae=(0,n.clamp)(ee.div((0,n.max)(I,(0,n.float)(Bc))),0,1).toVar();(0,n.If)(I.lessThan((0,n.float)(Vc)),()=>{ae.assign(1)});let ce=Rs(ke,Ae,_,v,y,b).toVar(),de=(0,n.vec3)(0).toVar();(0,n.If)(se,()=>{(0,n.If)(ie.greaterThan(0),()=>{de.assign(De(ce,ie.mul(1.3),oe,Ne,Fe))}).Else(()=>{de.assign(Is({tex:p,samp:(0,n.sampler)(p),direction:ce,environmentMatrix:h,environmentIntensity:m,enableEnvironmentLight:(0,n.float)(1)}).xyz)})});let me=(0,n.select)(se,de.mul(ne),re),ge=(0,n.select)(te,(0,n.vec3)(0),me.mul(ae)),_e=(0,n.select)(te,(0,n.float)(1).sub(ae),(0,n.float)(1));(0,n.If)(Te,()=>{ko(u,V,l,ec({worldPos:e,cameraProjectionMatrix:le,cameraViewMatrix:ue}),(0,n.vec3)(1))}),Ro(s,R,(0,n.vec4)(ge,_e)),Io(s,R,Ae,B.bitOr((0,n.uint)(as.AUX_LOCKED)).bitAnd((0,n.uint)(~as.ACTIVE))),c.element(R).assign(Ne),(0,n.Return)()})})}),(0,n.If)(Re.greaterThan(Rc),()=>{let e=Oe.and(se),t=Oe.not().and(g),r=(0,n.vec3)(0).toVar();(0,n.If)(e.or(t),()=>{let e=Ae.toVar();(0,n.If)(Oe,()=>{e.assign(Rs(ke,Ae,_,v,y,b))});let t=(0,n.vec3)(0).toVar();(0,n.If)(Oe.and(ie.greaterThan(0)),()=>{t.assign(De(e,ie.mul(1.3),oe,Ne,Fe))}).Else(()=>{t.assign(Is({tex:p,samp:(0,n.sampler)(p),direction:e,environmentMatrix:h,environmentIntensity:m,enableEnvironmentLight:(0,n.float)(1)}).xyz)}),r.assign((0,n.clamp)(t,(0,n.vec3)(0),(0,n.vec3)(1)));let i=(0,n.float)(1).toVar();(0,n.If)(Oe.not(),()=>{let e=Eo(s,R);(0,n.If)(e.greaterThan(0),()=>{let t=Ps(p,Ae,h,C,w,T).w;(0,n.If)(t.greaterThan(0),()=>{i.assign(Pn({pdf1:e,pdf2:t}))})})});let a=(0,n.select)(Oe.not(),ce,(0,n.float)(1)),o=(0,n.select)(Oe,ne,i.mul(a)),c=(0,n.select)(Oe,(0,n.float)(0),(0,n.float)(He));Me.assign((0,n.vec4)(Me.xyz.add($s(je.mul(t).mul(o),c,de,(0,n.int)(_e))),Me.w))}),(0,n.If)(Oe.and(se.not()).and(te.not()),()=>{Me.assign((0,n.vec4)(Me.xyz.add(je.mul(re)),Me.w))}),(0,n.If)(B.bitAnd((0,n.uint)(as.HAS_HIT_OPAQUE)).equal((0,n.uint)(0)),()=>{Me.w.assign(0)}),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))).and(B.bitAnd((0,n.uint)(as.REDIRECTED)).notEqual((0,n.uint)(0))),()=>{let e=Ao(u,V);ko(u,V,(0,n.normalize)(Ae),jo(e).w,(0,n.clamp)(r.mul(Le),(0,n.vec3)(0),(0,n.vec3)(1)))}),Ro(s,R,Me),Io(s,R,Ae,B.bitAnd((0,n.uint)(~as.ACTIVE))),(0,n.Return)()});let Ge=ke.add(Ae.mul(Re)).toVar(),G=(0,n.normalize)(ze).toVar(),Ke=Go(s,R),qe=(0,n.int)(Ke.stackDepth).toVar(),Je=Ke.ior1.toVar(),Ye=Ke.ior2.toVar(),Xe=Ke.ior3.toVar(),Ze=(0,n.int)(Ke.transTraversals).toVar(),Qe=(0,n.float)(Ke.wavelength).toVar();(0,n.If)(qe.greaterThan(0),()=>{let e=qo(s,R).toVar(),t=ns(s,R),r=t.sigmaS.toVar(),i=t.g.toVar();(0,n.If)((0,n.max)((0,n.max)(r.x,r.y),r.z).lessThanEqual(0),()=>{let t=(0,n.exp)(e.mul(Re).negate()).toVar();je.mulAssign(t),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{Le.mulAssign(t)})}).Else(()=>{let t=e.add(r),a=kr.wrap(Nr(t,r,je,Re,Ne,Fe,pe,fe,Ie)).toVar();je.mulAssign(a.weight),(0,n.If)(a.didScatter,()=>{let e=he(Fe,(0,n.int)(0),Ie.add((0,n.int)(6)),Ne,pe,fe),t=ke.add(Ae.mul(a.t)),r=Mr(Ae,i,e).toVar();Ue.addAssign(1);let o=(0,n.clamp)((0,n.max)((0,n.max)(je.x,je.y),je.z),.02,1).toVar();(0,n.If)(Ue.greaterThanEqual(F).or(ge(Fe,(0,n.int)(0),Ie.add((0,n.int)(12)),Ne,pe,fe).greaterThan(o)).toVar(),()=>{Ro(s,R,Me),Io(s,R,Ae,B.bitAnd((0,n.uint)(~as.ACTIVE))),c.element(R).assign(Ne),(0,n.Return)()}),je.divAssign(o),B.assign(B.bitOr((0,n.uint)(as.REDIRECTED))),Fo(s,R,t,W,Ue,We),Io(s,R,r,B),Lo(s,R,je,Eo(s,R)),Ro(s,R,Me),c.element(R).assign(Ne),(0,n.Return)()})})});let K=sn.wrap(Un((0,n.int)(Ve),i)).toVar(),$e=Be.toVar(),et=G.toVar();(0,n.If)(K.displacementMapIndex.greaterThanEqual((0,n.int)(0)).and(K.displacementScale.greaterThan(0)),()=>{let e=on({origin:ke,direction:Ae}),t=dn({didHit:!0,dst:Re,hitPoint:Ge,normal:G,uv:Be,materialIndex:(0,n.int)(Ve),meshIndex:(0,n.int)(0),triangleIndex:(0,n.int)(U),boxTests:(0,n.int)(0),triTests:(0,n.int)(0)}),i=cc.wrap(lc(e,t,r,K,He)).toVar();$e.assign(i.uv),et.assign(i.normal),Ge.assign(i.hitPoint)});let tt=_n.wrap(_i(K,$e,G)).toVar(),nt=tt.roughness.toVar();K.color.assign(tt.albedo),K.metalness.assign(tt.metalness.clamp(0,1)),K.roughness.assign(tt.roughness.clamp(.05,1)),K.sheenRoughness.assign(K.sheenRoughness.clamp(.05,1));let rt=oi({uv:$e,transform:K.albedoTransform}).toVar();(0,n.If)(K.anisotropyMapIndex.greaterThanEqual((0,n.int)(0)),()=>{let e=mi(K,rt).toVar();K.anisotropy.assign(e.x),K.anisotropyRotation.assign(e.y)});let it=cn.wrap(hi(K,rt)).toVar();K.transmission.assign(it.transmission),K.clearcoat.assign(it.clearcoat),K.clearcoatRoughness.assign(it.clearcoatRoughness),K.sheenColor.assign(it.sheenColor),K.sheenRoughness.assign(it.sheenRoughness),K.iridescence.assign(it.iridescence),K.iridescenceThicknessRange.assign((0,n.vec2)(K.iridescenceThicknessRange.x,it.iridescenceThickness)),K.specularIntensity.assign(it.specularIntensity),K.specularColor.assign(it.specularColor);let at=tt.albedo.toVar();(0,n.If)(K.displacementMapIndex.greaterThanEqual((0,n.int)(0)).and(K.displacementScale.greaterThan(0)),()=>{G.assign((0,n.normalize)(et.add(tt.normal.sub((0,n.normalize)(ze)))))}).Else(()=>{G.assign(tt.normal)});let ot=K.metalness.toVar(),st=K.transmission.toVar(),ct=(0,n.smoothstep)((0,n.float)(0),(0,n.float)(.15),nt).toVar(),q=(0,n.clamp)((0,n.float)(1).sub(ot).mul((0,n.float)(1).sub(st)).add(ct.mul(ot.mul((0,n.float)(1).sub(st)).add(st))),0,1).greaterThanEqual((0,n.float)(.25)).toVar(),lt=Le.toVar(),ut=e=>{(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{let t=jo(Ao(u,V)).w;ko(u,V,e,t,(0,n.clamp)(at.mul(lt),(0,n.vec3)(0),(0,n.vec3)(1)))})},dt=()=>{Ro(s,R,Me),Io(s,R,Ae,B.bitAnd((0,n.uint)(~as.ACTIVE))),c.element(R).assign(Ne)};(0,n.If)(He.equal(0).and(Te),()=>{let e=ec({worldPos:Ge,cameraProjectionMatrix:le,cameraViewMatrix:ue});ko(u,V,(0,n.vec3)(0,0,1),e,(0,n.vec3)(0))});let ft=(0,n.float)(1).toVar(),pt=(0,n.float)(1).toVar();(0,n.If)(qe.equal(1),()=>{ft.assign(Je)}).ElseIf(qe.equal(2),()=>{ft.assign(Ye),pt.assign(Je)}).ElseIf(qe.equal(3),()=>{ft.assign(Xe),pt.assign(Ye)});let mt=on({origin:ke,direction:Ae}),ht=Lr.wrap(qr(mt,G,K,Ne,Fe,pe,fe,Ie,(0,n.int)(Ze),ft,pt,Qe)).toVar();Qe.assign(ht.pathWavelength),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{let e=jo(Ao(u,V)).w,t=(0,n.select)((0,n.dot)(G,Ae.negate()).lessThan(0),G.negate(),G).toVar(),r=(0,n.clamp)(at.mul(lt),(0,n.vec3)(0),(0,n.vec3)(1)).toVar();(0,n.If)(K.alphaMode.equal((0,n.int)(2)),()=>{ko(u,V,t,e,r),B.assign(B.bitOr((0,n.uint)(as.AUX_LOCKED)))}).ElseIf(ht.isAlphaSkip,()=>{}).ElseIf(ht.isSubsurface,()=>{ko(u,V,t,e,r),B.assign(B.bitOr((0,n.uint)(as.AUX_LOCKED)))}).ElseIf(ht.isTransmissive,()=>{(0,n.If)(q.or(K.dispersion.greaterThan(0)),()=>{ko(u,V,t,e,r),B.assign(B.bitOr((0,n.uint)(as.AUX_LOCKED)))}).Else(()=>{Le.mulAssign((0,n.clamp)(at,(0,n.vec3)(0),(0,n.vec3)(1)))})})}),(0,n.If)(ht.continueRay,()=>{(0,n.If)(ht.isTransmissive.and(ht.didReflect.not()),()=>{(0,n.If)(ht.entering,()=>{(0,n.If)(qe.lessThan(3),()=>{qe.addAssign(1),(0,n.If)(qe.equal(1),()=>{Je.assign(K.ior)}),(0,n.If)(qe.equal(2),()=>{Ye.assign(K.ior)}),(0,n.If)(qe.equal(3),()=>{Xe.assign(K.ior)}),Jo(s,R,(0,n.select)(K.attenuationDistance.greaterThan(0),(0,n.log)((0,n.max)(K.attenuationColor,(0,n.vec3)(.001))).negate().div(K.attenuationDistance),(0,n.vec3)(0))),rs(s,R,(0,n.vec3)(0),(0,n.float)(0))})}).Else(()=>{(0,n.If)(qe.greaterThan(0),()=>{qe.subAssign(1)})})}),(0,n.If)(ht.isSubsurface.and(ht.didReflect.not()),()=>{(0,n.If)(ht.entering,()=>{(0,n.If)(qe.lessThan(3),()=>{qe.addAssign(1),(0,n.If)(qe.equal(1),()=>{Je.assign(K.ior)}),(0,n.If)(qe.equal(2),()=>{Ye.assign(K.ior)}),(0,n.If)(qe.equal(3),()=>{Xe.assign(K.ior)});let e=Ar.wrap(Pr(K.subsurfaceColor,K.subsurfaceRadius,K.subsurfaceRadiusScale)).toVar();Jo(s,R,e.sigmaT.sub(e.sigmaS)),rs(s,R,e.sigmaS,(0,n.clamp)(K.subsurfaceAnisotropy,-.99,.99))})}).Else(()=>{(0,n.If)(qe.greaterThan(0),()=>{qe.subAssign(1)})})}),(0,n.If)(ht.isTransmissive.and(Ze.greaterThan(0)),()=>{Ze.subAssign(1)}),je.mulAssign(ht.throughput);let e=(0,n.select)(ht.entering,G,G.negate()),t=(0,n.select)(ht.didReflect,e,Ae),r=Ge.add(t.mul(.001));(0,n.If)(ht.isAlphaSkip.not(),()=>{B.assign(B.bitOr((0,n.uint)(as.REDIRECTED)))}).Else(()=>{We.addAssign(1),(0,n.If)(We.greaterThan(ee),()=>{ut((0,n.select)((0,n.dot)(G,Ae.negate()).lessThan(0),G.negate(),G)),dt(),(0,n.Return)()})}),Fo(s,R,r,W,Ue,We,(0,n.select)(ht.isAlphaSkip,Po(s,R).add(Re),(0,n.float)(0))),Io(s,R,ht.direction,B),Lo(s,R,je,Eo(s,R)),Ro(s,R,Me),Ko(s,R,(0,n.uint)(qe),(0,n.uint)(Ze),Je,Ye,Xe,(0,n.uint)(Qe.add(.5))),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{Qo(s,R,Le)}),c.element(R).assign(Ne),(0,n.Return)()}),B.assign(B.bitOr((0,n.uint)(as.HAS_HIT_OPAQUE|as.REDIRECTED)));let gt=tt.emissive.toVar();(0,n.If)((0,n.length)(gt).greaterThan(0),()=>{let e=(0,n.select)(Oe.not(),ce,(0,n.float)(1)),t=(0,n.float)(1).toVar();Ee&&(0,n.If)(Se.equal((0,n.int)(1)).and(ye.greaterThan((0,n.int)(0))).and(He.greaterThan(0)),()=>{let e=Eo(s,R);(0,n.If)(e.greaterThan(0),()=>{let a=Po(s,R).toVar(),c=ke.sub(Ae.mul(a)).toVar(),l=Re.add(a).toVar(),u=(0,n.float)(0).toVar();(0,n.If)(Ce.greaterThan((0,n.int)(0)),()=>{u.assign(Lc((0,n.int)(U),l,Ae,c,o,be,z,r))}).Else(()=>{u.assign(Tc((0,n.int)(U),l,Ae,c,r,i,xe))}),t.assign(Nn({pdf1:e,pdf2:u}))})}),Me.assign((0,n.vec4)(Me.xyz.add($s(gt.mul(je).mul(e).mul(t),(0,n.float)(He),de,(0,n.int)(_e))),Me.w))});let _t=Ae.negate().toVar();(0,n.If)((0,n.dot)(G,_t).lessThan(0),()=>{G.assign(G.negate())}),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{let e=jo(Ao(u,V)).w;(0,n.If)(q,()=>{ko(u,V,G,e,(0,n.clamp)(at.mul(lt),(0,n.vec3)(0),(0,n.vec3)(1))),B.assign(B.bitOr((0,n.uint)(as.AUX_LOCKED)))}).Else(()=>{let e=(0,n.max)((0,n.dot)(G,_t),(0,n.float)(.001)),t=(0,n.clamp)((0,n.mix)($n(K.ior).mul(K.specularColor),at,K.metalness).mul(K.specularIntensity),(0,n.vec3)(0),(0,n.vec3)(1));Le.mulAssign(gn.wrap(dr(t,e,(0,n.max)(nt,(0,n.float)(.02)))).E_total)})});let vt=vn.wrap(Vn(K.metalness,K.roughness,K.transmission,K.clearcoat,K.emissive,K.subsurface)).toVar(),yt=me(Fe,(0,n.int)(0),He,Ne,(0,n.int)(-1),pe,fe).toVar(),bt=ge(Fe,(0,n.int)(0),Ie.add((0,n.int)(2)),Ne,pe,fe).toVar(),xt=pn({specular:(0,n.float)(0),diffuse:(0,n.float)(0),sheen:(0,n.float)(0),clearcoat:(0,n.float)(0),transmission:(0,n.float)(0),iridescence:(0,n.float)(0)}),St=bn({invRoughness:(0,n.float)(0),metalFactor:(0,n.float)(.5),iorFactor:(0,n.float)(.67),maxSheenColor:(0,n.float)(0)}),Ct=(0,n.vec3)(0).toVar(),wt=(0,n.vec3)(0).toVar(),Tt=(0,n.float)(0).toVar(),Et=(0,n.bool)(!1).toVar(),Dt=(0,n.vec3)(1).toVar();(0,n.If)(K.clearcoat.greaterThan(0),()=>{let e=on({origin:ke,direction:Ae}),t=dn({didHit:!0,dst:Re,hitPoint:Ge,normal:G,uv:Be,materialIndex:(0,n.int)(Ve),meshIndex:(0,n.int)(0),triangleIndex:(0,n.int)(0),boxTests:(0,n.int)(0),triTests:(0,n.int)(0)}),r=nc.wrap(rc(e,t,K,yt,Ne,Fe,pe,fe,Ie));Ct.assign(r.L),wt.assign(r.brdf),Tt.assign(r.pdf)}).Else(()=>{let e=fn.wrap(Qs(_t,G,K,yt,bt,Ne,Fe,pe,fe,Ie,vt,!1,xt,!1,St));Ct.assign(e.direction),wt.assign(e.value),Tt.assign(e.pdf),Et.assign(e.isTransmission),Dt.assign(e.colorWeight)});let Ot=un.wrap(Xs(Ge,G,K,_t,Ct,Tt,wt,He,Ne,Fe,pe,fe,Ie,E,D,O,k,A,j,M,N,t,r,i,p,m,h,a,C,w,T,g,(0,n.bool)(!1))).shadowed.toVar(),kt=(0,n.select)(He.greaterThan(0),ce,(0,n.float)(1));Me.assign((0,n.vec4)(Me.xyz.add($s(je.mul(Ot).mul(kt),(0,n.float)(He),de,(0,n.int)(_e))),Me.w)),Ee&&(0,n.If)(Se.equal((0,n.int)(1)).and(ye.greaterThan((0,n.int)(0))),()=>{let e=(0,n.Fn)(([e,n,a])=>Ci(e,n,a,As,t,r,i));(0,n.If)(Ce.greaterThan((0,n.int)(0)),()=>{let t=uc.wrap(Ic(Ge,G,Ne,Fe,pe,fe,Ie,o,o,be,r));(0,n.If)(t.valid.and(t.pdf.greaterThan(0)),()=>{let r=(0,n.max)((0,n.float)(0),(0,n.dot)(G,t.direction));(0,n.If)(r.greaterThan(0),()=>{let i=wi(Ge,G,K),a=Ge.add(i),o=t.distance.sub(.001),s=e(a,t.direction,o);(0,n.If)(s.greaterThan(0),()=>{let e=Bs(_t,t.direction,G,K),i=Ys(_t,t.direction,G,K),a=(0,n.select)(i.greaterThan(0),Nn({pdf1:t.pdf,pdf2:i}),(0,n.float)(1)),o=t.emission.mul(e).mul(r).div(t.pdf).mul(s).mul(L).mul(a);Me.assign((0,n.vec4)(Me.xyz.add($s(o.mul(je).mul(kt),(0,n.float)(He),de,(0,n.int)(_e))),Me.w))})})})}).Else(()=>{let t=kc(Ge,G,_t,K,He,Ne,Fe,pe,fe,Ie,L,o,be,ye,xe,r,e,wi);Me.assign((0,n.vec4)(Me.xyz.add($s(t.mul(je).mul(kt),(0,n.float)(He),de,(0,n.int)(_e))),Me.w))})});let At=Pi.wrap(Zs(G,K,Ct,Tt,wt,Et,Dt,Ne,Fe,pe,fe,Ie)).toVar(),jt=At.direction.toVar(),Mt=(0,n.select)((0,n.dot)(ze,_t).lessThan(0),ze.negate(),ze);(0,n.If)(Et.not().and((0,n.dot)(jt,Mt).lessThanEqual(0)),()=>{ut(G),dt(),(0,n.Return)()});let Nt=(0,n.max)(At.combinedPdf,.001).toVar();je.mulAssign(At.throughput);let Pt=tc(He,je,vt,jt,Ne,Fe,pe,fe,Ie,g).toVar();(0,n.If)(Pt.lessThanEqual(0),()=>{ut(G),dt(),(0,n.Return)()}),je.divAssign(Pt),(0,n.If)(W.greaterThanEqual(P),()=>{ut(G),dt(),(0,n.Return)()}),Fo(s,R,Ge.add(G.mul(.001)),W.add(1),Ue,We),Io(s,R,jt,B),Lo(s,R,je,Nt),Ro(s,R,Me),Ko(s,R,(0,n.uint)(qe),(0,n.uint)(Ze),Je,Ye,Xe,(0,n.uint)(Qe.add(.5))),(0,n.If)(Te.and(B.bitAnd((0,n.uint)(as.AUX_LOCKED)).equal((0,n.uint)(0))),()=>{Qo(s,R,Le)}),c.element(R).assign(Ne)})}function Uc(e){let{rayBufferRO:t,activeIndicesReadRO:r,activeIndicesWriteRW:i,counters:a,currentActiveCount:o}=e;return(0,n.Fn)(()=>{let e=n.instanceIndex,s=a?(0,n.atomicLoad)(a.element((0,n.uint)($.ENTERING_COUNT))):o;(0,n.If)(e.greaterThanEqual(s),()=>{(0,n.Return)()});let c=r.element(e);(0,n.If)(wo(t,c).bitAnd((0,n.uint)(as.ACTIVE)).notEqual((0,n.uint)(0)),()=>{let e=(0,n.atomicAdd)(a.element((0,n.uint)($.ACTIVE_RAY_COUNT)),(0,n.uint)(1));i.element(e).assign(c)})})}function Wc(e){let{rayBufferRO:t,activeIndicesReadRO:r,activeIndicesWriteRW:i,counters:a,currentActiveCount:o}=e;return(0,n.Fn)(()=>{let e=n.instanceIndex,s=a?(0,n.atomicLoad)(a.element((0,n.uint)($.ENTERING_COUNT))):o,c=e.lessThan(s),l=r.element(e),u=wo(t,l),d=c.and(u.bitAnd((0,n.uint)(as.ACTIVE)).notEqual((0,n.uint)(0))),f=(0,n.select)(d,(0,n.uint)(1),(0,n.uint)(0)),p=(0,n.subgroupExclusiveAdd)(f).toVar(),m=(0,n.subgroupAdd)(f).toVar(),h=(0,n.subgroupExclusiveAdd)((0,n.uint)(1)).toVar(),g=(0,n.uint)(0).toVar();(0,n.If)(h.equal((0,n.uint)(0)),()=>{g.assign((0,n.atomicAdd)(a.element((0,n.uint)($.ACTIVE_RAY_COUNT)),m))});let _=(0,n.subgroupBroadcast)(g,(0,n.uint)(0)).toVar();(0,n.If)(d,()=>{i.element(_.add(p)).assign(l)})})}var Gc=(0,n.wgslFn)(`
630
630
  fn nanInfToRed( c: vec3f ) -> vec3f {
631
631
  let isNan = c.x != c.x || c.y != c.y || c.z != c.z;
632
632
  let isInf = abs( c.x ) > 1e30f || abs( c.y ) > 1e30f || abs( c.z ) > 1e30f;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rayzee",
3
- "version": "7.22.4",
3
+ "version": "7.22.5",
4
4
  "type": "module",
5
5
  "description": "Real-time WebGPU path tracing engine built on Three.js",
6
6
  "main": "dist/rayzee.umd.js",
@@ -356,7 +356,11 @@ export const handleRussianRoulette = Fn( ( [
356
356
  rrProb.mulAssign( depthFactor );
357
357
 
358
358
  const minProb = select( mc.isEmissive, float( 0.04 ), float( 0.02 ) );
359
- rrProb.assign( max( rrProb, minProb ) );
359
+ // Upper clamp is load-bearing, not cosmetic: pathContribution scales with throughput,
360
+ // which prior RR compensation inflates well past 1, so rrProb could exceed 1. The path
361
+ // then always survives while throughput is still divided by rrProb — a plain energy
362
+ // sink that compounds with depth (albedo-1 concave furnace read 0.955 instead of 1.0).
363
+ rrProb.assign( clamp( rrProb, minProb, 1.0 ) );
360
364
 
361
365
  const rrSample = getRandomSample1D( pixelCoord, int( 0 ), dimBase.add( int( 3 ) ), rngState, resolution, frame );
362
366
  result.assign( select( rrSample.lessThan( rrProb ), rrProb, float( 0.0 ) ) );