rayzee 11.15.1 → 11.16.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/{ArchiveFormats-DGypbJbi.js → ArchiveFormats-_1o7EfSy.js} +3 -3
- package/dist/{ArchiveImporter-DO52X2Wv.js → ArchiveImporter-Cv-MnDQa.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-BSjTsrve.js} +3 -3
- 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-hMqUG2UR.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-DCvhWjxj.js} +2 -2
- package/dist/{PhysicalSky-CE3UvfuW.js → PhysicalSky-qHATDBbB.js} +1 -1
- package/dist/{PictureView-DXa3ED9l.js → PictureView-DlQVw7W9.js} +3 -3
- package/dist/{RayzeeRenderer-DPsWdbUI.js → RayzeeRenderer-DcoDAmCU.js} +1702 -1679
- 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 +562 -568
- 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 +37 -1
- package/src/RenderSettings.js +29 -1
- package/src/addons/color/ColorSpaces.js +2 -1
- package/src/addons/color/OcioViews.js +1 -1
- package/src/addons/storage/OpenStorage.js +2 -0
- package/src/bvh/ReinsertionOptimizer.js +3 -2
- package/src/lights/LightManager.js +3 -2
- package/src/lights/LightSerializer.js +5 -4
- package/src/pathtracer/PathTracer.js +22 -0
- package/src/pathtracer/UniformManager.js +7 -0
- package/src/scene/SceneEdits.js +3 -1
- package/src/scene/ViewCamera.js +2 -1
- 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
- package/src/viewer/camera/CameraManager.js +1 -1
- package/src/viewer/denoise/OIDNDenoiser.js +13 -15
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { At as e, Bt as t, Ct as n, Dt as r, Et as i, Gt as a, Ht as o, It as s, Jt as c, Kt as l, Mt as u, Nt as d, Ot as f, Qt as p, Rt as m, Tt as h, Ut as g, Vt as _, Wt as v, Xt as y, Zt as b, _t as x, at as S, bt as C, cn as w, ct as T, dn as E, dt as D, en as ee, ft as O, gt as k, ht as A, in as j, it as te, k as ne, kt as
|
|
2
|
-
import { i as
|
|
3
|
-
import { M as
|
|
4
|
-
import { o as
|
|
5
|
-
import { p as
|
|
6
|
-
import { t as
|
|
7
|
-
import { StorageInstancedBufferAttribute as
|
|
8
|
-
import { ClampToEdgeWrapping as
|
|
9
|
-
import { Break as
|
|
1
|
+
import { At as e, Bt as t, Ct as n, Dt as r, Et as i, Gt as a, Ht as o, It as s, Jt as c, Kt as l, Mt as u, Nt as d, Ot as f, Qt as p, Rt as m, Tt as h, Ut as g, Vt as _, Wt as v, Xt as y, Zt as b, _t as x, at as S, bt as C, cn as w, ct as T, dn as E, dt as D, en as ee, ft as O, gt as k, ht as A, in as j, it as te, k as ne, kt as M, ln as re, lt as ie, mn as ae, mt as oe, nn as se, ot as ce, pt as le, qt as ue, r as de, rt as fe, sn as pe, st as me, tt as he, un as ge, ut as _e, vt as ve, w as ye, xt as be, yt as xe } from "./PackedRayBuffer-BhqeNEaL.js";
|
|
2
|
+
import { i as Se, r as Ce } from "./Logger-D7hic8LA.js";
|
|
3
|
+
import { M as we, O as N, S as Te, T as Ee, _ as De, a as Oe, b as ke, j as Ae, k as je, m as Me } from "./TextureSampling-CQMmzhCp.js";
|
|
4
|
+
import { o as Ne, s as P } from "./TextureBuckets-CcOI4Bdg.js";
|
|
5
|
+
import { p as Pe } from "./BufferLayout-ny3WneEc.js";
|
|
6
|
+
import { t as Fe } from "./SolarLimb-IayvafJP.js";
|
|
7
|
+
import { StorageInstancedBufferAttribute as Ie } from "three/webgpu";
|
|
8
|
+
import { ClampToEdgeWrapping as Le, Color as Re, DataTexture as ze, FloatType as Be, LinearFilter as Ve, MathUtils as He, Matrix4 as Ue, RGBAFormat as We, Vector2 as Ge, Vector3 as Ke, Vector4 as qe } from "three";
|
|
9
|
+
import { Break as Je, Fn as F, If as I, Loop as Ye, Return as Xe, abs as L, acos as Ze, atan as Qe, atomicAdd as $e, atomicLoad as et, atomicStore as tt, bool as R, ceil as nt, clamp as z, cos as rt, cross as B, dot as V, exp as it, exp2 as at, float as H, floor as ot, instanceIndex as st, int as U, ivec2 as ct, length as W, log as lt, log2 as ut, max as G, min as K, mix as q, normalize as J, pow as dt, reflect as ft, refract as pt, sampler as mt, select as Y, sin as ht, smoothstep as gt, sqrt as X, step as _t, storage as vt, subgroupAdd as yt, subgroupBroadcast as bt, subgroupExclusiveAdd as xt, tan as St, texture as Ct, uint as Z, uintBitsToFloat as wt, uniform as Tt, uniformArray as Et, vec2 as Dt, vec3 as Q, wgslFn as Ot } from "three/tsl";
|
|
10
10
|
//#region src/pathtracer/UniformManager.js
|
|
11
|
-
var
|
|
11
|
+
var kt = {
|
|
12
12
|
cameraViewMatrix: "ptCameraViewMatrix",
|
|
13
13
|
cameraProjectionMatrix: "ptCameraProjectionMatrix"
|
|
14
|
-
},
|
|
14
|
+
}, At = Object.freeze({
|
|
15
15
|
directional: 12,
|
|
16
16
|
area: 16,
|
|
17
17
|
point: 10,
|
|
18
18
|
spot: 20
|
|
19
|
-
}),
|
|
20
|
-
function
|
|
19
|
+
}), jt = 65536 / 16;
|
|
20
|
+
function Mt(e, t) {
|
|
21
21
|
let n = Math.ceil(t / 16) * 16;
|
|
22
|
-
return Math.max(t, Math.min(n, Math.floor(
|
|
22
|
+
return Math.max(t, Math.min(n, Math.floor(jt / At[e])));
|
|
23
23
|
}
|
|
24
|
-
var
|
|
24
|
+
var Nt = class {
|
|
25
25
|
constructor(e = 1920, t = 1080) {
|
|
26
26
|
this._uniforms = /* @__PURE__ */ new Map(), this._booleans = /* @__PURE__ */ new Set(), this._arrayWarned = /* @__PURE__ */ new Set(), this._lightBuffers = {}, this._initUniforms(e, t), this._nameAll();
|
|
27
27
|
}
|
|
@@ -58,34 +58,34 @@ var Mt = class {
|
|
|
58
58
|
let r = Tt(t, n);
|
|
59
59
|
return this._uniforms.set(e, r), r;
|
|
60
60
|
}, r = (e, t) => (this._booleans.add(e), n(e, +!!t, "int"));
|
|
61
|
-
n("frame", 0, "uint"), n("seedFrame", 0, "uint"), n("maxBounces",
|
|
62
|
-
let i = ([e, t]) => new
|
|
63
|
-
n("cameraProjection",
|
|
61
|
+
n("frame", 0, "uint"), n("seedFrame", 0, "uint"), n("maxBounces", P.maxBounces, "int"), n("maxSamples", P.maxSamples, "int"), n("transmissiveBounces", P.transmissiveBounces, "int"), n("maxSubsurfaceSteps", P.maxSubsurfaceSteps, "int"), n("maxTransparentBounces", P.maxTransparentBounces, "int"), n("visMode", P.visMode, "int"), n("debugVisScale", P.debugVisScale, "float"), r("useAdaptiveSampling", P.useAdaptiveSampling), n("noiseThreshold", P.noiseThreshold, "float"), n("adaptiveMinSamples", P.adaptiveMinSamples, "int"), n("adaptiveStopFraction", P.adaptiveStopFraction, "float"), r("usePixelFreeze", P.usePixelFreeze), n("pixelFreezeThreshold", P.pixelFreezeThreshold, "float"), n("pixelFreezeStability", P.pixelFreezeStability, "int"), r("convergenceOverlay", P.convergenceOverlay), r("enableAccumulation", !0), n("accumulationAlpha", 0, "float"), r("cameraIsMoving", !1), r("hasPreviousAccumulated", !1), n("auxAccumulationAlpha", 1, "float"), r("hasPreviousAux", !1), n("environmentIntensity", P.environmentIntensity, "float"), n("backgroundIntensity", P.backgroundIntensity, "float"), n("backgroundColor", new Re(0, 0, 0), "color"), n("backgroundBlurriness", P.backgroundBlurriness, "float"), n("backgroundBlurSamples", P.backgroundBlurSamples, "int"), r("showBackground", P.showBackground), r("transparentBackground", P.transparentBackground), r("enableEnvironment", P.enableEnvironment), n("environmentMatrix", new Ue(), "mat4"), n("envTotalSum", 0, "float"), n("envResolution", new Ge(1, 1), "vec2"), r("groundProjectionEnabled", P.groundProjectionEnabled), n("groundProjectionRadius", P.groundProjectionRadius, "float"), n("groundProjectionHeight", P.groundProjectionHeight, "float"), n("groundProjectionLevel", P.groundProjectionLevel, "float"), r("enableGroundCatcher", P.enableGroundCatcher), n("groundCatcherHeight", P.groundCatcherHeight, "float"), n("fogDensity", P.fogDensity, "float"), n("fogColor", new Re(1, 1, 1), "color"), n("fogAnisotropy", P.fogAnisotropy, "float"), n("fogBoxMin", new Ke(), "vec3"), n("fogBoxMax", new Ke(), "vec3"), n("sunDirection", new Ke(0, 1, 0), "vec3"), n("sunRadiance", new Ke(), "vec3"), n("sunParams", new qe(1, 0, 0, 0), "vec4"), r("hasSun", !1), n("globalIlluminationIntensity", P.globalIlluminationIntensity, "float"), n("exposure", P.exposure, "float"), n("numDirectionalLights", 0, "int"), n("numAreaLights", 0, "int"), n("numPointLights", 0, "int"), n("numSpotLights", 0, "int"), this._lightBuffers = Object.fromEntries(Object.entries(At).map(([e, t]) => [e, Et(new Float32Array(t * 16), "float")])), n("cameraWorldMatrix", new Ue(), "mat4"), n("cameraProjectionMatrixInverse", new Ue(), "mat4"), n("cameraViewMatrix", new Ue(), "mat4"), n("cameraProjectionMatrix", new Ue(), "mat4"), n("cameraClipStart", 0, "float");
|
|
62
|
+
let i = ([e, t]) => new Ge(e, t).multiplyScalar(He.DEG2RAD);
|
|
63
|
+
n("cameraProjection", Ne[P.cameraProjection], "int"), n("panoLonRange", i(P.panoramaLonRange), "vec2"), n("panoLatRange", i(P.panoramaLatRange), "vec2"), r("panoLevelHorizon", P.panoramaLevelHorizon), r("enableDOF", P.enableDOF), n("focusDistance", P.focusDistance, "float"), n("focalLength", P.focalLength, "float"), n("aperture", P.aperture, "float"), n("apertureScale", 1, "float"), n("anamorphicRatio", P.anamorphicRatio ?? 1, "float"), n("unitsPerMetre", P.unitsPerMetre, "float"), n("dofMode", +(P.dofMode === "look"), "int"), n("dofBlur", P.dofBlur, "float"), this._uniforms.set("samplingTechnique", we), we.value = P.samplingTechnique, n("fireflyThreshold", P.fireflyThreshold, "float"), n("shadowTerminatorOffset", P.shadowTerminatorOffset, "float"), r("enableEmissiveTriangleSampling", P.enableEmissiveTriangleSampling), n("emissiveBoost", P.emissiveBoost, "float"), n("emissiveTriangleCount", 0, "int"), n("emissiveTotalPower", 0, "float"), n("lightBVHNodeCount", 0, "int"), n("lightVec4Offset", 0, "int"), n("emissiveVec4Offset", 0, "int"), n("reverseMapVec4Offset", 0, "int"), n("renderMode", P.renderMode, "int"), r("enableAlphaShadows", P.enableAlphaShadows), n("resolution", new Ge(e, t), "vec2");
|
|
64
64
|
}
|
|
65
65
|
_nameAll() {
|
|
66
|
-
for (let [e, t] of this._uniforms) t.name =
|
|
66
|
+
for (let [e, t] of this._uniforms) t.name = kt[e] || e;
|
|
67
67
|
}
|
|
68
68
|
dispose() {
|
|
69
69
|
this._disposed || (this._disposed = !0, this._uniforms.clear(), this._booleans.clear(), this._arrayWarned.clear(), this._lightBuffers = {});
|
|
70
70
|
}
|
|
71
|
-
},
|
|
72
|
-
function
|
|
73
|
-
let n = Math.max(1, Math.ceil(e /
|
|
71
|
+
}, Pt = 1024, Ft = 1e-4;
|
|
72
|
+
function It(e, t) {
|
|
73
|
+
let n = Math.max(1, Math.ceil(e / Pt));
|
|
74
74
|
return {
|
|
75
75
|
k: n,
|
|
76
76
|
width: Math.ceil(e / n),
|
|
77
77
|
height: Math.ceil(t / n)
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
-
function
|
|
80
|
+
function Lt(e, t, n, r, i, a) {
|
|
81
81
|
let o = 0;
|
|
82
82
|
for (let s = 0; s < a; s++) {
|
|
83
83
|
for (; o < n - 1 && e[t + o] <= s / a;) o++;
|
|
84
84
|
r[i + s] = o;
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
function
|
|
88
|
-
let { k: i, width: a, height: o } =
|
|
87
|
+
function Rt(e, t, n, { filtered: r = !0 } = {}) {
|
|
88
|
+
let { k: i, width: a, height: o } = It(t, n), s = new Float32Array(t * n), c = 0;
|
|
89
89
|
for (let r = 0; r < n; r++) {
|
|
90
90
|
let i = Math.sin(Math.PI * (r + .5) / n);
|
|
91
91
|
for (let n = 0; n < t; n++) {
|
|
@@ -124,7 +124,7 @@ function Lt(e, t, n, { filtered: r = !0 } = {}) {
|
|
|
124
124
|
u((e, t) => {
|
|
125
125
|
p[e] += Math.max(t - f, 0), m += Math.max(t - f, 0);
|
|
126
126
|
}), m > 0 || (p.fill(0), u((e, t) => void (p[e] += t)));
|
|
127
|
-
let h = d > 0 ?
|
|
127
|
+
let h = d > 0 ? Ft * d / (a * o) : 0, g = new Float32Array(a * o), _ = new Float32Array(o), v = new Float64Array(o), y = 0;
|
|
128
128
|
for (let e = 0; e < o; e++) {
|
|
129
129
|
let t = 0;
|
|
130
130
|
for (let n = 0; n < a; n++) t += p[e * a + n] + h;
|
|
@@ -135,8 +135,8 @@ function Lt(e, t, n, { filtered: r = !0 } = {}) {
|
|
|
135
135
|
let b = 0;
|
|
136
136
|
for (let e = 0; e < o; e++) b += v[e], _[e] = y > 0 ? e === o - 1 ? 1 : b / y : 0;
|
|
137
137
|
let x = new Float32Array(2 * a * o), S = new Float32Array(2 * o);
|
|
138
|
-
for (let e = 0; e < o; e++)
|
|
139
|
-
return
|
|
138
|
+
for (let e = 0; e < o; e++) Lt(g, e * a, a, x, 2 * e * a, 2 * a);
|
|
139
|
+
return Lt(_, 0, o, S, 0, 2 * o), {
|
|
140
140
|
exactWidth: a,
|
|
141
141
|
exactHeight: o,
|
|
142
142
|
exactConditional: g,
|
|
@@ -146,7 +146,7 @@ function Lt(e, t, n, { filtered: r = !0 } = {}) {
|
|
|
146
146
|
radianceIntegral: 2 * Math.PI * Math.PI * c / (t * n)
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
|
-
function
|
|
149
|
+
function zt({ exactWidth: e, exactHeight: t, exactConditional: n, exactMarginal: r, exactRowGuide: i, exactMarginalGuide: a }) {
|
|
150
150
|
let o = e + 1, s = new Float32Array(4 * o * t);
|
|
151
151
|
for (let c = 0; c < t; c++) {
|
|
152
152
|
let t = 4 * c * o;
|
|
@@ -161,7 +161,7 @@ function Rt({ exactWidth: e, exactHeight: t, exactConditional: n, exactMarginal:
|
|
|
161
161
|
}
|
|
162
162
|
//#endregion
|
|
163
163
|
//#region src/pathtracer/QueueManager.js
|
|
164
|
-
var
|
|
164
|
+
var Bt = Ce("gpu"), $ = {
|
|
165
165
|
ACTIVE_RAY_COUNT: 0,
|
|
166
166
|
ENTERING_COUNT: 1,
|
|
167
167
|
CONVERGED_COUNT: 2,
|
|
@@ -172,7 +172,7 @@ var zt = we("gpu"), $ = {
|
|
|
172
172
|
ACTIVE_ENERGY: 7,
|
|
173
173
|
COUNT: 8,
|
|
174
174
|
GUIDE: 8
|
|
175
|
-
},
|
|
175
|
+
}, Vt = 1024 * 64, Ht = $.GUIDE + Vt, Ut = 1 << 17, Wt = Ut * 4 * 2, Gt = 65535, Kt = {
|
|
176
176
|
BOUNCE_MASK: 255,
|
|
177
177
|
ACTIVE: 256,
|
|
178
178
|
SPECULAR: 512,
|
|
@@ -187,13 +187,13 @@ var zt = we("gpu"), $ = {
|
|
|
187
187
|
LIGHT_PATH: 1 << 21,
|
|
188
188
|
LIGHT_EMITTED: 1 << 22,
|
|
189
189
|
EMISSION_ONLY: 1 << 23
|
|
190
|
-
},
|
|
190
|
+
}, qt = class {
|
|
191
191
|
constructor(e = 0, t = null) {
|
|
192
192
|
this._renderer = t, this.capacity = 0, this.counters = null, this._visibilityTable = !1, this.activeIndices = null, this.activeIndicesRO = null, this.sortedIndices = null, this.sortedIndicesRO = null, this.sortGlobalHistogram = null, this.pingPong = 0, e > 0 && this.allocate(e);
|
|
193
193
|
}
|
|
194
194
|
allocate(e) {
|
|
195
195
|
this.dispose(), this.capacity = e, this._allocateCounters(), this.MAX_BOUNCE_SNAPSHOTS = 32, this.curveBands = 0, this.ensureCurveBands(1);
|
|
196
|
-
let t =
|
|
196
|
+
let t = ae(e, 1, Uint32Array), n = ae(e, 1, Uint32Array);
|
|
197
197
|
this._attrA = t, this._attrB = n, this.activeIndices = {
|
|
198
198
|
a: vt(t, "uint"),
|
|
199
199
|
b: vt(n, "uint")
|
|
@@ -201,18 +201,18 @@ var zt = we("gpu"), $ = {
|
|
|
201
201
|
a: vt(t, "uint").toReadOnly(),
|
|
202
202
|
b: vt(n, "uint").toReadOnly()
|
|
203
203
|
};
|
|
204
|
-
let r =
|
|
205
|
-
this._sortAttr = r, this.sortedIndices = vt(r, "uint"), this.sortedIndicesRO = vt(r, "uint").toReadOnly(), this._sortGlobalHistAttr = new
|
|
204
|
+
let r = ae(e, 1, Uint32Array);
|
|
205
|
+
this._sortAttr = r, this.sortedIndices = vt(r, "uint"), this.sortedIndicesRO = vt(r, "uint").toReadOnly(), this._sortGlobalHistAttr = new Ie(new Uint32Array(256), 1), this.sortGlobalHistogram = vt(this._sortGlobalHistAttr, "uint").toAtomic(), this.pingPong = 0, this.totalBytes = $.COUNT * 4 + e * 4 * 3, Bt.debug(`queues capacity ${Se.n(e)} · ${Se.mb(this.totalBytes)}`);
|
|
206
206
|
}
|
|
207
207
|
_allocateCounters() {
|
|
208
|
-
let e =
|
|
209
|
-
this._countersAttr = new
|
|
208
|
+
let e = Ht + (this._visibilityTable ? 2 * Wt : 0);
|
|
209
|
+
this._countersAttr = new Ie(new Uint32Array(e), 1), this.counters = vt(this._countersAttr, "uint").toAtomic();
|
|
210
210
|
}
|
|
211
211
|
setVisibilityTable(e) {
|
|
212
|
-
this._visibilityTable !== !!e && (this._visibilityTable = !!e, this._countersAttr && (
|
|
212
|
+
this._visibilityTable !== !!e && (this._visibilityTable = !!e, this._countersAttr && (de(this._renderer, this._countersAttr), this._allocateCounters()));
|
|
213
213
|
}
|
|
214
214
|
ensureCurveBands(e) {
|
|
215
|
-
e <= this.curveBands || (
|
|
215
|
+
e <= this.curveBands || (de(this._renderer, this._bounceCountsAttr), this.curveBands = e, this._bounceCountsAttr = new Ie(new Uint32Array(this.pixelCountOffset(e)), 1), this.bounceCounts = vt(this._bounceCountsAttr, "uint"));
|
|
216
216
|
}
|
|
217
217
|
curveOffset(e) {
|
|
218
218
|
return e === 0 ? 0 : (e + 1) * 2 * this.MAX_BOUNCE_SNAPSHOTS;
|
|
@@ -260,21 +260,21 @@ var zt = we("gpu"), $ = {
|
|
|
260
260
|
this.pingPong = 0;
|
|
261
261
|
}
|
|
262
262
|
dispose() {
|
|
263
|
-
|
|
263
|
+
de(this._renderer, this._countersAttr), de(this._renderer, this._bounceCountsAttr), de(this._renderer, this._attrA), de(this._renderer, this._attrB), de(this._renderer, this._sortAttr), de(this._renderer, this._sortGlobalHistAttr), this._countersAttr = this._bounceCountsAttr = null, this._attrA = this._attrB = this._sortAttr = this._sortGlobalHistAttr = null, this.counters = null, this.activeIndices = null, this.activeIndicesRO = null, this.sortedIndices = null, this.sortedIndicesRO = null, this.sortGlobalHistogram = null, this.bounceCounts = null, this.curveBands = 0, this.capacity = 0;
|
|
264
264
|
}
|
|
265
265
|
};
|
|
266
266
|
//#endregion
|
|
267
267
|
//#region src/shaders/ShadowTerminator.js
|
|
268
|
-
function
|
|
269
|
-
let p =
|
|
270
|
-
|
|
268
|
+
function Jt({ V0: t, V1: n, V2: r, N0: a, N1: o, N2: s, hitPoint: c, instanced: l, bvhBuffer: u, instanceLeaf: d, faceN: f }) {
|
|
269
|
+
let p = H(0).toVar(), m = c.toVar();
|
|
270
|
+
I(l, () => {
|
|
271
271
|
let t = e(u, d);
|
|
272
|
-
m.assign(
|
|
272
|
+
m.assign(Q(t[0].xyz.dot(c).add(t[0].w), t[1].xyz.dot(c).add(t[1].w), t[2].xyz.dot(c).add(t[2].w)));
|
|
273
273
|
});
|
|
274
|
-
let h = n.sub(t).toVar(), g = r.sub(t).toVar(), _ = m.sub(t).toVar(), v =
|
|
275
|
-
return
|
|
276
|
-
let c =
|
|
277
|
-
|
|
274
|
+
let h = n.sub(t).toVar(), g = r.sub(t).toVar(), _ = m.sub(t).toVar(), v = V(h, h), y = V(h, g), b = V(g, g), x = v.mul(b).sub(y.mul(y)).toVar();
|
|
275
|
+
return I(x.greaterThan(v.mul(b).mul(1e-12)), () => {
|
|
276
|
+
let c = V(_, h), m = V(_, g), S = z(b.mul(c).sub(y.mul(m)).div(x), 0, 1).toVar(), C = z(v.mul(m).sub(y.mul(c)).div(x), 0, H(1).sub(S)).toVar(), w = H(1).sub(S).sub(C).toVar(), T = t.mul(w).add(n.mul(S)).add(r.mul(C)).toVar(), E = a.mul(w).add(o.mul(S)).add(s.mul(C)).toVar(), D = E.toVar();
|
|
277
|
+
I(l, () => {
|
|
278
278
|
let t = e(u, d);
|
|
279
279
|
D.assign(i({
|
|
280
280
|
r0: t[0].xyz,
|
|
@@ -283,36 +283,36 @@ function qt({ V0: t, V1: n, V2: r, N0: a, N1: o, N2: s, hitPoint: c, instanced:
|
|
|
283
283
|
v: E
|
|
284
284
|
}));
|
|
285
285
|
});
|
|
286
|
-
let ee =
|
|
287
|
-
|
|
288
|
-
let e =
|
|
289
|
-
A.assign(
|
|
286
|
+
let ee = V(s.sub(a), t.sub(r)), O = V(s.sub(o), n.sub(r)), k = V(o.sub(a), n.sub(t)), A = ee.mul(w).mul(w.sub(1)).add(ee.add(O).add(k).mul(w).mul(S)).add(O.mul(S).mul(S.sub(1))).toVar();
|
|
287
|
+
I(V(D, f).greaterThan(0), () => {
|
|
288
|
+
let e = G(V(t.sub(T), a).add(G(G(V(n.sub(t), a), V(r.sub(t), a)), 0)), 0), i = G(V(n.sub(T), o).add(G(G(V(t.sub(n), o), V(r.sub(n), o)), 0)), 0), c = G(V(r.sub(T), s).add(G(G(V(t.sub(r), s), V(n.sub(r), s)), 0)), 0);
|
|
289
|
+
A.assign(G(K(K(e, i), c), A.mul(.5)));
|
|
290
290
|
}).Else(() => {
|
|
291
|
-
let e =
|
|
292
|
-
A.assign(
|
|
293
|
-
}), p.assign(
|
|
291
|
+
let e = G(V(T.sub(t), a).add(G(G(V(t.sub(n), a), V(t.sub(r), a)), 0)), 0), i = G(V(T.sub(n), o).add(G(G(V(n.sub(t), o), V(n.sub(r), o)), 0)), 0), c = G(V(T.sub(r), s).add(G(G(V(r.sub(t), s), V(r.sub(n), s)), 0)), 0);
|
|
292
|
+
A.assign(K(K(K(e, i), c).negate(), A.mul(.5)));
|
|
293
|
+
}), p.assign(W(D).mul(A));
|
|
294
294
|
}), p;
|
|
295
295
|
}
|
|
296
|
-
function
|
|
297
|
-
let s =
|
|
296
|
+
function Yt({ hitPoint: e, offsetNormal: t, lift: n, faceN: r, smoothN: i, L: a, cutoff: o }) {
|
|
297
|
+
let s = V(i, a), c = V(r, a), l = G(o, 1e-6), d = Y(o.greaterThan(0).and(s.greaterThan(0)), Y(s.lessThan(o), z(H(2).sub(c.add(s).div(l)), 0, 1), z(H(1).sub(c.div(l)), 0, 1)), H(0));
|
|
298
298
|
return u(e.add(n.mul(d)), t);
|
|
299
299
|
}
|
|
300
300
|
//#endregion
|
|
301
301
|
//#region src/shaders/Environment.js
|
|
302
|
-
var
|
|
303
|
-
let n =
|
|
302
|
+
var Xt = /* @__PURE__ */ Ot("\n fn equirectDirectionToUv( direction: vec3f, environmentMatrix: mat4x4f ) -> vec2f {\n let d = normalize( ( environmentMatrix * vec4f( direction, 0.0f ) ).xyz );\n var uv = vec2f( atan2( d.z, d.x ), acos( d.y ) );\n uv = uv / vec2f( 6.28318530717958647692f, 3.14159265358979323846f );\n uv.x = uv.x + 0.5f;\n uv.y = 1.0f - uv.y;\n return uv;\n }\n"), Zt = /* @__PURE__ */ Ot("\n fn equirectUvToDirection( uv: vec2f, environmentMatrix: mat4x4f ) -> vec3f {\n let adjustedUv = vec2f( uv.x - 0.5f, 1.0f - uv.y );\n let theta = adjustedUv.x * 6.28318530717958647692f;\n let phi = adjustedUv.y * 3.14159265358979323846f;\n let sinPhi = sin( phi );\n let localDir = vec3f( sinPhi * cos( theta ), cos( phi ), sinPhi * sin( theta ) );\n return normalize( ( transpose( environmentMatrix ) * vec4f( localDir, 0.0f ) ).xyz );\n }\n"), Qt = (e, t) => {
|
|
303
|
+
let n = U(t.x), r = U(t.y), i = G(n.add(U(Pt - 1)).div(U(Pt)), U(1));
|
|
304
304
|
return {
|
|
305
|
-
w: n.add(i).sub(
|
|
306
|
-
h: r.add(i).sub(
|
|
307
|
-
entry: (t, n) => e.load(
|
|
305
|
+
w: n.add(i).sub(U(1)).div(i).toVar(),
|
|
306
|
+
h: r.add(i).sub(U(1)).div(i).toVar(),
|
|
307
|
+
entry: (t, n) => e.load(ct(t, n))
|
|
308
308
|
};
|
|
309
|
-
},
|
|
310
|
-
let r = e.mul(
|
|
311
|
-
return
|
|
312
|
-
let o =
|
|
313
|
-
|
|
309
|
+
}, $t = (e, t, n) => {
|
|
310
|
+
let r = e.mul(U(2)).toVar(), i = z(U(n.mul(H(r))), U(0), r.sub(U(1))).toVar(), a = i.bitAnd(U(1)).equal(U(1)).toVar(), o = t(i.shiftRight(U(1))).toVar(), s = U(Y(a, o.w, o.z)).toVar(), c = t(s).toVar();
|
|
311
|
+
return I(n.lessThan(c.y).or(n.greaterThanEqual(c.x).and(s.lessThan(e.sub(U(1))))), () => {
|
|
312
|
+
let o = G(s.sub(U(1)), U(0)).toVar(), l = t(i.shiftRight(U(1)).add(U(1))), u = Y(i.add(U(2)).lessThan(r), U(Y(a, l.w, l.z)), e.sub(U(1))).toVar();
|
|
313
|
+
Ye(o.lessThan(u), () => {
|
|
314
314
|
let e = o.add(u).div(2).toVar();
|
|
315
|
-
|
|
315
|
+
I(t(e).x.lessThanEqual(n), () => {
|
|
316
316
|
o.assign(e.add(1));
|
|
317
317
|
}).Else(() => {
|
|
318
318
|
u.assign(e);
|
|
@@ -323,78 +323,78 @@ var Yt = /* @__PURE__ */ Q("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
323
323
|
top: c.x,
|
|
324
324
|
bottom: c.y
|
|
325
325
|
};
|
|
326
|
-
},
|
|
327
|
-
let i =
|
|
328
|
-
return
|
|
326
|
+
}, en = (e, t, n, r) => {
|
|
327
|
+
let i = ht(r.mul(Math.PI));
|
|
328
|
+
return Y(i.greaterThan(0).and(e.greaterThan(0)), e.mul(H(t)).mul(H(n)).div(G(i.mul(2 * Math.PI * Math.PI), 1e-30)), H(0));
|
|
329
329
|
};
|
|
330
|
-
function
|
|
331
|
-
let { w: i, h: a, entry: o } =
|
|
330
|
+
function tn(e, t, n, r) {
|
|
331
|
+
let { w: i, h: a, entry: o } = Qt(e, n), s = $t(a, (e) => o(i, e), r.y), c = s.index.toVar(), l = $t(i, (e) => o(e, c), r.x), u = s.top.sub(s.bottom).toVar(), d = l.top.sub(l.bottom).toVar(), f = z(r.y.sub(s.bottom).div(G(u, 1e-30)), 0, .99999994), p = z(r.x.sub(l.bottom).div(G(d, 1e-30)), 0, .99999994), m = Dt(H(l.index).add(p).div(H(i)), H(c).add(f).div(H(a))).toVar();
|
|
332
332
|
return {
|
|
333
|
-
direction:
|
|
333
|
+
direction: Zt({
|
|
334
334
|
uv: m,
|
|
335
335
|
environmentMatrix: t
|
|
336
336
|
}),
|
|
337
|
-
pdf:
|
|
337
|
+
pdf: en(u.mul(d), i, a, m.y)
|
|
338
338
|
};
|
|
339
339
|
}
|
|
340
|
-
function
|
|
341
|
-
let { w: i, h: a, entry: o } =
|
|
340
|
+
function nn(e, t, n, r) {
|
|
341
|
+
let { w: i, h: a, entry: o } = Qt(e, n), s = Xt({
|
|
342
342
|
direction: r,
|
|
343
343
|
environmentMatrix: t
|
|
344
|
-
}).toVar(), c =
|
|
345
|
-
return
|
|
344
|
+
}).toVar(), c = z(U(s.x.mul(H(i))), U(0), i.sub(U(1))).toVar(), l = z(U(s.y.mul(H(a))), U(0), a.sub(U(1))).toVar(), u = o(i, l).toVar(), d = o(c, l).toVar();
|
|
345
|
+
return en(u.x.sub(u.y).mul(d.x.sub(d.y)), i, a, s.y);
|
|
346
346
|
}
|
|
347
|
-
var
|
|
347
|
+
var rn = /* @__PURE__ */ Ot("\n fn sampleEnvironment(\n tex: texture_2d<f32>,\n samp: sampler,\n direction: vec3f,\n environmentMatrix: mat4x4f,\n environmentIntensity: f32,\n enableEnvironmentLight: f32\n ) -> vec4f {\n if ( enableEnvironmentLight < 0.5 ) { return vec4f( 0.0 ); }\n let uv = equirectDirectionToUv( direction, environmentMatrix );\n let texSample = textureSampleLevel( tex, samp, uv, 0.0 );\n return texSample * environmentIntensity;\n }\n", [Xt]), an = F(([e, t, n, r]) => {
|
|
348
348
|
let i = t.toConst(), a = e.toVar();
|
|
349
349
|
a.y.subAssign(r);
|
|
350
350
|
let o = n.mul(n).toConst(), s = a.dot(i).toConst(), c = a.dot(a).sub(o).toConst(), l = s.mul(s).sub(c).toConst(), u = t.toVar();
|
|
351
|
-
return
|
|
352
|
-
let t =
|
|
353
|
-
|
|
351
|
+
return I(l.greaterThanEqual(0), () => {
|
|
352
|
+
let t = X(l).sub(s).toVar(), r = H(1e6).toVar(), c = i.y.toConst();
|
|
353
|
+
I(c.lessThanEqual(0), () => {
|
|
354
354
|
let t = e.y.negate().div(c).toConst(), n = e.add(i.mul(t)).toConst();
|
|
355
|
-
|
|
355
|
+
I(n.dot(n).lessThan(o), () => {
|
|
356
356
|
r.assign(t);
|
|
357
357
|
});
|
|
358
|
-
}),
|
|
359
|
-
u.assign(a.add(i.mul(
|
|
358
|
+
}), I(t.greaterThan(0), () => {
|
|
359
|
+
u.assign(a.add(i.mul(K(t, r))).div(n));
|
|
360
360
|
});
|
|
361
361
|
}), u;
|
|
362
|
-
}),
|
|
362
|
+
}), on = F(([e, t, n, r, i, a]) => {
|
|
363
363
|
let o = t.toVar();
|
|
364
|
-
return
|
|
365
|
-
let n =
|
|
366
|
-
o.assign(
|
|
364
|
+
return I(n, () => {
|
|
365
|
+
let n = Q(e.x, e.y.sub(a), e.z);
|
|
366
|
+
o.assign(an(n, t, r, i));
|
|
367
367
|
}), o;
|
|
368
|
-
}),
|
|
368
|
+
}), sn = /* @__PURE__ */ Ot("\n fn ImportanceSampleGGX( N: vec3f, roughness: f32, Xi: vec2f ) -> vec3f {\n let alpha = roughness * roughness;\n let phi = 6.28318530717958647692f * Xi.x;\n let cosTheta = sqrt( ( 1.0f - Xi.y ) / ( 1.0f + ( alpha * alpha - 1.0f ) * Xi.y ) );\n let sinTheta = sqrt( max( 0.0f, 1.0f - cosTheta * cosTheta ) );\n let H = vec3f( cos( phi ) * sinTheta, sin( phi ) * sinTheta, cosTheta );\n // TBN construction\n let up = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( 0.0f, 0.0f, 1.0f ), abs( N.z ) < 0.999f );\n let tangent = normalize( cross( up, N ) );\n let bitangent = cross( N, tangent );\n return normalize( tangent * H.x + bitangent * H.y + N * H.z );\n }\n"), cn = /* @__PURE__ */ Ot("\n fn ImportanceSampleCosine( N: vec3f, xi: vec2f ) -> vec3f {\n let T = normalize( cross( N, N.yzx + vec3f( 0.1f, 0.2f, 0.3f ) ) );\n let B = cross( N, T );\n let phi = 6.28318530717958647692f * xi.x;\n let cosTheta = sqrt( 1.0f - xi.y );\n let sinTheta = sqrt( xi.y );\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( T * localDir.x + B * localDir.y + N * localDir.z );\n }\n"), ln = /* @__PURE__ */ Ot("\n fn cosineWeightedSample( N: vec3f, xi: vec2f ) -> vec3f {\n let T = normalize( cross( N, N.yzx + vec3f( 0.1f, 0.2f, 0.3f ) ) );\n let B = cross( N, T );\n let phi = 6.28318530717958647692f * xi.y;\n let cosTheta = sqrt( 1.0f - xi.x );\n let sinTheta = sqrt( xi.x );\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( T * localDir.x + B * localDir.y + N * localDir.z );\n }\n"), un = /* @__PURE__ */ Ot("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: vec2f ) -> vec3f {\n let alpha = roughness * roughness;\n // Transform view direction to local space\n let Vh = normalize( vec3f( alpha * V.x, alpha * V.y, V.z ) );\n // Construct orthonormal basis around view direction\n let lensq = Vh.x * Vh.x + Vh.y * Vh.y;\n let T1 = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( -Vh.y, Vh.x, 0.0f ) / sqrt( lensq ), lensq > 1e-8f );\n let T2 = cross( Vh, T1 );\n // Sample point with polar coordinates (r, phi)\n let r = sqrt( Xi.x );\n let phi = 6.28318530717958647692f * Xi.y;\n let t1 = r * cos( phi );\n let t2tmp = r * sin( phi );\n let s = 0.5f * ( 1.0f + Vh.z );\n let t2 = ( 1.0f - s ) * sqrt( 1.0f - t1 * t1 ) + s * t2tmp;\n // Compute normal\n let Nh = T1 * t1 + T2 * t2 + Vh * sqrt( max( 0.0f, 1.0f - t1 * t1 - t2 * t2 ) );\n // Transform the normal back to the ellipsoid configuration\n return normalize( vec3f( alpha * Nh.x, alpha * Nh.y, max( 0.0f, Nh.z ) ) );\n }\n"), dn = /* @__PURE__ */ Ot("\n fn sampleGGXVNDFAniso( V: vec3f, alphaX: f32, alphaY: f32, Xi: vec2f ) -> vec3f {\n let Vh = normalize( vec3f( alphaX * V.x, alphaY * V.y, V.z ) );\n let lensq = Vh.x * Vh.x + Vh.y * Vh.y;\n let T1 = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( -Vh.y, Vh.x, 0.0f ) / sqrt( lensq ), lensq > 1e-8f );\n let T2 = cross( Vh, T1 );\n let r = sqrt( Xi.x );\n let phi = 6.28318530717958647692f * Xi.y;\n let t1 = r * cos( phi );\n let t2tmp = r * sin( phi );\n let s = 0.5f * ( 1.0f + Vh.z );\n let t2 = ( 1.0f - s ) * sqrt( 1.0f - t1 * t1 ) + s * t2tmp;\n let Nh = T1 * t1 + T2 * t2 + Vh * sqrt( max( 0.0f, 1.0f - t1 * t1 - t2 * t2 ) );\n return normalize( vec3f( alphaX * Nh.x, alphaY * Nh.y, max( 0.0f, Nh.z ) ) );\n }\n"), fn = 1e-6, pn = (e) => {
|
|
369
369
|
let t = e.mul(e);
|
|
370
370
|
return t.mul(t).mul(e);
|
|
371
371
|
};
|
|
372
|
-
|
|
373
|
-
let r =
|
|
374
|
-
return e.add(r.sub(e).mul(
|
|
372
|
+
F(([e, t, n]) => {
|
|
373
|
+
let r = G(Q(H(1).sub(n)), e);
|
|
374
|
+
return e.add(r.sub(e).mul(pn(H(1).sub(t))));
|
|
375
375
|
});
|
|
376
|
-
var
|
|
377
|
-
let n =
|
|
378
|
-
return t.add(
|
|
379
|
-
}),
|
|
380
|
-
let n =
|
|
381
|
-
return t.add(
|
|
382
|
-
}),
|
|
383
|
-
let t =
|
|
384
|
-
return
|
|
385
|
-
}),
|
|
386
|
-
let n = e.sub(
|
|
376
|
+
var mn = F(([e, t]) => {
|
|
377
|
+
let n = z(e, 0, 1);
|
|
378
|
+
return t.add(H(1).sub(t).mul(pn(H(1).sub(n))));
|
|
379
|
+
}), hn = F(([e, t]) => {
|
|
380
|
+
let n = z(e, 0, 1);
|
|
381
|
+
return t.add(Q(1).sub(t).mul(pn(H(1).sub(n))));
|
|
382
|
+
}), gn = F(([e]) => {
|
|
383
|
+
let t = X(e);
|
|
384
|
+
return Q(1).add(t).div(G(Q(1).sub(t), Q(fn)));
|
|
385
|
+
}), _n = F(([e, t]) => {
|
|
386
|
+
let n = e.sub(Q(t)), r = G(e.add(Q(t)), Q(fn)), i = n.div(r);
|
|
387
387
|
return i.mul(i);
|
|
388
|
-
}),
|
|
389
|
-
let n = e.sub(t), r =
|
|
388
|
+
}), vn = F(([e, t]) => {
|
|
389
|
+
let n = e.sub(t), r = G(e.add(t), fn), i = n.div(r);
|
|
390
390
|
return i.mul(i);
|
|
391
|
-
}),
|
|
392
|
-
let n =
|
|
393
|
-
return
|
|
394
|
-
}),
|
|
395
|
-
let n =
|
|
396
|
-
return
|
|
397
|
-
}),
|
|
391
|
+
}), yn = (e) => Q(vn(e, H(1))), bn = F(([e, t]) => {
|
|
392
|
+
let n = z(e, 0, 1), r = t.mul(t).sub(1).add(n.mul(n)), i = X(G(r, 0)), a = i.sub(n).div(G(i.add(n), fn)), o = n.mul(i.add(n)).sub(1).div(G(n.mul(i.sub(n)).add(1), fn));
|
|
393
|
+
return Y(r.greaterThan(0), z(a.mul(a).mul(.5).mul(o.mul(o).add(1)), 0, 1), H(1));
|
|
394
|
+
}), xn = F(([e, t]) => {
|
|
395
|
+
let n = vn(t, H(1));
|
|
396
|
+
return z(bn(e, t).sub(n).div(G(H(1).sub(n), fn)), 0, 1);
|
|
397
|
+
}), Sn = .5, Cn = new Float32Array([
|
|
398
398
|
1,
|
|
399
399
|
.0302,
|
|
400
400
|
.9039,
|
|
@@ -17803,203 +17803,203 @@ var pn = P(([e, t]) => {
|
|
|
17803
17803
|
3e-4,
|
|
17804
17804
|
1,
|
|
17805
17805
|
1
|
|
17806
|
-
]),
|
|
17806
|
+
]), wn = 1e-30, Tn = F(([e, t]) => {
|
|
17807
17807
|
let n = t.mul(t), r = n.mul(n), i = e.mul(e).mul(r.sub(1)).add(1);
|
|
17808
|
-
return r.div(
|
|
17809
|
-
}),
|
|
17810
|
-
let n =
|
|
17811
|
-
return i.div(
|
|
17812
|
-
}),
|
|
17813
|
-
let t =
|
|
17814
|
-
return t.mul(
|
|
17815
|
-
},
|
|
17816
|
-
let a =
|
|
17817
|
-
return s.add(u.mul(d.mul(
|
|
17818
|
-
}),
|
|
17819
|
-
let n = t.mul(t), r = n.mul(n), i = e.add(
|
|
17820
|
-
return
|
|
17821
|
-
}),
|
|
17822
|
-
let r = n.mul(n), i = r.mul(r), a = t.mul(
|
|
17823
|
-
return
|
|
17824
|
-
}),
|
|
17825
|
-
|
|
17826
|
-
var
|
|
17827
|
-
|
|
17828
|
-
var
|
|
17829
|
-
let d =
|
|
17808
|
+
return r.div(G(H(T).mul(i).mul(i), wn));
|
|
17809
|
+
}), En = F(([e, t]) => {
|
|
17810
|
+
let n = G(t, me), r = n.mul(n), i = H(1).div(r.mul(r)), a = e.mul(e).mul(i.sub(1)).add(1);
|
|
17811
|
+
return i.div(G(H(T).mul(a).mul(a), he));
|
|
17812
|
+
}), Dn = F(([e]) => H(1).div(G(e, me))), On = F(([e, t]) => z(H(1).div(G(H(4).mul(t.add(e).sub(t.mul(e))), he)), 0, 1)), kn = .5 - 2 / (3 * Math.PI), An = 2 / 3 - 28 / (15 * Math.PI), jn = (e) => {
|
|
17813
|
+
let t = H(1).sub(e);
|
|
17814
|
+
return t.mul(H(.0571085289).add(t.mul(H(.491881867).add(t.mul(H(-.332181442).add(t.mul(.0714429953)))))));
|
|
17815
|
+
}, Mn = F(([e, t, n, r, i]) => {
|
|
17816
|
+
let a = H(1).div(H(1).add(t.mul(kn))), o = i.sub(n.mul(r)), s = e.mul(a.mul(ie).mul(H(1).add(t.mul(o.greaterThan(0).select(o.div(G(n, r)), o))))), c = z(e, Q(0), Q(1)), l = a.mul(H(1).add(t.mul(An))), u = c.mul(c).mul(l).div(Q(1).sub(c.mul(H(1).sub(l)))), d = t.mul(a).mul(G(H(kn).sub(jn(n)), 0)).mul(G(H(kn).sub(jn(r)), 0)).mul(1 / (kn - An));
|
|
17817
|
+
return s.add(u.mul(d.mul(ie)));
|
|
17818
|
+
}), Nn = F(([e, t]) => {
|
|
17819
|
+
let n = t.mul(t), r = n.mul(n), i = e.add(X(r.add(H(1).sub(r).mul(e.mul(e)))));
|
|
17820
|
+
return H(2).mul(e).div(G(i, he));
|
|
17821
|
+
}), Pn = F(([e, t, n]) => {
|
|
17822
|
+
let r = n.mul(n), i = r.mul(r), a = t.mul(X(i.add(H(1).sub(i).mul(e.mul(e))))), o = e.mul(X(i.add(H(1).sub(i).mul(t.mul(t)))));
|
|
17823
|
+
return H(.5).div(G(a.add(o), he));
|
|
17824
|
+
}), Fn = 17, In = new ze(Cn, 16 * Fn, 16, We, Be);
|
|
17825
|
+
In.minFilter = Ve, In.magFilter = Ve, In.wrapS = Le, In.wrapT = Le, In.generateMipmaps = !1, In.needsUpdate = !0;
|
|
17826
|
+
var Ln = Ct(In);
|
|
17827
|
+
Ln.setUpdateMatrix(!1);
|
|
17828
|
+
var Rn = (e, t, n = 0) => Dt(z(e, 0, 1).mul(15).add(.5).add(H(n).mul(16)).div(16 * Fn), z(t, 0, 1).mul(15 / 16).add(.5 / 16)), zn = F(([e, t]) => z(Ln.sample(Rn(t, e)).g, 0, 1)), Bn = F(([e, t, n, r, i, o, s, c, l, u]) => {
|
|
17829
|
+
let d = Ln.sample(Rn(u, l)).toVar(), f = z(n.sub(1).div(n.add(1)).div(Sn), 0, 1).mul(16).toVar(), p = K(ot(f), H(15)).toVar(), m = Ln.sample(Rn(u, l, p.add(1))).toVar(), h = z(q(m.r, m.g, f.sub(p)), 0, 1), g = G(d.r, .05).toVar(), _ = z(d.b, 0, 1).toVar(), v = e.mul(g.sub(h)).add(Q(t.mul(h))), y = r.mul(g.sub(_)).add(Q(_)), b = o.mul(g.sub(_)).add(Q(_)), x = G(q(q(v, y, i), b, s), Q(0)), S = Q(1).add(c.mul(H(1).div(g).sub(1)));
|
|
17830
17830
|
return a({
|
|
17831
17831
|
compensation: S,
|
|
17832
|
-
E_total:
|
|
17832
|
+
E_total: z(x.mul(S), Q(0), Q(1))
|
|
17833
17833
|
});
|
|
17834
|
-
}),
|
|
17835
|
-
let n =
|
|
17834
|
+
}), Vn = F(([e, t]) => {
|
|
17835
|
+
let n = K(yn(e.ior).mul(e.specularColor), Q(1)).mul(e.specularIntensity), r = z(t.mul(e.specularIntensity), Q(0), Q(1));
|
|
17836
17836
|
return v({
|
|
17837
17837
|
f0: n,
|
|
17838
17838
|
f90: e.specularIntensity,
|
|
17839
|
-
eta:
|
|
17839
|
+
eta: G(e.ior, 1),
|
|
17840
17840
|
F0m: r,
|
|
17841
|
-
F0:
|
|
17841
|
+
F0: z(q(n, r, e.metalness), Q(0), Q(1))
|
|
17842
17842
|
});
|
|
17843
|
-
}),
|
|
17844
|
-
let r =
|
|
17845
|
-
return r.mul(i).div(
|
|
17846
|
-
}),
|
|
17847
|
-
let n =
|
|
17848
|
-
return Dt(
|
|
17849
|
-
}),
|
|
17850
|
-
let a = e.mul(t), o =
|
|
17843
|
+
}), Hn = F(([e, t, n]) => {
|
|
17844
|
+
let r = Tn(e, n), i = Nn(t, n);
|
|
17845
|
+
return r.mul(i).div(G(t.mul(4), he));
|
|
17846
|
+
}), Un = F(([e, t]) => {
|
|
17847
|
+
let n = G(e.mul(e), 1e-4).toVar();
|
|
17848
|
+
return Dt(G(q(n, H(1), t.mul(t)), 1e-4), n);
|
|
17849
|
+
}), Wn = F(([e, t, n, r, i]) => {
|
|
17850
|
+
let a = e.mul(t), o = Q(t.mul(r), e.mul(i), a.mul(n)), s = G(V(o, o), wn), c = a.div(s);
|
|
17851
17851
|
return a.mul(c.mul(c)).div(T);
|
|
17852
|
-
}),
|
|
17853
|
-
let c = s.mul(
|
|
17854
|
-
return
|
|
17855
|
-
}),
|
|
17856
|
-
let a = e.mul(n), o = t.mul(r), s = a.mul(a).add(o.mul(o)), c =
|
|
17857
|
-
return
|
|
17858
|
-
}),
|
|
17859
|
-
let c =
|
|
17860
|
-
return c.mul(l).div(
|
|
17861
|
-
}),
|
|
17862
|
-
let n =
|
|
17863
|
-
return o.x.addAssign(
|
|
17864
|
-
}),
|
|
17865
|
-
let a =
|
|
17866
|
-
return
|
|
17867
|
-
c.assign(
|
|
17852
|
+
}), Gn = F(([e, t, n, r, i, a, o, s]) => {
|
|
17853
|
+
let c = s.mul(Q(e.mul(n), t.mul(r), o).length()), l = o.mul(Q(e.mul(i), t.mul(a), s).length());
|
|
17854
|
+
return H(.5).div(G(c.add(l), he));
|
|
17855
|
+
}), Kn = F(([e, t, n, r, i]) => {
|
|
17856
|
+
let a = e.mul(n), o = t.mul(r), s = a.mul(a).add(o.mul(o)), c = G(i.mul(i), he), l = X(H(1).add(s.div(c))).sub(1).mul(.5);
|
|
17857
|
+
return H(1).div(l.add(1));
|
|
17858
|
+
}), qn = F(([e, t, n, r, i, a, o, s]) => {
|
|
17859
|
+
let c = Wn(e, t, n, r, i), l = Kn(e, t, o, s, a);
|
|
17860
|
+
return c.mul(l).div(G(a.mul(4), he));
|
|
17861
|
+
}), Jn = F(([e, t]) => {
|
|
17862
|
+
let n = H(O).mul(e).mul(1e-9), r = Q(54856e-17, 44201e-17, 52481e-17), i = Q(1681e3, 1795300, 2208400), a = Q(43278e5, 93046e5, 66121e5), o = r.mul(X(H(O).mul(a))).mul(rt(i.mul(n).add(t))).mul(it(m({ x: n }).negate().mul(a))).toVar();
|
|
17863
|
+
return o.x.addAssign(H(9747e-17).mul(X(H(O).mul(45282e5))).mul(rt(H(2239900).mul(n).add(t.x))).mul(it(H(-45282e5).mul(m({ x: n }))))), le.mul(o.div(1.0685e-7));
|
|
17864
|
+
}), Yn = F(([e, t, n, r, i]) => {
|
|
17865
|
+
let a = q(e, t, gt(0, .03, r)).toVar(), o = m({ x: e.div(a) }).mul(H(1).sub(m({ x: n }))), s = H(1).sub(o).toVar(), c = Q(0).toVar();
|
|
17866
|
+
return I(s.lessThan(0), () => {
|
|
17867
|
+
c.assign(Q(1));
|
|
17868
17868
|
}).Else(() => {
|
|
17869
|
-
let t =
|
|
17870
|
-
S.mulAssign(y), x.addAssign(S.mul(
|
|
17869
|
+
let t = X(s).toVar(), o = mn(n, vn(a, e)).toVar(), l = H(1).sub(o).toVar(), u = a.lessThan(e).select(H(T), H(0)), d = H(T).sub(u), f = gn(z(i, 0, .9999)).toVar(), p = _n(f, a).toVar(), m = Q(mn(t, p.x), mn(t, p.y), mn(t, p.z)).toVar(), h = Q(f.x.lessThan(a).select(H(T), H(0)), f.y.lessThan(a).select(H(T), H(0)), f.z.lessThan(a).select(H(T), H(0))), g = H(2).mul(a).mul(r).mul(t).toVar(), _ = Q(d).add(h).toVar(), v = z(Q(o).mul(m), 1e-5, .9999).toVar(), y = X(v).toVar(), b = Q(l.mul(l)).mul(m).div(Q(1).sub(v)).toVar(), x = Q(o).add(b).toVar().toVar(), S = b.sub(Q(l)).toVar();
|
|
17870
|
+
S.mulAssign(y), x.addAssign(S.mul(H(2).mul(Jn(H(1).mul(g), H(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(H(2).mul(Jn(H(2).mul(g), H(2).mul(_))))), c.assign(G(x, Q(0)));
|
|
17871
17871
|
}), c;
|
|
17872
|
-
}),
|
|
17873
|
-
let i =
|
|
17874
|
-
|
|
17875
|
-
s.assign(
|
|
17872
|
+
}), Xn = F(([e, t, n], r) => {
|
|
17873
|
+
let i = pe(r), a = n.invRoughness, o = n.metalFactor, s = H(0).toVar();
|
|
17874
|
+
I(t.isMetallic, () => {
|
|
17875
|
+
s.assign(G(a.mul(o), .7));
|
|
17876
17876
|
}).ElseIf(t.isSmooth, () => {
|
|
17877
17877
|
s.assign(a.mul(o).mul(1.2));
|
|
17878
17878
|
}).Else(() => {
|
|
17879
|
-
s.assign(
|
|
17879
|
+
s.assign(G(a.mul(o), e.metalness.mul(.1)));
|
|
17880
17880
|
});
|
|
17881
|
-
let c = s.mul(e.specularIntensity).toVar(), l =
|
|
17882
|
-
i.clearcoat &&
|
|
17881
|
+
let c = s.mul(e.specularIntensity).toVar(), l = H(1).sub(s).mul(H(1).sub(e.metalness)).mul(H(1).sub(e.transmission)).toVar(), u = (i.sheen ? e.sheen.mul(n.maxSheenColor) : H(0)).toVar(), d = H(0).toVar();
|
|
17882
|
+
i.clearcoat && I(t.hasClearcoat, () => {
|
|
17883
17883
|
d.assign(e.clearcoat.mul(a).mul(.4));
|
|
17884
17884
|
}).Else(() => {
|
|
17885
17885
|
d.assign(e.clearcoat.mul(a).mul(.35));
|
|
17886
17886
|
});
|
|
17887
|
-
let f =
|
|
17888
|
-
|
|
17887
|
+
let f = H(0).toVar();
|
|
17888
|
+
I(t.isTransmissive, () => {
|
|
17889
17889
|
let t = n.iorFactor.mul(a).mul(.8);
|
|
17890
|
-
f.assign(e.transmission.mul(t).mul(
|
|
17890
|
+
f.assign(e.transmission.mul(t).mul(H(.6).add(H(.4).mul(e.ior.div(2)))).mul(H(1).add(e.dispersion.mul(.6))));
|
|
17891
17891
|
}).Else(() => {
|
|
17892
17892
|
let t = n.iorFactor.mul(a).mul(.7);
|
|
17893
|
-
f.assign(e.transmission.mul(t).mul(
|
|
17893
|
+
f.assign(e.transmission.mul(t).mul(H(.5).add(H(.5).mul(e.ior.div(2)))).mul(H(1).add(e.dispersion.mul(.5))));
|
|
17894
17894
|
});
|
|
17895
|
-
let p = a.mul(t.isSmooth.select(
|
|
17895
|
+
let p = a.mul(t.isSmooth.select(H(.6), H(.5))), m = K(i.iridescence ? e.iridescence.mul(p).mul(H(.5).add(H(.5).mul(e.iridescenceThicknessRange.y.sub(e.iridescenceThicknessRange.x).div(1e3)))).mul(H(.5).add(H(.5).mul(e.iridescenceIOR.div(2)))) : H(0), l);
|
|
17896
17896
|
c.addAssign(m), l.subAssign(m);
|
|
17897
|
-
let h = (i.diffuseTransmission ? l.mul(e.diffuseTransmission) :
|
|
17897
|
+
let h = (i.diffuseTransmission ? l.mul(e.diffuseTransmission) : H(0)).toVar();
|
|
17898
17898
|
l.subAssign(h);
|
|
17899
|
-
let _ = c.add(l).add(u).add(d).add(f).add(h), v =
|
|
17899
|
+
let _ = c.add(l).add(u).add(d).add(f).add(h), v = H(1).div(G(_, .001));
|
|
17900
17900
|
return g({
|
|
17901
17901
|
specular: c.mul(v),
|
|
17902
17902
|
diffuse: l.mul(v),
|
|
17903
17903
|
sheen: u.mul(v),
|
|
17904
17904
|
clearcoat: d.mul(v),
|
|
17905
17905
|
transmission: f.mul(v),
|
|
17906
|
-
iridescence:
|
|
17906
|
+
iridescence: H(0),
|
|
17907
17907
|
diffuseTransmission: h.mul(v)
|
|
17908
17908
|
});
|
|
17909
|
-
}),
|
|
17910
|
-
let i =
|
|
17911
|
-
return
|
|
17912
|
-
a.addAssign(t.diffuse.mul(n.NoL).mul(
|
|
17913
|
-
let r =
|
|
17914
|
-
r.assign(
|
|
17909
|
+
}), Zn = F(([e, t, n], r) => {
|
|
17910
|
+
let i = pe(r), a = H(0).toVar();
|
|
17911
|
+
return I(n.NoL.greaterThan(0), () => {
|
|
17912
|
+
a.addAssign(t.diffuse.mul(n.NoL).mul(ie));
|
|
17913
|
+
let r = H(0).toVar(), o = () => {
|
|
17914
|
+
r.assign(Hn(n.NoH, n.NoV, e.roughness));
|
|
17915
17915
|
};
|
|
17916
|
-
i.anisotropy ?
|
|
17917
|
-
let t =
|
|
17918
|
-
r.assign(
|
|
17919
|
-
}).Else(o) : o(), a.addAssign(t.specular.mul(r)), i.sheen &&
|
|
17920
|
-
let r =
|
|
17916
|
+
i.anisotropy ? I(e.anisotropy.greaterThan(0), () => {
|
|
17917
|
+
let t = Un(e.roughness, e.anisotropy);
|
|
17918
|
+
r.assign(qn(t.x, t.y, n.NoH, n.ToH, n.BoH, n.NoV, n.ToV, n.BoV));
|
|
17919
|
+
}).Else(o) : o(), a.addAssign(t.specular.mul(r)), i.sheen && I(t.sheen.greaterThan(0), () => {
|
|
17920
|
+
let r = En(n.NoH, e.sheenRoughness).mul(n.NoH).div(G(H(4).mul(n.VoH), he));
|
|
17921
17921
|
a.addAssign(t.sheen.mul(r));
|
|
17922
|
-
}), i.clearcoat &&
|
|
17923
|
-
let r =
|
|
17924
|
-
a.addAssign(t.clearcoat.mul(
|
|
17922
|
+
}), i.clearcoat && I(t.clearcoat.greaterThan(0), () => {
|
|
17923
|
+
let r = z(e.clearcoatRoughness, S, 1);
|
|
17924
|
+
a.addAssign(t.clearcoat.mul(Hn(n.coatNoH, n.coatNoV, r)));
|
|
17925
17925
|
});
|
|
17926
17926
|
}), a;
|
|
17927
|
-
}),
|
|
17928
|
-
invRoughness:
|
|
17929
|
-
metalFactor:
|
|
17930
|
-
iorFactor:
|
|
17931
|
-
maxSheenColor:
|
|
17932
|
-
}))),
|
|
17927
|
+
}), Qn = F(([e, t]) => e.mul(t).mul(ie)), $n = F(([e]) => g.wrap(er(e)).diffuseTransmission), er = F(([e]) => Xn(e, p.wrap(ve(e.metalness, e.roughness, e.transmission, e.clearcoat, e.emissive, e.subsurface)), b({
|
|
17928
|
+
invRoughness: H(1).sub(e.roughness),
|
|
17929
|
+
metalFactor: H(.5).add(H(.5).mul(e.metalness)),
|
|
17930
|
+
iorFactor: K(H(2).div(e.ior), 1),
|
|
17931
|
+
maxSheenColor: G(e.sheenColor.x, G(e.sheenColor.y, e.sheenColor.z))
|
|
17932
|
+
}))), tr = F(([e, t]) => Zn(e, g.wrap(er(e)), t)), nr = (e) => e.roughness.greaterThan(.98).and(e.metalness.lessThan(.02)).and(e.transmission.equal(0)).and(e.clearcoat.equal(0)).and(e.sheen.equal(0)).and(e.iridescence.equal(0)), rr = (e, t, n, r, i, a) => {
|
|
17933
17933
|
if (!e.diffuseRoughness) return r;
|
|
17934
17934
|
let o = r.toVar();
|
|
17935
|
-
return
|
|
17936
|
-
let e =
|
|
17937
|
-
o.assign(
|
|
17935
|
+
return I(t.diffuseRoughness.greaterThan(0), () => {
|
|
17936
|
+
let e = K(n.VoH, n.LoH);
|
|
17937
|
+
o.assign(Mn(i, t.diffuseRoughness, n.NoL, n.NoV, e.mul(e).mul(2).sub(1)).mul(a));
|
|
17938
17938
|
}), o;
|
|
17939
|
-
},
|
|
17940
|
-
let i =
|
|
17941
|
-
return
|
|
17942
|
-
let e =
|
|
17943
|
-
o.assign(
|
|
17939
|
+
}, ir = (e) => F(([t, n], r) => {
|
|
17940
|
+
let i = pe(r), o = Q(0).toVar();
|
|
17941
|
+
return I(nr(t), () => {
|
|
17942
|
+
let e = H(1).sub(t.metalness).mul(H(1).sub(t.diffuseTransmission));
|
|
17943
|
+
o.assign(rr(i, t, n, t.color.rgb.mul(H(1).sub(t.metalness)).mul(H(1).sub(t.diffuseTransmission)).mul(ie), t.color.rgb, e));
|
|
17944
17944
|
}).Else(() => {
|
|
17945
|
-
let s = v.wrap(
|
|
17946
|
-
i.dispersion &&
|
|
17947
|
-
let e =
|
|
17948
|
-
|
|
17945
|
+
let s = v.wrap(Vn(t, t.color.rgb)).toVar(), c = s.F0.toVar(), l = Q(0).toVar(), u = t.color.rgb.toVar();
|
|
17946
|
+
i.dispersion && I(t.dispersion.greaterThan(0).and(t.transmission.greaterThan(.5)), () => {
|
|
17947
|
+
let e = z(t.dispersion.mul(.1), 0, .8), n = G(G(u.r, u.g), u.b), r = K(K(u.r, u.g), u.b);
|
|
17948
|
+
I(n.greaterThan(r), () => {
|
|
17949
17949
|
let t = u.sub(r).div(n.sub(r));
|
|
17950
|
-
u.assign(
|
|
17950
|
+
u.assign(q(u, t, e.mul(.3)));
|
|
17951
17951
|
});
|
|
17952
|
-
}), i.iridescence &&
|
|
17952
|
+
}), i.iridescence && I(t.iridescence.greaterThan(0), () => {
|
|
17953
17953
|
let e = t.iridescenceThicknessRange.y;
|
|
17954
|
-
l.assign(
|
|
17954
|
+
l.assign(Yn(H(1), t.iridescenceIOR, n.VoH, e, c)), c.assign(q(c, l, t.iridescence));
|
|
17955
17955
|
});
|
|
17956
|
-
let d =
|
|
17957
|
-
let e =
|
|
17956
|
+
let d = q(q(s.f0, Q(s.f90), xn(n.VoH, s.eta)), hn(n.VoH, s.F0m), t.metalness), f = (i.iridescence ? q(d, hn(n.VoH, l), t.iridescence) : d).toVar(), p = Q(0).toVar(), m = () => {
|
|
17957
|
+
let e = Tn(n.NoH, t.roughness), r = Pn(n.NoV, n.NoL, t.roughness);
|
|
17958
17958
|
p.assign(e.mul(r).mul(f));
|
|
17959
17959
|
};
|
|
17960
|
-
i.anisotropy ?
|
|
17961
|
-
let e =
|
|
17960
|
+
i.anisotropy ? I(t.anisotropy.greaterThan(0), () => {
|
|
17961
|
+
let e = Un(t.roughness, t.anisotropy), r = Wn(e.x, e.y, n.NoH, n.ToH, n.BoH), i = Gn(e.x, e.y, n.ToV, n.BoV, n.ToL, n.BoL, n.NoV, n.NoL);
|
|
17962
17962
|
p.assign(f.mul(r.mul(i)));
|
|
17963
|
-
}).ElseIf(t.roughness.greaterThan(0), m) :
|
|
17964
|
-
let h = a.wrap(
|
|
17965
|
-
i.sheen ?
|
|
17966
|
-
let r =
|
|
17963
|
+
}).ElseIf(t.roughness.greaterThan(0), m) : I(t.roughness.greaterThan(0), m);
|
|
17964
|
+
let h = a.wrap(Bn(s.f0, s.f90, s.eta, s.F0m, H(0), l, t.iridescence, c, n.NoV, t.roughness)), g = (e ? f : p).mul(h.compensation), _ = Q(1).sub(h.E_total).mul(H(1).sub(t.metalness)).mul(H(1).sub(t.transmission)).mul(H(1).sub(t.diffuseTransmission)), y = (e ? Q(0) : rr(i, t, n, _.mul(u).mul(ie), u, _)).add(g).toVar();
|
|
17965
|
+
i.sheen ? I(t.sheen.greaterThan(0), () => {
|
|
17966
|
+
let r = En(n.NoH, t.sheenRoughness), i = On(n.NoV, n.NoL), a = t.sheenColor.mul(t.sheen).mul(r).mul(i), s = zn(n.NoV, t.sheenRoughness), c = z(t.sheenColor.mul(t.sheen).mul(s), Q(0), Q(1)), l = Q(1).sub(c);
|
|
17967
17967
|
o.assign(e ? y.mul(l) : y.mul(l).add(a));
|
|
17968
17968
|
}).Else(() => {
|
|
17969
17969
|
o.assign(y);
|
|
17970
|
-
}) : o.assign(y), i.clearcoat &&
|
|
17971
|
-
let i =
|
|
17970
|
+
}) : o.assign(y), i.clearcoat && I(t.clearcoat.greaterThan(0), () => {
|
|
17971
|
+
let i = G(t.clearcoatRoughness, S), s = Q(.04), c = a.wrap(Bn(s, H(1), H(1.5), Q(0), H(0), Q(0), H(0), s, n.coatNoV, i)), l = Tn(n.coatNoH, i), u = Pn(n.coatNoV, n.coatNoL, i), d = bn(n.VoH, H(1.5)), f = Q(l.mul(u).mul(d)).mul(c.compensation), p = re(r) ? f.mul(n.coatNoL.div(n.NoL)) : f, m = Q(1).sub(c.E_total.mul(t.clearcoat));
|
|
17972
17972
|
o.assign(e ? o.mul(m) : o.mul(m).add(p.mul(t.clearcoat)));
|
|
17973
17973
|
});
|
|
17974
17974
|
}), o;
|
|
17975
|
-
}),
|
|
17976
|
-
let i =
|
|
17977
|
-
return i.diffuseTransmission &&
|
|
17978
|
-
let c =
|
|
17979
|
-
|
|
17980
|
-
let t = v.wrap(
|
|
17981
|
-
i.iridescence &&
|
|
17982
|
-
r.assign(
|
|
17975
|
+
}), ar = /* @__PURE__ */ ir(!1), or = /* @__PURE__ */ ir(!0), sr = F(([e, t, n], r) => {
|
|
17976
|
+
let i = pe(r), o = Q(0).toVar(), s = G(V(t, n), .001);
|
|
17977
|
+
return i.diffuseTransmission && I(e.diffuseTransmission.greaterThan(0), () => {
|
|
17978
|
+
let c = Q(H(1).sub(e.metalness).mul(H(1).sub(e.transmission))).toVar();
|
|
17979
|
+
I(nr(e).not(), () => {
|
|
17980
|
+
let t = v.wrap(Vn(e, e.color.rgb)), n = t.F0.toVar(), r = Q(0).toVar();
|
|
17981
|
+
i.iridescence && I(e.iridescence.greaterThan(0), () => {
|
|
17982
|
+
r.assign(Yn(H(1), e.iridescenceIOR, s, e.iridescenceThicknessRange.y, n)), n.assign(q(n, r, e.iridescence));
|
|
17983
17983
|
});
|
|
17984
|
-
let o = a.wrap(
|
|
17985
|
-
c.mulAssign(
|
|
17986
|
-
}), o.assign(c.mul(e.diffuseTransmission).mul(e.diffuseTransmissionColor).mul(
|
|
17987
|
-
let t =
|
|
17988
|
-
o.mulAssign(
|
|
17989
|
-
}), i.clearcoat &&
|
|
17990
|
-
let i = a.wrap(
|
|
17991
|
-
o.mulAssign(
|
|
17984
|
+
let o = a.wrap(Bn(t.f0, t.f90, t.eta, t.F0m, H(0), r, e.iridescence, n, s, e.roughness));
|
|
17985
|
+
c.mulAssign(Q(1).sub(o.E_total));
|
|
17986
|
+
}), o.assign(c.mul(e.diffuseTransmission).mul(e.diffuseTransmissionColor).mul(ie)), i.sheen && I(e.sheen.greaterThan(0), () => {
|
|
17987
|
+
let t = zn(s, e.sheenRoughness);
|
|
17988
|
+
o.mulAssign(Q(1).sub(z(e.sheenColor.mul(e.sheen).mul(t), Q(0), Q(1))));
|
|
17989
|
+
}), i.clearcoat && I(e.clearcoat.greaterThan(0), () => {
|
|
17990
|
+
let i = a.wrap(Bn(Q(.04), H(1), H(1.5), Q(0), H(0), Q(0), H(0), Q(.04), G(V(xe(t, e, r), n), .001), G(e.clearcoatRoughness, S)));
|
|
17991
|
+
o.mulAssign(Q(1).sub(i.E_total.mul(e.clearcoat)));
|
|
17992
17992
|
});
|
|
17993
17993
|
}), o;
|
|
17994
|
-
}),
|
|
17995
|
-
let a =
|
|
17994
|
+
}), cr = F(([e, t, n, r], i) => {
|
|
17995
|
+
let a = Q(0).toVar(), o = () => {
|
|
17996
17996
|
let i = c.wrap(C(n, e, t, r));
|
|
17997
|
-
a.assign(
|
|
17997
|
+
a.assign(ar(r, i));
|
|
17998
17998
|
};
|
|
17999
|
-
return
|
|
18000
|
-
a.assign(
|
|
17999
|
+
return pe(i).diffuseTransmission ? I(V(n, t).lessThan(0).and(r.diffuseTransmission.greaterThan(0)), () => {
|
|
18000
|
+
a.assign(sr(r, n, e));
|
|
18001
18001
|
}).Else(o) : o(), a;
|
|
18002
|
-
}),
|
|
18002
|
+
}), lr = j({
|
|
18003
18003
|
direction: "vec3",
|
|
18004
18004
|
color: "vec3",
|
|
18005
18005
|
intensity: "float",
|
|
@@ -18007,7 +18007,7 @@ var Ln = (e, t, n = 0) => Dt(R(e, 0, 1).mul(15).add(.5).add(V(n).mul(16)).div(16
|
|
|
18007
18007
|
goboIndex: "int",
|
|
18008
18008
|
goboIntensity: "float",
|
|
18009
18009
|
goboScale: "float"
|
|
18010
|
-
}),
|
|
18010
|
+
}), ur = j({
|
|
18011
18011
|
position: "vec3",
|
|
18012
18012
|
u: "vec3",
|
|
18013
18013
|
v: "vec3",
|
|
@@ -18018,14 +18018,14 @@ var Ln = (e, t, n = 0) => Dt(R(e, 0, 1).mul(15).add(.5).add(V(n).mul(16)).div(16
|
|
|
18018
18018
|
shape: "float",
|
|
18019
18019
|
normal: "vec3",
|
|
18020
18020
|
area: "float"
|
|
18021
|
-
}),
|
|
18021
|
+
}), dr = j({
|
|
18022
18022
|
position: "vec3",
|
|
18023
18023
|
color: "vec3",
|
|
18024
18024
|
intensity: "float",
|
|
18025
18025
|
distance: "float",
|
|
18026
18026
|
decay: "float",
|
|
18027
18027
|
radius: "float"
|
|
18028
|
-
}),
|
|
18028
|
+
}), fr = j({
|
|
18029
18029
|
position: "vec3",
|
|
18030
18030
|
direction: "vec3",
|
|
18031
18031
|
color: "vec3",
|
|
@@ -18039,7 +18039,7 @@ var Ln = (e, t, n = 0) => Dt(R(e, 0, 1).mul(15).add(.5).add(V(n).mul(16)).div(16
|
|
|
18039
18039
|
iesIndex: "int",
|
|
18040
18040
|
iesIntensity: "float",
|
|
18041
18041
|
radius: "float"
|
|
18042
|
-
}),
|
|
18042
|
+
}), pr = j({
|
|
18043
18043
|
direction: "vec3",
|
|
18044
18044
|
emission: "vec3",
|
|
18045
18045
|
pdf: "float",
|
|
@@ -18047,186 +18047,186 @@ var Ln = (e, t, n = 0) => Dt(R(e, 0, 1).mul(15).add(.5).add(V(n).mul(16)).div(16
|
|
|
18047
18047
|
lightType: "int",
|
|
18048
18048
|
valid: "bool",
|
|
18049
18049
|
selectionTotalWeight: "float"
|
|
18050
|
-
}),
|
|
18050
|
+
}), mr = j({
|
|
18051
18051
|
direction: "vec3",
|
|
18052
18052
|
throughput: "vec3",
|
|
18053
18053
|
combinedPdf: "float"
|
|
18054
|
-
}),
|
|
18054
|
+
}), hr = F(([e, t]) => {
|
|
18055
18055
|
let n = t.mul(12);
|
|
18056
|
-
return
|
|
18057
|
-
direction:
|
|
18058
|
-
color:
|
|
18056
|
+
return lr({
|
|
18057
|
+
direction: J(Q(e.element(n), e.element(n.add(1)), e.element(n.add(2)))),
|
|
18058
|
+
color: Q(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
|
|
18059
18059
|
intensity: e.element(n.add(6)),
|
|
18060
18060
|
angle: e.element(n.add(7)),
|
|
18061
|
-
goboIndex:
|
|
18061
|
+
goboIndex: U(e.element(n.add(8))),
|
|
18062
18062
|
goboIntensity: e.element(n.add(9)),
|
|
18063
18063
|
goboScale: e.element(n.add(10))
|
|
18064
18064
|
});
|
|
18065
|
-
}),
|
|
18066
|
-
let n = t.mul(16), r =
|
|
18067
|
-
return
|
|
18068
|
-
position:
|
|
18065
|
+
}), gr = F(([e, t]) => {
|
|
18066
|
+
let n = t.mul(16), r = Q(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = Q(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a = B(r, i), o = e.element(n.add(15)), s = W(a).mul(4);
|
|
18067
|
+
return ur({
|
|
18068
|
+
position: Q(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
|
|
18069
18069
|
u: r,
|
|
18070
18070
|
v: i,
|
|
18071
|
-
color:
|
|
18071
|
+
color: Q(e.element(n.add(9)), e.element(n.add(10)), e.element(n.add(11))),
|
|
18072
18072
|
intensity: e.element(n.add(12)),
|
|
18073
18073
|
normalize: e.element(n.add(13)),
|
|
18074
18074
|
spread: e.element(n.add(14)),
|
|
18075
18075
|
shape: o,
|
|
18076
|
-
normal:
|
|
18077
|
-
area:
|
|
18076
|
+
normal: J(a),
|
|
18077
|
+
area: Y(o.greaterThan(.5), s.mul(.7853981633974483), s)
|
|
18078
18078
|
});
|
|
18079
|
-
}),
|
|
18079
|
+
}), _r = F(([e, t]) => {
|
|
18080
18080
|
let n = t.mul(10);
|
|
18081
|
-
return
|
|
18082
|
-
position:
|
|
18083
|
-
color:
|
|
18081
|
+
return dr({
|
|
18082
|
+
position: Q(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
|
|
18083
|
+
color: Q(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
|
|
18084
18084
|
intensity: e.element(n.add(6)),
|
|
18085
18085
|
distance: e.element(n.add(7)),
|
|
18086
18086
|
decay: e.element(n.add(8)),
|
|
18087
18087
|
radius: e.element(n.add(9))
|
|
18088
18088
|
});
|
|
18089
|
-
}),
|
|
18089
|
+
}), vr = F(([e, t]) => {
|
|
18090
18090
|
let n = t.mul(20);
|
|
18091
|
-
return
|
|
18092
|
-
position:
|
|
18093
|
-
direction:
|
|
18094
|
-
color:
|
|
18091
|
+
return fr({
|
|
18092
|
+
position: Q(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
|
|
18093
|
+
direction: J(Q(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5)))),
|
|
18094
|
+
color: Q(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))),
|
|
18095
18095
|
intensity: e.element(n.add(9)),
|
|
18096
18096
|
angle: e.element(n.add(10)),
|
|
18097
18097
|
penumbra: e.element(n.add(11)),
|
|
18098
18098
|
distance: e.element(n.add(12)),
|
|
18099
18099
|
decay: e.element(n.add(13)),
|
|
18100
|
-
goboIndex:
|
|
18100
|
+
goboIndex: U(e.element(n.add(14))),
|
|
18101
18101
|
goboIntensity: e.element(n.add(15)),
|
|
18102
|
-
iesIndex:
|
|
18102
|
+
iesIndex: U(e.element(n.add(16))),
|
|
18103
18103
|
iesIntensity: e.element(n.add(17)),
|
|
18104
18104
|
radius: e.element(n.add(18))
|
|
18105
18105
|
});
|
|
18106
|
-
}),
|
|
18107
|
-
let { goboMaps: r } = w(n), i =
|
|
18108
|
-
return
|
|
18109
|
-
let n = e.direction.toVar(), a = t.negate().toVar(), o =
|
|
18110
|
-
|
|
18111
|
-
let t =
|
|
18106
|
+
}), yr = /* @__PURE__ */ Ot("\n fn isDirectionValid( direction: vec3f, surfaceNormal: vec3f ) -> bool {\n return dot( direction, surfaceNormal ) > 0.0f;\n }\n"), br = /* @__PURE__ */ Ot("\n fn getDistanceAttenuation( lightDistance: f32, cutoffDistance: f32, decayExponent: f32 ) -> f32 {\n var distanceFalloff = 1.0f / max( pow( lightDistance, decayExponent ), 0.01f );\n if ( cutoffDistance > 0.0f ) {\n let r = lightDistance / cutoffDistance;\n let r2 = r * r;\n let ratio = r2 * r2;\n let window = clamp( 1.0f - ratio, 0.0f, 1.0f );\n distanceFalloff *= window * window;\n }\n return distanceFalloff;\n }\n"), xr = /* @__PURE__ */ Ot("\n fn getSpotAttenuation( coneCosine: f32, blend: f32, angleCosine: f32 ) -> f32 {\n let smoothWidth = ( 1.0 - coneCosine ) * blend;\n if ( smoothWidth <= 0.0 ) { return 1.0; }\n return smoothstep( 0.0, 1.0, ( angleCosine - coneCosine ) / smoothWidth );\n }\n"), Sr = /* @__PURE__ */ F(([e, t], n) => {
|
|
18107
|
+
let { goboMaps: r } = w(n), i = H(1).toVar();
|
|
18108
|
+
return I(e.goboIndex.greaterThanEqual(U(0)), () => {
|
|
18109
|
+
let n = e.direction.toVar(), a = t.negate().toVar(), o = V(a, n).toVar();
|
|
18110
|
+
I(o.greaterThan(0), () => {
|
|
18111
|
+
let t = J(B(Y(L(n.z).lessThan(.999), Q(0, 0, 1), Q(1, 0, 0)), n)).toVar(), s = B(n, t), c = H(1).div(o).toVar(), l = V(a, t).mul(c), u = V(a, s).mul(c), d = H(.5).div(G(St(e.angle), H(1e-4))).toVar(), f = z(l.mul(d).add(.5), H(0), H(1)), p = z(u.mul(d).add(.5), H(0), H(1));
|
|
18112
18112
|
if (r) {
|
|
18113
|
-
let t = Ct(r, Dt(f, p)).depth(e.goboIndex), n =
|
|
18114
|
-
i.assign(
|
|
18113
|
+
let t = Ct(r, Dt(f, p)).depth(e.goboIndex), n = K(t.r, t.a), a = Y(e.goboIntensity.lessThan(0), H(1).sub(n), n), o = z(L(e.goboIntensity), H(0), H(1));
|
|
18114
|
+
i.assign(q(H(1), a, o));
|
|
18115
18115
|
}
|
|
18116
18116
|
}).Else(() => {
|
|
18117
18117
|
i.assign(0);
|
|
18118
18118
|
});
|
|
18119
18119
|
}), i;
|
|
18120
|
-
}),
|
|
18121
|
-
let { goboMaps: r } = w(n), i =
|
|
18122
|
-
return
|
|
18123
|
-
let n = e.direction.toVar(), a =
|
|
18120
|
+
}), Cr = /* @__PURE__ */ F(([e, t], n) => {
|
|
18121
|
+
let { goboMaps: r } = w(n), i = H(1).toVar();
|
|
18122
|
+
return I(e.goboIndex.greaterThanEqual(U(0)), () => {
|
|
18123
|
+
let n = e.direction.toVar(), a = J(B(Y(L(n.z).lessThan(.999), Q(0, 0, 1), Q(1, 0, 0)), n)).toVar(), o = B(n, a), s = H(1).div(G(e.goboScale, H(1e-4))).toVar(), c = V(t, a).mul(s).add(.5).toVar(), l = V(t, o).mul(s).add(.5).toVar(), u = c.sub(c.floor()), d = l.sub(l.floor());
|
|
18124
18124
|
if (r) {
|
|
18125
|
-
let t = Ct(r, Dt(u, d)).depth(e.goboIndex), n =
|
|
18126
|
-
i.assign(
|
|
18125
|
+
let t = Ct(r, Dt(u, d)).depth(e.goboIndex), n = K(t.r, t.a), a = Y(e.goboIntensity.lessThan(0), H(1).sub(n), n), o = z(L(e.goboIntensity), H(0), H(1));
|
|
18126
|
+
i.assign(q(H(1), a, o));
|
|
18127
18127
|
}
|
|
18128
18128
|
}), i;
|
|
18129
|
-
}),
|
|
18130
|
-
let { iesProfiles: r } = w(n), i =
|
|
18131
|
-
return
|
|
18132
|
-
let n = e.direction.toVar(), a = t.negate().toVar(), o =
|
|
18129
|
+
}), wr = /* @__PURE__ */ F(([e, t], n) => {
|
|
18130
|
+
let { iesProfiles: r } = w(n), i = H(1).toVar();
|
|
18131
|
+
return I(e.iesIndex.greaterThanEqual(U(0)), () => {
|
|
18132
|
+
let n = e.direction.toVar(), a = t.negate().toVar(), o = z(Ze(z(V(a, n), H(-1), H(1))).div(H(Math.PI)), H(0), H(1)), s = J(B(Y(L(n.z).lessThan(.999), Q(0, 0, 1), Q(1, 0, 0)), n)).toVar(), c = B(n, s), l = V(a, s), u = Qe(V(a, c), l).div(H(2 * Math.PI)).add(.5);
|
|
18133
18133
|
if (r) {
|
|
18134
|
-
let t = Ct(r, Dt(u, o)).depth(e.iesIndex).r, n =
|
|
18135
|
-
i.assign(
|
|
18134
|
+
let t = Ct(r, Dt(u, o)).depth(e.iesIndex).r, n = z(e.iesIntensity, H(0), H(1));
|
|
18135
|
+
i.assign(q(H(1), t, n));
|
|
18136
18136
|
}
|
|
18137
18137
|
}), i;
|
|
18138
|
-
}),
|
|
18139
|
-
let r = e.normal, i =
|
|
18140
|
-
return
|
|
18141
|
-
let o =
|
|
18142
|
-
|
|
18143
|
-
let r = t.add(n.mul(s)).sub(e.position), i =
|
|
18144
|
-
|
|
18138
|
+
}), Tr = /* @__PURE__ */ Ot("\n fn sampleCone( direction: vec3f, halfAngle: f32, xi: vec2f ) -> vec3f {\n let cosHalfAngle = cos( halfAngle );\n let cosTheta = cosHalfAngle + xi.x * ( 1.0f - cosHalfAngle );\n let sinTheta = sqrt( 1.0f - cosTheta * cosTheta );\n let phi = 6.28318530717958647692f * xi.y;\n // Create local coordinate system\n let up = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( 0.0f, 0.0f, 1.0f ), abs( direction.z ) < 0.999f );\n let tangent = normalize( cross( up, direction ) );\n let bitangent = cross( direction, tangent );\n // Convert to world space\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( tangent * localDir.x + bitangent * localDir.y + direction * localDir.z );\n }\n"), Er = F(([e, t, n]) => {
|
|
18139
|
+
let r = e.normal, i = V(r, n), a = H(-1).toVar();
|
|
18140
|
+
return I(i.lessThan(-1e-4), () => {
|
|
18141
|
+
let o = H(1).div(i), s = V(e.position.sub(t), r).mul(o).toVar();
|
|
18142
|
+
I(s.greaterThan(.001), () => {
|
|
18143
|
+
let r = t.add(n.mul(s)).sub(e.position), i = W(e.u), o = W(e.v), c = e.u.div(i), l = e.v.div(o), u = V(r, c).div(i), d = V(r, l).div(o);
|
|
18144
|
+
I(Y(e.shape.greaterThan(.5), u.mul(u).add(d.mul(d)).lessThanEqual(1), L(u).lessThanEqual(1).and(L(d).lessThanEqual(1))), () => {
|
|
18145
18145
|
a.assign(s);
|
|
18146
18146
|
});
|
|
18147
18147
|
});
|
|
18148
18148
|
}), a;
|
|
18149
|
-
}),
|
|
18149
|
+
}), Dr = /* @__PURE__ */ Ot("\n fn sphQuadSolidAngle( o: vec3f, s: vec3f, ex: vec3f, ey: vec3f ) -> f32 {\n let PI = 3.141592653589793f;\n let exl = length( ex );\n let eyl = length( ey );\n let x = ex / max( exl, 1e-12f );\n let y = ey / max( eyl, 1e-12f );\n var z = cross( x, y );\n let d = s - o;\n var z0 = dot( d, z );\n if ( z0 > 0.0f ) { z = -z; z0 = -z0; }\n let x0 = dot( d, x );\n let y0 = dot( d, y );\n let x1 = x0 + exl;\n let y1 = y0 + eyl;\n let v00 = vec3f( x0, y0, z0 );\n let v01 = vec3f( x0, y1, z0 );\n let v10 = vec3f( x1, y0, z0 );\n let v11 = vec3f( x1, y1, z0 );\n let n0 = normalize( cross( v00, v10 ) );\n let n1 = normalize( cross( v10, v11 ) );\n let n2 = normalize( cross( v11, v01 ) );\n let n3 = normalize( cross( v01, v00 ) );\n let g0 = acos( clamp( -dot( n0, n1 ), -1.0f, 1.0f ) );\n let g1 = acos( clamp( -dot( n1, n2 ), -1.0f, 1.0f ) );\n let g2 = acos( clamp( -dot( n2, n3 ), -1.0f, 1.0f ) );\n let g3 = acos( clamp( -dot( n3, n0 ), -1.0f, 1.0f ) );\n return g0 + g1 + g2 + g3 - 2.0f * PI;\n }\n"), Or = /* @__PURE__ */ Ot("\n fn sampleSphQuad( o: vec3f, s: vec3f, ex: vec3f, ey: vec3f, uv: vec2f ) -> vec4f {\n let PI = 3.141592653589793f;\n let exl = length( ex );\n let eyl = length( ey );\n let x = ex / max( exl, 1e-12f );\n let y = ey / max( eyl, 1e-12f );\n var z = cross( x, y );\n let d = s - o;\n var z0 = dot( d, z );\n if ( z0 > 0.0f ) { z = -z; z0 = -z0; }\n let z0sq = z0 * z0;\n let x0 = dot( d, x );\n let y0 = dot( d, y );\n let x1 = x0 + exl;\n let y1 = y0 + eyl;\n let y0sq = y0 * y0;\n let y1sq = y1 * y1;\n let v00 = vec3f( x0, y0, z0 );\n let v01 = vec3f( x0, y1, z0 );\n let v10 = vec3f( x1, y0, z0 );\n let v11 = vec3f( x1, y1, z0 );\n let n0 = normalize( cross( v00, v10 ) );\n let n1 = normalize( cross( v10, v11 ) );\n let n2 = normalize( cross( v11, v01 ) );\n let n3 = normalize( cross( v01, v00 ) );\n let g0 = acos( clamp( -dot( n0, n1 ), -1.0f, 1.0f ) );\n let g1 = acos( clamp( -dot( n1, n2 ), -1.0f, 1.0f ) );\n let g2 = acos( clamp( -dot( n2, n3 ), -1.0f, 1.0f ) );\n let g3 = acos( clamp( -dot( n3, n0 ), -1.0f, 1.0f ) );\n let b0 = n0.z;\n let b1 = n2.z;\n let b0sq = b0 * b0;\n let k = 2.0f * PI - g2 - g3;\n let S = g0 + g1 + g2 + g3 - 2.0f * PI;\n\n if ( S <= 1e-5f ) {\n return vec4f( 0.0f, 0.0f, 0.0f, -1.0f );\n }\n\n let au = uv.x * S + k;\n let sinAu = sin( au );\n let fu = ( cos( au ) * b0 - b1 ) / max( abs( sinAu ), 1e-7f ) * sign( sinAu );\n var cu = select( -1.0f, 1.0f, fu >= 0.0f ) / sqrt( fu * fu + b0sq );\n cu = clamp( cu, -1.0f, 1.0f );\n\n var xu = -( cu * z0 ) / max( sqrt( 1.0f - cu * cu ), 1e-7f );\n xu = clamp( xu, x0, x1 );\n\n let dd = sqrt( xu * xu + z0sq );\n let h0 = y0 / sqrt( dd * dd + y0sq );\n let h1 = y1 / sqrt( dd * dd + y1sq );\n let hv = h0 + uv.y * ( h1 - h0 );\n let hv2 = hv * hv;\n var yv = y1;\n if ( hv2 < 1.0f - 1e-6f ) {\n yv = ( hv * dd ) / sqrt( 1.0f - hv2 );\n }\n\n let p = o + xu * x + yv * y + z0 * z;\n return vec4f( p, 1.0f / S );\n }\n"), kr = j({
|
|
18150
18150
|
didScatter: "bool",
|
|
18151
18151
|
t: "float",
|
|
18152
18152
|
weight: "vec3"
|
|
18153
|
-
}),
|
|
18153
|
+
}), Ar = j({
|
|
18154
18154
|
sigmaT: "vec3",
|
|
18155
18155
|
sigmaS: "vec3",
|
|
18156
18156
|
sigmaA: "vec3"
|
|
18157
|
-
}),
|
|
18157
|
+
}), jr = j({
|
|
18158
18158
|
direction: "vec3",
|
|
18159
18159
|
throughput: "vec3",
|
|
18160
18160
|
didReflect: "bool"
|
|
18161
|
-
}),
|
|
18162
|
-
let r =
|
|
18163
|
-
|
|
18164
|
-
r.assign(
|
|
18161
|
+
}), Mr = F(([e, t, n]) => {
|
|
18162
|
+
let r = H(0).toVar();
|
|
18163
|
+
I(L(t).lessThan(.001), () => {
|
|
18164
|
+
r.assign(H(1).sub(n.x.mul(2)));
|
|
18165
18165
|
}).Else(() => {
|
|
18166
|
-
let e =
|
|
18167
|
-
r.assign(
|
|
18168
|
-
}), r.assign(
|
|
18169
|
-
let i =
|
|
18170
|
-
return
|
|
18171
|
-
}),
|
|
18172
|
-
let l =
|
|
18173
|
-
|
|
18166
|
+
let e = G(H(1).sub(t).add(t.mul(2).mul(n.x)), 1e-4), i = H(1).sub(t.mul(t)).div(e);
|
|
18167
|
+
r.assign(H(1).add(t.mul(t)).sub(i.mul(i)).div(t.mul(2)));
|
|
18168
|
+
}), r.assign(z(r, -1, 1));
|
|
18169
|
+
let i = X(G(H(0), H(1).sub(r.mul(r)))), a = H(O).mul(n.y);
|
|
18170
|
+
return be({ N: e }).mul(Q(i.mul(rt(a)), i.mul(ht(a)), r));
|
|
18171
|
+
}), Nr = F(([e, t, n, r, i, a, o, s, c]) => {
|
|
18172
|
+
let l = G(n, Q(1e-4)), u = l.div(l.x.add(l.y).add(l.z)).toVar(), d = N(a, U(0), c.add(U(10)), i, o, s).toVar(), f = H(0).toVar();
|
|
18173
|
+
I(d.lessThan(u.x), () => {
|
|
18174
18174
|
f.assign(e.x);
|
|
18175
18175
|
}).ElseIf(d.lessThan(u.x.add(u.y)), () => {
|
|
18176
18176
|
f.assign(e.y);
|
|
18177
18177
|
}).Else(() => {
|
|
18178
18178
|
f.assign(e.z);
|
|
18179
18179
|
});
|
|
18180
|
-
let p =
|
|
18181
|
-
return
|
|
18182
|
-
let n =
|
|
18183
|
-
_.assign(t.mul(n).div(
|
|
18180
|
+
let p = N(a, U(0), c.add(U(9)), i, o, s).toVar(), m = lt(G(H(1).sub(p), 1e-6)).negate().div(G(f, 1e-6)).toVar(), h = m.lessThan(r).toVar(), g = m.toVar(), _ = Q(0).toVar();
|
|
18181
|
+
return I(h, () => {
|
|
18182
|
+
let n = it(e.mul(m).negate()).toVar(), r = V(u, e.mul(n));
|
|
18183
|
+
_.assign(t.mul(n).div(G(r, 1e-6)));
|
|
18184
18184
|
}).Else(() => {
|
|
18185
|
-
let t =
|
|
18186
|
-
_.assign(t.div(
|
|
18187
|
-
}),
|
|
18185
|
+
let t = it(e.mul(r).negate()).toVar(), n = V(u, t);
|
|
18186
|
+
_.assign(t.div(G(n, 1e-6))), g.assign(r);
|
|
18187
|
+
}), kr({
|
|
18188
18188
|
didScatter: h,
|
|
18189
18189
|
t: g,
|
|
18190
18190
|
weight: _
|
|
18191
18191
|
});
|
|
18192
|
-
}),
|
|
18193
|
-
let r =
|
|
18194
|
-
return
|
|
18192
|
+
}), Pr = F(([e, t, n]) => {
|
|
18193
|
+
let r = G(t.mul(n), Q(1e-4)), i = Q(1).div(r), a = e.mul(i);
|
|
18194
|
+
return Ar({
|
|
18195
18195
|
sigmaT: i,
|
|
18196
18196
|
sigmaS: a,
|
|
18197
|
-
sigmaA:
|
|
18197
|
+
sigmaA: G(i.sub(a), Q(0))
|
|
18198
18198
|
});
|
|
18199
|
-
}),
|
|
18200
|
-
let d =
|
|
18201
|
-
direction:
|
|
18202
|
-
throughput:
|
|
18199
|
+
}), Fr = F(([e, t, n, r, i, a, o, s, c, l, u]) => {
|
|
18200
|
+
let d = jr({
|
|
18201
|
+
direction: Q(0),
|
|
18202
|
+
throughput: Q(1),
|
|
18203
18203
|
didReflect: !1
|
|
18204
|
-
}).toVar(), f =
|
|
18205
|
-
return d.didReflect.assign(y),
|
|
18206
|
-
let t =
|
|
18204
|
+
}).toVar(), f = Y(r, t, t.negate()).toVar(), p = Y(r, l, n.ior).toVar(), m = Y(r, n.ior, u).toVar(), h = L(V(f, e)), g = p.mul(p).div(G(m.mul(m), he)).mul(H(1).sub(h.mul(h))).greaterThan(1).toVar(), _ = bn(h, m.div(G(p, he))).toVar(), v = z(_, .02, .98).toVar(), y = g.or(N(a, U(0), c.add(U(11)), i, o, s).lessThan(v)).toVar();
|
|
18205
|
+
return d.didReflect.assign(y), I(y, () => {
|
|
18206
|
+
let t = je(a, U(0), c.add(U(5)), i, o, s), r = ft(e, sn({
|
|
18207
18207
|
N: f,
|
|
18208
18208
|
roughness: n.roughness,
|
|
18209
18209
|
Xi: t
|
|
18210
18210
|
})).toVar();
|
|
18211
|
-
|
|
18212
|
-
r.assign(
|
|
18213
|
-
}), d.direction.assign(r), d.throughput.assign(
|
|
18211
|
+
I(V(r, f).lessThanEqual(0), () => {
|
|
18212
|
+
r.assign(ft(e, f));
|
|
18213
|
+
}), d.direction.assign(r), d.throughput.assign(Q(_.div(G(v, .02))));
|
|
18214
18214
|
}).Else(() => {
|
|
18215
|
-
let t =
|
|
18216
|
-
|
|
18217
|
-
d.direction.assign(
|
|
18215
|
+
let t = pt(e, f, p.div(G(m, he))).toVar();
|
|
18216
|
+
I(V(t, t).lessThan(1e-4), () => {
|
|
18217
|
+
d.direction.assign(ft(e, f)), d.didReflect.assign(!0);
|
|
18218
18218
|
}).Else(() => {
|
|
18219
|
-
d.direction.assign(
|
|
18220
|
-
let e = p.mul(p).div(
|
|
18221
|
-
d.throughput.assign(
|
|
18219
|
+
d.direction.assign(J(t));
|
|
18220
|
+
let e = p.mul(p).div(G(m.mul(m), he));
|
|
18221
|
+
d.throughput.assign(Q(H(1).sub(_).div(G(H(1).sub(v), .02)).mul(e)));
|
|
18222
18222
|
});
|
|
18223
18223
|
}), d;
|
|
18224
|
-
}),
|
|
18224
|
+
}), Ir = j({
|
|
18225
18225
|
direction: "vec3",
|
|
18226
18226
|
throughput: "vec3",
|
|
18227
18227
|
didReflect: "bool",
|
|
18228
18228
|
pathWavelength: "float"
|
|
18229
|
-
}),
|
|
18229
|
+
}), Lr = j({
|
|
18230
18230
|
continueRay: "bool",
|
|
18231
18231
|
isTransmissive: "bool",
|
|
18232
18232
|
isAlphaSkip: "bool",
|
|
@@ -18244,120 +18244,120 @@ j({
|
|
|
18244
18244
|
attenuationDistance: "float",
|
|
18245
18245
|
dispersion: "float"
|
|
18246
18246
|
});
|
|
18247
|
-
var
|
|
18247
|
+
var Rr = j({
|
|
18248
18248
|
wavelength: "float",
|
|
18249
18249
|
ior: "float",
|
|
18250
18250
|
colorWeight: "vec3"
|
|
18251
|
-
}),
|
|
18251
|
+
}), zr = j({
|
|
18252
18252
|
direction: "vec3",
|
|
18253
18253
|
halfVector: "vec3",
|
|
18254
18254
|
didReflect: "bool",
|
|
18255
18255
|
pdf: "float",
|
|
18256
18256
|
colorWeight: "vec3",
|
|
18257
18257
|
pathWavelength: "float"
|
|
18258
|
-
}),
|
|
18258
|
+
}), Br = /* @__PURE__ */ F(([e, t, n]) => {
|
|
18259
18259
|
let r = n.div(1e3);
|
|
18260
18260
|
return e.add(t.mul(.03).div(r.mul(r)));
|
|
18261
|
-
}),
|
|
18262
|
-
let i =
|
|
18263
|
-
return
|
|
18264
|
-
}),
|
|
18265
|
-
let r =
|
|
18266
|
-
return
|
|
18261
|
+
}), Vr = /* @__PURE__ */ F(([e, t, n, r]) => {
|
|
18262
|
+
let i = Y(e.lessThan(t), n, r), a = e.sub(t).mul(i);
|
|
18263
|
+
return it(H(-.5).mul(a).mul(a));
|
|
18264
|
+
}), Hr = /* @__PURE__ */ F(([e]) => Q(Vr(e, 442, .0624, .0374).mul(.362).add(Vr(e, 599.8, .0264, .0323).mul(1.056)).sub(Vr(e, 501.1, .049, .0382).mul(.065)), Vr(e, 568.8, .0213, .0247).mul(.821).add(Vr(e, 530.9, .0613, .0322).mul(.286)), Vr(e, 437, .0845, .0278).mul(1.217).add(Vr(e, 459, .0385, .0725).mul(.681)))), Ur = F(([e, t, n]) => {
|
|
18265
|
+
let r = q(H(380), H(700), n).toVar(), i = Br(e, t, r), a = Hr(r).toVar();
|
|
18266
|
+
return Rr({
|
|
18267
18267
|
wavelength: r,
|
|
18268
18268
|
ior: i,
|
|
18269
|
-
colorWeight:
|
|
18269
|
+
colorWeight: G(Q(a.x.mul(3.2406).sub(a.y.mul(1.5372)).sub(a.z.mul(.4986)), a.x.mul(-.9689).add(a.y.mul(1.8758)).add(a.z.mul(.0415)), a.x.mul(.0557).sub(a.y.mul(.204)).add(a.z.mul(1.057))), Q(0)).mul(Q(1.819, 2.773, 2.928))
|
|
18270
18270
|
});
|
|
18271
|
-
}),
|
|
18272
|
-
let m =
|
|
18273
|
-
direction:
|
|
18274
|
-
halfVector:
|
|
18271
|
+
}), Wr = /* @__PURE__ */ Ot("\n fn calculateBeerLawAbsorption( attenuationColor: vec3f, attenuationDistance: f32, pathLength: f32 ) -> vec3f {\n if ( attenuationDistance <= 0.0f ) { return vec3f( 1.0f ); }\n let absorption = -log( max( attenuationColor, vec3f( 0.001f ) ) ) / attenuationDistance;\n return exp( -absorption * pathLength );\n }\n"), Gr = F(([e, t, n, r, i, a, o, s, c, l, u, d, f], p) => {
|
|
18272
|
+
let m = pe(p), h = zr({
|
|
18273
|
+
direction: Q(0),
|
|
18274
|
+
halfVector: Q(0),
|
|
18275
18275
|
didReflect: !1,
|
|
18276
|
-
pdf:
|
|
18277
|
-
colorWeight:
|
|
18276
|
+
pdf: H(0),
|
|
18277
|
+
colorWeight: Q(1),
|
|
18278
18278
|
pathWavelength: c
|
|
18279
18279
|
}).toVar(), g = () => {
|
|
18280
|
-
let p =
|
|
18280
|
+
let p = G(me, r), g = sn({
|
|
18281
18281
|
N: t,
|
|
18282
18282
|
roughness: p,
|
|
18283
18283
|
Xi: o
|
|
18284
18284
|
}).toVar();
|
|
18285
18285
|
h.halfVector.assign(g);
|
|
18286
|
-
let _ =
|
|
18287
|
-
m.dispersion &&
|
|
18288
|
-
|
|
18289
|
-
let e =
|
|
18290
|
-
_.assign(
|
|
18286
|
+
let _ = Y(i, H(1).div(n), n).toVar();
|
|
18287
|
+
m.dispersion && I(a.greaterThan(0), () => {
|
|
18288
|
+
I(c.greaterThan(0), () => {
|
|
18289
|
+
let e = Br(n, a, c);
|
|
18290
|
+
_.assign(Y(i, H(1).div(e), e));
|
|
18291
18291
|
}).Else(() => {
|
|
18292
|
-
let e =
|
|
18293
|
-
_.assign(
|
|
18292
|
+
let e = Rr.wrap(Ur(n, a, N(l, U(0), f.add(U(5)), s, u, d)));
|
|
18293
|
+
_.assign(Y(i, H(1).div(e.ior), e.ior)), h.colorWeight.assign(e.colorWeight), h.pathWavelength.assign(e.wavelength);
|
|
18294
18294
|
});
|
|
18295
18295
|
});
|
|
18296
|
-
let v =
|
|
18297
|
-
|
|
18298
|
-
h.direction.assign(
|
|
18296
|
+
let v = z(V(g, e), .001, 1).toVar(), y = z(V(t, g), .001, 1).toVar(), b = Tn(y, p).toVar(), x = pt(e.negate(), g, _).toVar();
|
|
18297
|
+
I(V(x, x).lessThan(.001), () => {
|
|
18298
|
+
h.direction.assign(ft(e.negate(), g)), h.didReflect.assign(!0), h.pdf.assign(b.mul(y).div(G(H(4).mul(v), ce)));
|
|
18299
18299
|
}).Else(() => {
|
|
18300
18300
|
h.direction.assign(x), h.didReflect.assign(!1);
|
|
18301
|
-
let e =
|
|
18301
|
+
let e = z(V(g, x), .001, 1), t = v.add(_.mul(e)), n = L(e).div(t.mul(t));
|
|
18302
18302
|
h.pdf.assign(b.mul(y).mul(n));
|
|
18303
18303
|
});
|
|
18304
18304
|
};
|
|
18305
|
-
return m.dispersion ?
|
|
18305
|
+
return m.dispersion ? I(r.lessThanEqual(.05).and(a.greaterThan(0)), () => {
|
|
18306
18306
|
h.halfVector.assign(t), h.didReflect.assign(!1);
|
|
18307
|
-
let r = n, o =
|
|
18308
|
-
|
|
18309
|
-
let e =
|
|
18310
|
-
o.assign(
|
|
18307
|
+
let r = n, o = Y(i, H(1).div(r), r).toVar();
|
|
18308
|
+
I(c.greaterThan(0), () => {
|
|
18309
|
+
let e = Br(n, a, c);
|
|
18310
|
+
o.assign(Y(i, H(1).div(e), e));
|
|
18311
18311
|
}).Else(() => {
|
|
18312
|
-
let e =
|
|
18313
|
-
o.assign(
|
|
18312
|
+
let e = Rr.wrap(Ur(n, a, N(l, U(0), f.add(U(5)), s, u, d)));
|
|
18313
|
+
o.assign(Y(i, H(1).div(e.ior), e.ior)), h.colorWeight.assign(e.colorWeight), h.pathWavelength.assign(e.wavelength);
|
|
18314
18314
|
});
|
|
18315
|
-
let p =
|
|
18316
|
-
|
|
18317
|
-
h.direction.assign(
|
|
18315
|
+
let p = pt(e.negate(), t, o).toVar();
|
|
18316
|
+
I(V(p, p).lessThan(.001), () => {
|
|
18317
|
+
h.direction.assign(ft(e.negate(), t)), h.didReflect.assign(!0), h.pdf.assign(1);
|
|
18318
18318
|
}).Else(() => {
|
|
18319
18319
|
h.direction.assign(p), h.pdf.assign(1);
|
|
18320
18320
|
});
|
|
18321
18321
|
}).Else(g) : g(), h;
|
|
18322
|
-
}),
|
|
18323
|
-
let f =
|
|
18324
|
-
direction:
|
|
18325
|
-
throughput:
|
|
18322
|
+
}), Kr = F(([e, t, n, r, i, a, o, s, c, l, u, d]) => {
|
|
18323
|
+
let f = Ir({
|
|
18324
|
+
direction: Q(0),
|
|
18325
|
+
throughput: Q(1),
|
|
18326
18326
|
didReflect: !1,
|
|
18327
18327
|
pathWavelength: d
|
|
18328
|
-
}).toVar(), p =
|
|
18329
|
-
|
|
18328
|
+
}).toVar(), p = Y(r, t, t.negate()).toVar(), m = e.negate().toVar(), h = Y(r, l, n.ior).toVar(), g = Y(r, n.ior, u).toVar(), _ = L(V(p, e)), v = h.mul(h).div(g.mul(g)).mul(H(1).sub(_.mul(_))).greaterThan(1).toVar(), y = bn(_, g.div(h)).toVar(), b = H(0).toVar();
|
|
18329
|
+
I(v, () => {
|
|
18330
18330
|
b.assign(1);
|
|
18331
18331
|
}).Else(() => {
|
|
18332
|
-
let e = y, t =
|
|
18333
|
-
b.assign(
|
|
18332
|
+
let e = y, t = H(.95);
|
|
18333
|
+
b.assign(z(q(e, t, n.metalness), .05, .95));
|
|
18334
18334
|
});
|
|
18335
|
-
let x = v.or(
|
|
18335
|
+
let x = v.or(N(a, U(0), c.add(U(4)), i, o, s).lessThan(b)).toVar();
|
|
18336
18336
|
f.didReflect.assign(x);
|
|
18337
|
-
let S =
|
|
18338
|
-
return
|
|
18339
|
-
|
|
18340
|
-
let e =
|
|
18337
|
+
let S = je(a, U(0), c.add(U(4)), i, o, s).toVar();
|
|
18338
|
+
return I(x, () => {
|
|
18339
|
+
I(n.roughness.greaterThan(.05), () => {
|
|
18340
|
+
let e = zr.wrap(Gr(m, p, n.ior, n.roughness, r, H(0), S, i, H(0), a, o, s, c));
|
|
18341
18341
|
f.direction.assign(e.direction);
|
|
18342
18342
|
}).Else(() => {
|
|
18343
|
-
f.direction.assign(
|
|
18344
|
-
}), f.throughput.assign(n.color.xyz.mul(y).div(
|
|
18343
|
+
f.direction.assign(ft(e, p));
|
|
18344
|
+
}), f.throughput.assign(n.color.xyz.mul(y).div(G(b, .05)));
|
|
18345
18345
|
}).Else(() => {
|
|
18346
|
-
|
|
18347
|
-
let e =
|
|
18348
|
-
f.pathWavelength.assign(e.pathWavelength),
|
|
18349
|
-
f.direction.assign(e.direction), f.didReflect.assign(!0), f.throughput.assign(n.color.xyz.div(
|
|
18346
|
+
I(n.roughness.greaterThan(.05).or(n.dispersion.greaterThan(0)), () => {
|
|
18347
|
+
let e = zr.wrap(Gr(m, p, n.ior, n.roughness, r, n.dispersion, S, i, d, a, o, s, c));
|
|
18348
|
+
f.pathWavelength.assign(e.pathWavelength), I(e.didReflect, () => {
|
|
18349
|
+
f.direction.assign(e.direction), f.didReflect.assign(!0), f.throughput.assign(n.color.xyz.div(G(H(1).sub(b), .05)));
|
|
18350
18350
|
}).Else(() => {
|
|
18351
18351
|
f.direction.assign(e.direction), f.throughput.assign(e.colorWeight);
|
|
18352
18352
|
});
|
|
18353
18353
|
}).Else(() => {
|
|
18354
|
-
f.direction.assign(
|
|
18355
|
-
}),
|
|
18356
|
-
f.throughput.mulAssign(n.color.xyz), f.throughput.mulAssign(h.mul(h).div(
|
|
18354
|
+
f.direction.assign(pt(e, p, h.div(g))), f.throughput.assign(Q(1));
|
|
18355
|
+
}), I(f.didReflect.not(), () => {
|
|
18356
|
+
f.throughput.mulAssign(n.color.xyz), f.throughput.mulAssign(h.mul(h).div(G(g.mul(g), he))), f.throughput.mulAssign(H(1).sub(y).div(G(H(1).sub(b), .05)));
|
|
18357
18357
|
});
|
|
18358
18358
|
}), f;
|
|
18359
|
-
}),
|
|
18360
|
-
let m =
|
|
18359
|
+
}), qr = F(([e, t, n, r, i, a, o, s, c, l, u, d, f], p) => {
|
|
18360
|
+
let m = Lr({
|
|
18361
18361
|
continueRay: !1,
|
|
18362
18362
|
isTransmissive: !1,
|
|
18363
18363
|
isAlphaSkip: !1,
|
|
@@ -18365,439 +18365,956 @@ var Lr = j({
|
|
|
18365
18365
|
didReflect: !1,
|
|
18366
18366
|
entering: !1,
|
|
18367
18367
|
direction: e.direction,
|
|
18368
|
-
throughput:
|
|
18369
|
-
alpha:
|
|
18368
|
+
throughput: Q(1),
|
|
18369
|
+
alpha: H(1),
|
|
18370
18370
|
pathWavelength: f
|
|
18371
18371
|
}).toVar();
|
|
18372
|
-
return
|
|
18373
|
-
let h =
|
|
18374
|
-
|
|
18372
|
+
return I(r.alphaMode.equal(U(0)).and(r.transmission.lessThanEqual(0)).and(r.subsurface.lessThanEqual(0)), () => {}).Else(() => {
|
|
18373
|
+
let h = N(a, U(0), c.add(U(6)), i, o, s), g = N(a, U(0), c.add(U(7)), i, o, s), _ = Ae({ state: i }), v = R(!1).toVar();
|
|
18374
|
+
I(r.alphaMode.equal(U(2)), () => {
|
|
18375
18375
|
let t = r.color.a.mul(r.opacity);
|
|
18376
|
-
|
|
18377
|
-
m.continueRay.assign(!0), m.direction.assign(e.direction), m.throughput.assign(
|
|
18376
|
+
I(h.greaterThan(t), () => {
|
|
18377
|
+
m.continueRay.assign(!0), m.direction.assign(e.direction), m.throughput.assign(Q(1)), m.alpha.assign(0), m.isAlphaSkip.assign(!0), v.assign(!0);
|
|
18378
18378
|
}).Else(() => {
|
|
18379
18379
|
m.alpha.assign(t);
|
|
18380
18380
|
});
|
|
18381
|
-
}),
|
|
18382
|
-
let t =
|
|
18383
|
-
|
|
18384
|
-
m.continueRay.assign(!0), m.direction.assign(e.direction), m.throughput.assign(
|
|
18381
|
+
}), I(v.not().and(r.alphaMode.equal(U(1))), () => {
|
|
18382
|
+
let t = Y(r.alphaTest.greaterThan(0), r.alphaTest, H(.5));
|
|
18383
|
+
I(r.color.a.mul(r.opacity).lessThan(t), () => {
|
|
18384
|
+
m.continueRay.assign(!0), m.direction.assign(e.direction), m.throughput.assign(Q(1)), m.alpha.assign(0), m.isAlphaSkip.assign(!0), v.assign(!0);
|
|
18385
18385
|
}).Else(() => {
|
|
18386
18386
|
m.alpha.assign(1);
|
|
18387
18387
|
});
|
|
18388
|
-
}),
|
|
18389
|
-
|
|
18390
|
-
let i =
|
|
18391
|
-
m.direction.assign(i.direction), m.throughput.assign(i.throughput), m.continueRay.assign(!0), m.isTransmissive.assign(!0), m.didReflect.assign(i.didReflect), m.entering.assign(n), m.alpha.assign(
|
|
18388
|
+
}), I(v.not().and(r.transmission.greaterThan(0)).and(l.greaterThan(U(0))), () => {
|
|
18389
|
+
I(g.lessThan(r.transmission), () => {
|
|
18390
|
+
let i = Ir.wrap(Kr(e.direction, t, r, n, _, a, o, s, c, u, d, f));
|
|
18391
|
+
m.direction.assign(i.direction), m.throughput.assign(i.throughput), m.continueRay.assign(!0), m.isTransmissive.assign(!0), m.didReflect.assign(i.didReflect), m.entering.assign(n), m.alpha.assign(H(1).sub(r.transmission)), m.pathWavelength.assign(i.pathWavelength);
|
|
18392
18392
|
});
|
|
18393
|
-
}),
|
|
18394
|
-
|
|
18395
|
-
let l =
|
|
18393
|
+
}), pe(p).subsurface && I(v.not().and(r.subsurface.greaterThan(0)), () => {
|
|
18394
|
+
I(n.not().or(N(a, U(0), c.add(U(8)), i, o, s).lessThan(r.subsurface)), () => {
|
|
18395
|
+
let l = jr.wrap(Fr(e.direction, t, r, n, i, a, o, s, c, u, d)).toVar();
|
|
18396
18396
|
m.direction.assign(l.direction), m.throughput.assign(l.throughput), m.continueRay.assign(!0), m.isSubsurface.assign(!0), m.didReflect.assign(l.didReflect), m.entering.assign(n), m.alpha.assign(1);
|
|
18397
18397
|
});
|
|
18398
18398
|
});
|
|
18399
18399
|
}), m;
|
|
18400
|
-
}),
|
|
18401
|
-
let
|
|
18402
|
-
return
|
|
18403
|
-
|
|
18404
|
-
|
|
18400
|
+
}), Jr = Q(...Fe), Yr = Q(...Fe.map((e) => (e + 2) / 2)), Xr = /* @__PURE__ */ F(([e, t, n, r]) => {
|
|
18401
|
+
let i = Q(0).toVar();
|
|
18402
|
+
return I(V(e, t).greaterThanEqual(r.x).and(e.y.greaterThanEqual(r.w.negate())), () => {
|
|
18403
|
+
let a = B(e, t), o = X(G(H(1).sub(V(a, a).mul(r.z)), 1e-8));
|
|
18404
|
+
i.assign(n.mul(dt(Q(o), Jr)).mul(Yr));
|
|
18405
|
+
}), i;
|
|
18406
|
+
}), Zr = /* @__PURE__ */ F(([e, t, n]) => {
|
|
18407
|
+
let r = n.x.mul(t.y.mul(1 / (2 * Math.PI))), i = H(1).sub(r), a = X(G(r.mul(H(2).sub(r)), 0)), o = n.y.mul(2 * Math.PI), s = e, c = J(B(Y(L(s.x).greaterThan(.9), Q(0, 1, 0), Q(1, 0, 0)), s)), l = B(s, c);
|
|
18408
|
+
return J(s.mul(i).add(c.mul(rt(o)).add(l.mul(ht(o))).mul(a)));
|
|
18409
|
+
}), Qr = j({
|
|
18410
|
+
position: "vec3",
|
|
18411
|
+
normal: "vec3",
|
|
18412
|
+
emission: "vec3",
|
|
18413
|
+
direction: "vec3",
|
|
18414
|
+
distance: "float",
|
|
18415
|
+
pdf: "float",
|
|
18416
|
+
area: "float",
|
|
18417
|
+
cosThetaLight: "float",
|
|
18418
|
+
valid: "bool"
|
|
18419
|
+
}), $r = j({
|
|
18420
|
+
position: "vec3",
|
|
18421
|
+
normal: "vec3",
|
|
18422
|
+
emission: "vec3",
|
|
18423
|
+
direction: "vec3",
|
|
18424
|
+
distance: "float",
|
|
18425
|
+
pdf: "float",
|
|
18426
|
+
area: "float",
|
|
18427
|
+
cosThetaLight: "float",
|
|
18428
|
+
valid: "bool",
|
|
18429
|
+
triangleIndex: "int",
|
|
18430
|
+
faceNormal: "vec3"
|
|
18431
|
+
}), ei = j({
|
|
18432
|
+
contribution: "vec3",
|
|
18433
|
+
hasEmissive: "bool",
|
|
18434
|
+
emissionOnly: "vec3",
|
|
18435
|
+
distance: "float"
|
|
18436
|
+
}), ti = F(([e, t, n, r]) => {
|
|
18437
|
+
let i = X(r.x), a = H(1).sub(i), o = r.y.mul(i), s = H(1).sub(a).sub(o);
|
|
18438
|
+
return e.mul(a).add(t.mul(o)).add(n.mul(s));
|
|
18439
|
+
}), ni = F(([e, t, n]) => W(B(t.sub(e), n.sub(e))).mul(.5)), ri = F(([e, t, n, r]) => {
|
|
18440
|
+
let i = J(e.sub(r)), a = J(t.sub(r)), o = J(n.sub(r)), s = L(V(i, B(a, o))), c = H(1).add(V(a, o)).add(V(i, o)).add(V(i, a));
|
|
18441
|
+
return G(H(2).mul(Qe(s, G(c, H(1e-10)))), H(0));
|
|
18442
|
+
}), ii = F(([e, t, n, r]) => {
|
|
18443
|
+
let i = t.sub(e), a = n.sub(e), o = n.sub(t), s = G(V(i, i), G(V(a, a), V(o, o))), c = B(i, a), l = V(c, c), u = R(!1).toVar();
|
|
18444
|
+
return I(l.greaterThan(1e-20), () => {
|
|
18445
|
+
let t = V(c, r.sub(e)), n = t.mul(t).div(l), i = s.mul(s).lessThan(l.mul(64));
|
|
18446
|
+
u.assign(s.greaterThan(n).and(i));
|
|
18447
|
+
}), u;
|
|
18448
|
+
}), ai = j({
|
|
18449
|
+
direction: "vec3",
|
|
18450
|
+
position: "vec3",
|
|
18451
|
+
solidAngle: "float",
|
|
18452
|
+
valid: "bool"
|
|
18453
|
+
}), oi = F(([e]) => {
|
|
18454
|
+
let t = W(e);
|
|
18455
|
+
return Y(t.greaterThan(1e-10), e.div(t), Q(0));
|
|
18456
|
+
}), si = F(([e, t, n, r, i]) => {
|
|
18457
|
+
let a = ai({
|
|
18458
|
+
direction: Q(0),
|
|
18459
|
+
position: Q(0),
|
|
18460
|
+
solidAngle: H(0),
|
|
18461
|
+
valid: !1
|
|
18462
|
+
}).toVar(), o = J(e.sub(r)), s = J(t.sub(r)), c = J(n.sub(r)), l = ri(e, t, n, r);
|
|
18463
|
+
return a.solidAngle.assign(l), I(l.greaterThan(1e-7), () => {
|
|
18464
|
+
let u = z(V(oi(B(o, s)), oi(B(o, c))), -1, 1), d = X(G(H(1).sub(u.mul(u)), 0)), f = Ze(u), p = i.x.mul(l).sub(f), m = ht(p), h = rt(p), g = z(V(o, s), -1, 1), _ = h.sub(u), v = m.add(d.mul(g)), y = v.mul(h).sub(_.mul(m)).mul(u).sub(v), b = v.mul(m).add(_.mul(h)).mul(d), x = z(Y(L(b).greaterThan(1e-10), y.div(b), H(1)), -1, 1), S = V(c, o), C = oi(c.sub(o.mul(S))), w = X(G(H(1).sub(x.mul(x)), 0)), T = J(o.mul(x).add(C.mul(w))), E = V(T, s), D = H(1).sub(i.y.mul(H(1).sub(E))), ee = X(G(H(1).sub(D.mul(D)), 0)), O = oi(T.sub(s.mul(E))), k = J(s.mul(D).add(O.mul(ee))), A = J(B(t.sub(e), n.sub(e))), j = V(A, k);
|
|
18465
|
+
I(L(j).greaterThan(1e-10), () => {
|
|
18466
|
+
let t = V(A, e.sub(r)).div(j);
|
|
18467
|
+
I(t.greaterThan(0), () => {
|
|
18468
|
+
a.direction.assign(k), a.position.assign(r.add(k.mul(t))), a.valid.assign(!0);
|
|
18469
|
+
});
|
|
18470
|
+
});
|
|
18471
|
+
}), a;
|
|
18472
|
+
}), ci = F(([e, t, n, r]) => {
|
|
18473
|
+
let i = n.sub(t), a = r.sub(t), o = e.sub(t), s = V(i, i), c = V(i, a), l = V(a, a), u = V(o, i), d = V(o, a), f = H(1).div(G(s.mul(l).sub(c.mul(c)), H(1e-10))), p = l.mul(u).sub(c.mul(d)).mul(f), m = s.mul(d).sub(c.mul(u)).mul(f);
|
|
18474
|
+
return Q(H(1).sub(p).sub(m), p, m);
|
|
18475
|
+
}), li = F(([e, t, n, r]) => {
|
|
18476
|
+
let i = X(r.x), a = H(1).sub(i), o = r.y.mul(i), s = H(1).sub(a).sub(o);
|
|
18477
|
+
return J(e.mul(a).add(t.mul(o)).add(n.mul(s)));
|
|
18478
|
+
});
|
|
18479
|
+
F(([e]) => e.emissiveIntensity.greaterThan(0).and(W(e.emissive).greaterThan(0)));
|
|
18480
|
+
var ui = 2, di = j({
|
|
18481
|
+
v0: "vec3",
|
|
18482
|
+
v1: "vec3",
|
|
18483
|
+
v2: "vec3",
|
|
18484
|
+
n0: "vec3",
|
|
18485
|
+
n1: "vec3",
|
|
18486
|
+
n2: "vec3",
|
|
18487
|
+
materialIndex: "int",
|
|
18488
|
+
side: "int"
|
|
18489
|
+
}), fi = F(([n, r, i, a]) => {
|
|
18490
|
+
let o = t(r, n, 0).toVar(), s = t(r, n, 1).toVar(), c = t(r, n, 2).toVar(), l = t(r, n, 4), u = wt(o.xyz).toVar(), d = wt(s.xyz).toVar(), p = wt(c.xyz).toVar(), m = _(o.w).toVar(), h = _(s.w).toVar(), g = _(c.w).toVar();
|
|
18491
|
+
return I(a.greaterThanEqual(U(0)), () => {
|
|
18492
|
+
let t = e(i, a);
|
|
18493
|
+
u.assign(M(t, u)), d.assign(M(t, d)), p.assign(M(t, p)), m.assign(J(f(t, m))), h.assign(J(f(t, h))), g.assign(J(f(t, g)));
|
|
18494
|
+
}), di({
|
|
18495
|
+
v0: u,
|
|
18496
|
+
v1: d,
|
|
18497
|
+
v2: p,
|
|
18498
|
+
n0: m,
|
|
18499
|
+
n1: h,
|
|
18500
|
+
n2: g,
|
|
18501
|
+
materialIndex: U(l.z.bitAnd(Z(Pe))),
|
|
18502
|
+
side: Te(l.z)
|
|
18503
|
+
});
|
|
18504
|
+
}), pi = F(([e, t, r, i, a, o, s, c, l]) => {
|
|
18505
|
+
let u = di.wrap(fi(e, a, c, l)), d = ni(u.v0, u.v1, u.v2), f = n(o, u.materialIndex, U(fe.EMISSIVE_ROUGHNESS), te), p = n(o, u.materialIndex, U(fe.IOR_TRANSMISSION), te), m = G(f.x.mul(.2126).add(f.y.mul(.7152)).add(f.z.mul(.0722)).mul(p.a).mul(d), H(1e-10)).div(G(s, H(1e-10))), h = H(0).toVar();
|
|
18506
|
+
I(ii(u.v0, u.v1, u.v2, i), () => {
|
|
18507
|
+
let e = ri(u.v0, u.v1, u.v2, i);
|
|
18508
|
+
h.assign(m.div(G(e, H(1e-10))));
|
|
18509
|
+
}).Else(() => {
|
|
18510
|
+
let e = G(L(V(r, J(B(u.v1.sub(u.v0), u.v2.sub(u.v0))))), .001), n = t.mul(t), i = m.div(d);
|
|
18511
|
+
h.assign(i.mul(n).div(e));
|
|
18512
|
+
});
|
|
18513
|
+
let g = J(B(u.v1.sub(u.v0), u.v2.sub(u.v0)));
|
|
18514
|
+
return Y(De(u.side, V(r, g)), G(h, ce), H(0));
|
|
18515
|
+
}), mi = F(([e, t, n, r]) => {
|
|
18516
|
+
let i = U(0).toVar(), a = n.sub(1).toVar();
|
|
18517
|
+
return Ye(i.lessThan(a), () => {
|
|
18518
|
+
let n = i.add(a).div(2).toVar(), o = e.element(t.add(n.mul(U(ui)))).b;
|
|
18519
|
+
I(o.lessThan(r), () => {
|
|
18520
|
+
i.assign(n.add(1));
|
|
18521
|
+
}).Else(() => {
|
|
18522
|
+
a.assign(n);
|
|
18523
|
+
});
|
|
18524
|
+
}), i;
|
|
18525
|
+
}), hi = (e) => F(([t, n, r, i, a, o, s, c, l, u, d, f, p, m]) => {
|
|
18526
|
+
let h = {
|
|
18527
|
+
position: Q(0),
|
|
18528
|
+
normal: Q(0),
|
|
18529
|
+
emission: Q(0),
|
|
18530
|
+
direction: Q(0),
|
|
18531
|
+
distance: H(0),
|
|
18532
|
+
pdf: H(0),
|
|
18533
|
+
area: H(0),
|
|
18534
|
+
cosThetaLight: H(0),
|
|
18535
|
+
valid: !1
|
|
18536
|
+
}, g = (e ? $r({
|
|
18537
|
+
...h,
|
|
18538
|
+
triangleIndex: U(-1),
|
|
18539
|
+
faceNormal: Q(0)
|
|
18540
|
+
}) : Qr(h)).toVar();
|
|
18541
|
+
return I(u.greaterThan(U(0)), () => {
|
|
18542
|
+
let h = mi(c, l, u, N(i, U(0), s.add(U(1)), r, a, o)).toVar(), _ = l.add(h.mul(U(ui))), v = c.element(_), y = c.element(_.add(1)), b = U(v.r), x = G(v.g, H(1e-10)), S = y.xyz, C = y.w, w = U(v.a), T = di.wrap(fi(b, f, p, w)), E = je(i, U(0), s.add(U(3)), r, a, o).toVar(), D = J(B(T.v1.sub(T.v0), T.v2.sub(T.v0)));
|
|
18543
|
+
I(ii(T.v0, T.v1, T.v2, t), () => {
|
|
18544
|
+
let r = ai.wrap(si(T.v0, T.v1, T.v2, t, E));
|
|
18545
|
+
I(r.valid.and(r.solidAngle.greaterThan(1e-7)), () => {
|
|
18546
|
+
let i = r.direction, a = r.position, o = V(i, n), s = L(V(i, D));
|
|
18547
|
+
I(o.greaterThan(0).or(m).and(De(T.side, V(i, D))), () => {
|
|
18548
|
+
let n = ci(a, T.v0, T.v1, T.v2), o = J(T.n0.mul(n.x).add(T.n1.mul(n.y)).add(T.n2.mul(n.z))), c = W(a.sub(t)), l = x.div(G(d, H(1e-10))).div(r.solidAngle);
|
|
18549
|
+
g.position.assign(a), g.normal.assign(o), g.emission.assign(S), g.direction.assign(i), g.distance.assign(c), g.pdf.assign(G(l, ce)), g.area.assign(C), g.cosThetaLight.assign(s), g.valid.assign(!0), e && (g.triangleIndex.assign(b), g.faceNormal.assign(D));
|
|
18550
|
+
});
|
|
18551
|
+
});
|
|
18552
|
+
}).Else(() => {
|
|
18553
|
+
let r = ti(T.v0, T.v1, T.v2, E), i = li(T.n0, T.n1, T.n2, E), a = r.sub(t), o = V(a, a), s = X(o), c = a.div(s), l = V(c, n), u = L(V(c, D));
|
|
18554
|
+
I(l.greaterThan(0).or(m).and(De(T.side, V(c, D))).and(u.greaterThan(0)), () => {
|
|
18555
|
+
let t = x.div(G(d, H(1e-10)).mul(C)).mul(o).div(u);
|
|
18556
|
+
g.position.assign(r), g.normal.assign(i), g.emission.assign(S), g.direction.assign(c), g.distance.assign(s), g.pdf.assign(G(t, ce)), g.area.assign(C), g.cosThetaLight.assign(u), g.valid.assign(!0), e && (g.triangleIndex.assign(b), g.faceNormal.assign(D));
|
|
18557
|
+
});
|
|
18558
|
+
});
|
|
18559
|
+
}), g;
|
|
18560
|
+
}), gi = /* @__PURE__ */ hi(!1), _i = /* @__PURE__ */ hi(!0), vi = F(([e, t, n, r, i, a, o, s, l, u, f, p, m, h, g, _, v, y, b, x]) => {
|
|
18561
|
+
let S = ei({
|
|
18562
|
+
contribution: Q(0),
|
|
18563
|
+
hasEmissive: !1,
|
|
18564
|
+
emissionOnly: Q(0),
|
|
18565
|
+
distance: H(0)
|
|
18566
|
+
}).toVar(), w = i.diffuseTransmission.greaterThan(0), T = Qr.wrap(gi(e, t, o, s, l, u, f, m, h, g, _, v, y, w));
|
|
18567
|
+
return I(T.valid.and(T.pdf.greaterThan(0)), () => {
|
|
18568
|
+
S.hasEmissive.assign(!0), S.emissionOnly.assign(T.emission), S.distance.assign(T.distance);
|
|
18569
|
+
let a = w.and(V(t, T.direction).lessThan(0)).and(V(T.direction, n).lessThan(0)).toVar(), o = L(V(t, T.direction));
|
|
18570
|
+
I(a.or(o.greaterThan(0).and(V(T.direction, n).greaterThan(0))), () => {
|
|
18571
|
+
let s = e.add(x(e, n, T.direction)), l = T.position.sub(s).toVar(), u = W(l).toVar(), f = b(s, l.div(u), u.mul(D));
|
|
18572
|
+
I(f.greaterThan(0), () => {
|
|
18573
|
+
let e = c.wrap(C(t, r, T.direction, i)), n = Y(a, sr(i, t, r), ar(i, e)), s = Y(a, Qn($n(i), o), _a(i, e)), l = Y(s.greaterThan(0), d({
|
|
18574
|
+
pdf1: T.pdf,
|
|
18575
|
+
pdf2: s
|
|
18576
|
+
}), H(1));
|
|
18577
|
+
S.contribution.assign(T.emission.mul(n).mul(o).div(T.pdf).mul(f).mul(p).mul(l));
|
|
18578
|
+
});
|
|
18579
|
+
});
|
|
18580
|
+
}), S;
|
|
18581
|
+
}), yi = F(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y]) => ei.wrap(vi(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y)).contribution), bi = 4, xi = 2, Si = 32, Ci = F(([e, t, n, r]) => Y(t.greaterThan(r), H(1), t.mul(r).add(e.mul(n)))), wi = F(([e, t, n, r]) => Y(t.greaterThan(r), H(0), e.mul(r).sub(t.mul(n)))), Ti = F(([e, t, n, r, i, a]) => {
|
|
18582
|
+
let o = e.add(n).mul(.5), s = W(n.sub(e)), c = a.sub(o), l = G(V(c, c), H(1e-12)), u = G(l, s.mul(.5)), d = V(r, c.div(X(l))), f = X(G(H(1).sub(d.mul(d)), H(0))), p = s.mul(s).mul(.25), m = z(p.div(l), H(0), H(1)), h = Y(l.lessThan(p), H(-1), X(G(H(1).sub(m), H(0)))), g = X(G(H(1).sub(h.mul(h)), H(0))), _ = X(G(H(1).sub(i.mul(i)), H(0))), v = Ci(f, d, _, i), y = Ci(wi(f, d, _, i), v, g, h);
|
|
18583
|
+
return G(Y(y.greaterThan(H(0)), t.mul(y).div(u), H(0)), H(0));
|
|
18584
|
+
}), Ei = (e) => F(([t, n, r, i, a, o, s, c, l, u, d, f, p]) => {
|
|
18585
|
+
let m = {
|
|
18586
|
+
position: Q(0),
|
|
18587
|
+
normal: Q(0),
|
|
18588
|
+
emission: Q(0),
|
|
18589
|
+
direction: Q(0),
|
|
18590
|
+
distance: H(0),
|
|
18591
|
+
pdf: H(0),
|
|
18592
|
+
area: H(0),
|
|
18593
|
+
cosThetaLight: H(0),
|
|
18594
|
+
valid: !1
|
|
18595
|
+
}, h = (e ? $r({
|
|
18596
|
+
...m,
|
|
18597
|
+
triangleIndex: U(-1),
|
|
18598
|
+
faceNormal: Q(0)
|
|
18599
|
+
}) : Qr(m)).toVar(), g = H(1).toVar(), _ = U(0).toVar(), v = R(!1).toVar(), y = N(i, U(0), s.add(U(1)), r, a, o).toVar();
|
|
18600
|
+
return Ye(Si, () => {
|
|
18601
|
+
let e = _.mul(U(bi)), n = c.element(e.add(U(1))), r = c.element(e.add(U(2)));
|
|
18602
|
+
I(n.w.greaterThan(.5), () => {
|
|
18603
|
+
v.assign(R(!0)), Je();
|
|
18604
|
+
});
|
|
18605
|
+
let i = U(r.x), a = U(r.y), o = i.mul(U(bi)), s = c.element(o), l = c.element(o.add(U(1))), u = a.mul(U(bi)), d = c.element(u), f = c.element(u.add(U(1))), p = c.element(o.add(U(3))), m = c.element(u.add(U(3))), h = Ti(s.xyz, s.w, l.xyz, p.xyz, p.w, t), b = Ti(d.xyz, d.w, f.xyz, m.xyz, m.w, t), x = h.add(b);
|
|
18606
|
+
I(x.lessThanEqual(H(0)), () => {
|
|
18607
|
+
_.assign(i);
|
|
18608
|
+
}).Else(() => {
|
|
18609
|
+
let e = h.div(x);
|
|
18610
|
+
I(y.lessThan(e), () => {
|
|
18611
|
+
y.assign(z(y.div(G(e, H(1e-6))), 0, .999999)), g.mulAssign(e), _.assign(i);
|
|
18612
|
+
}).Else(() => {
|
|
18613
|
+
let t = H(1).sub(e).toVar();
|
|
18614
|
+
y.assign(z(y.sub(e).div(G(t, H(1e-6))), 0, .999999)), g.mulAssign(t), _.assign(a);
|
|
18615
|
+
});
|
|
18616
|
+
});
|
|
18617
|
+
}), I(v, () => {
|
|
18618
|
+
let m = _.mul(U(bi)), v = c.element(m), b = c.element(m.add(U(2))), x = U(b.x), S = U(b.y), C = G(v.w, H(1e-10)), w = y.mul(C), T = H(0).toVar(), E = x.add(S.sub(U(1))).toVar(), D = H(1e-10).toVar();
|
|
18619
|
+
Ye({
|
|
18620
|
+
start: U(0),
|
|
18621
|
+
end: S
|
|
18622
|
+
}, ({ i: e }) => {
|
|
18623
|
+
let t = x.add(e), n = u.add(t.mul(U(xi))), r = G(l.element(n).g, H(0));
|
|
18624
|
+
T.addAssign(r), I(T.greaterThanEqual(w).and(r.greaterThan(H(0))), () => {
|
|
18625
|
+
E.assign(t), D.assign(r), Je();
|
|
18626
|
+
});
|
|
18627
|
+
}), g.mulAssign(D.div(C));
|
|
18628
|
+
let ee = u.add(E.mul(U(xi))), O = l.element(ee), k = l.element(ee.add(U(1))), A = U(O.r), j = k.xyz, te = k.w, ne = U(O.a), M = di.wrap(fi(A, d, f, ne)), re = je(i, U(0), s.add(U(3)), r, a, o).toVar(), ie = J(B(M.v1.sub(M.v0), M.v2.sub(M.v0)));
|
|
18629
|
+
I(ii(M.v0, M.v1, M.v2, t), () => {
|
|
18630
|
+
let r = ai.wrap(si(M.v0, M.v1, M.v2, t, re));
|
|
18631
|
+
I(r.valid.and(r.solidAngle.greaterThan(H(1e-7))), () => {
|
|
18632
|
+
let i = r.direction, a = r.position, o = V(i, n), s = L(V(i, ie));
|
|
18633
|
+
I(o.greaterThan(H(0)).or(p).and(De(M.side, V(i, ie))), () => {
|
|
18634
|
+
let n = ci(a, M.v0, M.v1, M.v2), o = J(M.n0.mul(n.x).add(M.n1.mul(n.y)).add(M.n2.mul(n.z))), c = W(a.sub(t)), l = g.div(G(r.solidAngle, H(1e-10)));
|
|
18635
|
+
h.position.assign(a), h.normal.assign(o), h.emission.assign(j), h.direction.assign(i), h.distance.assign(c), h.pdf.assign(G(l, ce)), h.area.assign(te), h.cosThetaLight.assign(s), h.valid.assign(!0), e && (h.triangleIndex.assign(A), h.faceNormal.assign(ie));
|
|
18636
|
+
});
|
|
18637
|
+
});
|
|
18638
|
+
}).Else(() => {
|
|
18639
|
+
let r = ti(M.v0, M.v1, M.v2, re), i = li(M.n0, M.n1, M.n2, re), a = r.sub(t), o = V(a, a), s = X(o), c = a.div(s), l = V(c, n), u = L(V(c, ie));
|
|
18640
|
+
I(l.greaterThan(H(0)).or(p).and(De(M.side, V(c, ie))).and(u.greaterThan(H(0))), () => {
|
|
18641
|
+
let t = g.div(G(te, H(1e-10))).mul(o).div(u);
|
|
18642
|
+
h.position.assign(r), h.normal.assign(i), h.emission.assign(j), h.direction.assign(c), h.distance.assign(s), h.pdf.assign(G(t, ce)), h.area.assign(te), h.cosThetaLight.assign(u), h.valid.assign(!0), e && (h.triangleIndex.assign(A), h.faceNormal.assign(ie));
|
|
18643
|
+
});
|
|
18644
|
+
});
|
|
18645
|
+
}), h;
|
|
18646
|
+
}), Di = /* @__PURE__ */ Ei(!1), Oi = /* @__PURE__ */ Ei(!0), ki = F(([e, t, n, r, i, a, o, s, c]) => {
|
|
18647
|
+
let l = H(0).toVar(), u = U(e).toVar(), d = i.element(o.add(u.shiftRight(U(2)))), f = u.bitAnd(U(3)), p = Y(f.equal(U(0)), d.x, Y(f.equal(U(1)), d.y, Y(f.equal(U(2)), d.z, d.w))).toVar();
|
|
18648
|
+
return I(p.greaterThanEqual(H(0)), () => {
|
|
18649
|
+
let e = U(p).toVar(), o = H(1).toVar(), d = U(0).toVar(), f = U(0).toVar(), m = R(!1).toVar();
|
|
18650
|
+
Ye(Si, () => {
|
|
18651
|
+
let t = d.mul(U(bi));
|
|
18652
|
+
I(i.element(t.add(U(1))).w.greaterThan(.5), () => {
|
|
18653
|
+
m.assign(R(!0)), Je();
|
|
18654
|
+
});
|
|
18655
|
+
let n = i.element(t.add(U(2))), a = U(n.x), s = U(n.y), c = a.mul(U(bi)), l = i.element(c), u = i.element(c.add(U(1))), p = i.element(c.add(U(3))), h = s.mul(U(bi)), g = i.element(h), _ = i.element(h.add(U(1))), v = i.element(h.add(U(3))), y = Ti(l.xyz, l.w, u.xyz, p.xyz, p.w, r), b = Ti(g.xyz, g.w, _.xyz, v.xyz, v.w, r), x = y.add(b), S = e.shiftRight(f).bitAnd(U(1)).equal(U(1));
|
|
18656
|
+
I(x.lessThanEqual(H(0)), () => {
|
|
18657
|
+
I(S, () => {
|
|
18658
|
+
o.assign(H(0)), d.assign(s);
|
|
18659
|
+
}).Else(() => {
|
|
18660
|
+
d.assign(a);
|
|
18661
|
+
});
|
|
18662
|
+
}).Else(() => {
|
|
18663
|
+
let e = y.div(x);
|
|
18664
|
+
I(S, () => {
|
|
18665
|
+
o.mulAssign(H(1).sub(e)), d.assign(s);
|
|
18666
|
+
}).Else(() => {
|
|
18667
|
+
o.mulAssign(e), d.assign(a);
|
|
18668
|
+
});
|
|
18669
|
+
}), f.addAssign(U(1));
|
|
18670
|
+
}), I(m.and(o.greaterThan(H(0))), () => {
|
|
18671
|
+
let e = d.mul(U(bi)), f = i.element(e), p = i.element(e.add(U(2))), m = U(p.x), h = U(p.y), g = G(f.w, H(1e-10)), _ = H(0).toVar(), v = U(-1).toVar();
|
|
18672
|
+
Ye({
|
|
18673
|
+
start: U(0),
|
|
18674
|
+
end: h
|
|
18675
|
+
}, ({ i: e }) => {
|
|
18676
|
+
let t = m.add(e), n = i.element(a.add(t.mul(U(xi))));
|
|
18677
|
+
I(U(n.r).equal(u), () => {
|
|
18678
|
+
_.assign(G(n.g, H(0))), v.assign(U(n.a)), Je();
|
|
18679
|
+
});
|
|
18680
|
+
}), o.mulAssign(_.div(g));
|
|
18681
|
+
let y = di.wrap(fi(u, s, c, v));
|
|
18682
|
+
I(De(y.side, V(n, J(B(y.v1.sub(y.v0), y.v2.sub(y.v0))))).not(), () => {
|
|
18683
|
+
o.assign(H(0));
|
|
18684
|
+
}), I(ii(y.v0, y.v1, y.v2, r), () => {
|
|
18685
|
+
let e = ri(y.v0, y.v1, y.v2, r);
|
|
18686
|
+
l.assign(o.div(G(e, H(1e-10))));
|
|
18687
|
+
}).Else(() => {
|
|
18688
|
+
let e = G(L(V(n, J(B(y.v1.sub(y.v0), y.v2.sub(y.v0))))), H(.001)), r = ni(y.v0, y.v1, y.v2), i = t.mul(t), a = o.div(G(r, H(1e-10)));
|
|
18689
|
+
l.assign(a.mul(i).div(e));
|
|
18690
|
+
});
|
|
18691
|
+
});
|
|
18692
|
+
}), Y(l.greaterThan(0), G(l, ce), H(0));
|
|
18693
|
+
}), Ai = Object.freeze({
|
|
18694
|
+
DISTANCE: 18,
|
|
18695
|
+
LAMP_PICK: 19,
|
|
18696
|
+
SEGMENT_PICK: 20,
|
|
18697
|
+
SEGMENT_DISTANCE: 21,
|
|
18698
|
+
SHADOW_PICK: 22,
|
|
18699
|
+
DIRECTION: 10,
|
|
18700
|
+
SEGMENT_POINT: 11
|
|
18701
|
+
}), ji = /* @__PURE__ */ F(([e, t, n, r, i]) => {
|
|
18702
|
+
let a = q(t, Q(1e-12), _t(L(t), Q(1e-12))), o = r.sub(e).div(a).toVar(), s = i.sub(e).div(a).toVar(), c = K(o, s), l = G(o, s);
|
|
18703
|
+
return Dt(G(G(G(c.x, c.y), c.z), 0), K(K(K(l.x, l.y), l.z), n));
|
|
18704
|
+
}), Mi = (e, t, n, r) => {
|
|
18705
|
+
let i = ji(t, n, r, e.boxMin, e.boxMax).toVar();
|
|
18706
|
+
return it(e.density.mul(G(i.y.sub(i.x), 0)).negate());
|
|
18707
|
+
}, Ni = /* @__PURE__ */ F(([e, t]) => {
|
|
18708
|
+
let n = G(H(1).add(t.mul(t)).sub(t.mul(2).mul(e)), 1e-8);
|
|
18709
|
+
return H(1).sub(t.mul(t)).div(n.mul(X(n)).mul(4 * Math.PI));
|
|
18710
|
+
}), Pi = (e) => V(e, _e), Fi = (e, t, n) => {
|
|
18711
|
+
let r = H(0).toVar();
|
|
18712
|
+
for (let [n, i] of e) Ye({
|
|
18713
|
+
start: U(0),
|
|
18714
|
+
end: i,
|
|
18715
|
+
type: "int",
|
|
18716
|
+
condition: "<"
|
|
18717
|
+
}, ({ i: e }) => {
|
|
18718
|
+
r.addAssign(t(n, e));
|
|
18719
|
+
});
|
|
18720
|
+
let i = {
|
|
18721
|
+
kind: U(-1).toVar(),
|
|
18722
|
+
index: U(0).toVar(),
|
|
18723
|
+
pdf: H(0).toVar()
|
|
18724
|
+
};
|
|
18725
|
+
return I(r.greaterThan(0), () => {
|
|
18726
|
+
let a = n.mul(r).toVar(), o = H(0).toVar();
|
|
18727
|
+
for (let [n, s] of e) Ye({
|
|
18728
|
+
start: U(0),
|
|
18729
|
+
end: s,
|
|
18730
|
+
type: "int",
|
|
18731
|
+
condition: "<"
|
|
18732
|
+
}, ({ i: e }) => {
|
|
18733
|
+
I(i.kind.lessThan(U(0)), () => {
|
|
18734
|
+
let s = t(n, e).toVar();
|
|
18735
|
+
o.addAssign(s), I(s.greaterThan(0).and(o.greaterThan(a)), () => {
|
|
18736
|
+
i.kind.assign(U(n)), i.index.assign(e), i.pdf.assign(s.div(r));
|
|
18737
|
+
});
|
|
18738
|
+
});
|
|
18739
|
+
});
|
|
18740
|
+
}), i;
|
|
18741
|
+
}, Ii = () => ({
|
|
18742
|
+
value: Q(0).toVar(),
|
|
18743
|
+
from: Q(0).toVar(),
|
|
18744
|
+
L: Q(0, 1, 0).toVar(),
|
|
18745
|
+
dist: H(0).toVar()
|
|
18746
|
+
});
|
|
18747
|
+
function Li({ enabled: e, origin: t, dir: n, near: r, far: i, g: a, fog: o, lamps: s, sample1D: c, sample2D: l }) {
|
|
18748
|
+
let u = Ii(), d = [[2, s.numPoint], [3, s.numSpot]], f = (e, t) => e === 2 ? dr.wrap(_r(s.point, t)) : fr.wrap(vr(s.spot, t)), p = i.sub(r).mul(1e-4).add(1e-9), m = (e) => {
|
|
18749
|
+
let a = e.sub(t).toVar(), o = V(a, n).toVar(), s = G(W(a.sub(n.mul(o))), p).toVar();
|
|
18750
|
+
return {
|
|
18751
|
+
along: o,
|
|
18752
|
+
D: s,
|
|
18753
|
+
thetaA: Qe(r.sub(o).div(s)).toVar(),
|
|
18754
|
+
thetaB: Qe(i.sub(o).div(s)).toVar()
|
|
18755
|
+
};
|
|
18756
|
+
};
|
|
18757
|
+
return I(e.and(s.numPoint.add(s.numSpot).greaterThan(U(0))), () => {
|
|
18758
|
+
let e = Fi(d, (e, t) => {
|
|
18759
|
+
let n = f(e, t), { D: r, thetaA: i, thetaB: a } = m(n.position);
|
|
18760
|
+
return G(Pi(n.color).mul(n.intensity).mul(a.sub(i)).div(r), 0);
|
|
18761
|
+
}, c(Ai.SEGMENT_PICK));
|
|
18762
|
+
I(e.kind.greaterThanEqual(U(0)), () => {
|
|
18763
|
+
let i = Q(0).toVar();
|
|
18764
|
+
I(e.kind.equal(U(2)), () => {
|
|
18765
|
+
i.assign(dr.wrap(_r(s.point, e.index)).position);
|
|
18766
|
+
}).Else(() => {
|
|
18767
|
+
i.assign(fr.wrap(vr(s.spot, e.index)).position);
|
|
18768
|
+
});
|
|
18769
|
+
let { along: d, D: f, thetaA: p, thetaB: h } = m(i), g = d.add(f.mul(St(q(p, h, c(Ai.SEGMENT_DISTANCE))))).toVar(), _ = g.sub(d), v = f.div(h.sub(p).mul(f.mul(f).add(_.mul(_)))).toVar();
|
|
18770
|
+
u.from.assign(t.add(n.mul(g)));
|
|
18771
|
+
let y = l(Ai.SEGMENT_POINT).toVar(), b = R(!1).toVar(), x = Q(0).toVar(), S = H(0).toVar(), C = (e) => {
|
|
18772
|
+
let t = pr.wrap(e);
|
|
18773
|
+
b.assign(t.valid), u.L.assign(t.direction), x.assign(t.emission), S.assign(t.distance);
|
|
18774
|
+
};
|
|
18775
|
+
I(e.kind.equal(U(2)), () => {
|
|
18776
|
+
C(ma(dr.wrap(_r(s.point, e.index)), u.from, H(1), y));
|
|
18777
|
+
}).Else(() => {
|
|
18778
|
+
C(pa(fr.wrap(vr(s.spot, e.index)), u.from, H(1), y));
|
|
18779
|
+
}), I(b.and(v.greaterThan(0)), () => {
|
|
18780
|
+
let t = o.color.mul(o.density).mul(it(o.density.mul(g.sub(r)).negate()));
|
|
18781
|
+
u.value.assign(t.mul(x).mul(Ni(V(n, u.L), a)).div(v.mul(e.pdf))), u.dist.assign(S.mul(D));
|
|
18782
|
+
});
|
|
18783
|
+
});
|
|
18784
|
+
}), u;
|
|
18785
|
+
}
|
|
18786
|
+
function Ri(e) {
|
|
18787
|
+
let { enabled: t, p: n, dir: r, g: i, fog: a, sample1D: o, sample2D: s, lamps: c, env: l, sun: u, emitters: f } = e, p = (e) => Ni(V(r, e), i), m = Ii(), h = Ii(), g = Ii(), _ = f ? Ii() : null;
|
|
18788
|
+
return I(t, () => {
|
|
18789
|
+
for (let e of [
|
|
18790
|
+
m,
|
|
18791
|
+
h,
|
|
18792
|
+
g,
|
|
18793
|
+
_
|
|
18794
|
+
].filter(Boolean)) e.from.assign(n);
|
|
18795
|
+
let e = Fi([[0, c.numDirectional], [1, c.numArea]], (e, t) => {
|
|
18796
|
+
if (e === 0) {
|
|
18797
|
+
let e = lr.wrap(hr(c.directional, t));
|
|
18798
|
+
return G(Pi(e.color).mul(e.intensity), 0);
|
|
18799
|
+
}
|
|
18800
|
+
let r = ur.wrap(gr(c.area, t)), i = r.position.sub(n), a = Y(r.normalize.greaterThan(.5), H(1), r.area);
|
|
18801
|
+
return G(Pi(r.color).mul(r.intensity).mul(a).div(G(V(i, i), r.area)), 0);
|
|
18802
|
+
}, o(Ai.LAMP_PICK));
|
|
18803
|
+
I(e.kind.greaterThanEqual(U(0)), () => {
|
|
18804
|
+
let t = s(2).toVar(), r = R(!1).toVar(), i = Q(0).toVar(), a = H(0).toVar(), l = H(0).toVar(), u = (e) => {
|
|
18805
|
+
let t = pr.wrap(e);
|
|
18806
|
+
r.assign(t.valid), m.L.assign(t.direction), i.assign(t.emission), a.assign(t.distance), l.assign(t.pdf);
|
|
18807
|
+
};
|
|
18808
|
+
I(e.kind.equal(U(0)), () => {
|
|
18809
|
+
u(ha(lr.wrap(hr(c.directional, e.index)), n, e.pdf, t.x, o(14)));
|
|
18810
|
+
}).Else(() => {
|
|
18811
|
+
u(da(ur.wrap(gr(c.area, e.index)), n, Dt(t.y, o(15)), e.pdf));
|
|
18812
|
+
}), I(r.and(l.greaterThan(0)), () => {
|
|
18813
|
+
m.value.assign(i.mul(p(m.L)).div(l)), m.dist.assign(Y(e.kind.equal(U(0)), H(0x56bc75e2d63100000), a.mul(D)));
|
|
18814
|
+
});
|
|
18815
|
+
}), I(l.enabled, () => {
|
|
18816
|
+
I(l.totalSum.greaterThan(0), () => {
|
|
18817
|
+
let e = tn(l.cdf, l.matrix, l.resolution, s(1));
|
|
18818
|
+
h.L.assign(e.direction);
|
|
18819
|
+
let t = e.pdf.toVar();
|
|
18820
|
+
I(t.greaterThan(0), () => {
|
|
18821
|
+
let e = rn({
|
|
18822
|
+
tex: l.texture,
|
|
18823
|
+
samp: mt(l.texture),
|
|
18824
|
+
direction: h.L,
|
|
18825
|
+
environmentMatrix: l.matrix,
|
|
18826
|
+
environmentIntensity: l.intensity,
|
|
18827
|
+
enableEnvironmentLight: H(1)
|
|
18828
|
+
}).xyz, n = p(h.L).toVar();
|
|
18829
|
+
h.value.assign(e.mul(n).mul(k({
|
|
18830
|
+
pdf1: t,
|
|
18831
|
+
pdf2: n
|
|
18832
|
+
})).div(t)), h.dist.assign(0x56bc75e2d63100000);
|
|
18833
|
+
});
|
|
18834
|
+
}), I(u.hasSun.greaterThan(U(0)), () => {
|
|
18835
|
+
g.L.assign(Zr(u.direction, u.params, s(9)));
|
|
18836
|
+
let e = Xr(g.L, u.direction, u.radiance, u.params).mul(l.intensity).toVar();
|
|
18837
|
+
I(e.x.add(e.y).add(e.z).greaterThan(0), () => {
|
|
18838
|
+
let t = H(1).div(u.params.y), n = p(g.L).toVar();
|
|
18839
|
+
g.value.assign(e.mul(n).mul(d({
|
|
18840
|
+
pdf1: t,
|
|
18841
|
+
pdf2: n
|
|
18842
|
+
})).div(t)), g.dist.assign(0x56bc75e2d63100000);
|
|
18843
|
+
});
|
|
18844
|
+
});
|
|
18845
|
+
}), _ && I(f.enabled, () => {
|
|
18846
|
+
let e = [
|
|
18847
|
+
n,
|
|
18848
|
+
Q(0, 1, 0),
|
|
18849
|
+
f.rngState,
|
|
18850
|
+
...f.samplerArgs
|
|
18851
|
+
], t = {
|
|
18852
|
+
position: Q(0).toVar(),
|
|
18853
|
+
emission: Q(0).toVar(),
|
|
18854
|
+
pdf: H(0).toVar(),
|
|
18855
|
+
valid: R(!1).toVar()
|
|
18856
|
+
}, r = (e) => {
|
|
18857
|
+
let n = Qr.wrap(e);
|
|
18858
|
+
t.position.assign(n.position), t.emission.assign(n.emission), t.pdf.assign(n.pdf), t.valid.assign(n.valid);
|
|
18859
|
+
};
|
|
18860
|
+
I(f.lightBVHNodeCount.greaterThan(U(0)), () => {
|
|
18861
|
+
r(Di(...e, f.lightBuffer, f.lightBuffer, f.vec4Offset, f.triangleBuffer, f.bvhBuffer, R(!0)));
|
|
18862
|
+
}).Else(() => {
|
|
18863
|
+
r(gi(...e, f.lightBuffer, f.vec4Offset, f.count, f.totalPower, f.triangleBuffer, f.bvhBuffer, R(!0)));
|
|
18864
|
+
}), I(t.valid.and(t.pdf.greaterThan(0)), () => {
|
|
18865
|
+
let e = t.position.sub(n).toVar(), r = W(e).toVar();
|
|
18866
|
+
_.L.assign(e.div(r));
|
|
18867
|
+
let i = p(_.L).toVar();
|
|
18868
|
+
_.value.assign(t.emission.mul(i).mul(d({
|
|
18869
|
+
pdf1: t.pdf,
|
|
18870
|
+
pdf2: i
|
|
18871
|
+
})).mul(f.boost).div(t.pdf)), _.dist.assign(r.mul(D));
|
|
18872
|
+
});
|
|
18873
|
+
});
|
|
18874
|
+
for (let e of [
|
|
18875
|
+
m,
|
|
18876
|
+
h,
|
|
18877
|
+
g,
|
|
18878
|
+
_
|
|
18879
|
+
].filter(Boolean)) e.value.mulAssign(a.color);
|
|
18880
|
+
}), {
|
|
18881
|
+
direct: [
|
|
18882
|
+
m,
|
|
18883
|
+
h,
|
|
18884
|
+
g
|
|
18885
|
+
],
|
|
18886
|
+
emitter: _
|
|
18887
|
+
};
|
|
18888
|
+
}
|
|
18889
|
+
function zi(e, t, n, r = null, i = null) {
|
|
18890
|
+
let a = t ? [...e, t] : e, o = Q(0).toVar(), s = Q(0).toVar();
|
|
18891
|
+
if (r) {
|
|
18892
|
+
let e = Ca(i, null, r);
|
|
18893
|
+
for (let t of a) e.offer(t.value, t.from, t.L, t.dist);
|
|
18894
|
+
return o.assign(e.trace(n)), {
|
|
18895
|
+
direct: o,
|
|
18896
|
+
emitted: s
|
|
18897
|
+
};
|
|
18898
|
+
}
|
|
18899
|
+
let c = (e, t) => a.slice(1).reduce((n, r, i) => Y(e.equal(U(i + 1)), r[t], n), a[0][t]);
|
|
18900
|
+
return Ye({
|
|
18901
|
+
start: U(0),
|
|
18902
|
+
end: U(a.length),
|
|
18903
|
+
type: "int",
|
|
18904
|
+
condition: "<"
|
|
18905
|
+
}, ({ i: e }) => {
|
|
18906
|
+
let r = c(e, "value").toVar();
|
|
18907
|
+
I(r.x.add(r.y).add(r.z).greaterThan(0), () => {
|
|
18908
|
+
let i = c(e, "from").toVar(), l = c(e, "L").toVar(), u = c(e, "dist").toVar(), d = r.mul(n(i, l, u)).toVar();
|
|
18909
|
+
t ? I(e.equal(U(a.length - 1)), () => {
|
|
18910
|
+
s.assign(d);
|
|
18911
|
+
}).Else(() => {
|
|
18912
|
+
o.addAssign(d);
|
|
18913
|
+
}) : o.addAssign(d);
|
|
18914
|
+
});
|
|
18915
|
+
}), {
|
|
18916
|
+
direct: o,
|
|
18917
|
+
emitted: s
|
|
18918
|
+
};
|
|
18919
|
+
}
|
|
18920
|
+
//#endregion
|
|
18921
|
+
//#region src/shaders/LightsDirect.js
|
|
18922
|
+
var Bi = (i) => F(([a, o, c, l, u, d, f], p) => {
|
|
18923
|
+
let { alphaShadows: m, shadowAlbedoMaps: g, linearBuckets: _, fog: v } = w(p), b = !i && E(p), x = H(1).toVar(), S = a.toVar(), C = H(c).toVar(), T = v ? {
|
|
18924
|
+
from: Q(a).toVar(),
|
|
18925
|
+
dir: Q(o).toVar(),
|
|
18926
|
+
length: H(c).toVar()
|
|
18927
|
+
} : null;
|
|
18928
|
+
return Ye({
|
|
18929
|
+
start: U(0),
|
|
18930
|
+
end: U(16)
|
|
18405
18931
|
}, () => {
|
|
18406
18932
|
let a = ee({
|
|
18407
|
-
origin:
|
|
18933
|
+
origin: S,
|
|
18408
18934
|
direction: o
|
|
18409
|
-
}), c = y.wrap(l(a, u, d,
|
|
18410
|
-
|
|
18411
|
-
|
|
18935
|
+
}), c = y.wrap(l(a, u, d, C));
|
|
18936
|
+
I(c.didHit.not(), () => {
|
|
18937
|
+
Je();
|
|
18412
18938
|
});
|
|
18413
18939
|
let p = t(d, c.triangleIndex, 4).z;
|
|
18414
|
-
|
|
18415
|
-
|
|
18940
|
+
I(s(p, m), () => {
|
|
18941
|
+
x.assign(0), Je();
|
|
18416
18942
|
});
|
|
18417
|
-
let
|
|
18418
|
-
let e = c.uv.x, n = c.uv.y, r =
|
|
18419
|
-
return
|
|
18943
|
+
let v = se.wrap(h(c.materialIndex, f)), w = () => {
|
|
18944
|
+
let e = c.uv.x, n = c.uv.y, r = H(1).sub(e).sub(n), i = wt(t(d, c.triangleIndex, 3)), a = wt(t(d, c.triangleIndex, 4).xy);
|
|
18945
|
+
return Oe({
|
|
18420
18946
|
uv: i.xy.mul(r).add(i.zw.mul(e)).add(a.mul(n)),
|
|
18421
|
-
transform:
|
|
18947
|
+
transform: v.albedoTransform
|
|
18422
18948
|
});
|
|
18423
|
-
}, T =
|
|
18424
|
-
m &&
|
|
18425
|
-
let e =
|
|
18426
|
-
g &&
|
|
18427
|
-
e.assign(
|
|
18428
|
-
}),
|
|
18429
|
-
let t =
|
|
18430
|
-
|
|
18949
|
+
}, T = R(!1).toVar();
|
|
18950
|
+
m && I(m.equal(U(1)), () => {
|
|
18951
|
+
let e = H(1).toVar();
|
|
18952
|
+
g && I(v.albedoMapIndex.greaterThanEqual(U(0)), () => {
|
|
18953
|
+
e.assign(Me(g, v.albedoMapIndex, w()).a);
|
|
18954
|
+
}), I(v.alphaMode.equal(U(1)), () => {
|
|
18955
|
+
let t = v.color.a.mul(e).mul(v.opacity), n = Y(v.alphaTest.greaterThan(0), v.alphaTest, H(.5));
|
|
18956
|
+
I(t.lessThan(n), () => {
|
|
18431
18957
|
T.assign(!0);
|
|
18432
18958
|
});
|
|
18433
|
-
}).ElseIf(
|
|
18434
|
-
let t =
|
|
18435
|
-
|
|
18436
|
-
|
|
18959
|
+
}).ElseIf(v.alphaMode.equal(U(2)), () => {
|
|
18960
|
+
let t = z(v.color.a.mul(v.opacity).mul(e), 0, 1);
|
|
18961
|
+
x.mulAssign(H(1).sub(t)), I(x.lessThan(1e-4), () => {
|
|
18962
|
+
x.assign(0), Je();
|
|
18437
18963
|
}), T.assign(!0);
|
|
18438
18964
|
});
|
|
18439
|
-
}),
|
|
18440
|
-
let e =
|
|
18441
|
-
|
|
18442
|
-
}).ElseIf(
|
|
18443
|
-
|
|
18965
|
+
}), I(T, () => {
|
|
18966
|
+
let e = G(H(1e-5), W(c.hitPoint).mul(1e-6));
|
|
18967
|
+
S.assign(c.hitPoint.add(o.mul(e))), C.subAssign(c.dst.add(e));
|
|
18968
|
+
}).ElseIf(v.transmission.greaterThan(0), i ? () => {
|
|
18969
|
+
x.assign(0), Je();
|
|
18444
18970
|
} : () => {
|
|
18445
|
-
let i =
|
|
18446
|
-
if (
|
|
18971
|
+
let i = v.transmission;
|
|
18972
|
+
if (b) {
|
|
18447
18973
|
i = i.toVar();
|
|
18448
|
-
let e =
|
|
18449
|
-
|
|
18450
|
-
i.mulAssign(
|
|
18974
|
+
let e = U(n(f, c.materialIndex, U(fe.EXT_MAP_INDICES_A), U(te)).r).toVar();
|
|
18975
|
+
I(e.greaterThanEqual(U(0)), () => {
|
|
18976
|
+
i.mulAssign(Me(_, e, w()).r);
|
|
18451
18977
|
});
|
|
18452
18978
|
}
|
|
18453
|
-
let a = wt(t(d, c.triangleIndex, 0).xyz), s = wt(t(d, c.triangleIndex, 1).xyz), l = wt(t(d, c.triangleIndex, 2).xyz), p =
|
|
18454
|
-
|
|
18455
|
-
p.assign(
|
|
18979
|
+
let a = wt(t(d, c.triangleIndex, 0).xyz), s = wt(t(d, c.triangleIndex, 1).xyz), l = wt(t(d, c.triangleIndex, 2).xyz), p = J(B(s.sub(a), l.sub(a))).toVar();
|
|
18980
|
+
I(c.instanceLeaf.greaterThanEqual(U(0)), () => {
|
|
18981
|
+
p.assign(J(r(e(u, c.instanceLeaf), p)));
|
|
18456
18982
|
});
|
|
18457
18983
|
let m = p;
|
|
18458
18984
|
c.normal.assign(m);
|
|
18459
|
-
let h =
|
|
18460
|
-
|
|
18461
|
-
let e =
|
|
18462
|
-
|
|
18985
|
+
let h = V(o, m).lessThan(0), g = Y(h, m, m.negate());
|
|
18986
|
+
I(h.not().and(v.attenuationDistance.greaterThan(0)), () => {
|
|
18987
|
+
let e = W(c.hitPoint.sub(S)), t = Wr(v.attenuationColor, v.attenuationDistance, e);
|
|
18988
|
+
x.mulAssign(t.x.add(t.y).add(t.z).div(3));
|
|
18463
18989
|
});
|
|
18464
|
-
let y =
|
|
18465
|
-
|
|
18466
|
-
|
|
18990
|
+
let y = bn(L(V(o, g)), G(v.ior, 1)), T = H(1).sub(y).mul(i);
|
|
18991
|
+
x.mulAssign(T), I(x.lessThan(1e-4), () => {
|
|
18992
|
+
x.assign(0), Je();
|
|
18467
18993
|
});
|
|
18468
|
-
let E =
|
|
18469
|
-
|
|
18470
|
-
}).ElseIf(
|
|
18471
|
-
|
|
18472
|
-
|
|
18994
|
+
let E = G(H(1e-5), W(c.hitPoint).mul(1e-6));
|
|
18995
|
+
S.assign(c.hitPoint.add(o.mul(E))), C.subAssign(c.dst.add(E));
|
|
18996
|
+
}).ElseIf(v.transparent, () => {
|
|
18997
|
+
x.mulAssign(H(1).sub(v.opacity)), I(x.lessThan(1e-4), () => {
|
|
18998
|
+
x.assign(0), Je();
|
|
18473
18999
|
});
|
|
18474
|
-
let e =
|
|
18475
|
-
|
|
19000
|
+
let e = G(H(1e-5), W(c.hitPoint).mul(1e-6));
|
|
19001
|
+
S.assign(c.hitPoint.add(o.mul(e))), C.subAssign(c.dst.add(e));
|
|
18476
19002
|
}).Else(() => {
|
|
18477
|
-
|
|
19003
|
+
x.assign(0), Je();
|
|
18478
19004
|
});
|
|
18479
|
-
}),
|
|
18480
|
-
}),
|
|
18481
|
-
|
|
18482
|
-
var
|
|
18483
|
-
let i =
|
|
18484
|
-
return
|
|
18485
|
-
let t = e.intensity.mul(
|
|
18486
|
-
|
|
19005
|
+
}), v ? x.mul(Mi(v, T.from, T.dir, T.length)) : x;
|
|
19006
|
+
}), Vi = /* @__PURE__ */ Bi(!1), Hi = /* @__PURE__ */ Bi(!0);
|
|
19007
|
+
F(([e, t]) => u(e, t).sub(e));
|
|
19008
|
+
var Ui = (e, t, n) => Y(n.diffuseTransmission.greaterThan(0), L(V(e, t)), G(H(0), V(e, t))), Wi = F(([e, t, n, r]) => {
|
|
19009
|
+
let i = Ui(t, e.direction, n), a = H(0).toVar();
|
|
19010
|
+
return I(i.greaterThan(0), () => {
|
|
19011
|
+
let t = e.intensity.mul(V(e.color, _e)), o = H(1).toVar();
|
|
19012
|
+
I(n.metalness.greaterThan(.7), () => {
|
|
18487
19013
|
o.assign(1.5);
|
|
18488
19014
|
}).ElseIf(n.roughness.greaterThan(.8), () => {
|
|
18489
19015
|
o.assign(.7);
|
|
18490
19016
|
});
|
|
18491
|
-
let s =
|
|
19017
|
+
let s = H(1).div(H(1).add(H(r).mul(.5)));
|
|
18492
19018
|
a.assign(t.mul(i).mul(o).mul(s));
|
|
18493
19019
|
}), a;
|
|
18494
|
-
}),
|
|
18495
|
-
let i = e.position.sub(t), a =
|
|
18496
|
-
return
|
|
18497
|
-
let t =
|
|
18498
|
-
|
|
18499
|
-
let n =
|
|
18500
|
-
|
|
18501
|
-
s.mulAssign(1.5),
|
|
18502
|
-
s.mulAssign(
|
|
19020
|
+
}), Gi = F(([e, t, n, r]) => {
|
|
19021
|
+
let i = e.position.sub(t), a = W(i), o = a.mul(a), s = i.div(a), c = Ui(n, s, r), l = H(0).toVar();
|
|
19022
|
+
return I(c.greaterThan(0), () => {
|
|
19023
|
+
let t = G(V(s, e.normal).negate(), 0);
|
|
19024
|
+
I(t.greaterThan(0), () => {
|
|
19025
|
+
let n = K(e.area.div(G(o, 1e-12)), H(2 * Math.PI)), i = Y(e.normalize.greaterThan(.5), H(1).div(G(e.area, 1e-10)), H(1)), a = e.intensity.mul(V(e.color, _e)).mul(i), s = H(1).toVar();
|
|
19026
|
+
I(r.metalness.greaterThan(.7), () => {
|
|
19027
|
+
s.mulAssign(1.5), I(r.roughness.lessThan(.3), () => {
|
|
19028
|
+
s.mulAssign(H(1).add(H(1).sub(r.roughness).mul(.5)));
|
|
18503
19029
|
});
|
|
18504
|
-
}),
|
|
18505
|
-
s.mulAssign(
|
|
19030
|
+
}), I(r.transmission.greaterThan(.5), () => {
|
|
19031
|
+
s.mulAssign(H(1).add(r.transmission.mul(.3)));
|
|
18506
19032
|
}), l.assign(a.mul(n).mul(c).mul(t).mul(s));
|
|
18507
19033
|
});
|
|
18508
19034
|
}), l;
|
|
18509
|
-
}),
|
|
18510
|
-
let i = e.position.sub(t), a =
|
|
18511
|
-
return
|
|
18512
|
-
let t =
|
|
18513
|
-
|
|
18514
|
-
let t =
|
|
18515
|
-
|
|
18516
|
-
i.mulAssign(1.5),
|
|
18517
|
-
i.mulAssign(
|
|
19035
|
+
}), Ki = F(([e, t, n, r]) => {
|
|
19036
|
+
let i = e.position.sub(t), a = V(i, i), o = H(0).toVar();
|
|
19037
|
+
return I(a.greaterThanEqual(.001), () => {
|
|
19038
|
+
let t = X(a), s = Ui(n, i.div(t), r);
|
|
19039
|
+
I(s.greaterThan(0), () => {
|
|
19040
|
+
let t = H(1).div(G(a, .1)), n = e.intensity.mul(V(e.color, _e)), i = H(1).toVar();
|
|
19041
|
+
I(r.metalness.greaterThan(.7), () => {
|
|
19042
|
+
i.mulAssign(1.5), I(r.roughness.lessThan(.3), () => {
|
|
19043
|
+
i.mulAssign(H(1).add(H(1).sub(r.roughness).mul(.4)));
|
|
18518
19044
|
});
|
|
18519
|
-
}),
|
|
19045
|
+
}), I(r.roughness.greaterThan(.6), () => {
|
|
18520
19046
|
i.mulAssign(.9);
|
|
18521
|
-
}),
|
|
18522
|
-
i.mulAssign(
|
|
19047
|
+
}), I(r.transmission.greaterThan(.5), () => {
|
|
19048
|
+
i.mulAssign(H(1).add(r.transmission.mul(.2)));
|
|
18523
19049
|
}), o.assign(n.mul(t).mul(s).mul(i));
|
|
18524
19050
|
});
|
|
18525
19051
|
}), o;
|
|
18526
|
-
}),
|
|
18527
|
-
let i = e.position.sub(t), a =
|
|
18528
|
-
return
|
|
18529
|
-
let t = i.div(
|
|
18530
|
-
|
|
18531
|
-
let n =
|
|
18532
|
-
|
|
18533
|
-
let t =
|
|
19052
|
+
}), qi = F(([e, t, n, r]) => {
|
|
19053
|
+
let i = e.position.sub(t), a = V(i, i), o = H(0).toVar();
|
|
19054
|
+
return I(a.greaterThanEqual(.001), () => {
|
|
19055
|
+
let t = i.div(X(a)), s = Ui(n, t, r);
|
|
19056
|
+
I(s.greaterThan(0), () => {
|
|
19057
|
+
let n = V(t.negate(), e.direction), i = rt(e.angle);
|
|
19058
|
+
I(n.greaterThanEqual(i), () => {
|
|
19059
|
+
let t = H(1).div(G(a, .01)), c = gt(i, i.add(.1), n), l = e.intensity.mul(V(e.color, _e)), u = Y(r.metalness.greaterThan(.7), H(1.5), Y(r.roughness.greaterThan(.8), H(.8), H(1)));
|
|
18534
19060
|
o.assign(l.mul(t).mul(c).mul(s).mul(u));
|
|
18535
19061
|
});
|
|
18536
19062
|
});
|
|
18537
19063
|
}), o;
|
|
18538
|
-
}),
|
|
18539
|
-
let i = Z(0).toVar();
|
|
18540
|
-
return F(B(e, t).greaterThanEqual(r.x).and(e.y.greaterThanEqual(r.w.negate())), () => {
|
|
18541
|
-
let a = z(e, t), o = Y(W(V(1).sub(B(a, a).mul(r.z)), 1e-8));
|
|
18542
|
-
i.assign(n.mul(ft(Z(o), ti)).mul(ni));
|
|
18543
|
-
}), i;
|
|
18544
|
-
}), ii = /* @__PURE__ */ P(([e, t, n]) => {
|
|
18545
|
-
let r = n.x.mul(t.y.mul(1 / (2 * Math.PI))), i = V(1).sub(r), a = Y(W(r.mul(V(2).sub(r)), 0)), o = n.y.mul(2 * Math.PI), s = e, c = q(z(J(I(s.x).greaterThan(.9), Z(0, 1, 0), Z(1, 0, 0)), s)), l = z(s, c);
|
|
18546
|
-
return q(s.mul(i).add(c.mul(it(o)).add(l.mul(gt(o))).mul(a)));
|
|
18547
|
-
}), ai = {
|
|
19064
|
+
}), Ji = {
|
|
18548
19065
|
LAMPS: 0,
|
|
18549
19066
|
ENVIRONMENT: 1,
|
|
18550
19067
|
SUN: 2,
|
|
18551
19068
|
EMITTERS: 3
|
|
18552
|
-
},
|
|
18553
|
-
let r =
|
|
18554
|
-
return s =
|
|
18555
|
-
},
|
|
18556
|
-
let r =
|
|
18557
|
-
return
|
|
18558
|
-
},
|
|
18559
|
-
let i =
|
|
18560
|
-
|
|
18561
|
-
|
|
19069
|
+
}, Yi = Ht, Xi = Ht + Wt, Zi = Ut * 4, Qi = 1 / 32, $i = 1 / 64, ea = 65536, ta = (e, t) => Ae({ state: e.bitXor(t) }), na = (e, t, n) => {
|
|
19070
|
+
let r = nt(ut(G(W(e.sub(n)).mul(Qi), 1e-6))).toVar(), i = ot(e.div(at(r))).toVar(), a = L(t), o = Y(a.x.greaterThan(G(a.y, a.z)), Y(t.x.greaterThan(0), Z(0), Z(1)), Y(a.y.greaterThan(a.z), Y(t.y.greaterThan(0), Z(2), Z(3)), Y(t.z.greaterThan(0), Z(4), Z(5)))), s = Ae({ state: Z(U(r).add(1024)) });
|
|
19071
|
+
return s = ta(s, Z(U(i.x))), s = ta(s, Z(U(i.y))), s = ta(s, Z(U(i.z))), s = ta(s, o), s.bitAnd(Z(Ut - 1)).toVar();
|
|
19072
|
+
}, ra = (e, t) => e.mul(Z(4)).add(Z(t)).mul(Z(2)), ia = (e, t, n) => {
|
|
19073
|
+
let r = Z(Yi).add(ra(t, n)).toVar(), i = H(et(e.element(r)));
|
|
19074
|
+
return X(G(H(et(e.element(r.add(Z(1))))).add(.5).div(i.add(1)), $i));
|
|
19075
|
+
}, aa = (e, t, n, r) => {
|
|
19076
|
+
let i = Z(Xi).add(ra(t, n)).toVar();
|
|
19077
|
+
$e(e.element(i), Z(1)), I(r, () => {
|
|
19078
|
+
$e(e.element(i.add(Z(1))), Z(1));
|
|
18562
19079
|
});
|
|
18563
19080
|
};
|
|
18564
|
-
function
|
|
18565
|
-
return
|
|
18566
|
-
|
|
18567
|
-
|
|
19081
|
+
function oa({ counters: e }) {
|
|
19082
|
+
return F(() => {
|
|
19083
|
+
I(st.greaterThanEqual(Z(Zi)), () => {
|
|
19084
|
+
Xe();
|
|
18568
19085
|
});
|
|
18569
|
-
let t =
|
|
18570
|
-
|
|
18571
|
-
r.assign(r.shiftRight(
|
|
18572
|
-
}),
|
|
18573
|
-
})().compute(
|
|
19086
|
+
let t = Z(Yi).add(st.mul(Z(2))).toVar(), n = Z(Xi).add(st.mul(Z(2))).toVar(), r = et(e.element(t)).add(et(e.element(n))).toVar(), i = et(e.element(t.add(Z(1)))).add(et(e.element(n.add(Z(1))))).toVar();
|
|
19087
|
+
I(r.greaterThan(Z(ea)), () => {
|
|
19088
|
+
r.assign(r.shiftRight(Z(1))), i.assign(i.shiftRight(Z(1)));
|
|
19089
|
+
}), tt(e.element(t), r), tt(e.element(t.add(Z(1))), i), tt(e.element(n), Z(0)), tt(e.element(n.add(Z(1))), Z(0));
|
|
19090
|
+
})().compute(Zi, [256]);
|
|
18574
19091
|
}
|
|
18575
|
-
function
|
|
18576
|
-
let t = 2 *
|
|
18577
|
-
return
|
|
18578
|
-
|
|
18579
|
-
|
|
19092
|
+
function sa({ counters: e }) {
|
|
19093
|
+
let t = 2 * Wt;
|
|
19094
|
+
return F(() => {
|
|
19095
|
+
I(st.lessThan(Z(t)), () => {
|
|
19096
|
+
tt(e.element(Z(Yi).add(st)), Z(0));
|
|
18580
19097
|
});
|
|
18581
19098
|
})().compute(t, [256]);
|
|
18582
19099
|
}
|
|
18583
19100
|
//#endregion
|
|
18584
19101
|
//#region src/shaders/LightsSampling.js
|
|
18585
|
-
var
|
|
18586
|
-
let n =
|
|
18587
|
-
return
|
|
18588
|
-
let r = t.mul(.5).toVar(), i = St(r).toVar(), a =
|
|
18589
|
-
n.assign(
|
|
19102
|
+
var ca = 2 * T, la = F(([e, t]) => {
|
|
19103
|
+
let n = H(1).toVar();
|
|
19104
|
+
return I(t.lessThan(H(T).sub(.001)).and(e.greaterThan(0)), () => {
|
|
19105
|
+
let r = t.mul(.5).toVar(), i = St(r).toVar(), a = X(G(H(1).sub(e.mul(e)), 0)).div(G(e, 1e-4)), o = Y(r.greaterThan(.05), H(1).div(G(i.sub(r), 1e-6)), H(3).div(G(r.mul(r).mul(r), 1e-9)));
|
|
19106
|
+
n.assign(G(i.sub(a).mul(o), 0));
|
|
18590
19107
|
}), n;
|
|
18591
|
-
}),
|
|
18592
|
-
let t =
|
|
18593
|
-
return e.color.mul(e.intensity).mul(
|
|
18594
|
-
}),
|
|
18595
|
-
let i =
|
|
18596
|
-
return
|
|
18597
|
-
let u =
|
|
18598
|
-
|
|
18599
|
-
let t =
|
|
18600
|
-
u.assign(e.position.add(e.u.mul(t.mul(
|
|
19108
|
+
}), ua = F(([e]) => {
|
|
19109
|
+
let t = Y(e.normalize.greaterThan(.5), H(1).div(G(e.area, 1e-10)), H(1));
|
|
19110
|
+
return e.color.mul(e.intensity).mul(ie).mul(t);
|
|
19111
|
+
}), da = F(([e, t, n, r]) => {
|
|
19112
|
+
let i = R(!1).toVar(), a = Q(0, 1, 0).toVar(), o = Q(0).toVar(), s = H(0).toVar(), c = H(0).toVar(), l = U(2).toVar();
|
|
19113
|
+
return I(e.area.greaterThan(0), () => {
|
|
19114
|
+
let u = Q(0).toVar(), d = H(-1).toVar();
|
|
19115
|
+
I(e.shape.greaterThan(.5), () => {
|
|
19116
|
+
let t = X(n.x).toVar(), r = H(ca).mul(n.y).toVar();
|
|
19117
|
+
u.assign(e.position.add(e.u.mul(t.mul(rt(r)))).add(e.v.mul(t.mul(ht(r)))));
|
|
18601
19118
|
}).Else(() => {
|
|
18602
|
-
let r =
|
|
18603
|
-
|
|
19119
|
+
let r = Or(t, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2), n).toVar();
|
|
19120
|
+
I(r.w.greaterThan(0), () => {
|
|
18604
19121
|
u.assign(r.xyz), d.assign(r.w);
|
|
18605
19122
|
}).Else(() => {
|
|
18606
19123
|
u.assign(e.position.add(e.u.mul(n.x.mul(2).sub(1))).add(e.v.mul(n.y.mul(2).sub(1))));
|
|
18607
19124
|
});
|
|
18608
19125
|
});
|
|
18609
|
-
let f = u.sub(t).toVar(), p =
|
|
18610
|
-
|
|
18611
|
-
let t =
|
|
18612
|
-
l.assign(
|
|
18613
|
-
let m = p.div(
|
|
19126
|
+
let f = u.sub(t).toVar(), p = V(f, f).toVar();
|
|
19127
|
+
I(p.greaterThanEqual(1e-10), () => {
|
|
19128
|
+
let t = X(p).toVar(), n = f.div(t).toVar(), u = V(n.negate(), e.normal).toVar();
|
|
19129
|
+
l.assign(U(1)), s.assign(t), a.assign(n), o.assign(ua(e).mul(la(u, e.spread)));
|
|
19130
|
+
let m = p.div(G(e.area.mul(G(u, .001)), 1e-10)), h = Y(d.greaterThan(0), d, m);
|
|
18614
19131
|
c.assign(h.mul(r)), i.assign(u.greaterThan(0));
|
|
18615
19132
|
});
|
|
18616
|
-
}),
|
|
19133
|
+
}), pr({
|
|
18617
19134
|
valid: i,
|
|
18618
19135
|
direction: a,
|
|
18619
19136
|
emission: o,
|
|
18620
19137
|
distance: s,
|
|
18621
19138
|
pdf: c,
|
|
18622
19139
|
lightType: l,
|
|
18623
|
-
selectionTotalWeight:
|
|
19140
|
+
selectionTotalWeight: H(0)
|
|
18624
19141
|
});
|
|
18625
|
-
}),
|
|
18626
|
-
let i =
|
|
18627
|
-
return
|
|
18628
|
-
let a = t.div(
|
|
18629
|
-
t.addAssign(
|
|
19142
|
+
}), fa = (e, t, n, r) => {
|
|
19143
|
+
let i = H(1).toVar();
|
|
19144
|
+
return I(e.radius.greaterThan(0), () => {
|
|
19145
|
+
let a = t.div(X(n)).toVar(), o = e.radius.mul(X(r.x)), s = r.y.mul(2 * Math.PI);
|
|
19146
|
+
t.addAssign(be({ N: a }).mul(Q(o.mul(rt(s)), o.mul(ht(s)), 0))), n.assign(V(t, t)), i.assign(G(V(t, a).div(X(n)), 0));
|
|
18630
19147
|
}), i;
|
|
18631
|
-
},
|
|
18632
|
-
let a =
|
|
18633
|
-
return
|
|
18634
|
-
let t =
|
|
18635
|
-
o.assign(h), c.assign(m), l.assign(n), a.assign(_.greaterThanEqual(v)),
|
|
18636
|
-
let n =
|
|
19148
|
+
}, pa = F(([e, t, n, r], i) => {
|
|
19149
|
+
let a = R(!1).toVar(), o = Q(0, 1, 0).toVar(), s = Q(0).toVar(), c = H(0).toVar(), l = H(0).toVar(), u = U(3).toVar(), d = e.position.sub(t).toVar(), f = V(d, d).toVar();
|
|
19150
|
+
return I(f.greaterThanEqual(1e-20), () => {
|
|
19151
|
+
let t = ge(i), u = t ? d.div(X(f)).toVar() : null, p = t ? fa(e, d, f, r) : null, m = X(f).toVar(), h = d.div(m).toVar(), g = t ? u : h, _ = V(g.negate(), e.direction).toVar(), v = rt(e.angle).toVar();
|
|
19152
|
+
o.assign(h), c.assign(m), l.assign(n), a.assign(_.greaterThanEqual(v)), I(a, () => {
|
|
19153
|
+
let n = xr({
|
|
18637
19154
|
coneCosine: v,
|
|
18638
19155
|
blend: e.penumbra,
|
|
18639
19156
|
angleCosine: _
|
|
18640
|
-
}), r =
|
|
19157
|
+
}), r = br({
|
|
18641
19158
|
lightDistance: m,
|
|
18642
19159
|
cutoffDistance: e.distance,
|
|
18643
19160
|
decayExponent: e.decay
|
|
18644
|
-
}), i =
|
|
19161
|
+
}), i = Sr(e, g), a = wr(e, g), o = e.color.mul(e.intensity).mul(r).mul(n).mul(i).mul(a);
|
|
18645
19162
|
s.assign(t ? o.mul(p) : o);
|
|
18646
19163
|
});
|
|
18647
|
-
}),
|
|
19164
|
+
}), pr({
|
|
18648
19165
|
valid: a,
|
|
18649
19166
|
direction: o,
|
|
18650
19167
|
emission: s,
|
|
18651
19168
|
distance: c,
|
|
18652
19169
|
pdf: l,
|
|
18653
19170
|
lightType: u,
|
|
18654
|
-
selectionTotalWeight:
|
|
19171
|
+
selectionTotalWeight: H(0)
|
|
18655
19172
|
});
|
|
18656
|
-
}),
|
|
18657
|
-
let a =
|
|
18658
|
-
return
|
|
18659
|
-
let t =
|
|
19173
|
+
}), ma = F(([e, t, n, r], i) => {
|
|
19174
|
+
let a = R(!1).toVar(), o = Q(0, 1, 0).toVar(), s = Q(0).toVar(), c = H(0).toVar(), l = H(0).toVar(), u = U(2).toVar(), d = e.position.sub(t).toVar(), f = V(d, d).toVar();
|
|
19175
|
+
return I(f.greaterThanEqual(1e-20), () => {
|
|
19176
|
+
let t = ge(i), p = t ? fa(e, d, f, r) : null, m = X(f).toVar(), h = d.div(m), g = br({
|
|
18660
19177
|
lightDistance: m,
|
|
18661
19178
|
cutoffDistance: e.distance,
|
|
18662
19179
|
decayExponent: e.decay
|
|
18663
19180
|
});
|
|
18664
|
-
u.assign(
|
|
19181
|
+
u.assign(U(2)), o.assign(h), c.assign(m);
|
|
18665
19182
|
let _ = e.color.mul(e.intensity).mul(g);
|
|
18666
|
-
s.assign(t ? _.mul(p) : _), l.assign(n), a.assign(
|
|
18667
|
-
}),
|
|
19183
|
+
s.assign(t ? _.mul(p) : _), l.assign(n), a.assign(R(!0));
|
|
19184
|
+
}), pr({
|
|
18668
19185
|
valid: a,
|
|
18669
19186
|
direction: o,
|
|
18670
19187
|
emission: s,
|
|
18671
19188
|
distance: c,
|
|
18672
19189
|
pdf: l,
|
|
18673
19190
|
lightType: u,
|
|
18674
|
-
selectionTotalWeight:
|
|
19191
|
+
selectionTotalWeight: H(0)
|
|
18675
19192
|
});
|
|
18676
|
-
}),
|
|
18677
|
-
let a =
|
|
18678
|
-
return
|
|
18679
|
-
let l =
|
|
18680
|
-
o.assign(l), c.assign(n),
|
|
18681
|
-
let t =
|
|
18682
|
-
o.assign(
|
|
18683
|
-
let m =
|
|
19193
|
+
}), ha = F(([e, t, n, r, i]) => {
|
|
19194
|
+
let a = R(!1).toVar(), o = Q(0, 1, 0).toVar(), s = Q(0).toVar(), c = H(0).toVar();
|
|
19195
|
+
return I(e.intensity.greaterThan(0), () => {
|
|
19196
|
+
let l = J(e.direction).toVar(), u = e.color.mul(e.intensity).mul(Cr(e, t)).toVar();
|
|
19197
|
+
o.assign(l), c.assign(n), I(e.angle.greaterThan(0), () => {
|
|
19198
|
+
let t = rt(e.angle.mul(.5)).toVar(), a = q(t, H(1), r).toVar(), s = X(G(H(0), H(1).sub(a.mul(a)))).toVar(), d = H(ca).mul(i).toVar(), f = J(B(Y(L(l.x).greaterThan(.9), Q(0, 1, 0), Q(1, 0, 0)), l)).toVar(), p = B(l, f).toVar();
|
|
19199
|
+
o.assign(J(l.mul(a).add(f.mul(rt(d)).add(p.mul(ht(d))).mul(s))));
|
|
19200
|
+
let m = H(ca).mul(G(H(1).sub(t), 1e-10)).toVar();
|
|
18684
19201
|
u.assign(u.div(m)), c.assign(n.div(m));
|
|
18685
|
-
}), s.assign(u), a.assign(
|
|
18686
|
-
}),
|
|
19202
|
+
}), s.assign(u), a.assign(R(!0));
|
|
19203
|
+
}), pr({
|
|
18687
19204
|
valid: a,
|
|
18688
19205
|
direction: o,
|
|
18689
19206
|
emission: s,
|
|
18690
|
-
distance:
|
|
19207
|
+
distance: H(1e6),
|
|
18691
19208
|
pdf: c,
|
|
18692
|
-
lightType:
|
|
18693
|
-
selectionTotalWeight:
|
|
19209
|
+
lightType: U(0),
|
|
19210
|
+
selectionTotalWeight: H(0)
|
|
18694
19211
|
});
|
|
18695
|
-
}),
|
|
18696
|
-
let v =
|
|
18697
|
-
return
|
|
18698
|
-
let E =
|
|
18699
|
-
|
|
18700
|
-
|
|
18701
|
-
start:
|
|
19212
|
+
}), ga = F(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _]) => {
|
|
19213
|
+
let v = R(!1).toVar(), y = Q(0, 1, 0).toVar(), b = Q(0).toVar(), x = H(0).toVar(), S = H(0).toVar(), C = U(2).toVar(), w = H(0).toVar(), T = d.add(p).add(h).add(_).toVar();
|
|
19214
|
+
return I(T.greaterThan(U(0)), () => {
|
|
19215
|
+
let E = U(Ee + 64).toVar(), D = E.add(d).toVar(), ee = D.add(p).toVar(), O = ee.add(h).toVar(), k = U(-1).toVar(), A = U(-1).toVar(), j = H(0).toVar();
|
|
19216
|
+
I(d.greaterThan(U(0)), () => {
|
|
19217
|
+
Ye({
|
|
19218
|
+
start: U(0),
|
|
18702
19219
|
end: d,
|
|
18703
19220
|
type: "int",
|
|
18704
19221
|
condition: "<"
|
|
18705
19222
|
}, ({ i: e }) => {
|
|
18706
|
-
let r =
|
|
18707
|
-
w.addAssign(r),
|
|
19223
|
+
let r = Wi(lr.wrap(hr(u, e)), t, n, i).toVar();
|
|
19224
|
+
w.addAssign(r), I(r.greaterThan(0).and(N(o, U(0), E.add(e), a, s, c).mul(w).lessThan(r)), () => {
|
|
18708
19225
|
k.assign(0), A.assign(e), j.assign(r);
|
|
18709
19226
|
});
|
|
18710
19227
|
});
|
|
18711
|
-
}),
|
|
18712
|
-
|
|
18713
|
-
start:
|
|
19228
|
+
}), I(p.greaterThan(U(0)), () => {
|
|
19229
|
+
Ye({
|
|
19230
|
+
start: U(0),
|
|
18714
19231
|
end: p,
|
|
18715
19232
|
type: "int",
|
|
18716
19233
|
condition: "<"
|
|
18717
19234
|
}, ({ i: r }) => {
|
|
18718
|
-
let i =
|
|
18719
|
-
w.addAssign(l),
|
|
19235
|
+
let i = ur.wrap(gr(f, r)), l = Y(i.intensity.greaterThan(0), Gi(i, e, t, n), H(0)).toVar();
|
|
19236
|
+
w.addAssign(l), I(l.greaterThan(0).and(N(o, U(0), D.add(r), a, s, c).mul(w).lessThan(l)), () => {
|
|
18720
19237
|
k.assign(1), A.assign(r), j.assign(l);
|
|
18721
19238
|
});
|
|
18722
19239
|
});
|
|
18723
|
-
}),
|
|
18724
|
-
|
|
18725
|
-
start:
|
|
19240
|
+
}), I(h.greaterThan(U(0)), () => {
|
|
19241
|
+
Ye({
|
|
19242
|
+
start: U(0),
|
|
18726
19243
|
end: h,
|
|
18727
19244
|
type: "int",
|
|
18728
19245
|
condition: "<"
|
|
18729
19246
|
}, ({ i: r }) => {
|
|
18730
|
-
let i =
|
|
18731
|
-
w.addAssign(i),
|
|
19247
|
+
let i = Ki(dr.wrap(_r(m, r)), e, t, n).toVar();
|
|
19248
|
+
w.addAssign(i), I(i.greaterThan(0).and(N(o, U(0), ee.add(r), a, s, c).mul(w).lessThan(i)), () => {
|
|
18732
19249
|
k.assign(2), A.assign(r), j.assign(i);
|
|
18733
19250
|
});
|
|
18734
19251
|
});
|
|
18735
|
-
}),
|
|
18736
|
-
|
|
18737
|
-
start:
|
|
19252
|
+
}), I(_.greaterThan(U(0)), () => {
|
|
19253
|
+
Ye({
|
|
19254
|
+
start: U(0),
|
|
18738
19255
|
end: _,
|
|
18739
19256
|
type: "int",
|
|
18740
19257
|
condition: "<"
|
|
18741
19258
|
}, ({ i: r }) => {
|
|
18742
|
-
let i =
|
|
18743
|
-
w.addAssign(i),
|
|
19259
|
+
let i = qi(fr.wrap(vr(g, r)), e, t, n).toVar();
|
|
19260
|
+
w.addAssign(i), I(i.greaterThan(0).and(N(o, U(0), O.add(r), a, s, c).mul(w).lessThan(i)), () => {
|
|
18744
19261
|
k.assign(3), A.assign(r), j.assign(i);
|
|
18745
19262
|
});
|
|
18746
19263
|
});
|
|
18747
|
-
}),
|
|
18748
|
-
let t =
|
|
19264
|
+
}), I(w.lessThanEqual(0), () => {
|
|
19265
|
+
let t = U(r.x.mul(H(T))).toVar(), n = H(1).div(G(H(T), 1)).toVar();
|
|
18749
19266
|
S.assign(n);
|
|
18750
|
-
let i =
|
|
18751
|
-
|
|
18752
|
-
|
|
18753
|
-
let d =
|
|
18754
|
-
|
|
18755
|
-
let t =
|
|
18756
|
-
v.assign(t.valid), y.assign(t.direction), b.assign(t.emission), x.assign(t.distance), S.assign(t.pdf), C.assign(t.lightType), i.assign(
|
|
19267
|
+
let i = R(!1).toVar(), w = U(0).toVar();
|
|
19268
|
+
I(d.greaterThan(U(0)), () => {
|
|
19269
|
+
I(i.not().and(t.greaterThanEqual(w)).and(t.lessThan(w.add(d))), () => {
|
|
19270
|
+
let d = lr.wrap(hr(u, t.sub(w)));
|
|
19271
|
+
I(d.intensity.greaterThan(0), () => {
|
|
19272
|
+
let t = pr.wrap(ha(d, e, n, r.y, N(o, U(0), l.add(U(14)), a, s, c)));
|
|
19273
|
+
v.assign(t.valid), y.assign(t.direction), b.assign(t.emission), x.assign(t.distance), S.assign(t.pdf), C.assign(t.lightType), i.assign(R(!0));
|
|
18757
19274
|
});
|
|
18758
19275
|
}), w.addAssign(d);
|
|
18759
|
-
}),
|
|
18760
|
-
|
|
18761
|
-
let u =
|
|
18762
|
-
|
|
18763
|
-
let t = Dt(r.y,
|
|
18764
|
-
v.assign(d.valid), y.assign(d.direction), b.assign(d.emission), x.assign(d.distance), S.assign(d.pdf), C.assign(d.lightType), i.assign(
|
|
19276
|
+
}), I(p.greaterThan(U(0)), () => {
|
|
19277
|
+
I(i.not().and(t.greaterThanEqual(w)).and(t.lessThan(w.add(p))), () => {
|
|
19278
|
+
let u = ur.wrap(gr(f, t.sub(w)));
|
|
19279
|
+
I(u.intensity.greaterThan(0), () => {
|
|
19280
|
+
let t = Dt(r.y, N(o, U(0), l.add(U(15)), a, s, c)).toVar(), d = pr.wrap(da(u, e, t, n));
|
|
19281
|
+
v.assign(d.valid), y.assign(d.direction), b.assign(d.emission), x.assign(d.distance), S.assign(d.pdf), C.assign(d.lightType), i.assign(R(!0));
|
|
18765
19282
|
});
|
|
18766
19283
|
}), w.addAssign(p);
|
|
18767
|
-
}),
|
|
18768
|
-
|
|
18769
|
-
let u =
|
|
18770
|
-
|
|
18771
|
-
let t =
|
|
18772
|
-
v.assign(t.valid), y.assign(t.direction), b.assign(t.emission), x.assign(t.distance), S.assign(t.pdf), C.assign(t.lightType), i.assign(
|
|
19284
|
+
}), I(h.greaterThan(U(0)), () => {
|
|
19285
|
+
I(i.not().and(t.greaterThanEqual(w)).and(t.lessThan(w.add(h))), () => {
|
|
19286
|
+
let u = dr.wrap(_r(m, t.sub(w)));
|
|
19287
|
+
I(u.intensity.greaterThan(0), () => {
|
|
19288
|
+
let t = pr.wrap(ma(u, e, n, Dt(r.y, N(o, U(0), l.add(U(15)), a, s, c))));
|
|
19289
|
+
v.assign(t.valid), y.assign(t.direction), b.assign(t.emission), x.assign(t.distance), S.assign(t.pdf), C.assign(t.lightType), i.assign(R(!0));
|
|
18773
19290
|
});
|
|
18774
19291
|
}), w.addAssign(h);
|
|
18775
|
-
}),
|
|
18776
|
-
|
|
18777
|
-
let u =
|
|
18778
|
-
|
|
18779
|
-
let t =
|
|
18780
|
-
v.assign(t.valid), y.assign(t.direction), b.assign(t.emission), x.assign(t.distance), S.assign(t.pdf), C.assign(t.lightType), i.assign(
|
|
19292
|
+
}), I(_.greaterThan(U(0)), () => {
|
|
19293
|
+
I(i.not().and(t.greaterThanEqual(w)).and(t.lessThan(w.add(_))), () => {
|
|
19294
|
+
let u = fr.wrap(vr(g, t.sub(w)));
|
|
19295
|
+
I(u.intensity.greaterThan(0), () => {
|
|
19296
|
+
let t = pr.wrap(pa(u, e, n, Dt(r.y, N(o, U(0), l.add(U(15)), a, s, c))));
|
|
19297
|
+
v.assign(t.valid), y.assign(t.direction), b.assign(t.emission), x.assign(t.distance), S.assign(t.pdf), C.assign(t.lightType), i.assign(R(!0));
|
|
18781
19298
|
});
|
|
18782
19299
|
});
|
|
18783
19300
|
});
|
|
18784
19301
|
}).Else(() => {
|
|
18785
|
-
let t = j.div(
|
|
18786
|
-
|
|
18787
|
-
let n =
|
|
19302
|
+
let t = j.div(G(w, 1e-10)).toVar();
|
|
19303
|
+
I(k.equal(U(0)).and(A.greaterThanEqual(U(0))), () => {
|
|
19304
|
+
let n = lr.wrap(hr(u, A)), i = pr.wrap(ha(n, e, t, r.y, N(o, U(0), l.add(U(14)), a, s, c)));
|
|
18788
19305
|
y.assign(i.direction), b.assign(i.emission), x.assign(i.distance), S.assign(i.pdf), C.assign(i.lightType), v.assign(i.valid);
|
|
18789
|
-
}),
|
|
18790
|
-
let n =
|
|
19306
|
+
}), I(k.equal(U(1)).and(A.greaterThanEqual(U(0))), () => {
|
|
19307
|
+
let n = ur.wrap(gr(f, A)), i = Dt(r.y, N(o, U(0), l.add(U(15)), a, s, c)).toVar(), u = pr.wrap(da(n, e, i, t));
|
|
18791
19308
|
v.assign(u.valid), y.assign(u.direction), b.assign(u.emission), x.assign(u.distance), S.assign(u.pdf), C.assign(u.lightType);
|
|
18792
|
-
}),
|
|
18793
|
-
let n =
|
|
19309
|
+
}), I(k.equal(U(2)).and(A.greaterThanEqual(U(0))), () => {
|
|
19310
|
+
let n = dr.wrap(_r(m, A)), i = pr.wrap(ma(n, e, t, Dt(r.y, N(o, U(0), l.add(U(15)), a, s, c))));
|
|
18794
19311
|
v.assign(i.valid), y.assign(i.direction), b.assign(i.emission), x.assign(i.distance), S.assign(i.pdf), C.assign(i.lightType);
|
|
18795
|
-
}),
|
|
18796
|
-
let n =
|
|
19312
|
+
}), I(k.equal(U(3)).and(A.greaterThanEqual(U(0))), () => {
|
|
19313
|
+
let n = fr.wrap(vr(g, A)), i = pr.wrap(pa(n, e, t, Dt(r.y, N(o, U(0), l.add(U(15)), a, s, c))));
|
|
18797
19314
|
v.assign(i.valid), y.assign(i.direction), b.assign(i.emission), x.assign(i.distance), S.assign(i.pdf), C.assign(i.lightType);
|
|
18798
19315
|
});
|
|
18799
19316
|
});
|
|
18800
|
-
}),
|
|
19317
|
+
}), pr({
|
|
18801
19318
|
valid: v,
|
|
18802
19319
|
direction: y,
|
|
18803
19320
|
emission: b,
|
|
@@ -18806,44 +19323,44 @@ var yi = 2 * T, bi = P(([e, t]) => {
|
|
|
18806
19323
|
lightType: C,
|
|
18807
19324
|
selectionTotalWeight: w
|
|
18808
19325
|
});
|
|
18809
|
-
}),
|
|
18810
|
-
let i =
|
|
18811
|
-
return
|
|
18812
|
-
i.assign(
|
|
19326
|
+
}), _a = F(([e, t]) => G(tr(e, t), 1e-8)), va = F(([e, t, n, r]) => {
|
|
19327
|
+
let i = H(0).toVar();
|
|
19328
|
+
return I(V(n, t).lessThan(0).and(r.diffuseTransmission.greaterThan(0)), () => {
|
|
19329
|
+
i.assign(G(Qn($n(r), V(n, t).negate()), 1e-8));
|
|
18813
19330
|
}).Else(() => {
|
|
18814
19331
|
let a = c.wrap(C(n, e, t, r));
|
|
18815
|
-
i.assign(
|
|
19332
|
+
i.assign(_a(r, a));
|
|
18816
19333
|
}), i;
|
|
18817
|
-
}),
|
|
18818
|
-
kind:
|
|
18819
|
-
weight:
|
|
18820
|
-
value:
|
|
18821
|
-
origin:
|
|
18822
|
-
direction:
|
|
18823
|
-
distance:
|
|
18824
|
-
}),
|
|
19334
|
+
}), ya = .99999994, ba = () => ({
|
|
19335
|
+
kind: U(0).toVar(),
|
|
19336
|
+
weight: H(0).toVar(),
|
|
19337
|
+
value: Q(0).toVar(),
|
|
19338
|
+
origin: Q(0).toVar(),
|
|
19339
|
+
direction: Q(0, 1, 0).toVar(),
|
|
19340
|
+
distance: H(0).toVar()
|
|
19341
|
+
}), xa = [
|
|
18825
19342
|
"kind",
|
|
18826
19343
|
"weight",
|
|
18827
19344
|
"value",
|
|
18828
19345
|
"origin",
|
|
18829
19346
|
"direction",
|
|
18830
19347
|
"distance"
|
|
18831
|
-
],
|
|
18832
|
-
let r =
|
|
18833
|
-
|
|
19348
|
+
], Sa = (e, t) => xa.forEach((n) => e[n].assign(t[n])), Ca = (e, t = null, n = "one") => {
|
|
19349
|
+
let r = H(e).toVar(), i = H(0).toVar(), a = ba(), o = n === "two" ? ba() : null, s = (e) => {
|
|
19350
|
+
I(e.weight.greaterThan(0), () => {
|
|
18834
19351
|
i.addAssign(e.weight);
|
|
18835
19352
|
let t = e.weight.div(i).toVar();
|
|
18836
|
-
|
|
18837
|
-
r.assign(
|
|
19353
|
+
I(r.lessThan(t), () => {
|
|
19354
|
+
r.assign(K(r.div(t), ya)), Sa(a, e);
|
|
18838
19355
|
}).Else(() => {
|
|
18839
|
-
r.assign(
|
|
19356
|
+
r.assign(K(r.sub(t).div(H(1).sub(t)), ya));
|
|
18840
19357
|
});
|
|
18841
19358
|
});
|
|
18842
19359
|
};
|
|
18843
19360
|
return {
|
|
18844
19361
|
offer: (e, n, r, i, a = 0) => {
|
|
18845
|
-
let c =
|
|
18846
|
-
kind:
|
|
19362
|
+
let c = V(e, _e), l = {
|
|
19363
|
+
kind: U(a),
|
|
18847
19364
|
value: e,
|
|
18848
19365
|
origin: n,
|
|
18849
19366
|
direction: r,
|
|
@@ -18852,250 +19369,250 @@ var yi = 2 * T, bi = P(([e, t]) => {
|
|
|
18852
19369
|
};
|
|
18853
19370
|
if (!o) return s(l);
|
|
18854
19371
|
let u = l.weight.greaterThan(o.weight).toVar();
|
|
18855
|
-
s(Object.fromEntries(
|
|
19372
|
+
s(Object.fromEntries(xa.map((e) => [e, Y(u, o[e], l[e]).toVar()]))), I(u, () => Sa(o, l));
|
|
18856
19373
|
},
|
|
18857
19374
|
total: i,
|
|
18858
19375
|
trace: (e) => {
|
|
18859
|
-
let n =
|
|
18860
|
-
return
|
|
18861
|
-
start:
|
|
18862
|
-
end:
|
|
19376
|
+
let n = Q(0).toVar();
|
|
19377
|
+
return Ye({
|
|
19378
|
+
start: U(0),
|
|
19379
|
+
end: U(o ? 2 : 1),
|
|
18863
19380
|
type: "int",
|
|
18864
19381
|
condition: "<"
|
|
18865
19382
|
}, ({ i: r }) => {
|
|
18866
|
-
let s = o ? r.equal(
|
|
18867
|
-
|
|
19383
|
+
let s = o ? r.equal(U(0)) : R(!1), c = (e) => o ? Y(s, o[e], a[e]) : a[e], l = c("weight").toVar();
|
|
19384
|
+
I(l.greaterThan(0), () => {
|
|
18868
19385
|
let r = e(c("origin"), c("direction"), c("distance")).toVar();
|
|
18869
|
-
t && t.record(c("kind"), r.greaterThan(0)), n.addAssign(c("value").mul(r).mul(
|
|
19386
|
+
t && t.record(c("kind"), r.greaterThan(0)), n.addAssign(c("value").mul(r).mul(Y(s, H(1), i.div(l))));
|
|
18870
19387
|
});
|
|
18871
19388
|
}), n;
|
|
18872
19389
|
}
|
|
18873
19390
|
};
|
|
18874
|
-
},
|
|
18875
|
-
let
|
|
19391
|
+
}, wa = (e, t = null) => F(([n, r, i, a, o, s, f, p, m, h, g, _, v, y, b, x, S, w, T, E, ee, O, A, j, te, ne, M, re, ie, ae, oe, se, ce, le, ue, de, fe, pe, me, ge, _e, ve, ye, be, xe, Se]) => {
|
|
19392
|
+
let Ce = Q(0).toVar(), we = Q(0).toVar(), Te = u(n, ue).toVar(), Ee = (e) => Yt({
|
|
18876
19393
|
hitPoint: n,
|
|
18877
|
-
offsetNormal:
|
|
18878
|
-
lift:
|
|
18879
|
-
faceN:
|
|
19394
|
+
offsetNormal: ue,
|
|
19395
|
+
lift: le,
|
|
19396
|
+
faceN: ue,
|
|
18880
19397
|
smoothN: i,
|
|
18881
19398
|
L: e,
|
|
18882
|
-
cutoff:
|
|
18883
|
-
}),
|
|
19399
|
+
cutoff: de
|
|
19400
|
+
}), De = F(([e, t, n]) => Vi(e, t, n, ke, A, j, te)), Oe = (t) => e ? a.diffuseTransmission.greaterThan(0).and(V(r, t).lessThan(0)).and(V(t, i).lessThan(0)) : R(!1), Ae = e ? u(n, ue.negate()) : null, Me = (e) => V(r, e).greaterThan(0).and(yr({
|
|
18884
19401
|
direction: e,
|
|
18885
19402
|
surfaceNormal: i
|
|
18886
|
-
})),
|
|
19403
|
+
})), Ne = (t, n) => e ? n.or(Me(t)) : Me(t), P = (t) => e ? L(V(r, t)) : G(H(0), V(r, t)), Pe = (t, n) => e ? Y(t, Ae, n) : n, Fe = (e) => {
|
|
18887
19404
|
let t = c.wrap(C(r, o, e, a));
|
|
18888
19405
|
return {
|
|
18889
|
-
value:
|
|
18890
|
-
pdf:
|
|
19406
|
+
value: ar(a, t),
|
|
19407
|
+
pdf: _a(a, t).toVar()
|
|
18891
19408
|
};
|
|
18892
|
-
},
|
|
18893
|
-
if (!e) return
|
|
18894
|
-
let i =
|
|
18895
|
-
return
|
|
18896
|
-
i.assign(
|
|
19409
|
+
}, Ie = (t, n) => {
|
|
19410
|
+
if (!e) return Fe(t);
|
|
19411
|
+
let i = Q(0).toVar(), s = H(0).toVar();
|
|
19412
|
+
return I(n, () => {
|
|
19413
|
+
i.assign(sr(a, r, o)), s.assign(G(Qn($n(a), V(r, t).negate()), 1e-8));
|
|
18897
19414
|
}).Else(() => {
|
|
18898
|
-
let e =
|
|
19415
|
+
let e = Fe(t);
|
|
18899
19416
|
i.assign(e.value), s.assign(e.pdf);
|
|
18900
19417
|
}), {
|
|
18901
19418
|
value: i,
|
|
18902
19419
|
pdf: s
|
|
18903
19420
|
};
|
|
18904
|
-
},
|
|
18905
|
-
share: (e) =>
|
|
18906
|
-
record: (e, t) =>
|
|
18907
|
-
} : null,
|
|
18908
|
-
return
|
|
18909
|
-
let e =
|
|
18910
|
-
|
|
18911
|
-
let e =
|
|
18912
|
-
|
|
18913
|
-
let i =
|
|
18914
|
-
let { value: n, pdf: i } =
|
|
18915
|
-
return
|
|
19421
|
+
}, Le = x.add(w).add(E).add(O).toVar(), Re = Le.greaterThan(U(0)).toVar(), ze = H(0).toVar(), Be = t ? {
|
|
19422
|
+
share: (e) => ia(xe, Se, e),
|
|
19423
|
+
record: (e, t) => aa(xe, Se, e, t)
|
|
19424
|
+
} : null, Ve = t ? Ca(N(g, U(0), y, h, _, v), Be, t) : null;
|
|
19425
|
+
return Ve && Ve.offer(_e, ve, ye, be, Ji.EMITTERS), I(Re, () => {
|
|
19426
|
+
let e = je(g, U(0), y.add(U(2)), h, _, v).toVar(), t = pr.wrap(ga(n, r, a, e, m, h, g, _, v, y, b, x, S, w, T, E, ee, O));
|
|
19427
|
+
ze.assign(t.selectionTotalWeight), I(t.valid.and(t.pdf.greaterThan(0)), () => {
|
|
19428
|
+
let e = Oe(t.direction).toVar(), r = P(t.direction).toVar();
|
|
19429
|
+
I(Ne(t.direction, e), () => {
|
|
19430
|
+
let i = Pe(e, Ee(t.direction)).toVar(), a = n.add(t.direction.mul(t.distance)).sub(i).toVar(), o = W(a).toVar(), s = () => {
|
|
19431
|
+
let { value: n, pdf: i } = Ie(t.direction, e), a = H(1).toVar();
|
|
19432
|
+
return I(i.greaterThan(0).and(t.lightType.equal(U(1))), () => {
|
|
18916
19433
|
a.assign(d({
|
|
18917
19434
|
pdf1: t.pdf,
|
|
18918
19435
|
pdf2: i
|
|
18919
19436
|
}));
|
|
18920
|
-
}), t.emission.mul(n).mul(r).mul(a).div(
|
|
19437
|
+
}), t.emission.mul(n).mul(r).mul(a).div(G(t.pdf, 1e-10));
|
|
18921
19438
|
};
|
|
18922
|
-
if (
|
|
19439
|
+
if (Ve) Ve.offer(s(), i, a.div(o), o.mul(D), Ji.LAMPS);
|
|
18923
19440
|
else {
|
|
18924
|
-
let e =
|
|
18925
|
-
|
|
19441
|
+
let e = De(i, a.div(o), o.mul(D));
|
|
19442
|
+
I(e.greaterThan(0).or(ce), () => {
|
|
18926
19443
|
let t = s();
|
|
18927
|
-
|
|
18928
|
-
|
|
19444
|
+
Ce.addAssign(t.mul(e)), I(ce, () => {
|
|
19445
|
+
we.addAssign(t);
|
|
18929
19446
|
});
|
|
18930
19447
|
});
|
|
18931
19448
|
}
|
|
18932
19449
|
});
|
|
18933
19450
|
});
|
|
18934
|
-
}),
|
|
18935
|
-
let e =
|
|
18936
|
-
|
|
18937
|
-
let i =
|
|
18938
|
-
|
|
18939
|
-
start:
|
|
19451
|
+
}), I(f.greaterThan(0).and(w.greaterThan(U(0))), () => {
|
|
19452
|
+
let e = Oe(s).toVar(), t = P(s).toVar();
|
|
19453
|
+
I(Ne(s, e), () => {
|
|
19454
|
+
let i = H(1e30).toVar(), o = U(-1).toVar();
|
|
19455
|
+
Ye({
|
|
19456
|
+
start: U(0),
|
|
18940
19457
|
end: w,
|
|
18941
19458
|
type: "int",
|
|
18942
19459
|
condition: "<"
|
|
18943
19460
|
}, ({ i: e }) => {
|
|
18944
|
-
let t =
|
|
18945
|
-
|
|
18946
|
-
let r =
|
|
18947
|
-
|
|
19461
|
+
let t = ur.wrap(gr(S, e));
|
|
19462
|
+
I(t.intensity.greaterThan(0), () => {
|
|
19463
|
+
let r = Er(t, n, s).toVar();
|
|
19464
|
+
I(r.greaterThan(0).and(r.lessThan(i)), () => {
|
|
18948
19465
|
i.assign(r), o.assign(e);
|
|
18949
19466
|
});
|
|
18950
19467
|
});
|
|
18951
|
-
}),
|
|
18952
|
-
let c =
|
|
18953
|
-
|
|
18954
|
-
let e =
|
|
18955
|
-
|
|
18956
|
-
let o =
|
|
19468
|
+
}), I(o.greaterThanEqual(U(0)), () => {
|
|
19469
|
+
let c = ur.wrap(gr(S, o)), l = Pe(e, Te).toVar(), u = n.add(s.mul(i)).sub(l).toVar(), m = W(u).toVar(), h = De(l, u.div(m), m.mul(D));
|
|
19470
|
+
I(h.greaterThan(0).or(ce), () => {
|
|
19471
|
+
let e = G(H(0), V(s, c.normal).negate()).toVar();
|
|
19472
|
+
I(e.greaterThan(0), () => {
|
|
19473
|
+
let o = Dr(n, c.position.sub(c.u).sub(c.v), c.u.mul(2), c.v.mul(2)).toVar(), s = i.mul(i).div(G(c.area.mul(e), he)), l = Y(c.shape.lessThan(.5).and(o.greaterThan(1e-5)), H(1).div(G(o, 1e-10)), s).toVar(), u = Gi(c, n, r, a), m = Y(ze.greaterThan(0), u.div(G(ze, 1e-10)), H(1).div(G(H(Le), 1))), g = d({
|
|
18957
19474
|
pdf1: f,
|
|
18958
19475
|
pdf2: l.mul(m).toVar()
|
|
18959
|
-
}).toVar(), _ =
|
|
18960
|
-
|
|
18961
|
-
|
|
19476
|
+
}).toVar(), _ = ua(c).mul(la(e, c.spread)).mul(p).mul(t).mul(g).div(G(f, 1e-10));
|
|
19477
|
+
Ce.addAssign(_.mul(h)), I(ce, () => {
|
|
19478
|
+
we.addAssign(_);
|
|
18962
19479
|
});
|
|
18963
19480
|
});
|
|
18964
19481
|
});
|
|
18965
19482
|
});
|
|
18966
19483
|
});
|
|
18967
|
-
}),
|
|
18968
|
-
let e =
|
|
18969
|
-
|
|
18970
|
-
start:
|
|
19484
|
+
}), I(se, () => {
|
|
19485
|
+
let e = Y(fe.greaterThan(U(0)), U(2), U(1));
|
|
19486
|
+
Ye({
|
|
19487
|
+
start: U(0),
|
|
18971
19488
|
end: e,
|
|
18972
19489
|
type: "int",
|
|
18973
19490
|
condition: "<",
|
|
18974
19491
|
name: "envPass"
|
|
18975
19492
|
}, ({ envPass: e }) => {
|
|
18976
|
-
let t = e.equal(
|
|
18977
|
-
|
|
18978
|
-
let e =
|
|
18979
|
-
r.assign(
|
|
18980
|
-
}).ElseIf(
|
|
18981
|
-
let e =
|
|
18982
|
-
r.assign(e.direction), n.assign(
|
|
19493
|
+
let t = e.equal(U(1)).toVar(), n = Q(0).toVar(), r = Q(0, 1, 0).toVar(), i = H(0).toVar();
|
|
19494
|
+
I(t, () => {
|
|
19495
|
+
let e = je(g, U(0), y.add(U(9)), h, _, v);
|
|
19496
|
+
r.assign(Zr(pe, ge, e)), n.assign(Xr(r, pe, me, ge).mul(M)), i.assign(Y(n.x.add(n.y).add(n.z).greaterThan(0), H(1).div(ge.y), H(0)));
|
|
19497
|
+
}).ElseIf(ae.greaterThan(0), () => {
|
|
19498
|
+
let e = tn(ie, re, oe, je(g, U(0), y.add(U(1)), h, _, v));
|
|
19499
|
+
r.assign(e.direction), n.assign(rn({
|
|
18983
19500
|
tex: ne,
|
|
18984
|
-
samp:
|
|
19501
|
+
samp: mt(ne),
|
|
18985
19502
|
direction: r,
|
|
18986
|
-
environmentMatrix:
|
|
18987
|
-
environmentIntensity:
|
|
18988
|
-
enableEnvironmentLight:
|
|
19503
|
+
environmentMatrix: re,
|
|
19504
|
+
environmentIntensity: M,
|
|
19505
|
+
enableEnvironmentLight: H(1)
|
|
18989
19506
|
}).xyz), i.assign(e.pdf);
|
|
18990
|
-
}),
|
|
18991
|
-
let e =
|
|
18992
|
-
|
|
19507
|
+
}), I(i.greaterThan(0), () => {
|
|
19508
|
+
let e = Oe(r).toVar(), a = P(r).toVar();
|
|
19509
|
+
I(Ne(r, e), () => {
|
|
18993
19510
|
let o = () => {
|
|
18994
|
-
let { value: o, pdf: s } =
|
|
19511
|
+
let { value: o, pdf: s } = Ie(r, e), c = Y(s.greaterThan(0), Y(t, d({
|
|
18995
19512
|
pdf1: i,
|
|
18996
19513
|
pdf2: s
|
|
18997
19514
|
}), k({
|
|
18998
19515
|
pdf1: i,
|
|
18999
19516
|
pdf2: s
|
|
19000
|
-
})),
|
|
19001
|
-
return n.mul(o).mul(a).mul(c).div(
|
|
19517
|
+
})), H(1)).toVar();
|
|
19518
|
+
return n.mul(o).mul(a).mul(c).div(G(i, 1e-10));
|
|
19002
19519
|
};
|
|
19003
|
-
if (
|
|
19004
|
-
|
|
19520
|
+
if (Ve) {
|
|
19521
|
+
Ve.offer(o(), Pe(e, Ee(r)), r, H(0x56bc75e2d63100000), Y(t, U(Ji.SUN), U(Ji.ENVIRONMENT)));
|
|
19005
19522
|
return;
|
|
19006
19523
|
}
|
|
19007
|
-
let s =
|
|
19008
|
-
|
|
19524
|
+
let s = De(Pe(e, Ee(r)), r, H(0x56bc75e2d63100000));
|
|
19525
|
+
I(s.greaterThan(0).or(ce), () => {
|
|
19009
19526
|
let e = o();
|
|
19010
|
-
|
|
19011
|
-
|
|
19527
|
+
Ce.addAssign(e.mul(s)), I(ce, () => {
|
|
19528
|
+
we.addAssign(e);
|
|
19012
19529
|
});
|
|
19013
19530
|
});
|
|
19014
19531
|
});
|
|
19015
19532
|
});
|
|
19016
19533
|
});
|
|
19017
|
-
}),
|
|
19018
|
-
shadowed:
|
|
19019
|
-
unoccluded:
|
|
19534
|
+
}), Ve && Ce.addAssign(Ve.trace(De)), l({
|
|
19535
|
+
shadowed: Ce,
|
|
19536
|
+
unoccluded: we
|
|
19020
19537
|
});
|
|
19021
|
-
}),
|
|
19538
|
+
}), Ta = /* @__PURE__ */ wa(!1), Ea = /* @__PURE__ */ wa(!0), Da = /* @__PURE__ */ new Map(), Oa = (e, t) => {
|
|
19022
19539
|
let n = `${e}:${t}`;
|
|
19023
|
-
return
|
|
19024
|
-
},
|
|
19025
|
-
let v =
|
|
19026
|
-
|
|
19027
|
-
|
|
19028
|
-
O.assign(
|
|
19540
|
+
return Da.has(n) || Da.set(n, wa(e, t)), Da.get(n);
|
|
19541
|
+
}, ka = 1e6, Aa = F(([e, t, n, r, i, a, s, l, u, d, f, p, m, h, g], _) => {
|
|
19542
|
+
let v = pe(_), y = Q(0).toVar(), x = Q(0).toVar(), w = H(0).toVar(), T = R(!1).toVar(), E = Q(1).toVar(), D = R(!1).toVar(), ee = R(!1).toVar(), O = m.toVar();
|
|
19543
|
+
I(p.not(), () => {
|
|
19544
|
+
I(h, () => {
|
|
19545
|
+
O.assign(Xn(n, f, g));
|
|
19029
19546
|
}).Else(() => {
|
|
19030
19547
|
let e = b({
|
|
19031
|
-
invRoughness:
|
|
19032
|
-
metalFactor:
|
|
19033
|
-
iorFactor:
|
|
19034
|
-
maxSheenColor:
|
|
19548
|
+
invRoughness: H(1).sub(n.roughness),
|
|
19549
|
+
metalFactor: H(.5).add(H(.5).mul(n.metalness)),
|
|
19550
|
+
iorFactor: K(H(2).div(n.ior), 1),
|
|
19551
|
+
maxSheenColor: G(n.sheenColor.x, G(n.sheenColor.y, n.sheenColor.z))
|
|
19035
19552
|
}).toVar();
|
|
19036
|
-
O.assign(
|
|
19553
|
+
O.assign(Xn(n, f, e));
|
|
19037
19554
|
});
|
|
19038
19555
|
});
|
|
19039
|
-
let k = i.toVar(), A =
|
|
19040
|
-
|
|
19041
|
-
let i =
|
|
19556
|
+
let k = i.toVar(), A = Q(0).toVar(), j = O.diffuse.toVar(), te = j.add(O.specular).toVar(), ne = te.add(O.sheen).toVar(), M = ne.add(O.clearcoat).toVar(), re = M.add(O.diffuseTransmission), ie = () => {
|
|
19557
|
+
I(n.roughness.greaterThan(0), () => {
|
|
19558
|
+
let i = be({ N: t }), a = un({
|
|
19042
19559
|
V: i.transpose().mul(e),
|
|
19043
19560
|
roughness: n.roughness,
|
|
19044
19561
|
Xi: r
|
|
19045
19562
|
});
|
|
19046
|
-
A.assign(i.mul(a)), y.assign(
|
|
19563
|
+
A.assign(i.mul(a)), y.assign(ft(e.negate(), A));
|
|
19047
19564
|
}).Else(() => {
|
|
19048
|
-
y.assign(
|
|
19565
|
+
y.assign(ft(e.negate(), t)), D.assign(!0);
|
|
19049
19566
|
});
|
|
19050
|
-
},
|
|
19051
|
-
y.assign(
|
|
19567
|
+
}, ae = I(k.lessThan(j), () => {
|
|
19568
|
+
y.assign(cn({
|
|
19052
19569
|
N: t,
|
|
19053
19570
|
xi: r
|
|
19054
19571
|
}));
|
|
19055
19572
|
}).ElseIf(k.lessThan(te), () => {
|
|
19056
|
-
v.anisotropy ?
|
|
19057
|
-
let i = o.wrap(
|
|
19573
|
+
v.anisotropy ? I(n.anisotropy.greaterThan(0), () => {
|
|
19574
|
+
let i = o.wrap(oe(t, n.anisotropyRotation)), a = i.Ta, s = i.Ba, c = Q(V(e, a), V(e, s), V(e, t)), l = Un(n.roughness, n.anisotropy), u = dn({
|
|
19058
19575
|
V: c,
|
|
19059
19576
|
alphaX: l.x,
|
|
19060
19577
|
alphaY: l.y,
|
|
19061
19578
|
Xi: r
|
|
19062
19579
|
});
|
|
19063
|
-
A.assign(a.mul(u.x).add(s.mul(u.y)).add(t.mul(u.z))), y.assign(
|
|
19064
|
-
}).Else(
|
|
19580
|
+
A.assign(a.mul(u.x).add(s.mul(u.y)).add(t.mul(u.z))), y.assign(ft(e.negate(), A));
|
|
19581
|
+
}).Else(ie) : ie();
|
|
19065
19582
|
});
|
|
19066
|
-
v.sheen && (
|
|
19067
|
-
A.assign(
|
|
19583
|
+
v.sheen && (ae = ae.ElseIf(k.lessThan(ne), () => {
|
|
19584
|
+
A.assign(sn({
|
|
19068
19585
|
N: t,
|
|
19069
|
-
roughness:
|
|
19586
|
+
roughness: Dn(n.sheenRoughness),
|
|
19070
19587
|
Xi: r
|
|
19071
|
-
})), y.assign(
|
|
19072
|
-
})), v.clearcoat && (
|
|
19073
|
-
let i =
|
|
19074
|
-
A.assign(a.mul(
|
|
19588
|
+
})), y.assign(ft(e.negate(), A));
|
|
19589
|
+
})), v.clearcoat && (ae = ae.ElseIf(k.lessThan(M), () => {
|
|
19590
|
+
let i = z(n.clearcoatRoughness, S, 1), a = be({ N: xe(t, n, _) });
|
|
19591
|
+
A.assign(a.mul(un({
|
|
19075
19592
|
V: a.transpose().mul(e),
|
|
19076
19593
|
roughness: i,
|
|
19077
19594
|
Xi: r
|
|
19078
|
-
}))), y.assign(
|
|
19079
|
-
})), v.diffuseTransmission && (
|
|
19080
|
-
y.assign(
|
|
19595
|
+
}))), y.assign(ft(e.negate(), A));
|
|
19596
|
+
})), v.diffuseTransmission && (ae = ae.ElseIf(k.lessThan(re), () => {
|
|
19597
|
+
y.assign(cn({
|
|
19081
19598
|
N: t.negate(),
|
|
19082
19599
|
xi: r
|
|
19083
19600
|
})), ee.assign(!0);
|
|
19084
|
-
})),
|
|
19085
|
-
let i =
|
|
19086
|
-
y.assign(o.direction), w.assign(
|
|
19601
|
+
})), ae.Else(() => {
|
|
19602
|
+
let i = V(e, t).greaterThan(0), o = zr.wrap(Gr(e, t, n.ior, n.roughness, i, n.dispersion, r, a, H(0), s, l, u, d));
|
|
19603
|
+
y.assign(o.direction), w.assign(G(O.transmission.mul(o.pdf), ce)), E.assign(o.colorWeight), T.assign(!0);
|
|
19087
19604
|
});
|
|
19088
|
-
let
|
|
19605
|
+
let se = () => {
|
|
19089
19606
|
let r = c.wrap(C(t, e, y, n));
|
|
19090
|
-
|
|
19091
|
-
w.assign(
|
|
19607
|
+
I(D, () => {
|
|
19608
|
+
w.assign(ka), x.assign(or(n, r).mul(ka).div(G(O.specular.mul(r.NoL), 1e-6)));
|
|
19092
19609
|
}).Else(() => {
|
|
19093
|
-
x.assign(
|
|
19610
|
+
x.assign(ar(n, r)), w.assign(Zn(n, O, r));
|
|
19094
19611
|
});
|
|
19095
19612
|
};
|
|
19096
|
-
return v.diffuseTransmission ?
|
|
19097
|
-
x.assign(
|
|
19098
|
-
}).ElseIf(T.not(),
|
|
19613
|
+
return v.diffuseTransmission ? I(ee, () => {
|
|
19614
|
+
x.assign(sr(n, t, e)), w.assign(Qn(O.diffuseTransmission, V(t, y).negate()));
|
|
19615
|
+
}).ElseIf(T.not(), se) : I(T.not(), se), w.assign(G(w, ce)), ue({
|
|
19099
19616
|
direction: y,
|
|
19100
19617
|
value: x,
|
|
19101
19618
|
pdf: w,
|
|
@@ -19103,312 +19620,140 @@ var yi = 2 * T, bi = P(([e, t]) => {
|
|
|
19103
19620
|
colorWeight: E,
|
|
19104
19621
|
isDiffuseTransmission: ee
|
|
19105
19622
|
});
|
|
19106
|
-
}),
|
|
19107
|
-
let u =
|
|
19108
|
-
return
|
|
19109
|
-
let d =
|
|
19110
|
-
|
|
19111
|
-
let e =
|
|
19112
|
-
u.assign(
|
|
19623
|
+
}), ja = /* @__PURE__ */ Ot("\n fn regularizePathContribution( contribution: vec3f, pathLength: f32, fireflyThreshold: f32, frame: i32 ) -> vec3f {\n // Indirect-only clamp: pathLength 0 is a direct/primary contribution (bounce-0 hit, direct NEE,\n // or a directly-viewed backdrop/sun) — that is signal, not a firefly, and clamping it darkens\n // legitimately bright pixels. Fireflies arise on indirect bounces, so only suppress pathLength>=1.\n if ( pathLength < 0.5 ) {\n return contribution;\n }\n let threshold = calculateFireflyThreshold( fireflyThreshold, i32( pathLength ), frame );\n return applySoftSuppressionRGB( contribution, threshold, 0.5f );\n }\n", [x, A]), Ma = /* @__PURE__ */ Ot("\n fn computeNDCDepth( worldPos: vec3f, cameraProjectionMatrix: mat4x4f, cameraViewMatrix: mat4x4f ) -> f32 {\n let clipPos = cameraProjectionMatrix * cameraViewMatrix * vec4f( worldPos, 1.0f );\n let ndcDepth = clipPos.z / clipPos.w * 0.5f + 0.5f;\n return clamp( ndcDepth, 0.0f, 1.0f );\n }\n"), Na = F(([e, t, n, r, i, a, o, s, c, l]) => {
|
|
19624
|
+
let u = H(1).toVar();
|
|
19625
|
+
return I(e.greaterThanEqual(U(3)), () => {
|
|
19626
|
+
let d = G(G(G(t.x, t.y), t.z), 0).toVar();
|
|
19627
|
+
I(d.lessThan(8e-4).and(e.greaterThan(U(4))), () => {
|
|
19628
|
+
let e = G(d.mul(125), .01), t = N(a, U(0), c.add(U(3)), i, o, s);
|
|
19629
|
+
u.assign(Y(t.lessThan(e), e, H(0)));
|
|
19113
19630
|
}).Else(() => {
|
|
19114
19631
|
let t = n.complexityScore.toVar();
|
|
19115
|
-
|
|
19632
|
+
I(n.isMetallic.and(n.isSmooth).and(e.lessThan(U(7))), () => {
|
|
19116
19633
|
t.addAssign(.3);
|
|
19117
|
-
}),
|
|
19634
|
+
}), I(n.isTransmissive.and(e.lessThan(U(6))), () => {
|
|
19118
19635
|
t.addAssign(.25);
|
|
19119
|
-
}),
|
|
19636
|
+
}), I(n.isEmissive.and(e.lessThan(U(4))), () => {
|
|
19120
19637
|
t.addAssign(.15);
|
|
19121
|
-
}), t.assign(
|
|
19122
|
-
let f =
|
|
19123
|
-
|
|
19638
|
+
}), t.assign(z(t, 0, 1));
|
|
19639
|
+
let f = U(3).toVar();
|
|
19640
|
+
I(t.greaterThan(.6), () => {
|
|
19124
19641
|
f.assign(5);
|
|
19125
19642
|
}).ElseIf(t.greaterThan(.4), () => {
|
|
19126
19643
|
f.assign(4);
|
|
19127
|
-
}),
|
|
19644
|
+
}), I(e.lessThan(f), () => {
|
|
19128
19645
|
u.assign(1);
|
|
19129
19646
|
}).Else(() => {
|
|
19130
19647
|
let p = n.complexityScore.toVar();
|
|
19131
|
-
|
|
19648
|
+
I(n.isMetallic.and(n.isSmooth), () => {
|
|
19132
19649
|
p.addAssign(.15);
|
|
19133
|
-
}),
|
|
19650
|
+
}), I(n.isTransmissive.and(n.hasClearcoat), () => {
|
|
19134
19651
|
p.addAssign(.12);
|
|
19135
|
-
}),
|
|
19652
|
+
}), I(n.isEmissive, () => {
|
|
19136
19653
|
p.addAssign(.1);
|
|
19137
|
-
}), p.assign(
|
|
19138
|
-
let m =
|
|
19139
|
-
|
|
19140
|
-
let e =
|
|
19141
|
-
m.assign(
|
|
19654
|
+
}), p.assign(z(p, 0, 1));
|
|
19655
|
+
let m = H(.5).toVar();
|
|
19656
|
+
I(l.and(d.greaterThan(.01)), () => {
|
|
19657
|
+
let e = z(r.y, 0, 1);
|
|
19658
|
+
m.assign(q(H(.3), H(.8), e.mul(e)));
|
|
19142
19659
|
});
|
|
19143
|
-
let h =
|
|
19144
|
-
_.assign(
|
|
19660
|
+
let h = gt(H(.001), H(.1), d), g = d.mul(q(p.mul(.7), m, .3)).mul(h).toVar(), _ = q(z(t.mul(.4).add(d.mul(.6)).mul(1.2), .15, .95), z(d.mul(.4).add(t.mul(.1)), .03, .6), z(H(e.sub(f)).div(10), 0, 1)).toVar();
|
|
19661
|
+
_.assign(q(_, G(_, g), .4)), I(t.greaterThan(.5), () => {
|
|
19145
19662
|
let e = t.sub(.5).mul(.6);
|
|
19146
|
-
_.assign(
|
|
19663
|
+
_.assign(q(_, H(1), e));
|
|
19147
19664
|
});
|
|
19148
|
-
let v =
|
|
19665
|
+
let v = H(.12).add(t.mul(.08)), y = it(H(e.sub(f)).negate().mul(v));
|
|
19149
19666
|
_.mulAssign(y);
|
|
19150
|
-
let b =
|
|
19151
|
-
_.assign(
|
|
19152
|
-
let x =
|
|
19153
|
-
u.assign(
|
|
19667
|
+
let b = Y(n.isEmissive, H(.04), H(.02));
|
|
19668
|
+
_.assign(z(_, b, 1));
|
|
19669
|
+
let x = N(a, U(0), c.add(U(3)), i, o, s);
|
|
19670
|
+
u.assign(Y(x.lessThan(_), _, H(0)));
|
|
19154
19671
|
});
|
|
19155
19672
|
});
|
|
19156
19673
|
}), u;
|
|
19157
|
-
}),
|
|
19158
|
-
position: "vec3",
|
|
19159
|
-
normal: "vec3",
|
|
19160
|
-
emission: "vec3",
|
|
19161
|
-
direction: "vec3",
|
|
19162
|
-
distance: "float",
|
|
19163
|
-
pdf: "float",
|
|
19164
|
-
area: "float",
|
|
19165
|
-
cosThetaLight: "float",
|
|
19166
|
-
valid: "bool"
|
|
19167
|
-
}), Ki = j({
|
|
19168
|
-
position: "vec3",
|
|
19169
|
-
normal: "vec3",
|
|
19170
|
-
emission: "vec3",
|
|
19171
|
-
direction: "vec3",
|
|
19172
|
-
distance: "float",
|
|
19173
|
-
pdf: "float",
|
|
19174
|
-
area: "float",
|
|
19175
|
-
cosThetaLight: "float",
|
|
19176
|
-
valid: "bool",
|
|
19177
|
-
triangleIndex: "int",
|
|
19178
|
-
faceNormal: "vec3"
|
|
19179
|
-
}), qi = j({
|
|
19180
|
-
contribution: "vec3",
|
|
19181
|
-
hasEmissive: "bool",
|
|
19182
|
-
emissionOnly: "vec3",
|
|
19183
|
-
distance: "float"
|
|
19184
|
-
}), Ji = P(([e, t, n, r]) => {
|
|
19185
|
-
let i = Y(r.x), a = V(1).sub(i), o = r.y.mul(i), s = V(1).sub(a).sub(o);
|
|
19186
|
-
return e.mul(a).add(t.mul(o)).add(n.mul(s));
|
|
19187
|
-
}), Yi = P(([e, t, n]) => U(z(t.sub(e), n.sub(e))).mul(.5)), Xi = P(([e, t, n, r]) => {
|
|
19188
|
-
let i = q(e.sub(r)), a = q(t.sub(r)), o = q(n.sub(r)), s = I(B(i, z(a, o))), c = V(1).add(B(a, o)).add(B(i, o)).add(B(i, a));
|
|
19189
|
-
return W(V(2).mul($e(s, W(c, V(1e-10)))), V(0));
|
|
19190
|
-
}), Zi = P(([e, t, n, r]) => {
|
|
19191
|
-
let i = t.sub(e), a = n.sub(e), o = n.sub(t), s = W(B(i, i), W(B(a, a), B(o, o))), c = z(i, a), l = B(c, c), u = L(!1).toVar();
|
|
19192
|
-
return F(l.greaterThan(1e-20), () => {
|
|
19193
|
-
let t = B(c, r.sub(e)), n = t.mul(t).div(l), i = s.mul(s).lessThan(l.mul(64));
|
|
19194
|
-
u.assign(s.greaterThan(n).and(i));
|
|
19195
|
-
}), u;
|
|
19196
|
-
}), Qi = j({
|
|
19197
|
-
direction: "vec3",
|
|
19198
|
-
position: "vec3",
|
|
19199
|
-
solidAngle: "float",
|
|
19200
|
-
valid: "bool"
|
|
19201
|
-
}), $i = P(([e]) => {
|
|
19202
|
-
let t = U(e);
|
|
19203
|
-
return J(t.greaterThan(1e-10), e.div(t), Z(0));
|
|
19204
|
-
}), ea = P(([e, t, n, r, i]) => {
|
|
19205
|
-
let a = Qi({
|
|
19206
|
-
direction: Z(0),
|
|
19207
|
-
position: Z(0),
|
|
19208
|
-
solidAngle: V(0),
|
|
19209
|
-
valid: !1
|
|
19210
|
-
}).toVar(), o = q(e.sub(r)), s = q(t.sub(r)), c = q(n.sub(r)), l = Xi(e, t, n, r);
|
|
19211
|
-
return a.solidAngle.assign(l), F(l.greaterThan(1e-7), () => {
|
|
19212
|
-
let u = R(B($i(z(o, s)), $i(z(o, c))), -1, 1), d = Y(W(V(1).sub(u.mul(u)), 0)), f = Qe(u), p = i.x.mul(l).sub(f), m = gt(p), h = it(p), g = R(B(o, s), -1, 1), _ = h.sub(u), v = m.add(d.mul(g)), y = v.mul(h).sub(_.mul(m)).mul(u).sub(v), b = v.mul(m).add(_.mul(h)).mul(d), x = R(J(I(b).greaterThan(1e-10), y.div(b), V(1)), -1, 1), S = B(c, o), C = $i(c.sub(o.mul(S))), w = Y(W(V(1).sub(x.mul(x)), 0)), T = q(o.mul(x).add(C.mul(w))), E = B(T, s), D = V(1).sub(i.y.mul(V(1).sub(E))), ee = Y(W(V(1).sub(D.mul(D)), 0)), O = $i(T.sub(s.mul(E))), k = q(s.mul(D).add(O.mul(ee))), A = q(z(t.sub(e), n.sub(e))), j = B(A, k);
|
|
19213
|
-
F(I(j).greaterThan(1e-10), () => {
|
|
19214
|
-
let t = B(A, e.sub(r)).div(j);
|
|
19215
|
-
F(t.greaterThan(0), () => {
|
|
19216
|
-
a.direction.assign(k), a.position.assign(r.add(k.mul(t))), a.valid.assign(!0);
|
|
19217
|
-
});
|
|
19218
|
-
});
|
|
19219
|
-
}), a;
|
|
19220
|
-
}), ta = P(([e, t, n, r]) => {
|
|
19221
|
-
let i = n.sub(t), a = r.sub(t), o = e.sub(t), s = B(i, i), c = B(i, a), l = B(a, a), u = B(o, i), d = B(o, a), f = V(1).div(W(s.mul(l).sub(c.mul(c)), V(1e-10))), p = l.mul(u).sub(c.mul(d)).mul(f), m = s.mul(d).sub(c.mul(u)).mul(f);
|
|
19222
|
-
return Z(V(1).sub(p).sub(m), p, m);
|
|
19223
|
-
}), na = P(([e, t, n, r]) => {
|
|
19224
|
-
let i = Y(r.x), a = V(1).sub(i), o = r.y.mul(i), s = V(1).sub(a).sub(o);
|
|
19225
|
-
return q(e.mul(a).add(t.mul(o)).add(n.mul(s)));
|
|
19226
|
-
});
|
|
19227
|
-
P(([e]) => e.emissiveIntensity.greaterThan(0).and(U(e.emissive).greaterThan(0)));
|
|
19228
|
-
var ra = 2, ia = j({
|
|
19229
|
-
v0: "vec3",
|
|
19230
|
-
v1: "vec3",
|
|
19231
|
-
v2: "vec3",
|
|
19232
|
-
n0: "vec3",
|
|
19233
|
-
n1: "vec3",
|
|
19234
|
-
n2: "vec3",
|
|
19235
|
-
materialIndex: "int",
|
|
19236
|
-
side: "int"
|
|
19237
|
-
}), aa = P(([n, r, i, a]) => {
|
|
19238
|
-
let o = t(r, n, 0).toVar(), s = t(r, n, 1).toVar(), c = t(r, n, 2).toVar(), l = t(r, n, 4), u = wt(o.xyz).toVar(), d = wt(s.xyz).toVar(), p = wt(c.xyz).toVar(), m = _(o.w).toVar(), h = _(s.w).toVar(), g = _(c.w).toVar();
|
|
19239
|
-
return F(a.greaterThanEqual(H(0)), () => {
|
|
19240
|
-
let t = e(i, a);
|
|
19241
|
-
u.assign(re(t, u)), d.assign(re(t, d)), p.assign(re(t, p)), m.assign(q(f(t, m))), h.assign(q(f(t, h))), g.assign(q(f(t, g)));
|
|
19242
|
-
}), ia({
|
|
19243
|
-
v0: u,
|
|
19244
|
-
v1: d,
|
|
19245
|
-
v2: p,
|
|
19246
|
-
n0: m,
|
|
19247
|
-
n1: h,
|
|
19248
|
-
n2: g,
|
|
19249
|
-
materialIndex: H(l.z.bitAnd(X(Fe))),
|
|
19250
|
-
side: Ee(l.z)
|
|
19251
|
-
});
|
|
19252
|
-
}), oa = P(([e, t, r, i, a, o, s, c, l]) => {
|
|
19253
|
-
let u = ia.wrap(aa(e, a, c, l)), d = Yi(u.v0, u.v1, u.v2), f = n(o, u.materialIndex, H(pe.EMISSIVE_ROUGHNESS), te), p = n(o, u.materialIndex, H(pe.IOR_TRANSMISSION), te), m = W(f.x.mul(.2126).add(f.y.mul(.7152)).add(f.z.mul(.0722)).mul(p.a).mul(d), V(1e-10)).div(W(s, V(1e-10))), h = V(0).toVar();
|
|
19254
|
-
F(Zi(u.v0, u.v1, u.v2, i), () => {
|
|
19255
|
-
let e = Xi(u.v0, u.v1, u.v2, i);
|
|
19256
|
-
h.assign(m.div(W(e, V(1e-10))));
|
|
19257
|
-
}).Else(() => {
|
|
19258
|
-
let e = W(I(B(r, q(z(u.v1.sub(u.v0), u.v2.sub(u.v0))))), .001), n = t.mul(t), i = m.div(d);
|
|
19259
|
-
h.assign(i.mul(n).div(e));
|
|
19260
|
-
});
|
|
19261
|
-
let g = q(z(u.v1.sub(u.v0), u.v2.sub(u.v0)));
|
|
19262
|
-
return J(Oe(u.side, B(r, g)), W(h, le), V(0));
|
|
19263
|
-
}), sa = P(([e, t, n, r]) => {
|
|
19264
|
-
let i = H(0).toVar(), a = n.sub(1).toVar();
|
|
19265
|
-
return Xe(i.lessThan(a), () => {
|
|
19266
|
-
let n = i.add(a).div(2).toVar(), o = e.element(t.add(n.mul(H(ra)))).b;
|
|
19267
|
-
F(o.lessThan(r), () => {
|
|
19268
|
-
i.assign(n.add(1));
|
|
19269
|
-
}).Else(() => {
|
|
19270
|
-
a.assign(n);
|
|
19271
|
-
});
|
|
19272
|
-
}), i;
|
|
19273
|
-
}), ca = (e) => P(([t, n, r, i, a, o, s, c, l, u, d, f, p, m]) => {
|
|
19274
|
-
let h = {
|
|
19275
|
-
position: Z(0),
|
|
19276
|
-
normal: Z(0),
|
|
19277
|
-
emission: Z(0),
|
|
19278
|
-
direction: Z(0),
|
|
19279
|
-
distance: V(0),
|
|
19280
|
-
pdf: V(0),
|
|
19281
|
-
area: V(0),
|
|
19282
|
-
cosThetaLight: V(0),
|
|
19283
|
-
valid: !1
|
|
19284
|
-
}, g = (e ? Ki({
|
|
19285
|
-
...h,
|
|
19286
|
-
triangleIndex: H(-1),
|
|
19287
|
-
faceNormal: Z(0)
|
|
19288
|
-
}) : Gi(h)).toVar();
|
|
19289
|
-
return F(u.greaterThan(H(0)), () => {
|
|
19290
|
-
let h = sa(c, l, u, M(i, H(0), s.add(H(1)), r, a, o)).toVar(), _ = l.add(h.mul(H(ra))), v = c.element(_), y = c.element(_.add(1)), b = H(v.r), x = W(v.g, V(1e-10)), S = y.xyz, C = y.w, w = H(v.a), T = ia.wrap(aa(b, f, p, w)), E = Me(i, H(0), s.add(H(3)), r, a, o).toVar(), D = q(z(T.v1.sub(T.v0), T.v2.sub(T.v0)));
|
|
19291
|
-
F(Zi(T.v0, T.v1, T.v2, t), () => {
|
|
19292
|
-
let r = Qi.wrap(ea(T.v0, T.v1, T.v2, t, E));
|
|
19293
|
-
F(r.valid.and(r.solidAngle.greaterThan(1e-7)), () => {
|
|
19294
|
-
let i = r.direction, a = r.position, o = B(i, n), s = I(B(i, D));
|
|
19295
|
-
F(o.greaterThan(0).or(m).and(Oe(T.side, B(i, D))), () => {
|
|
19296
|
-
let n = ta(a, T.v0, T.v1, T.v2), o = q(T.n0.mul(n.x).add(T.n1.mul(n.y)).add(T.n2.mul(n.z))), c = U(a.sub(t)), l = x.div(W(d, V(1e-10))).div(r.solidAngle);
|
|
19297
|
-
g.position.assign(a), g.normal.assign(o), g.emission.assign(S), g.direction.assign(i), g.distance.assign(c), g.pdf.assign(W(l, le)), g.area.assign(C), g.cosThetaLight.assign(s), g.valid.assign(!0), e && (g.triangleIndex.assign(b), g.faceNormal.assign(D));
|
|
19298
|
-
});
|
|
19299
|
-
});
|
|
19300
|
-
}).Else(() => {
|
|
19301
|
-
let r = Ji(T.v0, T.v1, T.v2, E), i = na(T.n0, T.n1, T.n2, E), a = r.sub(t), o = B(a, a), s = Y(o), c = a.div(s), l = B(c, n), u = I(B(c, D));
|
|
19302
|
-
F(l.greaterThan(0).or(m).and(Oe(T.side, B(c, D))).and(u.greaterThan(0)), () => {
|
|
19303
|
-
let t = x.div(W(d, V(1e-10)).mul(C)).mul(o).div(u);
|
|
19304
|
-
g.position.assign(r), g.normal.assign(i), g.emission.assign(S), g.direction.assign(c), g.distance.assign(s), g.pdf.assign(W(t, le)), g.area.assign(C), g.cosThetaLight.assign(u), g.valid.assign(!0), e && (g.triangleIndex.assign(b), g.faceNormal.assign(D));
|
|
19305
|
-
});
|
|
19306
|
-
});
|
|
19307
|
-
}), g;
|
|
19308
|
-
}), la = /* @__PURE__ */ ca(!1), ua = /* @__PURE__ */ ca(!0), da = P(([e, t, n, r, i, a, o, s, l, u, f, p, m, h, g, _, v, y, b, x]) => {
|
|
19309
|
-
let S = qi({
|
|
19310
|
-
contribution: Z(0),
|
|
19311
|
-
hasEmissive: !1,
|
|
19312
|
-
emissionOnly: Z(0),
|
|
19313
|
-
distance: V(0)
|
|
19314
|
-
}).toVar(), w = i.diffuseTransmission.greaterThan(0), T = Gi.wrap(la(e, t, o, s, l, u, f, m, h, g, _, v, y, w));
|
|
19315
|
-
return F(T.valid.and(T.pdf.greaterThan(0)), () => {
|
|
19316
|
-
S.hasEmissive.assign(!0), S.emissionOnly.assign(T.emission), S.distance.assign(T.distance);
|
|
19317
|
-
let a = w.and(B(t, T.direction).lessThan(0)).and(B(T.direction, n).lessThan(0)).toVar(), o = I(B(t, T.direction));
|
|
19318
|
-
F(a.or(o.greaterThan(0).and(B(T.direction, n).greaterThan(0))), () => {
|
|
19319
|
-
let s = e.add(x(e, n, T.direction)), l = T.position.sub(s).toVar(), u = U(l).toVar(), f = b(s, l.div(u), u.mul(D));
|
|
19320
|
-
F(f.greaterThan(0), () => {
|
|
19321
|
-
let e = c.wrap(C(t, r, T.direction, i)), n = J(a, or(i, t, r), ir(i, e)), s = J(a, Zn(Qn(i), o), Oi(i, e)), l = J(s.greaterThan(0), d({
|
|
19322
|
-
pdf1: T.pdf,
|
|
19323
|
-
pdf2: s
|
|
19324
|
-
}), V(1));
|
|
19325
|
-
S.contribution.assign(T.emission.mul(n).mul(o).div(T.pdf).mul(f).mul(p).mul(l));
|
|
19326
|
-
});
|
|
19327
|
-
});
|
|
19328
|
-
}), S;
|
|
19329
|
-
}), fa = P(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y]) => qi.wrap(da(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y)).contribution), pa = (e, t) => {
|
|
19674
|
+
}), Pa = (e, t) => {
|
|
19330
19675
|
let n = ne(e, t);
|
|
19331
|
-
return
|
|
19676
|
+
return K(Z(G(G(n.x, n.y), n.z).max(0).mul(64).add(.5)), Z(Gt));
|
|
19332
19677
|
};
|
|
19333
|
-
function
|
|
19678
|
+
function Fa(e) {
|
|
19334
19679
|
let { rayBufferRO: t, activeIndicesReadRO: n, activeIndicesWriteRW: r, counters: i, currentActiveCount: a } = e;
|
|
19335
|
-
return
|
|
19336
|
-
let e =
|
|
19337
|
-
|
|
19338
|
-
|
|
19680
|
+
return F(() => {
|
|
19681
|
+
let e = st, o = i ? et(i.element(Z($.ENTERING_COUNT))) : a;
|
|
19682
|
+
I(e.greaterThanEqual(o), () => {
|
|
19683
|
+
Xe();
|
|
19339
19684
|
});
|
|
19340
19685
|
let s = n.element(e);
|
|
19341
|
-
|
|
19342
|
-
let e =
|
|
19343
|
-
r.element(e).assign(s),
|
|
19686
|
+
I(ye(t, s).bitAnd(Z(Kt.ACTIVE)).notEqual(Z(0)), () => {
|
|
19687
|
+
let e = $e(i.element(Z($.ACTIVE_RAY_COUNT)), Z(1));
|
|
19688
|
+
r.element(e).assign(s), $e(i.element(Z($.ACTIVE_ENERGY)), Pa(t, s));
|
|
19344
19689
|
});
|
|
19345
19690
|
});
|
|
19346
19691
|
}
|
|
19347
|
-
function
|
|
19692
|
+
function Ia(e) {
|
|
19348
19693
|
let { rayBufferRO: t, activeIndicesReadRO: n, activeIndicesWriteRW: r, counters: i, currentActiveCount: a } = e;
|
|
19349
|
-
return
|
|
19350
|
-
let e =
|
|
19351
|
-
|
|
19352
|
-
_.assign(
|
|
19694
|
+
return F(() => {
|
|
19695
|
+
let e = st, o = i ? et(i.element(Z($.ENTERING_COUNT))) : a, s = e.lessThan(o), c = n.element(e), l = ye(t, c), u = s.and(l.bitAnd(Z(Kt.ACTIVE)).notEqual(Z(0))), d = Y(u, Z(1), Z(0)), f = Y(u, Pa(t, c), Z(0)), p = xt(d).toVar(), m = yt(d).toVar(), h = yt(f).toVar(), g = xt(Z(1)).toVar(), _ = Z(0).toVar();
|
|
19696
|
+
I(g.equal(Z(0)), () => {
|
|
19697
|
+
_.assign($e(i.element(Z($.ACTIVE_RAY_COUNT)), m)), $e(i.element(Z($.ACTIVE_ENERGY)), h);
|
|
19353
19698
|
});
|
|
19354
|
-
let v = bt(_,
|
|
19355
|
-
|
|
19699
|
+
let v = bt(_, Z(0)).toVar();
|
|
19700
|
+
I(u, () => {
|
|
19356
19701
|
r.element(v.add(p)).assign(c);
|
|
19357
19702
|
});
|
|
19358
19703
|
});
|
|
19359
19704
|
}
|
|
19360
|
-
function
|
|
19361
|
-
let r =
|
|
19362
|
-
e.element(
|
|
19705
|
+
function La(e, t, n) {
|
|
19706
|
+
let r = G(Z(t).add(Z(255)).div(Z(256)), Z(1)).toVar();
|
|
19707
|
+
e.element(Z(0)).assign(K(r, Z(n))), e.element(Z(1)).assign(r.add(Z(n - 1)).div(Z(n))), e.element(Z(2)).assign(Z(1));
|
|
19363
19708
|
}
|
|
19364
|
-
function
|
|
19365
|
-
|
|
19366
|
-
|
|
19709
|
+
function Ra(e, t) {
|
|
19710
|
+
I(t.greaterThan(Z(0)), () => {
|
|
19711
|
+
tt(e.element(Z($.CONVERGED_COUNT)), Z(0)), tt(e.element(Z($.GEOMETRY_COUNT)), Z(0)), tt(e.element(Z($.CONVERGED_GEOMETRY_COUNT)), Z(0));
|
|
19367
19712
|
});
|
|
19368
19713
|
}
|
|
19369
|
-
function
|
|
19370
|
-
return
|
|
19371
|
-
let o =
|
|
19372
|
-
|
|
19714
|
+
function za({ activeIndicesRW: e, counters: t, maxRayCount: n, isFirstChunk: r, sizes: i, maxGroups: a }) {
|
|
19715
|
+
return F(() => {
|
|
19716
|
+
let o = st;
|
|
19717
|
+
I(o.lessThan(n), () => {
|
|
19373
19718
|
e.element(o).assign(o);
|
|
19374
|
-
}),
|
|
19375
|
-
|
|
19719
|
+
}), I(o.equal(Z(0)), () => {
|
|
19720
|
+
tt(t.element(Z($.ACTIVE_RAY_COUNT)), n), tt(t.element(Z($.ENTERING_COUNT)), n), La(i, n, a), Ra(t, r);
|
|
19376
19721
|
});
|
|
19377
19722
|
});
|
|
19378
19723
|
}
|
|
19379
|
-
function
|
|
19380
|
-
return
|
|
19381
|
-
|
|
19724
|
+
function Ba({ counters: e, isFirstChunk: t }) {
|
|
19725
|
+
return F(() => {
|
|
19726
|
+
tt(e.element(Z($.ACTIVE_RAY_COUNT)), Z(0)), Ra(e, t);
|
|
19382
19727
|
});
|
|
19383
19728
|
}
|
|
19384
|
-
function
|
|
19385
|
-
return
|
|
19386
|
-
let a =
|
|
19387
|
-
|
|
19729
|
+
function Va({ counters: e, sizes: t, maxGroups: n, bounceCounts: r, pixelCountSlot: i }) {
|
|
19730
|
+
return F(() => {
|
|
19731
|
+
let a = et(e.element(Z($.ACTIVE_RAY_COUNT)));
|
|
19732
|
+
tt(e.element(Z($.ENTERING_COUNT)), a), La(t, a, n), r.element(i).assign(a);
|
|
19388
19733
|
});
|
|
19389
19734
|
}
|
|
19390
|
-
function
|
|
19391
|
-
return
|
|
19392
|
-
|
|
19735
|
+
function Ha({ counters: e, maxRayCount: t }) {
|
|
19736
|
+
return F(() => {
|
|
19737
|
+
tt(e.element(Z($.ENTERING_COUNT)), t);
|
|
19393
19738
|
});
|
|
19394
19739
|
}
|
|
19395
|
-
function
|
|
19396
|
-
t.element(n).assign(i), t.element(r).assign(
|
|
19740
|
+
function Ua(e, t, n, r, i) {
|
|
19741
|
+
t.element(n).assign(i), t.element(r).assign(et(e.element(Z($.ACTIVE_ENERGY)))), tt(e.element(Z($.ENTERING_COUNT)), i);
|
|
19397
19742
|
}
|
|
19398
|
-
function
|
|
19399
|
-
return
|
|
19400
|
-
t(
|
|
19743
|
+
function Wa({ counters: e, record: t }) {
|
|
19744
|
+
return F(() => {
|
|
19745
|
+
t(et(e.element(Z($.ACTIVE_RAY_COUNT))));
|
|
19401
19746
|
});
|
|
19402
19747
|
}
|
|
19403
|
-
function
|
|
19404
|
-
return
|
|
19405
|
-
let i =
|
|
19406
|
-
|
|
19748
|
+
function Ga({ counters: e, survivors: t, activeIndicesRW: n, record: r }) {
|
|
19749
|
+
return F(() => {
|
|
19750
|
+
let i = st, a = et(e.element(Z($.ACTIVE_RAY_COUNT)));
|
|
19751
|
+
I(i.equal(Z(0)), () => {
|
|
19407
19752
|
r(a);
|
|
19408
|
-
}),
|
|
19409
|
-
|
|
19753
|
+
}), I(i.greaterThanEqual(a), () => {
|
|
19754
|
+
Xe();
|
|
19410
19755
|
}), n.element(i).assign(t.element(i));
|
|
19411
19756
|
});
|
|
19412
19757
|
}
|
|
19413
19758
|
//#endregion
|
|
19414
|
-
export {
|
|
19759
|
+
export { ti as $, Nt as $t, Ki as A, Vn as At, zi as B, nn as Bt, ma as C, Cr as Ct, oa as D, sr as Dt, sa as E, Dr as Et, Ai as F, Bn as Ft, $r as G, Yt as Gt, Di as H, rn as Ht, Ri as I, cn as It, pi as J, qt as Jt, di as K, $ as Kt, Li as L, ln as Lt, Gi as M, Zn as Mt, Vi as N, Un as Nt, na as O, cr as Ot, Hi as P, Qn as Pt, _i as Q, At as Qt, ji as R, un as Rt, ha as S, Tr as St, pa as T, Sr as Tt, Oi as U, tn as Ut, ki as V, on as Vt, Qr as W, Jt as Wt, fi as X, Rt as Xt, yi as Y, Kt as Yt, gi as Z, zt as Zt, la as _, br as _t, za as a, Ar as at, Ta as b, vr as bt, Wa as c, Pr as ct, ka as d, mr as dt, Mt as en, Zr as et, Ma as f, pr as ft, ua as g, hr as gt, ja as h, gr as ht, Ha as i, kr as it, qi as j, er as jt, Wi as k, ar as kt, Ua as l, ur as lt, Na as m, fr as mt, Ia as n, Lr as nt, Ba as o, Nr as ot, Aa as p, dr as pt, mi as q, Vt as qt, Ga as r, qr as rt, Va as s, Mr as st, Fa as t, Xr as tt, La as u, lr as ut, Oa as v, _r as vt, da as w, wr as wt, va as x, Er as xt, Ea as y, xr as yt, Ni as z, dn as zt };
|