rayzee 7.27.0 → 7.27.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 +8 -8
- package/dist/rayzee.umd.js +1 -1
- package/package.json +1 -1
- package/src/TSL/FinalWriteKernel.js +14 -1
package/dist/rayzee.es.js
CHANGED
|
@@ -10488,19 +10488,19 @@ function ef(e) {
|
|
|
10488
10488
|
ie.assign(I(le, e.w, P(e.w, D.w, u)));
|
|
10489
10489
|
});
|
|
10490
10490
|
}), p(ue, () => {
|
|
10491
|
-
let e = Pa(D.xyz), t =
|
|
10492
|
-
E.element(T).assign(
|
|
10493
|
-
let
|
|
10491
|
+
let e = Pa(D.xyz), t = E.element(T).toVar(), n = I(le, t, P(t, e.mul(e), u)).toVar();
|
|
10492
|
+
E.element(T).assign(n);
|
|
10493
|
+
let r = Pa(k).toVar(), i = n.sub(r.mul(r)).max(A(0)).div(A(s).add(1)).sqrt().toVar(), a = i.div(r.add(A(1e-4))), o = I(r.lessThan(A(1)), r.sqrt(), r), c = i.div(o.add(A(1e-4))).lessThan(O);
|
|
10494
10494
|
p(oe.or(ce), () => {
|
|
10495
|
-
let e = oe.and(s.greaterThanEqual(R(ee))).and(
|
|
10495
|
+
let e = oe.and(s.greaterThanEqual(R(ee))).and(c), t = ne.element(T).toVar(), n = t.bitAnd(R(1073741823)).toVar(), i = n.toVar(), o = D.w.greaterThan(A(.5)), l = t.bitAnd(R(1073741824)).notEqual(R(0)), u = I(s.equal(R(0)), I(o, R(1073741824), R(0)), I(o.or(l), R(1073741824), R(0))).toVar();
|
|
10496
10496
|
p(ce, () => {
|
|
10497
10497
|
p(s.equal(R(0)), () => {
|
|
10498
|
-
|
|
10498
|
+
i.assign(R(0));
|
|
10499
10499
|
}), p(le.not().and(s.greaterThan(R(0))), () => {
|
|
10500
|
-
let e = s.greaterThanEqual(R(ee)).and(
|
|
10501
|
-
|
|
10500
|
+
let e = s.greaterThanEqual(R(ee)).and(a.lessThan(te)).and(r.greaterThan(A(0)));
|
|
10501
|
+
i.assign(I(e, n.add(R(1)), R(0)));
|
|
10502
10502
|
});
|
|
10503
|
-
}), ne.element(T).assign(
|
|
10503
|
+
}), ne.element(T).assign(i.bitOr(I(e, R(2147483648), R(0))).bitOr(u));
|
|
10504
10504
|
});
|
|
10505
10505
|
}), p(C.equal(M(11)), () => {
|
|
10506
10506
|
k.assign($d(k));
|
package/dist/rayzee.umd.js
CHANGED
|
@@ -635,7 +635,7 @@
|
|
|
635
635
|
if ( isNan || isInf ) { return vec3f( 1.0f, 0.0f, 0.0f ); }
|
|
636
636
|
return vec3f( 0.0f );
|
|
637
637
|
}
|
|
638
|
-
`);function tl(e){let{rayBufferRO:t,gBufferRO:r,writeColorTex:i,writeNDTex:a,writeAlbedoTex:o,resolution:s,frame:c,enableAccumulation:l,hasPreviousAccumulated:u,accumulationAlpha:d,cameraIsMoving:f,hasPreviousAux:p,auxAccumulationAlpha:m,transparentBackground:h,prevAccumTexture:g,prevAlbedoTexture:_,prevNormalDepthTexture:v,renderWidth:y,chunkRowBase:b,chunkRows:x,visMode:S,auxGBufferEnabled:C,cleanAuxNormalEnabled:w,m2BufferRW:T,useAdaptiveSampling:E,noiseThreshold:D,adaptiveMinSamples:O,usePixelFreeze:k,pixelFreezeThreshold:A,streakBufferRW:j,frozenMaskRO:M,convergenceOverlay:N}=e,P=C.greaterThan((0,n.uint)(0)),F=w.greaterThan((0,n.uint)(0)),I=E.greaterThan((0,n.int)(0)),ee=k.greaterThan((0,n.int)(0)),te=I.or(ee).or(N.greaterThan((0,n.int)(0)));return(0,n.Fn)(()=>{let e=(0,n.int)(n.workgroupId.x).mul(16).add((0,n.int)(n.localId.x)),C=(0,n.int)(n.workgroupId.y).mul(16).add((0,n.int)(n.localId.y));(0,n.If)(e.lessThan(y).and(C.lessThan(x)),()=>{let x=C.add(b),w=(0,n.uint)(C.mul(y).add(e)),E=(0,n.uint)(x.mul(y).add(e)),k=Io(t,w),N=k.xyz.toVar(),ne=(0,n.select)(h,k.w,(0,n.float)(1)).toVar(),re=ee.and(c.greaterThan((0,n.uint)(0))).and(M.element(E).equal((0,n.uint)(1))).toVar(),ie=(0,n.vec4)(0).toVar(),ae=(0,n.vec4)(0).xyz.toVar();(0,n.If)(P,()=>{let e=zo(r,w);ie.assign(Bo(e)),ae.assign((0,n.vec4)(Vo(e),0).xyz)});let oe=(0,n.vec2)((0,n.float)(e).add(.5),(0,n.float)(x).add(.5)).div(s);(0,n.If)(l.and(f.not()).and(c.greaterThan((0,n.uint)(0))).and(u).and(S.notEqual((0,n.int)(11))),()=>{let e=(0,n.texture)(g,oe,0).toVar();N.assign((0,n.select)(re,e.xyz,(0,n.mix)(e.xyz,k.xyz,d))),(0,n.If)(P.and(p),()=>{ae.assign((0,n.mix)((0,n.texture)(_,oe,0).xyz,ae,m)),(0,n.If)(F,()=>{let e=(0,n.texture)(v,oe,0).xyz.mul(2).sub(1),t=ie.xyz.mul(2).sub(1).toVar(),r=(0,n.mix)(e,t,m).toVar(),i=(0,n.length)(r),a=(0,n.select)(i.greaterThan(1e-4),r.div(i),t);ie.assign((0,n.vec4)(a.mul(.5).add(.5),ie.w))})}),(0,n.If)(h,()=>{ne.assign((0,n.select)(re,e.w,(0,n.mix)(e.w,k.w,d)))})}),(0,n.If)(te,()=>{let e=Rn(k.xyz),t=
|
|
638
|
+
`);function tl(e){let{rayBufferRO:t,gBufferRO:r,writeColorTex:i,writeNDTex:a,writeAlbedoTex:o,resolution:s,frame:c,enableAccumulation:l,hasPreviousAccumulated:u,accumulationAlpha:d,cameraIsMoving:f,hasPreviousAux:p,auxAccumulationAlpha:m,transparentBackground:h,prevAccumTexture:g,prevAlbedoTexture:_,prevNormalDepthTexture:v,renderWidth:y,chunkRowBase:b,chunkRows:x,visMode:S,auxGBufferEnabled:C,cleanAuxNormalEnabled:w,m2BufferRW:T,useAdaptiveSampling:E,noiseThreshold:D,adaptiveMinSamples:O,usePixelFreeze:k,pixelFreezeThreshold:A,streakBufferRW:j,frozenMaskRO:M,convergenceOverlay:N}=e,P=C.greaterThan((0,n.uint)(0)),F=w.greaterThan((0,n.uint)(0)),I=E.greaterThan((0,n.int)(0)),ee=k.greaterThan((0,n.int)(0)),te=I.or(ee).or(N.greaterThan((0,n.int)(0)));return(0,n.Fn)(()=>{let e=(0,n.int)(n.workgroupId.x).mul(16).add((0,n.int)(n.localId.x)),C=(0,n.int)(n.workgroupId.y).mul(16).add((0,n.int)(n.localId.y));(0,n.If)(e.lessThan(y).and(C.lessThan(x)),()=>{let x=C.add(b),w=(0,n.uint)(C.mul(y).add(e)),E=(0,n.uint)(x.mul(y).add(e)),k=Io(t,w),N=k.xyz.toVar(),ne=(0,n.select)(h,k.w,(0,n.float)(1)).toVar(),re=ee.and(c.greaterThan((0,n.uint)(0))).and(M.element(E).equal((0,n.uint)(1))).toVar(),ie=(0,n.vec4)(0).toVar(),ae=(0,n.vec4)(0).xyz.toVar();(0,n.If)(P,()=>{let e=zo(r,w);ie.assign(Bo(e)),ae.assign((0,n.vec4)(Vo(e),0).xyz)});let oe=(0,n.vec2)((0,n.float)(e).add(.5),(0,n.float)(x).add(.5)).div(s);(0,n.If)(l.and(f.not()).and(c.greaterThan((0,n.uint)(0))).and(u).and(S.notEqual((0,n.int)(11))),()=>{let e=(0,n.texture)(g,oe,0).toVar();N.assign((0,n.select)(re,e.xyz,(0,n.mix)(e.xyz,k.xyz,d))),(0,n.If)(P.and(p),()=>{ae.assign((0,n.mix)((0,n.texture)(_,oe,0).xyz,ae,m)),(0,n.If)(F,()=>{let e=(0,n.texture)(v,oe,0).xyz.mul(2).sub(1),t=ie.xyz.mul(2).sub(1).toVar(),r=(0,n.mix)(e,t,m).toVar(),i=(0,n.length)(r),a=(0,n.select)(i.greaterThan(1e-4),r.div(i),t);ie.assign((0,n.vec4)(a.mul(.5).add(.5),ie.w))})}),(0,n.If)(h,()=>{ne.assign((0,n.select)(re,e.w,(0,n.mix)(e.w,k.w,d)))})}),(0,n.If)(te,()=>{let e=Rn(k.xyz),t=T.element(E).toVar(),r=(0,n.select)(re,t,(0,n.mix)(t,e.mul(e),d)).toVar();T.element(E).assign(r);let i=Rn(N).toVar(),a=r.sub(i.mul(i)).max((0,n.float)(0)).div((0,n.float)(c).add(1)).sqrt().toVar(),o=a.div(i.add((0,n.float)(1e-4))),s=(0,n.select)(i.lessThan((0,n.float)(1)),i.sqrt(),i),l=a.div(s.add((0,n.float)(1e-4))).lessThan(D);(0,n.If)(I.or(ee),()=>{let e=I.and(c.greaterThanEqual((0,n.uint)(O))).and(l),t=j.element(E).toVar(),r=t.bitAnd((0,n.uint)(1073741823)).toVar(),a=r.toVar(),s=k.w.greaterThan((0,n.float)(.5)),u=t.bitAnd((0,n.uint)(1073741824)).notEqual((0,n.uint)(0)),d=(0,n.select)(c.equal((0,n.uint)(0)),(0,n.select)(s,(0,n.uint)(1073741824),(0,n.uint)(0)),(0,n.select)(s.or(u),(0,n.uint)(1073741824),(0,n.uint)(0))).toVar();(0,n.If)(ee,()=>{(0,n.If)(c.equal((0,n.uint)(0)),()=>{a.assign((0,n.uint)(0))}),(0,n.If)(re.not().and(c.greaterThan((0,n.uint)(0))),()=>{let e=c.greaterThanEqual((0,n.uint)(O)).and(o.lessThan(A)).and(i.greaterThan((0,n.float)(0)));a.assign((0,n.select)(e,r.add((0,n.uint)(1)),(0,n.uint)(0)))})}),j.element(E).assign(a.bitOr((0,n.select)(e,(0,n.uint)(2147483648),(0,n.uint)(0))).bitOr(d))})}),(0,n.If)(S.equal((0,n.int)(11)),()=>{N.assign(el(N))});let se=(0,n.uvec2)((0,n.uint)(e),(0,n.uint)(x));(0,n.textureStore)(i,se,(0,n.vec4)(N,ne)).toWriteOnly(),(0,n.If)(P,()=>{(0,n.textureStore)(a,se,ie).toWriteOnly(),(0,n.textureStore)(o,se,(0,n.vec4)(ae,1)).toWriteOnly()})})})}var nl=(0,n.wgslFn)(`
|
|
639
639
|
fn visualizeDepth( depth: f32 ) -> vec3f {
|
|
640
640
|
return vec3f( 1.0f - depth );
|
|
641
641
|
}
|
package/package.json
CHANGED
|
@@ -153,9 +153,22 @@ export function buildFinalWriteKernel( params ) {
|
|
|
153
153
|
// and before the visMode-11 mutation. Frame 0 self-inits m2 via alpha==1 — no explicit clear.
|
|
154
154
|
If( statsOn, () => {
|
|
155
155
|
|
|
156
|
+
// Frozen pixels hold m2, for the same reason they hold finalColor above: Generate skipped
|
|
157
|
+
// them, so rayBuffer still holds whatever they last traced. Folding that in every frame drove
|
|
158
|
+
// m2 toward the stale sample while meanLum stayed put, so sampleVar decayed to an artefact
|
|
159
|
+
// of one old sample. The `converged` flag below is built from it and counted into
|
|
160
|
+
// CONVERGED_COUNT, so the corruption reached the whole-frame early stop, not just this pixel.
|
|
161
|
+
//
|
|
162
|
+
// Editing this kernel at all costs 11 quality goldens their bit-identical status at
|
|
163
|
+
// rmse ~1e-4 — measured identical for select() and for an If() branch, so it is compiler
|
|
164
|
+
// scheduling, not the extra arm. Goldens re-blessed with the change.
|
|
156
165
|
const sampleLum = luminance( sampleColor.xyz );
|
|
157
166
|
const prevM2 = m2BufferRW.element( pixelId ).toVar();
|
|
158
|
-
const m2 =
|
|
167
|
+
const m2 = select(
|
|
168
|
+
wasFrozen,
|
|
169
|
+
prevM2,
|
|
170
|
+
mix( prevM2, sampleLum.mul( sampleLum ), accumulationAlpha )
|
|
171
|
+
).toVar();
|
|
159
172
|
m2BufferRW.element( pixelId ).assign( m2 );
|
|
160
173
|
|
|
161
174
|
const meanLum = luminance( finalColor ).toVar();
|