rayzee 11.15.1 → 11.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ArchiveFormats-DGypbJbi.js → ArchiveFormats-CWi6IbSp.js} +3 -3
- package/dist/{ArchiveImporter-DO52X2Wv.js → ArchiveImporter-CEv5EDgg.js} +3 -3
- package/dist/{BidirectionalIntegrator-BDAVOhHt.js → BidirectionalIntegrator-KWRQrMXX.js} +94 -94
- package/dist/{CameraRay-BrivdtGO.js → CameraRay-CdVb2LnS.js} +2 -2
- package/dist/{ColorManagement-m9mZF5u4.js → ColorManagement-B6SgefNi.js} +1 -1
- package/dist/{CompactKernel-CGteMt2T.js → CompactKernel-C6TCBB6i.js} +1432 -1087
- package/dist/{DepthPass-CucSh6We.js → DepthPass-BMnBuepB.js} +3 -3
- package/dist/{EngineIssues-t5p7TEjb.js → EngineIssues-DHAU18xh.js} +2 -1
- package/dist/{LocalExposure-2gts3VQL.js → LocalExposure-CMO6fd8G.js} +1 -1
- package/dist/{NeuralRetouch-XHVjbYAw.js → NeuralRetouch-CYRGwe9E.js} +1 -1
- package/dist/{NeuralSuperRes-BvBV4gN4.js → NeuralSuperRes-p0A3_wjO.js} +1 -1
- package/dist/{OpenStorage-Brn8HYNA.js → OpenStorage-CjlOYQyW.js} +1 -1
- package/dist/{PhysicalSky-CE3UvfuW.js → PhysicalSky-qHATDBbB.js} +1 -1
- package/dist/{PictureView-DXa3ED9l.js → PictureView-6y4XsUf0.js} +3 -3
- package/dist/{RayzeeRenderer-DPsWdbUI.js → RayzeeRenderer-ClGfovbz.js} +1694 -1671
- package/dist/{TextureBuckets-BOZzBXSD.js → TextureBuckets-CcOI4Bdg.js} +4 -0
- package/dist/{TextureSampling-D81EJ9uO.js → TextureSampling-CQMmzhCp.js} +1 -1
- package/dist/addons/archives.es.js +1 -1
- package/dist/addons/bidirectional.es.js +1 -1
- package/dist/addons/color.es.js +1 -1
- package/dist/addons/physical-sky.es.js +1 -1
- package/dist/addons/storage.es.js +1 -1
- package/dist/rayzee-core.es.js +4 -4
- package/dist/rayzee.es.js +554 -555
- package/dist/rayzee.umd.js +65 -65
- package/package.json +1 -1
- package/src/EngineDefaults.js +6 -0
- package/src/EngineIssues.js +1 -0
- package/src/RayzeeRenderer.js +36 -0
- package/src/RenderSettings.js +29 -1
- package/src/pathtracer/PathTracer.js +22 -0
- package/src/pathtracer/UniformManager.js +7 -0
- package/src/shaders/Fog.js +395 -0
- package/src/shaders/LightsDirect.js +6 -2
- package/src/shaders/Random.js +10 -1
- package/src/shaders/SceneResources.js +2 -0
- package/src/shaders/kernels/ShadeKernel.js +98 -0
- package/src/viewer/PathTracerApp.js +2 -11
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as e, i as t, r as n } from "./Logger-D7hic8LA.js";
|
|
2
|
-
import { l as r, t as i } from "./TextureBuckets-
|
|
2
|
+
import { l as r, t as i } from "./TextureBuckets-CcOI4Bdg.js";
|
|
3
3
|
import { f as a, v as o, y as s } from "./BufferLayout-ny3WneEc.js";
|
|
4
|
-
import { n as c } from "./EngineIssues-
|
|
4
|
+
import { n as c } from "./EngineIssues-DHAU18xh.js";
|
|
5
5
|
import { d as l, s as u } from "./FileIdentity-BXmPNvJP.js";
|
|
6
6
|
import { n as d } from "./AssetConfig-C8BsprCp.js";
|
|
7
7
|
import { BackSide as f, Box3 as p, BufferAttribute as m, Color as h, DataTexture as g, DoubleSide as _, FrontSide as v, LoaderUtils as y, Matrix3 as b, Matrix4 as x, RGBAFormat as S, UnsignedByteType as C, Vector2 as w, Vector3 as T } from "three";
|
|
@@ -1219,7 +1219,7 @@ var Ze = class {
|
|
|
1219
1219
|
samples: this.samples.slice()
|
|
1220
1220
|
};
|
|
1221
1221
|
}
|
|
1222
|
-
}, Qe = "11.
|
|
1222
|
+
}, Qe = "11.16.0", $e = [
|
|
1223
1223
|
[/\.jpe?g(\?|#|$)/i, "image/jpeg"],
|
|
1224
1224
|
[/\.webp(\?|#|$)/i, "image/webp"],
|
|
1225
1225
|
[/\.avif(\?|#|$)/i, "image/avif"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as e } from "./BidirectionalIntegrator-
|
|
2
|
-
import { n as t, r as n, t as r } from "./EngineIssues-
|
|
3
|
-
import { I as i, M as a, N as o, O as s, T as c, c as l, i as u, t as d, u as f, z as p } from "./ArchiveFormats-
|
|
1
|
+
import { n as e } from "./BidirectionalIntegrator-KWRQrMXX.js";
|
|
2
|
+
import { n as t, r as n, t as r } from "./EngineIssues-DHAU18xh.js";
|
|
3
|
+
import { I as i, M as a, N as o, O as s, T as c, c as l, i as u, t as d, u as f, z as p } from "./ArchiveFormats-CWi6IbSp.js";
|
|
4
4
|
import { f as m, i as h, n as g, o as _, r as v, s as y } from "./FileIdentity-BXmPNvJP.js";
|
|
5
5
|
import { a as b } from "./EngineEvents-oQGofgRf.js";
|
|
6
6
|
import { n as x, t as S } from "./ZipReader-D6LbMsfZ.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $ as e, $t as t, A as n, Bt as r, F as i, Ft as a, G as o, H as s, I as c, J as l, K as u, L as d, Mt as f, O as p, P as m, X as h, Y as ee, Yt as te, ct as ne, dt as re, in as g, jt as ie, mn as _, n as v, q as ae, r as y, s as oe, st as se, tn as b, ut as ce, v as le, wt as ue } from "./PackedRayBuffer-BhqeNEaL.js";
|
|
2
|
-
import { E as de, O as x, S, T as C, a as w, b as T, c as E, j as fe, k as D, p as pe, t as
|
|
3
|
-
import { o as
|
|
4
|
-
import { $ as
|
|
2
|
+
import { E as de, O as x, S, T as C, a as w, b as T, c as E, j as fe, k as D, p as pe, t as me, x as O } from "./TextureSampling-CQMmzhCp.js";
|
|
3
|
+
import { o as k } from "./TextureBuckets-CcOI4Bdg.js";
|
|
4
|
+
import { $ as he, A, Et as j, Ht as ge, K as _e, Kt as ve, Lt as ye, M, Ot as be, P as xe, Qt as N, St as P, Tt as Se, Ut as Ce, X as F, Yt as I, _ as we, bt as Te, c as Ee, et as De, g as Oe, gt as ke, h as Ae, ht as je, j as L, k as Me, l as R, lt as Ne, mt as Pe, pt as Fe, q as Ie, qt as Le, r as Re, tt as ze, ut as Be, vt as Ve, wt as He, x as Ue, yt as We } from "./CompactKernel-C6TCBB6i.js";
|
|
5
5
|
import { r as Ge } from "./BufferLayout-ny3WneEc.js";
|
|
6
6
|
import { DataTexture as Ke, FloatType as qe, RedFormat as Je, Vector3 as Ye } from "three";
|
|
7
7
|
import { Break as Xe, Fn as Ze, If as z, Loop as Qe, Return as B, abs as V, atomicAdd as $e, atomicFunc as et, atomicLoad as tt, atomicStore as nt, bool as rt, cos as it, cross as at, dot as H, exp2 as ot, float as U, floor as st, instanceIndex as ct, int as W, ivec2 as lt, ivec3 as ut, length as dt, localId as ft, log2 as pt, max as G, min as mt, mix as ht, normalize as gt, sampler as _t, select as K, sin as vt, sqrt as yt, storage as bt, texture as xt, uint as q, uniform as J, uniformArray as St, vec2 as Ct, vec3 as Y, vec4 as wt, workgroupId as Tt } from "three/tsl";
|
|
@@ -37,10 +37,10 @@ var Et = Object.defineProperty, Dt = (e, t) => {
|
|
|
37
37
|
i(W(e), t, n(t).toVar());
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
|
-
a(0, e.numDirectional, (t) =>
|
|
41
|
-
let a =
|
|
42
|
-
return K(a.intensity.greaterThan(0),
|
|
43
|
-
}), a(2, e.numPoint, (i) =>
|
|
40
|
+
a(0, e.numDirectional, (t) => Me(Be.wrap(ke(e.directional, t)), n, r, W(0))), a(1, e.numArea, (i) => {
|
|
41
|
+
let a = Ne.wrap(je(e.area, i));
|
|
42
|
+
return K(a.intensity.greaterThan(0), M(a, t, n, r), U(0));
|
|
43
|
+
}), a(2, e.numPoint, (i) => A(Fe.wrap(Ve(e.point, i)), t, n, r)), a(3, e.numSpot, (i) => L(Pe.wrap(Te(e.spot, i)), t, n, r));
|
|
44
44
|
};
|
|
45
45
|
function Pt(e, t, n, r, i, a) {
|
|
46
46
|
let o = W(-1).toVar(), s = W(-1).toVar(), c = U(0).toVar(), l = U(0).toVar();
|
|
@@ -69,7 +69,7 @@ function Ft(e, t, n, r, i, a) {
|
|
|
69
69
|
}), K(o.greaterThan(0), s.div(o), U(1).div(G(U(At(e)), 1)));
|
|
70
70
|
}
|
|
71
71
|
var It = (e) => U(2 * ne).mul(G(U(1).sub(it(e.angle)), 1e-10)), Lt = (e) => U(2 * ne).mul(G(U(1).sub(it(e.angle.mul(.5))), 1e-10)), Rt = (e, t, n, r) => {
|
|
72
|
-
let i =
|
|
72
|
+
let i = j(t, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2)).toVar();
|
|
73
73
|
return K(e.shape.lessThan(.5).and(i.greaterThan(1e-5)), U(1).div(i), n.mul(n).div(G(e.area.mul(G(r, .001)), 1e-10)));
|
|
74
74
|
}, zt = /* @__PURE__ */ Dt({
|
|
75
75
|
DIM_CONNECT_PATH: () => 16,
|
|
@@ -150,7 +150,7 @@ function fn(e, n, r, i) {
|
|
|
150
150
|
let e = E(a, c).toVar();
|
|
151
151
|
a.anisotropy.assign(e.x), a.anisotropyRotation.assign(e.y);
|
|
152
152
|
});
|
|
153
|
-
let l = te.wrap(
|
|
153
|
+
let l = te.wrap(me(a, c)).toVar();
|
|
154
154
|
return a.transmission.assign(l.transmission), a.clearcoat.assign(l.clearcoat), a.clearcoatRoughness.assign(l.clearcoatRoughness), a.sheenColor.assign(l.sheenColor), a.sheenRoughness.assign(l.sheenRoughness), a.iridescence.assign(l.iridescence), a.iridescenceThicknessRange.assign(Ct(a.iridescenceThicknessRange.x, l.iridescenceThickness)), a.specularIntensity.assign(l.specularIntensity), a.specularColor.assign(l.specularColor), a.diffuseTransmission.assign(l.diffuseTransmission), a.diffuseTransmissionColor.assign(l.diffuseTransmissionColor), z(s.lessThan(se).and(a.anisotropy.equal(0)).and(a.clearcoat.equal(0)).and(a.transmission.equal(0)).and(a.subsurface.equal(0)), () => {
|
|
155
155
|
a.roughness.assign(0);
|
|
156
156
|
}), a;
|
|
@@ -200,7 +200,7 @@ var gn = 4096, _n = gn + 1, vn = Math.ceil(_n * 4 / 256) * 64, yn = .2, bn = (e)
|
|
|
200
200
|
}, Dn = (e, t, n, r) => {
|
|
201
201
|
let i = Cn(Sn(t, n, r)).toVar();
|
|
202
202
|
z(t.guideLearning.greaterThan(q(0)).and(i.greaterThanEqual(W(0))), () => {
|
|
203
|
-
$e(e.element(q(
|
|
203
|
+
$e(e.element(q(ve.GUIDE).add(q(xn(n).mul(W(gn)).add(i)))), q(1));
|
|
204
204
|
});
|
|
205
205
|
};
|
|
206
206
|
function On({ counters: e, out: t }) {
|
|
@@ -209,7 +209,7 @@ function On({ counters: e, out: t }) {
|
|
|
209
209
|
z(n.greaterThanEqual(q(16)), () => {
|
|
210
210
|
B();
|
|
211
211
|
});
|
|
212
|
-
let r = q(
|
|
212
|
+
let r = q(ve.GUIDE).add(n.mul(q(gn))).toVar(), i = U(0).toVar();
|
|
213
213
|
Qe({
|
|
214
214
|
start: W(0),
|
|
215
215
|
end: W(gn),
|
|
@@ -231,58 +231,58 @@ function On({ counters: e, out: t }) {
|
|
|
231
231
|
}
|
|
232
232
|
function kn({ counters: e }) {
|
|
233
233
|
return Ze(() => {
|
|
234
|
-
z(ct.lessThan(q(
|
|
235
|
-
nt(e.element(q(
|
|
234
|
+
z(ct.lessThan(q(Le)), () => {
|
|
235
|
+
nt(e.element(q(ve.GUIDE).add(ct)), q(0));
|
|
236
236
|
});
|
|
237
|
-
})().compute(
|
|
237
|
+
})().compute(Le, [256]);
|
|
238
238
|
}
|
|
239
239
|
//#endregion
|
|
240
240
|
//#region src/addons/bidirectional/LightGenerateKernel.js
|
|
241
241
|
function An(e) {
|
|
242
|
-
let { rayBufferRW: t, hitBufferRW: n, activeIndicesRW: i, counters: a, lightBuffer: c, triangleBuffer: d, bvhBuffer: p, emissiveTriangleCount: m, emissiveVec4Offset: te, emissiveTotalPower: ne, emissiveBoost: re, sunDirection: g, sunRadiance: ie, sunParams: _, environmentIntensity: v, envTexture: y, envCDFTexture: oe, envMatrix: se, envResolution: b, directionalLightsBuffer: ce, areaLightsBuffer: le, pointLightsBuffer: ue, spotLightsBuffer: C, bidirectional: w, resolution: T, frame: E, transmissiveBounces: pe } = e, { lightPaths:
|
|
242
|
+
let { rayBufferRW: t, hitBufferRW: n, activeIndicesRW: i, counters: a, lightBuffer: c, triangleBuffer: d, bvhBuffer: p, emissiveTriangleCount: m, emissiveVec4Offset: te, emissiveTotalPower: ne, emissiveBoost: re, sunDirection: g, sunRadiance: ie, sunParams: _, environmentIntensity: v, envTexture: y, envCDFTexture: oe, envMatrix: se, envResolution: b, directionalLightsBuffer: ce, areaLightsBuffer: le, pointLightsBuffer: ue, spotLightsBuffer: C, bidirectional: w, resolution: T, frame: E, transmissiveBounces: pe } = e, { lightPaths: me } = w;
|
|
243
243
|
return Ze(() => {
|
|
244
244
|
let e = ct;
|
|
245
245
|
z(e.equal(q(0)), () => {
|
|
246
|
-
nt(a.element(q(
|
|
247
|
-
}), z(e.greaterThanEqual(
|
|
246
|
+
nt(a.element(q(ve.ACTIVE_RAY_COUNT)), me), nt(a.element(q(ve.ENTERING_COUNT)), me);
|
|
247
|
+
}), z(e.greaterThanEqual(me), () => {
|
|
248
248
|
B();
|
|
249
249
|
}), i.element(e).assign(e);
|
|
250
|
-
let
|
|
251
|
-
pixelCoord:
|
|
250
|
+
let O = Gt(e, T).toVar(), k = fe({ state: de({
|
|
251
|
+
pixelCoord: O,
|
|
252
252
|
rayIndex: W(3),
|
|
253
253
|
frame: E
|
|
254
|
-
}) }).toVar(),
|
|
255
|
-
Qe(R.lessThan(
|
|
256
|
-
let e = R.add(
|
|
257
|
-
z(w.sourceCdf.element(e).lessThanEqual(
|
|
254
|
+
}) }).toVar(), A = Y(0).toVar(), j = Y(0, 1, 0).toVar(), M = Y(0).toVar(), be = U(0).toVar(), xe = U(0).toVar(), N = W(-1).toVar(), Ee = W(0).toVar(), Ae = U(1).toVar(), L = rt(!1).toVar(), Me = x(O, W(0), W(X + 4), k, T, E).toVar(), R = W(0).toVar(), Le = W(w.sourceCount - 1).toVar();
|
|
255
|
+
Qe(R.lessThan(Le), () => {
|
|
256
|
+
let e = R.add(Le).div(2).toVar();
|
|
257
|
+
z(w.sourceCdf.element(e).lessThanEqual(Me), () => {
|
|
258
258
|
R.assign(e.add(1));
|
|
259
259
|
}).Else(() => {
|
|
260
|
-
|
|
260
|
+
Le.assign(e);
|
|
261
261
|
});
|
|
262
262
|
});
|
|
263
|
-
let
|
|
264
|
-
let t = En(w,
|
|
263
|
+
let Re = w.guideTexture, Ue = (e) => {
|
|
264
|
+
let t = En(w, Re, e, x(O, W(0), W(X + 7), k, T, E), D(O, W(0), W(X + 6), k, T, E)).toVar();
|
|
265
265
|
return {
|
|
266
266
|
start: t,
|
|
267
|
-
pdf: Tn(w,
|
|
267
|
+
pdf: Tn(w, Re, e, t)
|
|
268
268
|
};
|
|
269
269
|
};
|
|
270
270
|
z(R.equal(W(sn.SUN)), () => {
|
|
271
|
-
let e =
|
|
271
|
+
let e = De(g, _, D(O, W(0), W(X + 5), k, T, E)).toVar(), t = ze(e, g, ie, _).mul(v).toVar(), n = Ue(e), r = on(w, _, n.pdf).toVar();
|
|
272
272
|
z(t.x.add(t.y).add(t.z).greaterThan(0).and(r.greaterThan(0)), () => {
|
|
273
|
-
|
|
273
|
+
A.assign(n.start), j.assign(e.negate()), M.assign(t.div(r)), be.assign(Q(U(1).div(_.y.mul(r)))), xe.assign(Q(U(1).div(r))), L.assign(!0);
|
|
274
274
|
});
|
|
275
275
|
}).ElseIf(R.equal(W(sn.EMITTERS)), () => {
|
|
276
|
-
let e =
|
|
277
|
-
|
|
278
|
-
let a =
|
|
279
|
-
|
|
280
|
-
let h = H(
|
|
276
|
+
let e = Ie(c, te, m, x(O, W(0), W(X), k, T, E)).toVar(), t = te.add(e.mul(W(2))), n = c.element(t).toVar(), i = c.element(t.add(W(1))).toVar();
|
|
277
|
+
N.assign(W(n.x)), Ee.assign(W(n.w));
|
|
278
|
+
let a = _e.wrap(F(N, d, p, Ee)).toVar(), o = he(a.v0, a.v1, a.v2, D(O, W(0), W(X + 1), k, T, E)).toVar(), s = gt(at(a.v1.sub(a.v0), a.v2.sub(a.v0))).toVar(), l = S(r(d, N, 4).z).toVar(), u = K(l.equal(W(1)).or(l.equal(W(2)).and(x(O, W(0), W(X + 3), k, T, E).lessThan(.5))).toVar(), s.negate(), s).toVar();
|
|
279
|
+
j.assign(ye(u, D(O, W(0), W(X + 2), k, T, E)));
|
|
280
|
+
let h = H(j, u).toVar(), ee = G(n.y, 0).div(G(ne, 1e-10)).div(G(i.w, 1e-20)).mul(K(l.equal(W(2)), U(.5), U(1))).mul(w.emitterPick).toVar(), g = ee.mul(h).div(Math.PI).toVar();
|
|
281
281
|
z(h.greaterThan(1e-6).and(g.greaterThan(0)), () => {
|
|
282
|
-
|
|
282
|
+
A.assign(f(o, u)), M.assign(i.xyz.mul(re).mul(Math.PI).div(ee)), be.assign(Q(U(1).div(g))), xe.assign(Q(h.div(g))), Ae.assign(h), L.assign(!0);
|
|
283
283
|
});
|
|
284
284
|
}).ElseIf(R.equal(W(sn.ENVIRONMENT)), () => {
|
|
285
|
-
let e =
|
|
285
|
+
let e = Ce(oe, se, b, D(O, W(0), W(X + 5), k, T, E)), t = e.direction.toVar(), n = e.pdf.toVar(), r = ge({
|
|
286
286
|
tex: y,
|
|
287
287
|
samp: _t(y),
|
|
288
288
|
direction: t,
|
|
@@ -291,45 +291,45 @@ function An(e) {
|
|
|
291
291
|
enableEnvironmentLight: U(1)
|
|
292
292
|
}).xyz.toVar(), i = Ue(t), a = w.envPick.mul(n).mul(i.pdf).toVar();
|
|
293
293
|
z(r.x.add(r.y).add(r.z).greaterThan(0).and(a.greaterThan(0)), () => {
|
|
294
|
-
|
|
294
|
+
A.assign(i.start), j.assign(t.negate()), M.assign(r.div(a)), be.assign(Q(n.div(a))), xe.assign(Q(U(1).div(a))), N.assign(W(-1 - sn.ENVIRONMENT)), L.assign(!0);
|
|
295
295
|
});
|
|
296
296
|
}).ElseIf(R.greaterThanEqual(W(sn.LAMPS)), () => {
|
|
297
297
|
let e = cn(w, R).toVar(), t = un(w, R).toVar(), n = dn(w, R, t).toVar();
|
|
298
|
-
|
|
299
|
-
let r = U(0).toVar(), i = Y(0).toVar(), a = D(
|
|
298
|
+
N.assign(W(-1).sub(R));
|
|
299
|
+
let r = U(0).toVar(), i = Y(0).toVar(), a = D(O, W(0), W(X + 2), k, T, E).toVar();
|
|
300
300
|
z(t.equal(W(0)), () => {
|
|
301
|
-
let t =
|
|
301
|
+
let t = Be.wrap(ke(ce, n)), a = gt(t.direction).toVar();
|
|
302
302
|
i.assign(t.color.mul(t.intensity)), r.assign(e), z(t.angle.greaterThan(0), () => {
|
|
303
303
|
let e = Lt(t).toVar();
|
|
304
|
-
a.assign(
|
|
304
|
+
a.assign(P(a, t.angle.mul(.5), D(O, W(0), W(X + 5), k, T, E))), i.divAssign(e), r.divAssign(e);
|
|
305
305
|
});
|
|
306
306
|
let o = Ue(a);
|
|
307
|
-
r.mulAssign(o.pdf),
|
|
307
|
+
r.mulAssign(o.pdf), A.assign(o.start), j.assign(a.negate());
|
|
308
308
|
}).ElseIf(t.equal(W(1)), () => {
|
|
309
|
-
let t =
|
|
310
|
-
|
|
311
|
-
let u = H(
|
|
312
|
-
i.assign(K(t.area.greaterThan(0).and(u.greaterThan(1e-6)),
|
|
309
|
+
let t = Ne.wrap(je(le, n)), o = t.shape.greaterThan(.5), s = D(O, W(0), W(X + 1), k, T, E).toVar(), c = yt(s.x), l = s.y.mul(2 * Math.PI);
|
|
310
|
+
A.assign(t.position.add(t.u.mul(K(o, c.mul(it(l)), s.x.mul(2).sub(1)))).add(t.v.mul(K(o, c.mul(vt(l)), s.y.mul(2).sub(1))))), j.assign(ye(t.normal, a));
|
|
311
|
+
let u = H(j, t.normal).toVar();
|
|
312
|
+
i.assign(K(t.area.greaterThan(0).and(u.greaterThan(1e-6)), Oe(t).mul(we(u, t.spread)).mul(u), Y(0))), r.assign(e.div(G(t.area, 1e-20)).mul(u).div(Math.PI)), xe.assign(Q(u.div(G(r, 1e-30))));
|
|
313
313
|
}).ElseIf(t.equal(W(2)), () => {
|
|
314
|
-
let t =
|
|
315
|
-
|
|
314
|
+
let t = Fe.wrap(Ve(ue, n));
|
|
315
|
+
A.assign(t.position), j.assign(P(Y(0, 1, 0), U(Math.PI), a)), i.assign(t.color.mul(t.intensity)), r.assign(e.div(4 * Math.PI));
|
|
316
316
|
}).Else(() => {
|
|
317
|
-
let t =
|
|
318
|
-
|
|
319
|
-
let o =
|
|
320
|
-
i.assign(t.color.mul(t.intensity).mul(
|
|
317
|
+
let t = Pe.wrap(Te(C, n));
|
|
318
|
+
A.assign(t.position), j.assign(P(t.direction, t.angle, a));
|
|
319
|
+
let o = j.negate();
|
|
320
|
+
i.assign(t.color.mul(t.intensity).mul(We({
|
|
321
321
|
coneCosine: it(t.angle),
|
|
322
322
|
blend: t.penumbra,
|
|
323
|
-
angleCosine: H(
|
|
324
|
-
})).mul(
|
|
323
|
+
angleCosine: H(j, t.direction)
|
|
324
|
+
})).mul(Se(t, o)).mul(He(t, o))), r.assign(e.div(It(t)));
|
|
325
325
|
}), z(i.x.add(i.y).add(i.z).greaterThan(0).and(r.greaterThan(0)), () => {
|
|
326
|
-
|
|
326
|
+
M.assign(i.div(r)), be.assign(Q(U(1).div(r))), L.assign(!0);
|
|
327
327
|
});
|
|
328
328
|
}), z(L.not(), () => {
|
|
329
|
-
u(t, e,
|
|
329
|
+
u(t, e, j, q(0)), B();
|
|
330
330
|
});
|
|
331
|
-
let Ge = G(G(G(
|
|
332
|
-
ae(t, e,
|
|
331
|
+
let Ge = G(G(G(M.x, M.y), M.z), 1e-20).toVar();
|
|
332
|
+
ae(t, e, A, W(0), W(0)), u(t, e, j, q(I.ACTIVE | I.REDIRECTED | I.LIGHT_PATH | I.LIGHT_EMITTED)), ee(t, e, M.div(Ge), U(0)), l(t, e, wt(Y(0), U(1))), o(t, e, q(0), q(pe), U(1), U(1), U(1)), h(n, e, k, be, xe), s(n, e, N, Ee, Ae, Ge);
|
|
333
333
|
});
|
|
334
334
|
}
|
|
335
335
|
//#endregion
|
|
@@ -338,7 +338,7 @@ function jn(e) {
|
|
|
338
338
|
let { rayBufferRW: t, hitBufferRO: r, activeIndicesRO: i, counters: a, bvhBuffer: o, triangleBuffer: s, materialBuffer: u, resolution: m, frame: h, accumFrame: ee, currentBounce: te, chunkRowBase: ne, lightPaths: g, slotsPerPath: _, lightTag: ae, passTag: y, strategyView: se, maxBounceCount: b, globalIlluminationIntensity: ce, fireflyThreshold: ue, mergeVm: de = null, diffuseTransmission: S = !0 } = e;
|
|
339
339
|
return Ze(() => {
|
|
340
340
|
let e = ct;
|
|
341
|
-
z(e.greaterThanEqual(tt(a.element(q(
|
|
341
|
+
z(e.greaterThanEqual(tt(a.element(q(ve.ENTERING_COUNT)))), () => {
|
|
342
342
|
B();
|
|
343
343
|
});
|
|
344
344
|
let C = i.element(e).toVar(), w = oe(C);
|
|
@@ -348,24 +348,24 @@ function jn(e) {
|
|
|
348
348
|
let E = c(r, w), D = {
|
|
349
349
|
...E,
|
|
350
350
|
vm: de?.(E.position) ?? null
|
|
351
|
-
}, pe = W(D.extra).add(W(1)).toVar(),
|
|
352
|
-
z(
|
|
351
|
+
}, pe = W(D.extra).add(W(1)).toVar(), me = W(m.x), O = W(C).add(ne.mul(me)), k = Ct(U(O.mod(me)).add(.5), U(O.div(me)).add(.5)).toVar(), he = W(te).mul(W(32)), A = fe({ state: n(r, C).bitXor(q(2654435769)) }).toVar(), j = x(k, W(0), he.add(W(16)), A, m, h).toVar(), ge = x(k, W(0), he.add(W(17)), A, m, h).toVar(), _e = mt(q(U(g).mul(j)), g.sub(q(1))).toVar().mul(_).toVar(), ye = mt(W(le(r, v(_e), ae)), W(b).add(W(1)).sub(pe)).toVar();
|
|
352
|
+
z(ye.lessThan(W(1)), () => {
|
|
353
353
|
B();
|
|
354
354
|
});
|
|
355
|
-
let
|
|
356
|
-
...
|
|
357
|
-
vm: de?.(
|
|
358
|
-
}, Se =
|
|
359
|
-
z((S ?
|
|
355
|
+
let M = mt(W(U(ye).mul(ge)), ye.sub(W(1))).toVar(), N = c(r, v(_e.add(q(M)))), P = {
|
|
356
|
+
...N,
|
|
357
|
+
vm: de?.(N.position) ?? null
|
|
358
|
+
}, Se = P.position.sub(D.position).toVar(), Ce = G(H(Se, Se), 1e-12).toVar(), F = Se.div(yt(Ce)).toVar(), I = H(F, D.N).toVar(), we = H(F, D.facetN).toVar(), Te = H(F, P.facetN).negate().toVar(), Ee = I.greaterThan(0).and(we.greaterThan(0)).and(Te.greaterThan(0)), De = I.lessThan(0).and(we.lessThan(0)), Oe = Te.lessThan(0);
|
|
359
|
+
z((S ? De.or(I.greaterThan(0).and(we.greaterThan(0))).and(Oe.or(Te.greaterThan(0))) : Ee).not(), () => {
|
|
360
360
|
B();
|
|
361
361
|
});
|
|
362
|
-
let ke = fn(D.materialIndex, D.uv, D.N, u),
|
|
363
|
-
S && z(
|
|
362
|
+
let ke = fn(D.materialIndex, D.uv, D.N, u), je = fn(P.materialIndex, P.uv, P.N, u), L = F.negate();
|
|
363
|
+
S && z(De.and(ke.diffuseTransmission.lessThanEqual(0)).or(Oe.and(je.diffuseTransmission.lessThanEqual(0))), () => {
|
|
364
364
|
B();
|
|
365
365
|
});
|
|
366
|
-
let Me = (e) => S ? pn(D.N, e, ke) : D.N,
|
|
366
|
+
let Me = (e) => S ? pn(D.N, e, ke) : D.N, R = (e) => S ? pn(P.N, e, je) : P.N, Ne = be(D.V, F, D.N, ke).toVar(), Pe = be(L, P.V, R(L), je).toVar(), Fe = (S ? V(I) : I).mul(mn(P.V, P.N, P.facetN, L)).div(Ce), Ie = Ue(D.V, F, D.N, ke), Le = Ue(F, D.V, Me(F), ke), Re = Ue(P.V, L, P.N, je), ze = Ue(L, P.V, R(L), je), Be = Yt(Ie.mul(S ? V(Te) : Te).div(Ce), P, ze), Ve = Yt(Re.mul(S ? V(we) : we).div(Ce), D, Le), He = pe.add(M).add(W(1)), We = nn(se, tn.CONNECT, en(Be, Ve), U(1).div(U(He.sub(W(1))))), Ge = Ae(D.throughput.mul(Ne).mul(Pe).mul(P.throughput).mul(Fe.mul(We).mul(U(ye)).mul(ce)), U(He.sub(W(1))), ue, W(ee)).toVar();
|
|
367
367
|
z(ie(Ge).greaterThan(0), () => {
|
|
368
|
-
let e = f(D.position, S ? K(
|
|
368
|
+
let e = f(D.position, S ? K(De, D.facetN.negate(), D.facetN) : D.facetN).toVar(), n = f(P.position, S ? K(Oe, P.facetN.negate(), P.facetN) : P.facetN).sub(e).toVar(), r = dt(n).toVar(), i = xe(e, n.div(r), r.mul(re), T, o, s, u);
|
|
369
369
|
z(i.greaterThan(0), () => {
|
|
370
370
|
let e = p(t, C).toVar();
|
|
371
371
|
l(t, C, wt(e.xyz.add(Ge.mul(i)), e.w));
|
|
@@ -406,7 +406,7 @@ function Vn(e) {
|
|
|
406
406
|
let { rayBufferRW: t, hitBufferRO: n, activeIndicesRO: r, counters: a, head: o, materialBuffer: s, bidirectional: u, maxBounceCount: f, globalIlluminationIntensity: h, fireflyThreshold: ee, accumFrame: te, diffuseTransmission: ne = !0 } = e, { passTag: re, slotsPerPath: g, strategyView: _, hashMask: ae } = u;
|
|
407
407
|
return Ze(() => {
|
|
408
408
|
let e = ct;
|
|
409
|
-
z(e.greaterThanEqual(tt(a.element(q(
|
|
409
|
+
z(e.greaterThanEqual(tt(a.element(q(ve.ENTERING_COUNT)))), () => {
|
|
410
410
|
B();
|
|
411
411
|
});
|
|
412
412
|
let y = r.element(e).toVar(), se = oe(y);
|
|
@@ -432,8 +432,8 @@ function Vn(e) {
|
|
|
432
432
|
z(i.shell.equal(t).and(i.cell.x.equal(s.x)).and(i.cell.y.equal(s.y)).and(i.cell.z.equal(s.z)), () => {
|
|
433
433
|
let t = c(n, e), r = H(t.V, b.N).toVar(), i = H(t.V, b.facetN).toVar(), a = r.greaterThan(0).and(i.greaterThan(0)), s = ue.diffuseTransmission.greaterThan(0).and(r.lessThan(0)).and(i.lessThan(0));
|
|
434
434
|
z(ne ? a.or(s) : a, () => {
|
|
435
|
-
let e =
|
|
436
|
-
de.addAssign(
|
|
435
|
+
let e = be(b.V, t.V, b.N, ue), n = $t(t, Ue(b.V, t.V, b.N, ue), T), a = ne ? pn(b.N, t.V, ue) : b.N, s = $t(b, Ue(t.V, b.V, a, ue), T), c = ce.add(o), l = nn(_, tn.MERGE, en(n, s), U(1).div(U(c))), u = K(c.greaterThan(W(1)), h, U(1)), d = ne ? V(r).div(G(V(i), 1e-4)) : r.div(G(i, 1e-4));
|
|
436
|
+
de.addAssign(Ae(b.throughput.mul(e).mul(t.throughput).mul(l.mul(d).div(C).mul(u)), U(c.sub(W(1))), ee, W(te)));
|
|
437
437
|
});
|
|
438
438
|
});
|
|
439
439
|
}), l.assign(m(n, e)), d.addAssign(W(1));
|
|
@@ -458,29 +458,29 @@ function Hn(e) {
|
|
|
458
458
|
let de = c(t, v(e)), x = {
|
|
459
459
|
...de,
|
|
460
460
|
vm: se?.(de.position) ?? null
|
|
461
|
-
}, S = p.sub(x.position).toVar(), C = G(H(S, S), 1e-12).toVar(), w = S.div(yt(C)).toVar(), T = H(w, x.facetN).toVar(), E = H(w, m).negate().toVar(), D = T.lessThan(0), pe = b ? K(D, x.extra.bitAnd(q(2)), x.extra.bitAnd(q(1))).notEqual(q(0)) : x.extra.notEqual(q(0)),
|
|
462
|
-
z((b ? T.equal(0) : T.lessThanEqual(0)).or(E.lessThanEqual(1e-6)).or(pe).or(C.lessThanEqual(
|
|
461
|
+
}, S = p.sub(x.position).toVar(), C = G(H(S, S), 1e-12).toVar(), w = S.div(yt(C)).toVar(), T = H(w, x.facetN).toVar(), E = H(w, m).negate().toVar(), D = T.lessThan(0), pe = b ? K(D, x.extra.bitAnd(q(2)), x.extra.bitAnd(q(1))).notEqual(q(0)) : x.extra.notEqual(q(0)), me = h.div(G(E, 1e-6)).toVar();
|
|
462
|
+
z((b ? T.equal(0) : T.lessThanEqual(0)).or(E.lessThanEqual(1e-6)).or(pe).or(C.lessThanEqual(me.mul(me))), () => {
|
|
463
463
|
B();
|
|
464
464
|
});
|
|
465
|
-
let
|
|
466
|
-
z(
|
|
465
|
+
let k = te.mul(ee.mul(wt(x.position, 1))).toVar();
|
|
466
|
+
z(k.w.lessThanEqual(0), () => {
|
|
467
467
|
B();
|
|
468
468
|
});
|
|
469
|
-
let
|
|
470
|
-
z(
|
|
469
|
+
let he = st(k.x.div(k.w).mul(.5).add(.5).mul(U(g))).toVar(), A = st(U(.5).sub(k.y.div(k.w).mul(.5)).mul(U(ie))).toVar();
|
|
470
|
+
z(he.lessThan(0).or(A.lessThan(0)).or(he.greaterThanEqual(U(g))).or(A.greaterThanEqual(U(ie))), () => {
|
|
471
471
|
B();
|
|
472
472
|
});
|
|
473
|
-
let
|
|
474
|
-
b && z(D.and(
|
|
473
|
+
let j = fn(x.materialIndex, x.uv, x.N, o);
|
|
474
|
+
b && z(D.and(j.diffuseTransmission.lessThanEqual(0)), () => {
|
|
475
475
|
B();
|
|
476
476
|
});
|
|
477
|
-
let
|
|
478
|
-
z(
|
|
479
|
-
|
|
477
|
+
let ge = b ? pn(x.N, w, j) : x.N, _e = be(w, x.V, ge, j).toVar(), ve = U(1).div(ne.mul(E).mul(E).mul(E)).div(C).toVar(), ye = Yt(ve.mul(b ? V(T) : T).div(U(s)), x, Ue(w, x.V, ge, j)), M = ce.add(q(1)), N = U(1).toVar();
|
|
478
|
+
z(M.greaterThan(q(1)), () => {
|
|
479
|
+
N.assign(_);
|
|
480
480
|
});
|
|
481
|
-
let
|
|
482
|
-
z(
|
|
483
|
-
let t = mt(a(
|
|
481
|
+
let P = Ae(x.throughput.mul(_e).mul(mn(x.V, x.N, x.facetN, w)).mul(ve.div(U(s)).mul(nn(d, tn.LIGHT_TRACE, en(ye, U(0)))).mul(N)), U(ce), ae, W(y)).toVar(), Se = f(x.position, b ? K(D, x.facetN.negate(), x.facetN) : x.facetN).toVar(), Ce = p.sub(Se).toVar(), F = dt(Ce).toVar(), I = xe(Se, Ce.div(F), F.sub(me).mul(re), O, r, i, o);
|
|
482
|
+
z(I.greaterThan(0), () => {
|
|
483
|
+
let t = mt(a(P.mul(I)), Y(Ht)).mul(Vt).toVar(), r = U(fe({ state: e.bitXor(q(oe).mul(q(2654435769))) }).shiftRight(q(8))).mul(1 / 16777216).toVar(), i = q(A).mul(q(g)).add(q(he)).mul(q(3)).toVar();
|
|
484
484
|
$e(n.element(i), q(st(t.x.add(r)))), $e(n.element(i.add(q(1))), q(st(t.y.add(r)))), $e(n.element(i.add(q(2))), q(st(t.z.add(r))));
|
|
485
485
|
});
|
|
486
486
|
});
|
|
@@ -575,9 +575,9 @@ var { PASS_TAG_BIT: Wn, STRATEGY: Gn, STRATEGY_ALONE: Kn, SOURCE: $, mergeVmAt:
|
|
|
575
575
|
registerKernels(e) {
|
|
576
576
|
let { km: t, qm: n, pb: r, counters: i, bounceCountsBuf: a, wfCurrentBounce: o, copyReadB: s, copyWriteA: c, maxRays: l, w: u, own: d, freshLight: f, freshTri: p, freshBvh: m, freshMat: h, freshEnvTex: ee, freshEnvCDF: te, materialLayers: ne } = e, re = ne?.diffuseTransmission ?? !0, g = this.uniforms, ie = n.MAX_BOUNCE_SNAPSHOTS, _ = (e) => {
|
|
577
577
|
let t = q(o).clamp(q(0), q(ie - 1));
|
|
578
|
-
|
|
578
|
+
R(i, a, t.add(q(2 * ie)), t.add(q(3 * ie)), e);
|
|
579
579
|
};
|
|
580
|
-
if (t.register("lightSnapshot",
|
|
580
|
+
if (t.register("lightSnapshot", Ee({
|
|
581
581
|
counters: i,
|
|
582
582
|
record: _
|
|
583
583
|
})().compute([
|
|
@@ -588,7 +588,7 @@ var { PASS_TAG_BIT: Wn, STRATEGY: Gn, STRATEGY_ALONE: Kn, SOURCE: $, mergeVmAt:
|
|
|
588
588
|
1,
|
|
589
589
|
1,
|
|
590
590
|
1
|
|
591
|
-
])), t.register("lightCopyback",
|
|
591
|
+
])), t.register("lightCopyback", Re({
|
|
592
592
|
counters: i,
|
|
593
593
|
survivors: s,
|
|
594
594
|
activeIndicesRW: c,
|
|
@@ -813,12 +813,12 @@ var { PASS_TAG_BIT: Wn, STRATEGY: Gn, STRATEGY_ALONE: Kn, SOURCE: $, mergeVmAt:
|
|
|
813
813
|
e.cameraPosition.value.set(a[12], a[13], a[14]), e.cameraForward.value.set(-a[8], -a[9], -a[10]).normalize();
|
|
814
814
|
let o = this.pt.cameraProjectionMatrix.value.elements;
|
|
815
815
|
e.pixelArea.value = 4 / (o[0] * o[5] * t * n);
|
|
816
|
-
let s = this.pt.cameraProjection.value ===
|
|
816
|
+
let s = this.pt.cameraProjection.value === k.perspective && !this.pt.enableDOF.value;
|
|
817
817
|
return e.lightTrace.value = +!!s, this.merging && this._updateMergeRadius(t, n), !0;
|
|
818
818
|
}
|
|
819
819
|
_updateMergeRadius(e, t) {
|
|
820
820
|
let n = this.uniforms, r = this._mergeRadiusPixels * (this.pt.frameCount + 1) ** ((er - 1) / 2), i = this.pt.cameraProjection.value, a = this.pt.cameraProjectionMatrix.value.elements, o = 0, s = 0;
|
|
821
|
-
i ===
|
|
821
|
+
i === k.orthographic ? s = r * 2 / (a[5] * t) : o = i === k.equirectangular ? r * 2 * Math.PI / e : r * Math.sqrt(n.pixelArea.value), n.mergeSlope.value = Math.min(o, .1), n.mergeConst.value = s, n.mergeMin.value = Math.max(s, o * .001 * n.sceneRadius.value, 1e-9);
|
|
822
822
|
}
|
|
823
823
|
_sizeSourceTable() {
|
|
824
824
|
let e = this.uniforms, t = $.LAMPS;
|
|
@@ -828,14 +828,14 @@ var { PASS_TAG_BIT: Wn, STRATEGY: Gn, STRATEGY_ALONE: Kn, SOURCE: $, mergeVmAt:
|
|
|
828
828
|
"point",
|
|
829
829
|
"spot"
|
|
830
830
|
].forEach((n, r) => {
|
|
831
|
-
e.sourceOffsets[r] = t, t += this.pt[`${n}LightsBufferNode`].array.length /
|
|
831
|
+
e.sourceOffsets[r] = t, t += this.pt[`${n}LightsBufferNode`].array.length / N[n];
|
|
832
832
|
}), e.sourceCount = t, e.sourceCdf.array.length !== t && (e.sourceCdf.array = new Float32Array(t));
|
|
833
833
|
}
|
|
834
834
|
_updateSourceTable() {
|
|
835
835
|
let e = this.uniforms, t = e.sourceCdf.array, n = new Float64Array(t.length), r = (e, t) => Math.max(.2126 * e[t] + .7152 * e[t + 1] + .0722 * e[t + 2], 0), i = (e) => ({
|
|
836
836
|
a: this.pt[`${e}LightsBufferNode`].array,
|
|
837
837
|
n: this.pt[`num${e[0].toUpperCase()}${e.slice(1)}Lights`].value,
|
|
838
|
-
f:
|
|
838
|
+
f: N[e]
|
|
839
839
|
}), a = i("directional"), o = this.pt.enableEnvironment.value > 0, s = this.pt.environment.exactTable;
|
|
840
840
|
e.envTable.value = +!!s;
|
|
841
841
|
let c = o && (this.pt.hasSun.value > 0 || s) || a.n > 0, l = c || this.merging ? this._sceneDisc() : 0, u = c ? l * Xn : 0;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { en as e, xt as t } from "./PackedRayBuffer-BhqeNEaL.js";
|
|
2
2
|
import { i as n, r } from "./Logger-D7hic8LA.js";
|
|
3
|
-
import { C as i } from "./TextureSampling-
|
|
4
|
-
import { o as a } from "./TextureBuckets-
|
|
3
|
+
import { C as i } from "./TextureSampling-CQMmzhCp.js";
|
|
4
|
+
import { o as a } from "./TextureBuckets-CcOI4Bdg.js";
|
|
5
5
|
import { Vector2 as o } from "three";
|
|
6
6
|
import { Fn as s, If as c, cos as l, cross as u, dot as d, float as f, int as p, mat3 as m, max as h, mix as g, normalize as _, select as v, sin as y, uniform as b, vec3 as x, vec4 as S } from "three/tsl";
|
|
7
7
|
//#region src/pathtracer/KernelManager.js
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as e } from "./Logger-D7hic8LA.js";
|
|
2
|
-
import { n as t } from "./EngineIssues-
|
|
2
|
+
import { n as t } from "./EngineIssues-DHAU18xh.js";
|
|
3
3
|
import { a as n, n as r, t as i } from "./WorkingMatrix-CDGicYGE.js";
|
|
4
4
|
import { i as a, n as o, r as s, t as c } from "./ActiveColor-DakLCifA.js";
|
|
5
5
|
import { n as l } from "./AssetConfig-C8BsprCp.js";
|