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.
Files changed (48) hide show
  1. package/dist/{ArchiveFormats-DGypbJbi.js → ArchiveFormats-_1o7EfSy.js} +3 -3
  2. package/dist/{ArchiveImporter-DO52X2Wv.js → ArchiveImporter-Cv-MnDQa.js} +3 -3
  3. package/dist/{BidirectionalIntegrator-BDAVOhHt.js → BidirectionalIntegrator-KWRQrMXX.js} +94 -94
  4. package/dist/{CameraRay-BrivdtGO.js → CameraRay-CdVb2LnS.js} +2 -2
  5. package/dist/{ColorManagement-m9mZF5u4.js → ColorManagement-BSjTsrve.js} +3 -3
  6. package/dist/{CompactKernel-CGteMt2T.js → CompactKernel-C6TCBB6i.js} +1432 -1087
  7. package/dist/{DepthPass-CucSh6We.js → DepthPass-BMnBuepB.js} +3 -3
  8. package/dist/{EngineIssues-t5p7TEjb.js → EngineIssues-DHAU18xh.js} +2 -1
  9. package/dist/{LocalExposure-2gts3VQL.js → LocalExposure-hMqUG2UR.js} +1 -1
  10. package/dist/{NeuralRetouch-XHVjbYAw.js → NeuralRetouch-CYRGwe9E.js} +1 -1
  11. package/dist/{NeuralSuperRes-BvBV4gN4.js → NeuralSuperRes-p0A3_wjO.js} +1 -1
  12. package/dist/{OpenStorage-Brn8HYNA.js → OpenStorage-DCvhWjxj.js} +2 -2
  13. package/dist/{PhysicalSky-CE3UvfuW.js → PhysicalSky-qHATDBbB.js} +1 -1
  14. package/dist/{PictureView-DXa3ED9l.js → PictureView-DlQVw7W9.js} +3 -3
  15. package/dist/{RayzeeRenderer-DPsWdbUI.js → RayzeeRenderer-DcoDAmCU.js} +1702 -1679
  16. package/dist/{TextureBuckets-BOZzBXSD.js → TextureBuckets-CcOI4Bdg.js} +4 -0
  17. package/dist/{TextureSampling-D81EJ9uO.js → TextureSampling-CQMmzhCp.js} +1 -1
  18. package/dist/addons/archives.es.js +1 -1
  19. package/dist/addons/bidirectional.es.js +1 -1
  20. package/dist/addons/color.es.js +1 -1
  21. package/dist/addons/physical-sky.es.js +1 -1
  22. package/dist/addons/storage.es.js +1 -1
  23. package/dist/rayzee-core.es.js +4 -4
  24. package/dist/rayzee.es.js +562 -568
  25. package/dist/rayzee.umd.js +65 -65
  26. package/package.json +1 -1
  27. package/src/EngineDefaults.js +6 -0
  28. package/src/EngineIssues.js +1 -0
  29. package/src/RayzeeRenderer.js +37 -1
  30. package/src/RenderSettings.js +29 -1
  31. package/src/addons/color/ColorSpaces.js +2 -1
  32. package/src/addons/color/OcioViews.js +1 -1
  33. package/src/addons/storage/OpenStorage.js +2 -0
  34. package/src/bvh/ReinsertionOptimizer.js +3 -2
  35. package/src/lights/LightManager.js +3 -2
  36. package/src/lights/LightSerializer.js +5 -4
  37. package/src/pathtracer/PathTracer.js +22 -0
  38. package/src/pathtracer/UniformManager.js +7 -0
  39. package/src/scene/SceneEdits.js +3 -1
  40. package/src/scene/ViewCamera.js +2 -1
  41. package/src/shaders/Fog.js +395 -0
  42. package/src/shaders/LightsDirect.js +6 -2
  43. package/src/shaders/Random.js +10 -1
  44. package/src/shaders/SceneResources.js +2 -0
  45. package/src/shaders/kernels/ShadeKernel.js +98 -0
  46. package/src/viewer/PathTracerApp.js +2 -11
  47. package/src/viewer/camera/CameraManager.js +1 -1
  48. 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 re, ln as ie, lt as ae, mn as oe, mt as se, nn as ce, ot as le, pt as ue, qt as de, r as fe, rt as pe, sn as me, st as he, tt as ge, un as _e, ut as ve, vt as ye, w as be, xt as xe, yt as Se } from "./PackedRayBuffer-BhqeNEaL.js";
2
- import { i as Ce, r as we } from "./Logger-D7hic8LA.js";
3
- import { M as Te, O as M, S as Ee, T as De, _ as Oe, a as ke, b as Ae, j as je, k as Me, m as Ne } from "./TextureSampling-D81EJ9uO.js";
4
- import { o as Pe, s as N } from "./TextureBuckets-BOZzBXSD.js";
5
- import { p as Fe } from "./BufferLayout-ny3WneEc.js";
6
- import { t as Ie } from "./SolarLimb-IayvafJP.js";
7
- import { StorageInstancedBufferAttribute as Le } from "three/webgpu";
8
- import { ClampToEdgeWrapping as Re, Color as ze, DataTexture as Be, FloatType as Ve, LinearFilter as He, MathUtils as Ue, Matrix4 as We, RGBAFormat as Ge, Vector2 as Ke, Vector3 as qe, Vector4 as Je } from "three";
9
- import { Break as Ye, Fn as P, If as F, Loop as Xe, Return as Ze, abs as I, acos as Qe, atan as $e, atomicAdd as et, atomicLoad as tt, atomicStore as nt, bool as L, ceil as rt, clamp as R, cos as it, cross as z, dot as B, exp as at, exp2 as ot, float as V, floor as st, instanceIndex as ct, int as H, ivec2 as lt, length as U, log as ut, log2 as dt, max as W, min as G, mix as K, normalize as q, pow as ft, reflect as pt, refract as mt, sampler as ht, select as J, sin as gt, smoothstep as _t, sqrt as Y, storage as vt, subgroupAdd as yt, subgroupBroadcast as bt, subgroupExclusiveAdd as xt, tan as St, texture as Ct, uint as X, uintBitsToFloat as wt, uniform as Tt, uniformArray as Et, vec2 as Dt, vec3 as Z, wgslFn as Q } from "three/tsl";
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 Ot = {
11
+ var kt = {
12
12
  cameraViewMatrix: "ptCameraViewMatrix",
13
13
  cameraProjectionMatrix: "ptCameraProjectionMatrix"
14
- }, kt = Object.freeze({
14
+ }, At = Object.freeze({
15
15
  directional: 12,
16
16
  area: 16,
17
17
  point: 10,
18
18
  spot: 20
19
- }), At = 65536 / 16;
20
- function jt(e, t) {
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(At / kt[e])));
22
+ return Math.max(t, Math.min(n, Math.floor(jt / At[e])));
23
23
  }
24
- var Mt = class {
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", N.maxBounces, "int"), n("maxSamples", N.maxSamples, "int"), n("transmissiveBounces", N.transmissiveBounces, "int"), n("maxSubsurfaceSteps", N.maxSubsurfaceSteps, "int"), n("maxTransparentBounces", N.maxTransparentBounces, "int"), n("visMode", N.visMode, "int"), n("debugVisScale", N.debugVisScale, "float"), r("useAdaptiveSampling", N.useAdaptiveSampling), n("noiseThreshold", N.noiseThreshold, "float"), n("adaptiveMinSamples", N.adaptiveMinSamples, "int"), n("adaptiveStopFraction", N.adaptiveStopFraction, "float"), r("usePixelFreeze", N.usePixelFreeze), n("pixelFreezeThreshold", N.pixelFreezeThreshold, "float"), n("pixelFreezeStability", N.pixelFreezeStability, "int"), r("convergenceOverlay", N.convergenceOverlay), r("enableAccumulation", !0), n("accumulationAlpha", 0, "float"), r("cameraIsMoving", !1), r("hasPreviousAccumulated", !1), n("auxAccumulationAlpha", 1, "float"), r("hasPreviousAux", !1), n("environmentIntensity", N.environmentIntensity, "float"), n("backgroundIntensity", N.backgroundIntensity, "float"), n("backgroundColor", new ze(0, 0, 0), "color"), n("backgroundBlurriness", N.backgroundBlurriness, "float"), n("backgroundBlurSamples", N.backgroundBlurSamples, "int"), r("showBackground", N.showBackground), r("transparentBackground", N.transparentBackground), r("enableEnvironment", N.enableEnvironment), n("environmentMatrix", new We(), "mat4"), n("envTotalSum", 0, "float"), n("envResolution", new Ke(1, 1), "vec2"), r("groundProjectionEnabled", N.groundProjectionEnabled), n("groundProjectionRadius", N.groundProjectionRadius, "float"), n("groundProjectionHeight", N.groundProjectionHeight, "float"), n("groundProjectionLevel", N.groundProjectionLevel, "float"), r("enableGroundCatcher", N.enableGroundCatcher), n("groundCatcherHeight", N.groundCatcherHeight, "float"), n("sunDirection", new qe(0, 1, 0), "vec3"), n("sunRadiance", new qe(), "vec3"), n("sunParams", new Je(1, 0, 0, 0), "vec4"), r("hasSun", !1), n("globalIlluminationIntensity", N.globalIlluminationIntensity, "float"), n("exposure", N.exposure, "float"), n("numDirectionalLights", 0, "int"), n("numAreaLights", 0, "int"), n("numPointLights", 0, "int"), n("numSpotLights", 0, "int"), this._lightBuffers = Object.fromEntries(Object.entries(kt).map(([e, t]) => [e, Et(new Float32Array(t * 16), "float")])), n("cameraWorldMatrix", new We(), "mat4"), n("cameraProjectionMatrixInverse", new We(), "mat4"), n("cameraViewMatrix", new We(), "mat4"), n("cameraProjectionMatrix", new We(), "mat4"), n("cameraClipStart", 0, "float");
62
- let i = ([e, t]) => new Ke(e, t).multiplyScalar(Ue.DEG2RAD);
63
- n("cameraProjection", Pe[N.cameraProjection], "int"), n("panoLonRange", i(N.panoramaLonRange), "vec2"), n("panoLatRange", i(N.panoramaLatRange), "vec2"), r("panoLevelHorizon", N.panoramaLevelHorizon), r("enableDOF", N.enableDOF), n("focusDistance", N.focusDistance, "float"), n("focalLength", N.focalLength, "float"), n("aperture", N.aperture, "float"), n("apertureScale", 1, "float"), n("anamorphicRatio", N.anamorphicRatio ?? 1, "float"), n("unitsPerMetre", N.unitsPerMetre, "float"), n("dofMode", +(N.dofMode === "look"), "int"), n("dofBlur", N.dofBlur, "float"), this._uniforms.set("samplingTechnique", Te), Te.value = N.samplingTechnique, n("fireflyThreshold", N.fireflyThreshold, "float"), n("shadowTerminatorOffset", N.shadowTerminatorOffset, "float"), r("enableEmissiveTriangleSampling", N.enableEmissiveTriangleSampling), n("emissiveBoost", N.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", N.renderMode, "int"), r("enableAlphaShadows", N.enableAlphaShadows), n("resolution", new Ke(e, t), "vec2");
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 = Ot[e] || e;
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
- }, Nt = 1024, Pt = 1e-4;
72
- function Ft(e, t) {
73
- let n = Math.max(1, Math.ceil(e / Nt));
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 It(e, t, n, r, i, a) {
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 Lt(e, t, n, { filtered: r = !0 } = {}) {
88
- let { k: i, width: a, height: o } = Ft(t, n), s = new Float32Array(t * n), c = 0;
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 ? Pt * d / (a * o) : 0, g = new Float32Array(a * o), _ = new Float32Array(o), v = new Float64Array(o), y = 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++) It(g, e * a, a, x, 2 * e * a, 2 * a);
139
- return It(_, 0, o, S, 0, 2 * o), {
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 Rt({ exactWidth: e, exactHeight: t, exactConditional: n, exactMarginal: r, exactRowGuide: i, exactMarginalGuide: a }) {
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 zt = we("gpu"), $ = {
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
- }, Bt = 1024 * 64, Vt = $.GUIDE + Bt, Ht = 1 << 17, Ut = Ht * 4 * 2, Wt = 65535, Gt = {
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
- }, Kt = class {
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 = oe(e, 1, Uint32Array), n = oe(e, 1, Uint32Array);
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 = oe(e, 1, Uint32Array);
205
- this._sortAttr = r, this.sortedIndices = vt(r, "uint"), this.sortedIndicesRO = vt(r, "uint").toReadOnly(), this._sortGlobalHistAttr = new Le(new Uint32Array(256), 1), this.sortGlobalHistogram = vt(this._sortGlobalHistAttr, "uint").toAtomic(), this.pingPong = 0, this.totalBytes = $.COUNT * 4 + e * 4 * 3, zt.debug(`queues capacity ${Ce.n(e)} · ${Ce.mb(this.totalBytes)}`);
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 = Vt + (this._visibilityTable ? 2 * Ut : 0);
209
- this._countersAttr = new Le(new Uint32Array(e), 1), this.counters = vt(this._countersAttr, "uint").toAtomic();
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 && (fe(this._renderer, this._countersAttr), this._allocateCounters()));
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 || (fe(this._renderer, this._bounceCountsAttr), this.curveBands = e, this._bounceCountsAttr = new Le(new Uint32Array(this.pixelCountOffset(e)), 1), this.bounceCounts = vt(this._bounceCountsAttr, "uint"));
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
- fe(this._renderer, this._countersAttr), fe(this._renderer, this._bounceCountsAttr), fe(this._renderer, this._attrA), fe(this._renderer, this._attrB), fe(this._renderer, this._sortAttr), fe(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;
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 qt({ 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 = V(0).toVar(), m = c.toVar();
270
- F(l, () => {
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(Z(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)));
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 = B(h, h), y = B(h, g), b = B(g, g), x = v.mul(b).sub(y.mul(y)).toVar();
275
- return F(x.greaterThan(v.mul(b).mul(1e-12)), () => {
276
- let c = B(_, h), m = B(_, g), S = R(b.mul(c).sub(y.mul(m)).div(x), 0, 1).toVar(), C = R(v.mul(m).sub(y.mul(c)).div(x), 0, V(1).sub(S)).toVar(), w = V(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
- F(l, () => {
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 = B(s.sub(a), t.sub(r)), O = B(s.sub(o), n.sub(r)), k = B(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
- F(B(D, f).greaterThan(0), () => {
288
- let e = W(B(t.sub(T), a).add(W(W(B(n.sub(t), a), B(r.sub(t), a)), 0)), 0), i = W(B(n.sub(T), o).add(W(W(B(t.sub(n), o), B(r.sub(n), o)), 0)), 0), c = W(B(r.sub(T), s).add(W(W(B(t.sub(r), s), B(n.sub(r), s)), 0)), 0);
289
- A.assign(W(G(G(e, i), c), A.mul(.5)));
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 = W(B(T.sub(t), a).add(W(W(B(t.sub(n), a), B(t.sub(r), a)), 0)), 0), i = W(B(T.sub(n), o).add(W(W(B(n.sub(t), o), B(n.sub(r), o)), 0)), 0), c = W(B(T.sub(r), s).add(W(W(B(r.sub(t), s), B(r.sub(n), s)), 0)), 0);
292
- A.assign(G(G(G(e, i), c).negate(), A.mul(.5)));
293
- }), p.assign(U(D).mul(A));
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 Jt({ hitPoint: e, offsetNormal: t, lift: n, faceN: r, smoothN: i, L: a, cutoff: o }) {
297
- let s = B(i, a), c = B(r, a), l = W(o, 1e-6), d = J(o.greaterThan(0).and(s.greaterThan(0)), J(s.lessThan(o), R(V(2).sub(c.add(s).div(l)), 0, 1), R(V(1).sub(c.div(l)), 0, 1)), V(0));
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 Yt = /* @__PURE__ */ Q("\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"), Xt = /* @__PURE__ */ Q("\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"), Zt = (e, t) => {
303
- let n = H(t.x), r = H(t.y), i = W(n.add(H(Nt - 1)).div(H(Nt)), H(1));
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(H(1)).div(i).toVar(),
306
- h: r.add(i).sub(H(1)).div(i).toVar(),
307
- entry: (t, n) => e.load(lt(t, n))
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
- }, Qt = (e, t, n) => {
310
- let r = e.mul(H(2)).toVar(), i = R(H(n.mul(V(r))), H(0), r.sub(H(1))).toVar(), a = i.bitAnd(H(1)).equal(H(1)).toVar(), o = t(i.shiftRight(H(1))).toVar(), s = H(J(a, o.w, o.z)).toVar(), c = t(s).toVar();
311
- return F(n.lessThan(c.y).or(n.greaterThanEqual(c.x).and(s.lessThan(e.sub(H(1))))), () => {
312
- let o = W(s.sub(H(1)), H(0)).toVar(), l = t(i.shiftRight(H(1)).add(H(1))), u = J(i.add(H(2)).lessThan(r), H(J(a, l.w, l.z)), e.sub(H(1))).toVar();
313
- Xe(o.lessThan(u), () => {
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
- F(t(e).x.lessThanEqual(n), () => {
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
- }, $t = (e, t, n, r) => {
327
- let i = gt(r.mul(Math.PI));
328
- return J(i.greaterThan(0).and(e.greaterThan(0)), e.mul(V(t)).mul(V(n)).div(W(i.mul(2 * Math.PI * Math.PI), 1e-30)), V(0));
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 en(e, t, n, r) {
331
- let { w: i, h: a, entry: o } = Zt(e, n), s = Qt(a, (e) => o(i, e), r.y), c = s.index.toVar(), l = Qt(i, (e) => o(e, c), r.x), u = s.top.sub(s.bottom).toVar(), d = l.top.sub(l.bottom).toVar(), f = R(r.y.sub(s.bottom).div(W(u, 1e-30)), 0, .99999994), p = R(r.x.sub(l.bottom).div(W(d, 1e-30)), 0, .99999994), m = Dt(V(l.index).add(p).div(V(i)), V(c).add(f).div(V(a))).toVar();
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: Xt({
333
+ direction: Zt({
334
334
  uv: m,
335
335
  environmentMatrix: t
336
336
  }),
337
- pdf: $t(u.mul(d), i, a, m.y)
337
+ pdf: en(u.mul(d), i, a, m.y)
338
338
  };
339
339
  }
340
- function tn(e, t, n, r) {
341
- let { w: i, h: a, entry: o } = Zt(e, n), s = Yt({
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 = R(H(s.x.mul(V(i))), H(0), i.sub(H(1))).toVar(), l = R(H(s.y.mul(V(a))), H(0), a.sub(H(1))).toVar(), u = o(i, l).toVar(), d = o(c, l).toVar();
345
- return $t(u.x.sub(u.y).mul(d.x.sub(d.y)), i, a, s.y);
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 nn = /* @__PURE__ */ Q("\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", [Yt]), rn = P(([e, t, n, r]) => {
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 F(l.greaterThanEqual(0), () => {
352
- let t = Y(l).sub(s).toVar(), r = V(1e6).toVar(), c = i.y.toConst();
353
- F(c.lessThanEqual(0), () => {
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
- F(n.dot(n).lessThan(o), () => {
355
+ I(n.dot(n).lessThan(o), () => {
356
356
  r.assign(t);
357
357
  });
358
- }), F(t.greaterThan(0), () => {
359
- u.assign(a.add(i.mul(G(t, r))).div(n));
358
+ }), I(t.greaterThan(0), () => {
359
+ u.assign(a.add(i.mul(K(t, r))).div(n));
360
360
  });
361
361
  }), u;
362
- }), an = P(([e, t, n, r, i, a]) => {
362
+ }), on = F(([e, t, n, r, i, a]) => {
363
363
  let o = t.toVar();
364
- return F(n, () => {
365
- let n = Z(e.x, e.y.sub(a), e.z);
366
- o.assign(rn(n, t, r, i));
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
- }), on = /* @__PURE__ */ Q("\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"), sn = /* @__PURE__ */ Q("\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"), cn = /* @__PURE__ */ Q("\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"), ln = /* @__PURE__ */ Q("\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"), un = /* @__PURE__ */ Q("\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"), dn = 1e-6, fn = (e) => {
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
- P(([e, t, n]) => {
373
- let r = W(Z(V(1).sub(n)), e);
374
- return e.add(r.sub(e).mul(fn(V(1).sub(t))));
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 pn = P(([e, t]) => {
377
- let n = R(e, 0, 1);
378
- return t.add(V(1).sub(t).mul(fn(V(1).sub(n))));
379
- }), mn = P(([e, t]) => {
380
- let n = R(e, 0, 1);
381
- return t.add(Z(1).sub(t).mul(fn(V(1).sub(n))));
382
- }), hn = P(([e]) => {
383
- let t = Y(e);
384
- return Z(1).add(t).div(W(Z(1).sub(t), Z(dn)));
385
- }), gn = P(([e, t]) => {
386
- let n = e.sub(Z(t)), r = W(e.add(Z(t)), Z(dn)), i = n.div(r);
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
- }), _n = P(([e, t]) => {
389
- let n = e.sub(t), r = W(e.add(t), dn), i = n.div(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
- }), vn = (e) => Z(_n(e, V(1))), yn = P(([e, t]) => {
392
- let n = R(e, 0, 1), r = t.mul(t).sub(1).add(n.mul(n)), i = Y(W(r, 0)), a = i.sub(n).div(W(i.add(n), dn)), o = n.mul(i.add(n)).sub(1).div(W(n.mul(i.sub(n)).add(1), dn));
393
- return J(r.greaterThan(0), R(a.mul(a).mul(.5).mul(o.mul(o).add(1)), 0, 1), V(1));
394
- }), bn = P(([e, t]) => {
395
- let n = _n(t, V(1));
396
- return R(yn(e, t).sub(n).div(W(V(1).sub(n), dn)), 0, 1);
397
- }), xn = .5, Sn = new Float32Array([
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
- ]), Cn = 1e-30, wn = P(([e, t]) => {
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(W(V(T).mul(i).mul(i), Cn));
17809
- }), Tn = P(([e, t]) => {
17810
- let n = W(t, he), r = n.mul(n), i = V(1).div(r.mul(r)), a = e.mul(e).mul(i.sub(1)).add(1);
17811
- return i.div(W(V(T).mul(a).mul(a), ge));
17812
- }), En = P(([e]) => V(1).div(W(e, he))), Dn = P(([e, t]) => R(V(1).div(W(V(4).mul(t.add(e).sub(t.mul(e))), ge)), 0, 1)), On = .5 - 2 / (3 * Math.PI), kn = 2 / 3 - 28 / (15 * Math.PI), An = (e) => {
17813
- let t = V(1).sub(e);
17814
- return t.mul(V(.0571085289).add(t.mul(V(.491881867).add(t.mul(V(-.332181442).add(t.mul(.0714429953)))))));
17815
- }, jn = P(([e, t, n, r, i]) => {
17816
- let a = V(1).div(V(1).add(t.mul(On))), o = i.sub(n.mul(r)), s = e.mul(a.mul(ae).mul(V(1).add(t.mul(o.greaterThan(0).select(o.div(W(n, r)), o))))), c = R(e, Z(0), Z(1)), l = a.mul(V(1).add(t.mul(kn))), u = c.mul(c).mul(l).div(Z(1).sub(c.mul(V(1).sub(l)))), d = t.mul(a).mul(W(V(On).sub(An(n)), 0)).mul(W(V(On).sub(An(r)), 0)).mul(1 / (On - kn));
17817
- return s.add(u.mul(d.mul(ae)));
17818
- }), Mn = P(([e, t]) => {
17819
- let n = t.mul(t), r = n.mul(n), i = e.add(Y(r.add(V(1).sub(r).mul(e.mul(e)))));
17820
- return V(2).mul(e).div(W(i, ge));
17821
- }), Nn = P(([e, t, n]) => {
17822
- let r = n.mul(n), i = r.mul(r), a = t.mul(Y(i.add(V(1).sub(i).mul(e.mul(e))))), o = e.mul(Y(i.add(V(1).sub(i).mul(t.mul(t)))));
17823
- return V(.5).div(W(a.add(o), ge));
17824
- }), Pn = 17, Fn = new Be(Sn, 16 * Pn, 16, Ge, Ve);
17825
- Fn.minFilter = He, Fn.magFilter = He, Fn.wrapS = Re, Fn.wrapT = Re, Fn.generateMipmaps = !1, Fn.needsUpdate = !0;
17826
- var In = Ct(Fn);
17827
- In.setUpdateMatrix(!1);
17828
- var Ln = (e, t, n = 0) => Dt(R(e, 0, 1).mul(15).add(.5).add(V(n).mul(16)).div(16 * Pn), R(t, 0, 1).mul(15 / 16).add(.5 / 16)), Rn = P(([e, t]) => R(In.sample(Ln(t, e)).g, 0, 1)), zn = P(([e, t, n, r, i, o, s, c, l, u]) => {
17829
- let d = In.sample(Ln(u, l)).toVar(), f = R(n.sub(1).div(n.add(1)).div(xn), 0, 1).mul(16).toVar(), p = G(st(f), V(15)).toVar(), m = In.sample(Ln(u, l, p.add(1))).toVar(), h = R(K(m.r, m.g, f.sub(p)), 0, 1), g = W(d.r, .05).toVar(), _ = R(d.b, 0, 1).toVar(), v = e.mul(g.sub(h)).add(Z(t.mul(h))), y = r.mul(g.sub(_)).add(Z(_)), b = o.mul(g.sub(_)).add(Z(_)), x = W(K(K(v, y, i), b, s), Z(0)), S = Z(1).add(c.mul(V(1).div(g).sub(1)));
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: R(x.mul(S), Z(0), Z(1))
17832
+ E_total: z(x.mul(S), Q(0), Q(1))
17833
17833
  });
17834
- }), Bn = P(([e, t]) => {
17835
- let n = G(vn(e.ior).mul(e.specularColor), Z(1)).mul(e.specularIntensity), r = R(t.mul(e.specularIntensity), Z(0), Z(1));
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: W(e.ior, 1),
17839
+ eta: G(e.ior, 1),
17840
17840
  F0m: r,
17841
- F0: R(K(n, r, e.metalness), Z(0), Z(1))
17841
+ F0: z(q(n, r, e.metalness), Q(0), Q(1))
17842
17842
  });
17843
- }), Vn = P(([e, t, n]) => {
17844
- let r = wn(e, n), i = Mn(t, n);
17845
- return r.mul(i).div(W(t.mul(4), ge));
17846
- }), Hn = P(([e, t]) => {
17847
- let n = W(e.mul(e), 1e-4).toVar();
17848
- return Dt(W(K(n, V(1), t.mul(t)), 1e-4), n);
17849
- }), Un = P(([e, t, n, r, i]) => {
17850
- let a = e.mul(t), o = Z(t.mul(r), e.mul(i), a.mul(n)), s = W(B(o, o), Cn), c = a.div(s);
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
- }), Wn = P(([e, t, n, r, i, a, o, s]) => {
17853
- let c = s.mul(Z(e.mul(n), t.mul(r), o).length()), l = o.mul(Z(e.mul(i), t.mul(a), s).length());
17854
- return V(.5).div(W(c.add(l), ge));
17855
- }), Gn = P(([e, t, n, r, i]) => {
17856
- let a = e.mul(n), o = t.mul(r), s = a.mul(a).add(o.mul(o)), c = W(i.mul(i), ge), l = Y(V(1).add(s.div(c))).sub(1).mul(.5);
17857
- return V(1).div(l.add(1));
17858
- }), Kn = P(([e, t, n, r, i, a, o, s]) => {
17859
- let c = Un(e, t, n, r, i), l = Gn(e, t, o, s, a);
17860
- return c.mul(l).div(W(a.mul(4), ge));
17861
- }), qn = P(([e, t]) => {
17862
- let n = V(O).mul(e).mul(1e-9), r = Z(54856e-17, 44201e-17, 52481e-17), i = Z(1681e3, 1795300, 2208400), a = Z(43278e5, 93046e5, 66121e5), o = r.mul(Y(V(O).mul(a))).mul(it(i.mul(n).add(t))).mul(at(m({ x: n }).negate().mul(a))).toVar();
17863
- return o.x.addAssign(V(9747e-17).mul(Y(V(O).mul(45282e5))).mul(it(V(2239900).mul(n).add(t.x))).mul(at(V(-45282e5).mul(m({ x: n }))))), ue.mul(o.div(1.0685e-7));
17864
- }), Jn = P(([e, t, n, r, i]) => {
17865
- let a = K(e, t, _t(0, .03, r)).toVar(), o = m({ x: e.div(a) }).mul(V(1).sub(m({ x: n }))), s = V(1).sub(o).toVar(), c = Z(0).toVar();
17866
- return F(s.lessThan(0), () => {
17867
- c.assign(Z(1));
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 = Y(s).toVar(), o = pn(n, _n(a, e)).toVar(), l = V(1).sub(o).toVar(), u = a.lessThan(e).select(V(T), V(0)), d = V(T).sub(u), f = hn(R(i, 0, .9999)).toVar(), p = gn(f, a).toVar(), m = Z(pn(t, p.x), pn(t, p.y), pn(t, p.z)).toVar(), h = Z(f.x.lessThan(a).select(V(T), V(0)), f.y.lessThan(a).select(V(T), V(0)), f.z.lessThan(a).select(V(T), V(0))), g = V(2).mul(a).mul(r).mul(t).toVar(), _ = Z(d).add(h).toVar(), v = R(Z(o).mul(m), 1e-5, .9999).toVar(), y = Y(v).toVar(), b = Z(l.mul(l)).mul(m).div(Z(1).sub(v)).toVar(), x = Z(o).add(b).toVar().toVar(), S = b.sub(Z(l)).toVar();
17870
- S.mulAssign(y), x.addAssign(S.mul(V(2).mul(qn(V(1).mul(g), V(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(V(2).mul(qn(V(2).mul(g), V(2).mul(_))))), c.assign(W(x, Z(0)));
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
- }), Yn = P(([e, t, n], r) => {
17873
- let i = me(r), a = n.invRoughness, o = n.metalFactor, s = V(0).toVar();
17874
- F(t.isMetallic, () => {
17875
- s.assign(W(a.mul(o), .7));
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(W(a.mul(o), e.metalness.mul(.1)));
17879
+ s.assign(G(a.mul(o), e.metalness.mul(.1)));
17880
17880
  });
17881
- let c = s.mul(e.specularIntensity).toVar(), l = V(1).sub(s).mul(V(1).sub(e.metalness)).mul(V(1).sub(e.transmission)).toVar(), u = (i.sheen ? e.sheen.mul(n.maxSheenColor) : V(0)).toVar(), d = V(0).toVar();
17882
- i.clearcoat && F(t.hasClearcoat, () => {
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 = V(0).toVar();
17888
- F(t.isTransmissive, () => {
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(V(.6).add(V(.4).mul(e.ior.div(2)))).mul(V(1).add(e.dispersion.mul(.6))));
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(V(.5).add(V(.5).mul(e.ior.div(2)))).mul(V(1).add(e.dispersion.mul(.5))));
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(V(.6), V(.5))), m = G(i.iridescence ? e.iridescence.mul(p).mul(V(.5).add(V(.5).mul(e.iridescenceThicknessRange.y.sub(e.iridescenceThicknessRange.x).div(1e3)))).mul(V(.5).add(V(.5).mul(e.iridescenceIOR.div(2)))) : V(0), l);
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) : V(0)).toVar();
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 = V(1).div(W(_, .001));
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: V(0),
17906
+ iridescence: H(0),
17907
17907
  diffuseTransmission: h.mul(v)
17908
17908
  });
17909
- }), Xn = P(([e, t, n], r) => {
17910
- let i = me(r), a = V(0).toVar();
17911
- return F(n.NoL.greaterThan(0), () => {
17912
- a.addAssign(t.diffuse.mul(n.NoL).mul(ae));
17913
- let r = V(0).toVar(), o = () => {
17914
- r.assign(Vn(n.NoH, n.NoV, e.roughness));
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 ? F(e.anisotropy.greaterThan(0), () => {
17917
- let t = Hn(e.roughness, e.anisotropy);
17918
- r.assign(Kn(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 && F(t.sheen.greaterThan(0), () => {
17920
- let r = Tn(n.NoH, e.sheenRoughness).mul(n.NoH).div(W(V(4).mul(n.VoH), ge));
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 && F(t.clearcoat.greaterThan(0), () => {
17923
- let r = R(e.clearcoatRoughness, S, 1);
17924
- a.addAssign(t.clearcoat.mul(Vn(n.coatNoH, n.coatNoV, r)));
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
- }), Zn = P(([e, t]) => e.mul(t).mul(ae)), Qn = P(([e]) => g.wrap($n(e)).diffuseTransmission), $n = P(([e]) => Yn(e, p.wrap(ye(e.metalness, e.roughness, e.transmission, e.clearcoat, e.emissive, e.subsurface)), b({
17928
- invRoughness: V(1).sub(e.roughness),
17929
- metalFactor: V(.5).add(V(.5).mul(e.metalness)),
17930
- iorFactor: G(V(2).div(e.ior), 1),
17931
- maxSheenColor: W(e.sheenColor.x, W(e.sheenColor.y, e.sheenColor.z))
17932
- }))), er = P(([e, t]) => Xn(e, g.wrap($n(e)), t)), tr = (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)), nr = (e, t, n, r, i, a) => {
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 F(t.diffuseRoughness.greaterThan(0), () => {
17936
- let e = G(n.VoH, n.LoH);
17937
- o.assign(jn(i, t.diffuseRoughness, n.NoL, n.NoV, e.mul(e).mul(2).sub(1)).mul(a));
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
- }, rr = (e) => P(([t, n], r) => {
17940
- let i = me(r), o = Z(0).toVar();
17941
- return F(tr(t), () => {
17942
- let e = V(1).sub(t.metalness).mul(V(1).sub(t.diffuseTransmission));
17943
- o.assign(nr(i, t, n, t.color.rgb.mul(V(1).sub(t.metalness)).mul(V(1).sub(t.diffuseTransmission)).mul(ae), t.color.rgb, e));
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(Bn(t, t.color.rgb)).toVar(), c = s.F0.toVar(), l = Z(0).toVar(), u = t.color.rgb.toVar();
17946
- i.dispersion && F(t.dispersion.greaterThan(0).and(t.transmission.greaterThan(.5)), () => {
17947
- let e = R(t.dispersion.mul(.1), 0, .8), n = W(W(u.r, u.g), u.b), r = G(G(u.r, u.g), u.b);
17948
- F(n.greaterThan(r), () => {
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(K(u, t, e.mul(.3)));
17950
+ u.assign(q(u, t, e.mul(.3)));
17951
17951
  });
17952
- }), i.iridescence && F(t.iridescence.greaterThan(0), () => {
17952
+ }), i.iridescence && I(t.iridescence.greaterThan(0), () => {
17953
17953
  let e = t.iridescenceThicknessRange.y;
17954
- l.assign(Jn(V(1), t.iridescenceIOR, n.VoH, e, c)), c.assign(K(c, l, t.iridescence));
17954
+ l.assign(Yn(H(1), t.iridescenceIOR, n.VoH, e, c)), c.assign(q(c, l, t.iridescence));
17955
17955
  });
17956
- let d = K(K(s.f0, Z(s.f90), bn(n.VoH, s.eta)), mn(n.VoH, s.F0m), t.metalness), f = (i.iridescence ? K(d, mn(n.VoH, l), t.iridescence) : d).toVar(), p = Z(0).toVar(), m = () => {
17957
- let e = wn(n.NoH, t.roughness), r = Nn(n.NoV, n.NoL, t.roughness);
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 ? F(t.anisotropy.greaterThan(0), () => {
17961
- let e = Hn(t.roughness, t.anisotropy), r = Un(e.x, e.y, n.NoH, n.ToH, n.BoH), i = Wn(e.x, e.y, n.ToV, n.BoV, n.ToL, n.BoL, n.NoV, n.NoL);
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) : F(t.roughness.greaterThan(0), m);
17964
- let h = a.wrap(zn(s.f0, s.f90, s.eta, s.F0m, V(0), l, t.iridescence, c, n.NoV, t.roughness)), g = (e ? f : p).mul(h.compensation), _ = Z(1).sub(h.E_total).mul(V(1).sub(t.metalness)).mul(V(1).sub(t.transmission)).mul(V(1).sub(t.diffuseTransmission)), y = (e ? Z(0) : nr(i, t, n, _.mul(u).mul(ae), u, _)).add(g).toVar();
17965
- i.sheen ? F(t.sheen.greaterThan(0), () => {
17966
- let r = Tn(n.NoH, t.sheenRoughness), i = Dn(n.NoV, n.NoL), a = t.sheenColor.mul(t.sheen).mul(r).mul(i), s = Rn(n.NoV, t.sheenRoughness), c = R(t.sheenColor.mul(t.sheen).mul(s), Z(0), Z(1)), l = Z(1).sub(c);
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 && F(t.clearcoat.greaterThan(0), () => {
17971
- let i = W(t.clearcoatRoughness, S), s = Z(.04), c = a.wrap(zn(s, V(1), V(1.5), Z(0), V(0), Z(0), V(0), s, n.coatNoV, i)), l = wn(n.coatNoH, i), u = Nn(n.coatNoV, n.coatNoL, i), d = yn(n.VoH, V(1.5)), f = Z(l.mul(u).mul(d)).mul(c.compensation), p = ie(r) ? f.mul(n.coatNoL.div(n.NoL)) : f, m = Z(1).sub(c.E_total.mul(t.clearcoat));
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
- }), ir = /* @__PURE__ */ rr(!1), ar = /* @__PURE__ */ rr(!0), or = P(([e, t, n], r) => {
17976
- let i = me(r), o = Z(0).toVar(), s = W(B(t, n), .001);
17977
- return i.diffuseTransmission && F(e.diffuseTransmission.greaterThan(0), () => {
17978
- let c = Z(V(1).sub(e.metalness).mul(V(1).sub(e.transmission))).toVar();
17979
- F(tr(e).not(), () => {
17980
- let t = v.wrap(Bn(e, e.color.rgb)), n = t.F0.toVar(), r = Z(0).toVar();
17981
- i.iridescence && F(e.iridescence.greaterThan(0), () => {
17982
- r.assign(Jn(V(1), e.iridescenceIOR, s, e.iridescenceThicknessRange.y, n)), n.assign(K(n, r, e.iridescence));
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(zn(t.f0, t.f90, t.eta, t.F0m, V(0), r, e.iridescence, n, s, e.roughness));
17985
- c.mulAssign(Z(1).sub(o.E_total));
17986
- }), o.assign(c.mul(e.diffuseTransmission).mul(e.diffuseTransmissionColor).mul(ae)), i.sheen && F(e.sheen.greaterThan(0), () => {
17987
- let t = Rn(s, e.sheenRoughness);
17988
- o.mulAssign(Z(1).sub(R(e.sheenColor.mul(e.sheen).mul(t), Z(0), Z(1))));
17989
- }), i.clearcoat && F(e.clearcoat.greaterThan(0), () => {
17990
- let i = a.wrap(zn(Z(.04), V(1), V(1.5), Z(0), V(0), Z(0), V(0), Z(.04), W(B(Se(t, e, r), n), .001), W(e.clearcoatRoughness, S)));
17991
- o.mulAssign(Z(1).sub(i.E_total.mul(e.clearcoat)));
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
- }), sr = P(([e, t, n, r], i) => {
17995
- let a = Z(0).toVar(), o = () => {
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(ir(r, i));
17997
+ a.assign(ar(r, i));
17998
17998
  };
17999
- return me(i).diffuseTransmission ? F(B(n, t).lessThan(0).and(r.diffuseTransmission.greaterThan(0)), () => {
18000
- a.assign(or(r, n, e));
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
- }), cr = j({
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
- }), lr = j({
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
- }), ur = j({
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
- }), dr = j({
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
- }), fr = j({
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
- }), pr = j({
18050
+ }), mr = j({
18051
18051
  direction: "vec3",
18052
18052
  throughput: "vec3",
18053
18053
  combinedPdf: "float"
18054
- }), mr = P(([e, t]) => {
18054
+ }), hr = F(([e, t]) => {
18055
18055
  let n = t.mul(12);
18056
- return cr({
18057
- direction: q(Z(e.element(n), e.element(n.add(1)), e.element(n.add(2)))),
18058
- color: Z(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
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: H(e.element(n.add(8))),
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
- }), hr = P(([e, t]) => {
18066
- let n = t.mul(16), r = Z(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = Z(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a = z(r, i), o = e.element(n.add(15)), s = U(a).mul(4);
18067
- return lr({
18068
- position: Z(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
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: Z(e.element(n.add(9)), e.element(n.add(10)), e.element(n.add(11))),
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: q(a),
18077
- area: J(o.greaterThan(.5), s.mul(.7853981633974483), s)
18076
+ normal: J(a),
18077
+ area: Y(o.greaterThan(.5), s.mul(.7853981633974483), s)
18078
18078
  });
18079
- }), gr = P(([e, t]) => {
18079
+ }), _r = F(([e, t]) => {
18080
18080
  let n = t.mul(10);
18081
- return ur({
18082
- position: Z(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
18083
- color: Z(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
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
- }), _r = P(([e, t]) => {
18089
+ }), vr = F(([e, t]) => {
18090
18090
  let n = t.mul(20);
18091
- return dr({
18092
- position: Z(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
18093
- direction: q(Z(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5)))),
18094
- color: Z(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))),
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: H(e.element(n.add(14))),
18100
+ goboIndex: U(e.element(n.add(14))),
18101
18101
  goboIntensity: e.element(n.add(15)),
18102
- iesIndex: H(e.element(n.add(16))),
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
- }), vr = /* @__PURE__ */ Q("\n fn isDirectionValid( direction: vec3f, surfaceNormal: vec3f ) -> bool {\n return dot( direction, surfaceNormal ) > 0.0f;\n }\n"), yr = /* @__PURE__ */ Q("\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"), br = /* @__PURE__ */ Q("\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"), xr = /* @__PURE__ */ P(([e, t], n) => {
18107
- let { goboMaps: r } = w(n), i = V(1).toVar();
18108
- return F(e.goboIndex.greaterThanEqual(H(0)), () => {
18109
- let n = e.direction.toVar(), a = t.negate().toVar(), o = B(a, n).toVar();
18110
- F(o.greaterThan(0), () => {
18111
- let t = q(z(J(I(n.z).lessThan(.999), Z(0, 0, 1), Z(1, 0, 0)), n)).toVar(), s = z(n, t), c = V(1).div(o).toVar(), l = B(a, t).mul(c), u = B(a, s).mul(c), d = V(.5).div(W(St(e.angle), V(1e-4))).toVar(), f = R(l.mul(d).add(.5), V(0), V(1)), p = R(u.mul(d).add(.5), V(0), V(1));
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 = G(t.r, t.a), a = J(e.goboIntensity.lessThan(0), V(1).sub(n), n), o = R(I(e.goboIntensity), V(0), V(1));
18114
- i.assign(K(V(1), a, o));
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
- }), Sr = /* @__PURE__ */ P(([e, t], n) => {
18121
- let { goboMaps: r } = w(n), i = V(1).toVar();
18122
- return F(e.goboIndex.greaterThanEqual(H(0)), () => {
18123
- let n = e.direction.toVar(), a = q(z(J(I(n.z).lessThan(.999), Z(0, 0, 1), Z(1, 0, 0)), n)).toVar(), o = z(n, a), s = V(1).div(W(e.goboScale, V(1e-4))).toVar(), c = B(t, a).mul(s).add(.5).toVar(), l = B(t, o).mul(s).add(.5).toVar(), u = c.sub(c.floor()), d = l.sub(l.floor());
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 = G(t.r, t.a), a = J(e.goboIntensity.lessThan(0), V(1).sub(n), n), o = R(I(e.goboIntensity), V(0), V(1));
18126
- i.assign(K(V(1), a, o));
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
- }), Cr = /* @__PURE__ */ P(([e, t], n) => {
18130
- let { iesProfiles: r } = w(n), i = V(1).toVar();
18131
- return F(e.iesIndex.greaterThanEqual(H(0)), () => {
18132
- let n = e.direction.toVar(), a = t.negate().toVar(), o = R(Qe(R(B(a, n), V(-1), V(1))).div(V(Math.PI)), V(0), V(1)), s = q(z(J(I(n.z).lessThan(.999), Z(0, 0, 1), Z(1, 0, 0)), n)).toVar(), c = z(n, s), l = B(a, s), u = $e(B(a, c), l).div(V(2 * Math.PI)).add(.5);
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 = R(e.iesIntensity, V(0), V(1));
18135
- i.assign(K(V(1), t, n));
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
- }), wr = /* @__PURE__ */ Q("\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"), Tr = P(([e, t, n]) => {
18139
- let r = e.normal, i = B(r, n), a = V(-1).toVar();
18140
- return F(i.lessThan(-1e-4), () => {
18141
- let o = V(1).div(i), s = B(e.position.sub(t), r).mul(o).toVar();
18142
- F(s.greaterThan(.001), () => {
18143
- let r = t.add(n.mul(s)).sub(e.position), i = U(e.u), o = U(e.v), c = e.u.div(i), l = e.v.div(o), u = B(r, c).div(i), d = B(r, l).div(o);
18144
- F(J(e.shape.greaterThan(.5), u.mul(u).add(d.mul(d)).lessThanEqual(1), I(u).lessThanEqual(1).and(I(d).lessThanEqual(1))), () => {
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
- }), Er = /* @__PURE__ */ Q("\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"), Dr = /* @__PURE__ */ Q("\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"), Or = j({
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
- }), kr = j({
18153
+ }), Ar = j({
18154
18154
  sigmaT: "vec3",
18155
18155
  sigmaS: "vec3",
18156
18156
  sigmaA: "vec3"
18157
- }), Ar = j({
18157
+ }), jr = j({
18158
18158
  direction: "vec3",
18159
18159
  throughput: "vec3",
18160
18160
  didReflect: "bool"
18161
- }), jr = P(([e, t, n]) => {
18162
- let r = V(0).toVar();
18163
- F(I(t).lessThan(.001), () => {
18164
- r.assign(V(1).sub(n.x.mul(2)));
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 = W(V(1).sub(t).add(t.mul(2).mul(n.x)), 1e-4), i = V(1).sub(t.mul(t)).div(e);
18167
- r.assign(V(1).add(t.mul(t)).sub(i.mul(i)).div(t.mul(2)));
18168
- }), r.assign(R(r, -1, 1));
18169
- let i = Y(W(V(0), V(1).sub(r.mul(r)))), a = V(O).mul(n.y);
18170
- return xe({ N: e }).mul(Z(i.mul(it(a)), i.mul(gt(a)), r));
18171
- }), Mr = P(([e, t, n, r, i, a, o, s, c]) => {
18172
- let l = W(n, Z(1e-4)), u = l.div(l.x.add(l.y).add(l.z)).toVar(), d = M(a, H(0), c.add(H(10)), i, o, s).toVar(), f = V(0).toVar();
18173
- F(d.lessThan(u.x), () => {
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 = M(a, H(0), c.add(H(9)), i, o, s).toVar(), m = ut(W(V(1).sub(p), 1e-6)).negate().div(W(f, 1e-6)).toVar(), h = m.lessThan(r).toVar(), g = m.toVar(), _ = Z(0).toVar();
18181
- return F(h, () => {
18182
- let n = at(e.mul(m).negate()).toVar(), r = B(u, e.mul(n));
18183
- _.assign(t.mul(n).div(W(r, 1e-6)));
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 = at(e.mul(r).negate()).toVar(), n = B(u, t);
18186
- _.assign(t.div(W(n, 1e-6))), g.assign(r);
18187
- }), Or({
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
- }), Nr = P(([e, t, n]) => {
18193
- let r = W(t.mul(n), Z(1e-4)), i = Z(1).div(r), a = e.mul(i);
18194
- return kr({
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: W(i.sub(a), Z(0))
18197
+ sigmaA: G(i.sub(a), Q(0))
18198
18198
  });
18199
- }), Pr = P(([e, t, n, r, i, a, o, s, c, l, u]) => {
18200
- let d = Ar({
18201
- direction: Z(0),
18202
- throughput: Z(1),
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 = J(r, t, t.negate()).toVar(), p = J(r, l, n.ior).toVar(), m = J(r, n.ior, u).toVar(), h = I(B(f, e)), g = p.mul(p).div(W(m.mul(m), ge)).mul(V(1).sub(h.mul(h))).greaterThan(1).toVar(), _ = yn(h, m.div(W(p, ge))).toVar(), v = R(_, .02, .98).toVar(), y = g.or(M(a, H(0), c.add(H(11)), i, o, s).lessThan(v)).toVar();
18205
- return d.didReflect.assign(y), F(y, () => {
18206
- let t = Me(a, H(0), c.add(H(5)), i, o, s), r = pt(e, on({
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
- F(B(r, f).lessThanEqual(0), () => {
18212
- r.assign(pt(e, f));
18213
- }), d.direction.assign(r), d.throughput.assign(Z(_.div(W(v, .02))));
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 = mt(e, f, p.div(W(m, ge))).toVar();
18216
- F(B(t, t).lessThan(1e-4), () => {
18217
- d.direction.assign(pt(e, f)), d.didReflect.assign(!0);
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(q(t));
18220
- let e = p.mul(p).div(W(m.mul(m), ge));
18221
- d.throughput.assign(Z(V(1).sub(_).div(W(V(1).sub(v), .02)).mul(e)));
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
- }), Fr = j({
18224
+ }), Ir = j({
18225
18225
  direction: "vec3",
18226
18226
  throughput: "vec3",
18227
18227
  didReflect: "bool",
18228
18228
  pathWavelength: "float"
18229
- }), Ir = j({
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 Lr = j({
18247
+ var Rr = j({
18248
18248
  wavelength: "float",
18249
18249
  ior: "float",
18250
18250
  colorWeight: "vec3"
18251
- }), Rr = j({
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
- }), zr = /* @__PURE__ */ P(([e, t, n]) => {
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
- }), Br = /* @__PURE__ */ P(([e, t, n, r]) => {
18262
- let i = J(e.lessThan(t), n, r), a = e.sub(t).mul(i);
18263
- return at(V(-.5).mul(a).mul(a));
18264
- }), Vr = /* @__PURE__ */ P(([e]) => Z(Br(e, 442, .0624, .0374).mul(.362).add(Br(e, 599.8, .0264, .0323).mul(1.056)).sub(Br(e, 501.1, .049, .0382).mul(.065)), Br(e, 568.8, .0213, .0247).mul(.821).add(Br(e, 530.9, .0613, .0322).mul(.286)), Br(e, 437, .0845, .0278).mul(1.217).add(Br(e, 459, .0385, .0725).mul(.681)))), Hr = P(([e, t, n]) => {
18265
- let r = K(V(380), V(700), n).toVar(), i = zr(e, t, r), a = Vr(r).toVar();
18266
- return Lr({
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: W(Z(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))), Z(0)).mul(Z(1.819, 2.773, 2.928))
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
- }), Ur = /* @__PURE__ */ Q("\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"), Wr = P(([e, t, n, r, i, a, o, s, c, l, u, d, f], p) => {
18272
- let m = me(p), h = Rr({
18273
- direction: Z(0),
18274
- halfVector: Z(0),
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: V(0),
18277
- colorWeight: Z(1),
18276
+ pdf: H(0),
18277
+ colorWeight: Q(1),
18278
18278
  pathWavelength: c
18279
18279
  }).toVar(), g = () => {
18280
- let p = W(he, r), g = on({
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 _ = J(i, V(1).div(n), n).toVar();
18287
- m.dispersion && F(a.greaterThan(0), () => {
18288
- F(c.greaterThan(0), () => {
18289
- let e = zr(n, a, c);
18290
- _.assign(J(i, V(1).div(e), e));
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 = Lr.wrap(Hr(n, a, M(l, H(0), f.add(H(5)), s, u, d)));
18293
- _.assign(J(i, V(1).div(e.ior), e.ior)), h.colorWeight.assign(e.colorWeight), h.pathWavelength.assign(e.wavelength);
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 = R(B(g, e), .001, 1).toVar(), y = R(B(t, g), .001, 1).toVar(), b = wn(y, p).toVar(), x = mt(e.negate(), g, _).toVar();
18297
- F(B(x, x).lessThan(.001), () => {
18298
- h.direction.assign(pt(e.negate(), g)), h.didReflect.assign(!0), h.pdf.assign(b.mul(y).div(W(V(4).mul(v), le)));
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 = R(B(g, x), .001, 1), t = v.add(_.mul(e)), n = I(e).div(t.mul(t));
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 ? F(r.lessThanEqual(.05).and(a.greaterThan(0)), () => {
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 = J(i, V(1).div(r), r).toVar();
18308
- F(c.greaterThan(0), () => {
18309
- let e = zr(n, a, c);
18310
- o.assign(J(i, V(1).div(e), e));
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 = Lr.wrap(Hr(n, a, M(l, H(0), f.add(H(5)), s, u, d)));
18313
- o.assign(J(i, V(1).div(e.ior), e.ior)), h.colorWeight.assign(e.colorWeight), h.pathWavelength.assign(e.wavelength);
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 = mt(e.negate(), t, o).toVar();
18316
- F(B(p, p).lessThan(.001), () => {
18317
- h.direction.assign(pt(e.negate(), t)), h.didReflect.assign(!0), h.pdf.assign(1);
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
- }), Gr = P(([e, t, n, r, i, a, o, s, c, l, u, d]) => {
18323
- let f = Fr({
18324
- direction: Z(0),
18325
- throughput: Z(1),
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 = J(r, t, t.negate()).toVar(), m = e.negate().toVar(), h = J(r, l, n.ior).toVar(), g = J(r, n.ior, u).toVar(), _ = I(B(p, e)), v = h.mul(h).div(g.mul(g)).mul(V(1).sub(_.mul(_))).greaterThan(1).toVar(), y = yn(_, g.div(h)).toVar(), b = V(0).toVar();
18329
- F(v, () => {
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 = V(.95);
18333
- b.assign(R(K(e, t, n.metalness), .05, .95));
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(M(a, H(0), c.add(H(4)), i, o, s).lessThan(b)).toVar();
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 = Me(a, H(0), c.add(H(4)), i, o, s).toVar();
18338
- return F(x, () => {
18339
- F(n.roughness.greaterThan(.05), () => {
18340
- let e = Rr.wrap(Wr(m, p, n.ior, n.roughness, r, V(0), S, i, V(0), a, o, s, c));
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(pt(e, p));
18344
- }), f.throughput.assign(n.color.xyz.mul(y).div(W(b, .05)));
18343
+ f.direction.assign(ft(e, p));
18344
+ }), f.throughput.assign(n.color.xyz.mul(y).div(G(b, .05)));
18345
18345
  }).Else(() => {
18346
- F(n.roughness.greaterThan(.05).or(n.dispersion.greaterThan(0)), () => {
18347
- let e = Rr.wrap(Wr(m, p, n.ior, n.roughness, r, n.dispersion, S, i, d, a, o, s, c));
18348
- f.pathWavelength.assign(e.pathWavelength), F(e.didReflect, () => {
18349
- f.direction.assign(e.direction), f.didReflect.assign(!0), f.throughput.assign(n.color.xyz.div(W(V(1).sub(b), .05)));
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(mt(e, p, h.div(g))), f.throughput.assign(Z(1));
18355
- }), F(f.didReflect.not(), () => {
18356
- f.throughput.mulAssign(n.color.xyz), f.throughput.mulAssign(h.mul(h).div(W(g.mul(g), ge))), f.throughput.mulAssign(V(1).sub(y).div(W(V(1).sub(b), .05)));
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
- }), Kr = P(([e, t, n, r, i, a, o, s, c, l, u, d, f], p) => {
18360
- let m = Ir({
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: Z(1),
18369
- alpha: V(1),
18368
+ throughput: Q(1),
18369
+ alpha: H(1),
18370
18370
  pathWavelength: f
18371
18371
  }).toVar();
18372
- return F(r.alphaMode.equal(H(0)).and(r.transmission.lessThanEqual(0)).and(r.subsurface.lessThanEqual(0)), () => {}).Else(() => {
18373
- let h = M(a, H(0), c.add(H(6)), i, o, s), g = M(a, H(0), c.add(H(7)), i, o, s), _ = je({ state: i }), v = L(!1).toVar();
18374
- F(r.alphaMode.equal(H(2)), () => {
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
- F(h.greaterThan(t), () => {
18377
- m.continueRay.assign(!0), m.direction.assign(e.direction), m.throughput.assign(Z(1)), m.alpha.assign(0), m.isAlphaSkip.assign(!0), v.assign(!0);
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
- }), F(v.not().and(r.alphaMode.equal(H(1))), () => {
18382
- let t = J(r.alphaTest.greaterThan(0), r.alphaTest, V(.5));
18383
- F(r.color.a.mul(r.opacity).lessThan(t), () => {
18384
- m.continueRay.assign(!0), m.direction.assign(e.direction), m.throughput.assign(Z(1)), m.alpha.assign(0), m.isAlphaSkip.assign(!0), v.assign(!0);
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
- }), F(v.not().and(r.transmission.greaterThan(0)).and(l.greaterThan(H(0))), () => {
18389
- F(g.lessThan(r.transmission), () => {
18390
- let i = Fr.wrap(Gr(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(V(1).sub(r.transmission)), m.pathWavelength.assign(i.pathWavelength);
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
- }), me(p).subsurface && F(v.not().and(r.subsurface.greaterThan(0)), () => {
18394
- F(n.not().or(M(a, H(0), c.add(H(8)), i, o, s).lessThan(r.subsurface)), () => {
18395
- let l = Ar.wrap(Pr(e.direction, t, r, n, i, a, o, s, c, u, d)).toVar();
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
- }), qr = (i) => P(([a, o, c, l, u, d, f], p) => {
18401
- let { alphaShadows: m, shadowAlbedoMaps: g, linearBuckets: _ } = w(p), v = !i && E(p), b = V(1).toVar(), x = a.toVar(), S = V(c).toVar();
18402
- return Xe({
18403
- start: H(0),
18404
- end: H(16)
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: x,
18933
+ origin: S,
18408
18934
  direction: o
18409
- }), c = y.wrap(l(a, u, d, S));
18410
- F(c.didHit.not(), () => {
18411
- Ye();
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
- F(s(p, m), () => {
18415
- b.assign(0), Ye();
18940
+ I(s(p, m), () => {
18941
+ x.assign(0), Je();
18416
18942
  });
18417
- let C = ce.wrap(h(c.materialIndex, f)), w = () => {
18418
- let e = c.uv.x, n = c.uv.y, r = V(1).sub(e).sub(n), i = wt(t(d, c.triangleIndex, 3)), a = wt(t(d, c.triangleIndex, 4).xy);
18419
- return ke({
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: C.albedoTransform
18947
+ transform: v.albedoTransform
18422
18948
  });
18423
- }, T = L(!1).toVar();
18424
- m && F(m.equal(H(1)), () => {
18425
- let e = V(1).toVar();
18426
- g && F(C.albedoMapIndex.greaterThanEqual(H(0)), () => {
18427
- e.assign(Ne(g, C.albedoMapIndex, w()).a);
18428
- }), F(C.alphaMode.equal(H(1)), () => {
18429
- let t = C.color.a.mul(e).mul(C.opacity), n = J(C.alphaTest.greaterThan(0), C.alphaTest, V(.5));
18430
- F(t.lessThan(n), () => {
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(C.alphaMode.equal(H(2)), () => {
18434
- let t = R(C.color.a.mul(C.opacity).mul(e), 0, 1);
18435
- b.mulAssign(V(1).sub(t)), F(b.lessThan(1e-4), () => {
18436
- b.assign(0), Ye();
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
- }), F(T, () => {
18440
- let e = W(V(1e-5), U(c.hitPoint).mul(1e-6));
18441
- x.assign(c.hitPoint.add(o.mul(e))), S.subAssign(c.dst.add(e));
18442
- }).ElseIf(C.transmission.greaterThan(0), i ? () => {
18443
- b.assign(0), Ye();
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 = C.transmission;
18446
- if (v) {
18971
+ let i = v.transmission;
18972
+ if (b) {
18447
18973
  i = i.toVar();
18448
- let e = H(n(f, c.materialIndex, H(pe.EXT_MAP_INDICES_A), H(te)).r).toVar();
18449
- F(e.greaterThanEqual(H(0)), () => {
18450
- i.mulAssign(Ne(_, e, w()).r);
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 = q(z(s.sub(a), l.sub(a))).toVar();
18454
- F(c.instanceLeaf.greaterThanEqual(H(0)), () => {
18455
- p.assign(q(r(e(u, c.instanceLeaf), p)));
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 = B(o, m).lessThan(0), g = J(h, m, m.negate());
18460
- F(h.not().and(C.attenuationDistance.greaterThan(0)), () => {
18461
- let e = U(c.hitPoint.sub(x)), t = Ur(C.attenuationColor, C.attenuationDistance, e);
18462
- b.mulAssign(t.x.add(t.y).add(t.z).div(3));
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 = yn(I(B(o, g)), W(C.ior, 1)), T = V(1).sub(y).mul(i);
18465
- b.mulAssign(T), F(b.lessThan(1e-4), () => {
18466
- b.assign(0), Ye();
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 = W(V(1e-5), U(c.hitPoint).mul(1e-6));
18469
- x.assign(c.hitPoint.add(o.mul(E))), S.subAssign(c.dst.add(E));
18470
- }).ElseIf(C.transparent, () => {
18471
- b.mulAssign(V(1).sub(C.opacity)), F(b.lessThan(1e-4), () => {
18472
- b.assign(0), Ye();
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 = W(V(1e-5), U(c.hitPoint).mul(1e-6));
18475
- x.assign(c.hitPoint.add(o.mul(e))), S.subAssign(c.dst.add(e));
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
- b.assign(0), Ye();
19003
+ x.assign(0), Je();
18478
19004
  });
18479
- }), b;
18480
- }), Jr = /* @__PURE__ */ qr(!1), Yr = /* @__PURE__ */ qr(!0);
18481
- P(([e, t]) => u(e, t).sub(e));
18482
- var Xr = (e, t, n) => J(n.diffuseTransmission.greaterThan(0), I(B(e, t)), W(V(0), B(e, t))), Zr = P(([e, t, n, r]) => {
18483
- let i = Xr(t, e.direction, n), a = V(0).toVar();
18484
- return F(i.greaterThan(0), () => {
18485
- let t = e.intensity.mul(B(e.color, ve)), o = V(1).toVar();
18486
- F(n.metalness.greaterThan(.7), () => {
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 = V(1).div(V(1).add(V(r).mul(.5)));
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
- }), Qr = P(([e, t, n, r]) => {
18495
- let i = e.position.sub(t), a = U(i), o = a.mul(a), s = i.div(a), c = Xr(n, s, r), l = V(0).toVar();
18496
- return F(c.greaterThan(0), () => {
18497
- let t = W(B(s, e.normal).negate(), 0);
18498
- F(t.greaterThan(0), () => {
18499
- let n = G(e.area.div(W(o, 1e-12)), V(2 * Math.PI)), i = J(e.normalize.greaterThan(.5), V(1).div(W(e.area, 1e-10)), V(1)), a = e.intensity.mul(B(e.color, ve)).mul(i), s = V(1).toVar();
18500
- F(r.metalness.greaterThan(.7), () => {
18501
- s.mulAssign(1.5), F(r.roughness.lessThan(.3), () => {
18502
- s.mulAssign(V(1).add(V(1).sub(r.roughness).mul(.5)));
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
- }), F(r.transmission.greaterThan(.5), () => {
18505
- s.mulAssign(V(1).add(r.transmission.mul(.3)));
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
- }), $r = P(([e, t, n, r]) => {
18510
- let i = e.position.sub(t), a = B(i, i), o = V(0).toVar();
18511
- return F(a.greaterThanEqual(.001), () => {
18512
- let t = Y(a), s = Xr(n, i.div(t), r);
18513
- F(s.greaterThan(0), () => {
18514
- let t = V(1).div(W(a, .1)), n = e.intensity.mul(B(e.color, ve)), i = V(1).toVar();
18515
- F(r.metalness.greaterThan(.7), () => {
18516
- i.mulAssign(1.5), F(r.roughness.lessThan(.3), () => {
18517
- i.mulAssign(V(1).add(V(1).sub(r.roughness).mul(.4)));
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
- }), F(r.roughness.greaterThan(.6), () => {
19045
+ }), I(r.roughness.greaterThan(.6), () => {
18520
19046
  i.mulAssign(.9);
18521
- }), F(r.transmission.greaterThan(.5), () => {
18522
- i.mulAssign(V(1).add(r.transmission.mul(.2)));
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
- }), ei = P(([e, t, n, r]) => {
18527
- let i = e.position.sub(t), a = B(i, i), o = V(0).toVar();
18528
- return F(a.greaterThanEqual(.001), () => {
18529
- let t = i.div(Y(a)), s = Xr(n, t, r);
18530
- F(s.greaterThan(0), () => {
18531
- let n = B(t.negate(), e.direction), i = it(e.angle);
18532
- F(n.greaterThanEqual(i), () => {
18533
- let t = V(1).div(W(a, .01)), c = _t(i, i.add(.1), n), l = e.intensity.mul(B(e.color, ve)), u = J(r.metalness.greaterThan(.7), V(1.5), J(r.roughness.greaterThan(.8), V(.8), V(1)));
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
- }), ti = Z(...Ie), ni = Z(...Ie.map((e) => (e + 2) / 2)), ri = /* @__PURE__ */ P(([e, t, n, r]) => {
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
- }, oi = Vt, si = Vt + Ut, ci = Ht * 4, li = 1 / 32, ui = 1 / 64, di = 65536, fi = (e, t) => je({ state: e.bitXor(t) }), pi = (e, t, n) => {
18553
- let r = rt(dt(W(U(e.sub(n)).mul(li), 1e-6))).toVar(), i = st(e.div(ot(r))).toVar(), a = I(t), o = J(a.x.greaterThan(W(a.y, a.z)), J(t.x.greaterThan(0), X(0), X(1)), J(a.y.greaterThan(a.z), J(t.y.greaterThan(0), X(2), X(3)), J(t.z.greaterThan(0), X(4), X(5)))), s = je({ state: X(H(r).add(1024)) });
18554
- return s = fi(s, X(H(i.x))), s = fi(s, X(H(i.y))), s = fi(s, X(H(i.z))), s = fi(s, o), s.bitAnd(X(Ht - 1)).toVar();
18555
- }, mi = (e, t) => e.mul(X(4)).add(X(t)).mul(X(2)), hi = (e, t, n) => {
18556
- let r = X(oi).add(mi(t, n)).toVar(), i = V(tt(e.element(r)));
18557
- return Y(W(V(tt(e.element(r.add(X(1))))).add(.5).div(i.add(1)), ui));
18558
- }, gi = (e, t, n, r) => {
18559
- let i = X(si).add(mi(t, n)).toVar();
18560
- et(e.element(i), X(1)), F(r, () => {
18561
- et(e.element(i.add(X(1))), X(1));
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 _i({ counters: e }) {
18565
- return P(() => {
18566
- F(ct.greaterThanEqual(X(ci)), () => {
18567
- Ze();
19081
+ function oa({ counters: e }) {
19082
+ return F(() => {
19083
+ I(st.greaterThanEqual(Z(Zi)), () => {
19084
+ Xe();
18568
19085
  });
18569
- let t = X(oi).add(ct.mul(X(2))).toVar(), n = X(si).add(ct.mul(X(2))).toVar(), r = tt(e.element(t)).add(tt(e.element(n))).toVar(), i = tt(e.element(t.add(X(1)))).add(tt(e.element(n.add(X(1))))).toVar();
18570
- F(r.greaterThan(X(di)), () => {
18571
- r.assign(r.shiftRight(X(1))), i.assign(i.shiftRight(X(1)));
18572
- }), nt(e.element(t), r), nt(e.element(t.add(X(1))), i), nt(e.element(n), X(0)), nt(e.element(n.add(X(1))), X(0));
18573
- })().compute(ci, [256]);
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 vi({ counters: e }) {
18576
- let t = 2 * Ut;
18577
- return P(() => {
18578
- F(ct.lessThan(X(t)), () => {
18579
- nt(e.element(X(oi).add(ct)), X(0));
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 yi = 2 * T, bi = P(([e, t]) => {
18586
- let n = V(1).toVar();
18587
- return F(t.lessThan(V(T).sub(.001)).and(e.greaterThan(0)), () => {
18588
- let r = t.mul(.5).toVar(), i = St(r).toVar(), a = Y(W(V(1).sub(e.mul(e)), 0)).div(W(e, 1e-4)), o = J(r.greaterThan(.05), V(1).div(W(i.sub(r), 1e-6)), V(3).div(W(r.mul(r).mul(r), 1e-9)));
18589
- n.assign(W(i.sub(a).mul(o), 0));
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
- }), xi = P(([e]) => {
18592
- let t = J(e.normalize.greaterThan(.5), V(1).div(W(e.area, 1e-10)), V(1));
18593
- return e.color.mul(e.intensity).mul(ae).mul(t);
18594
- }), Si = P(([e, t, n, r]) => {
18595
- let i = L(!1).toVar(), a = Z(0, 1, 0).toVar(), o = Z(0).toVar(), s = V(0).toVar(), c = V(0).toVar(), l = H(2).toVar();
18596
- return F(e.area.greaterThan(0), () => {
18597
- let u = Z(0).toVar(), d = V(-1).toVar();
18598
- F(e.shape.greaterThan(.5), () => {
18599
- let t = Y(n.x).toVar(), r = V(yi).mul(n.y).toVar();
18600
- u.assign(e.position.add(e.u.mul(t.mul(it(r)))).add(e.v.mul(t.mul(gt(r)))));
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 = Dr(t, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2), n).toVar();
18603
- F(r.w.greaterThan(0), () => {
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 = B(f, f).toVar();
18610
- F(p.greaterThanEqual(1e-10), () => {
18611
- let t = Y(p).toVar(), n = f.div(t).toVar(), u = B(n.negate(), e.normal).toVar();
18612
- l.assign(H(1)), s.assign(t), a.assign(n), o.assign(xi(e).mul(bi(u, e.spread)));
18613
- let m = p.div(W(e.area.mul(W(u, .001)), 1e-10)), h = J(d.greaterThan(0), d, m);
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
- }), fr({
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: V(0)
19140
+ selectionTotalWeight: H(0)
18624
19141
  });
18625
- }), Ci = (e, t, n, r) => {
18626
- let i = V(1).toVar();
18627
- return F(e.radius.greaterThan(0), () => {
18628
- let a = t.div(Y(n)).toVar(), o = e.radius.mul(Y(r.x)), s = r.y.mul(2 * Math.PI);
18629
- t.addAssign(xe({ N: a }).mul(Z(o.mul(it(s)), o.mul(gt(s)), 0))), n.assign(B(t, t)), i.assign(W(B(t, a).div(Y(n)), 0));
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
- }, wi = P(([e, t, n, r], i) => {
18632
- let a = L(!1).toVar(), o = Z(0, 1, 0).toVar(), s = Z(0).toVar(), c = V(0).toVar(), l = V(0).toVar(), u = H(3).toVar(), d = e.position.sub(t).toVar(), f = B(d, d).toVar();
18633
- return F(f.greaterThanEqual(1e-20), () => {
18634
- let t = _e(i), u = t ? d.div(Y(f)).toVar() : null, p = t ? Ci(e, d, f, r) : null, m = Y(f).toVar(), h = d.div(m).toVar(), g = t ? u : h, _ = B(g.negate(), e.direction).toVar(), v = it(e.angle).toVar();
18635
- o.assign(h), c.assign(m), l.assign(n), a.assign(_.greaterThanEqual(v)), F(a, () => {
18636
- let n = br({
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 = yr({
19157
+ }), r = br({
18641
19158
  lightDistance: m,
18642
19159
  cutoffDistance: e.distance,
18643
19160
  decayExponent: e.decay
18644
- }), i = xr(e, g), a = Cr(e, g), o = e.color.mul(e.intensity).mul(r).mul(n).mul(i).mul(a);
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
- }), fr({
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: V(0)
19171
+ selectionTotalWeight: H(0)
18655
19172
  });
18656
- }), Ti = P(([e, t, n, r], i) => {
18657
- let a = L(!1).toVar(), o = Z(0, 1, 0).toVar(), s = Z(0).toVar(), c = V(0).toVar(), l = V(0).toVar(), u = H(2).toVar(), d = e.position.sub(t).toVar(), f = B(d, d).toVar();
18658
- return F(f.greaterThanEqual(1e-20), () => {
18659
- let t = _e(i), p = t ? Ci(e, d, f, r) : null, m = Y(f).toVar(), h = d.div(m), g = yr({
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(H(2)), o.assign(h), c.assign(m);
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(L(!0));
18667
- }), fr({
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: V(0)
19191
+ selectionTotalWeight: H(0)
18675
19192
  });
18676
- }), Ei = P(([e, t, n, r, i]) => {
18677
- let a = L(!1).toVar(), o = Z(0, 1, 0).toVar(), s = Z(0).toVar(), c = V(0).toVar();
18678
- return F(e.intensity.greaterThan(0), () => {
18679
- let l = q(e.direction).toVar(), u = e.color.mul(e.intensity).mul(Sr(e, t)).toVar();
18680
- o.assign(l), c.assign(n), F(e.angle.greaterThan(0), () => {
18681
- let t = it(e.angle.mul(.5)).toVar(), a = K(t, V(1), r).toVar(), s = Y(W(V(0), V(1).sub(a.mul(a)))).toVar(), d = V(yi).mul(i).toVar(), f = q(z(J(I(l.x).greaterThan(.9), Z(0, 1, 0), Z(1, 0, 0)), l)).toVar(), p = z(l, f).toVar();
18682
- o.assign(q(l.mul(a).add(f.mul(it(d)).add(p.mul(gt(d))).mul(s))));
18683
- let m = V(yi).mul(W(V(1).sub(t), 1e-10)).toVar();
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(L(!0));
18686
- }), fr({
19202
+ }), s.assign(u), a.assign(R(!0));
19203
+ }), pr({
18687
19204
  valid: a,
18688
19205
  direction: o,
18689
19206
  emission: s,
18690
- distance: V(1e6),
19207
+ distance: H(1e6),
18691
19208
  pdf: c,
18692
- lightType: H(0),
18693
- selectionTotalWeight: V(0)
19209
+ lightType: U(0),
19210
+ selectionTotalWeight: H(0)
18694
19211
  });
18695
- }), Di = P(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _]) => {
18696
- let v = L(!1).toVar(), y = Z(0, 1, 0).toVar(), b = Z(0).toVar(), x = V(0).toVar(), S = V(0).toVar(), C = H(2).toVar(), w = V(0).toVar(), T = d.add(p).add(h).add(_).toVar();
18697
- return F(T.greaterThan(H(0)), () => {
18698
- let E = H(De + 64).toVar(), D = E.add(d).toVar(), ee = D.add(p).toVar(), O = ee.add(h).toVar(), k = H(-1).toVar(), A = H(-1).toVar(), j = V(0).toVar();
18699
- F(d.greaterThan(H(0)), () => {
18700
- Xe({
18701
- start: H(0),
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 = Zr(cr.wrap(mr(u, e)), t, n, i).toVar();
18707
- w.addAssign(r), F(r.greaterThan(0).and(M(o, H(0), E.add(e), a, s, c).mul(w).lessThan(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
- }), F(p.greaterThan(H(0)), () => {
18712
- Xe({
18713
- start: H(0),
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 = lr.wrap(hr(f, r)), l = J(i.intensity.greaterThan(0), Qr(i, e, t, n), V(0)).toVar();
18719
- w.addAssign(l), F(l.greaterThan(0).and(M(o, H(0), D.add(r), a, s, c).mul(w).lessThan(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
- }), F(h.greaterThan(H(0)), () => {
18724
- Xe({
18725
- start: H(0),
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 = $r(ur.wrap(gr(m, r)), e, t, n).toVar();
18731
- w.addAssign(i), F(i.greaterThan(0).and(M(o, H(0), ee.add(r), a, s, c).mul(w).lessThan(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
- }), F(_.greaterThan(H(0)), () => {
18736
- Xe({
18737
- start: H(0),
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 = ei(dr.wrap(_r(g, r)), e, t, n).toVar();
18743
- w.addAssign(i), F(i.greaterThan(0).and(M(o, H(0), O.add(r), a, s, c).mul(w).lessThan(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
- }), F(w.lessThanEqual(0), () => {
18748
- let t = H(r.x.mul(V(T))).toVar(), n = V(1).div(W(V(T), 1)).toVar();
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 = L(!1).toVar(), w = H(0).toVar();
18751
- F(d.greaterThan(H(0)), () => {
18752
- F(i.not().and(t.greaterThanEqual(w)).and(t.lessThan(w.add(d))), () => {
18753
- let d = cr.wrap(mr(u, t.sub(w)));
18754
- F(d.intensity.greaterThan(0), () => {
18755
- let t = fr.wrap(Ei(d, e, n, r.y, M(o, H(0), l.add(H(14)), a, s, c)));
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(L(!0));
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
- }), F(p.greaterThan(H(0)), () => {
18760
- F(i.not().and(t.greaterThanEqual(w)).and(t.lessThan(w.add(p))), () => {
18761
- let u = lr.wrap(hr(f, t.sub(w)));
18762
- F(u.intensity.greaterThan(0), () => {
18763
- let t = Dt(r.y, M(o, H(0), l.add(H(15)), a, s, c)).toVar(), d = fr.wrap(Si(u, e, t, n));
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(L(!0));
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
- }), F(h.greaterThan(H(0)), () => {
18768
- F(i.not().and(t.greaterThanEqual(w)).and(t.lessThan(w.add(h))), () => {
18769
- let u = ur.wrap(gr(m, t.sub(w)));
18770
- F(u.intensity.greaterThan(0), () => {
18771
- let t = fr.wrap(Ti(u, e, n, Dt(r.y, M(o, H(0), l.add(H(15)), a, s, c))));
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(L(!0));
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
- }), F(_.greaterThan(H(0)), () => {
18776
- F(i.not().and(t.greaterThanEqual(w)).and(t.lessThan(w.add(_))), () => {
18777
- let u = dr.wrap(_r(g, t.sub(w)));
18778
- F(u.intensity.greaterThan(0), () => {
18779
- let t = fr.wrap(wi(u, e, n, Dt(r.y, M(o, H(0), l.add(H(15)), a, s, c))));
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(L(!0));
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(W(w, 1e-10)).toVar();
18786
- F(k.equal(H(0)).and(A.greaterThanEqual(H(0))), () => {
18787
- let n = cr.wrap(mr(u, A)), i = fr.wrap(Ei(n, e, t, r.y, M(o, H(0), l.add(H(14)), a, s, c)));
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
- }), F(k.equal(H(1)).and(A.greaterThanEqual(H(0))), () => {
18790
- let n = lr.wrap(hr(f, A)), i = Dt(r.y, M(o, H(0), l.add(H(15)), a, s, c)).toVar(), u = fr.wrap(Si(n, e, i, t));
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
- }), F(k.equal(H(2)).and(A.greaterThanEqual(H(0))), () => {
18793
- let n = ur.wrap(gr(m, A)), i = fr.wrap(Ti(n, e, t, Dt(r.y, M(o, H(0), l.add(H(15)), a, s, c))));
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
- }), F(k.equal(H(3)).and(A.greaterThanEqual(H(0))), () => {
18796
- let n = dr.wrap(_r(g, A)), i = fr.wrap(wi(n, e, t, Dt(r.y, M(o, H(0), l.add(H(15)), a, s, c))));
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
- }), fr({
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
- }), Oi = P(([e, t]) => W(er(e, t), 1e-8)), ki = P(([e, t, n, r]) => {
18810
- let i = V(0).toVar();
18811
- return F(B(n, t).lessThan(0).and(r.diffuseTransmission.greaterThan(0)), () => {
18812
- i.assign(W(Zn(Qn(r), B(n, t).negate()), 1e-8));
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(Oi(r, a));
19332
+ i.assign(_a(r, a));
18816
19333
  }), i;
18817
- }), Ai = .99999994, ji = () => ({
18818
- kind: H(0).toVar(),
18819
- weight: V(0).toVar(),
18820
- value: Z(0).toVar(),
18821
- origin: Z(0).toVar(),
18822
- direction: Z(0, 1, 0).toVar(),
18823
- distance: V(0).toVar()
18824
- }), Mi = [
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
- ], Ni = (e, t) => Mi.forEach((n) => e[n].assign(t[n])), Pi = (e, t = null, n = "one") => {
18832
- let r = V(e).toVar(), i = V(0).toVar(), a = ji(), o = n === "two" ? ji() : null, s = (e) => {
18833
- F(e.weight.greaterThan(0), () => {
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
- F(r.lessThan(t), () => {
18837
- r.assign(G(r.div(t), Ai)), Ni(a, e);
19353
+ I(r.lessThan(t), () => {
19354
+ r.assign(K(r.div(t), ya)), Sa(a, e);
18838
19355
  }).Else(() => {
18839
- r.assign(G(r.sub(t).div(V(1).sub(t)), Ai));
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 = B(e, ve), l = {
18846
- kind: H(a),
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(Mi.map((e) => [e, J(u, o[e], l[e]).toVar()]))), F(u, () => Ni(o, l));
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 = Z(0).toVar();
18860
- return Xe({
18861
- start: H(0),
18862
- end: H(o ? 2 : 1),
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(H(0)) : L(!1), c = (e) => o ? J(s, o[e], a[e]) : a[e], l = c("weight").toVar();
18867
- F(l.greaterThan(0), () => {
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(J(s, V(1), i.div(l))));
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
- }, Fi = (e, t = null) => P(([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, re, ie, ae, oe, se, ce, le, ue, de, fe, pe, me, he, _e, ve, ye, be, xe, Se, Ce]) => {
18875
- let we = Z(0).toVar(), Te = Z(0).toVar(), Ee = u(n, de).toVar(), De = (e) => Jt({
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: de,
18878
- lift: ue,
18879
- faceN: de,
19394
+ offsetNormal: ue,
19395
+ lift: le,
19396
+ faceN: ue,
18880
19397
  smoothN: i,
18881
19398
  L: e,
18882
- cutoff: fe
18883
- }), Oe = P(([e, t, n]) => Jr(e, t, n, Ae, A, j, te)), ke = (t) => e ? a.diffuseTransmission.greaterThan(0).and(B(r, t).lessThan(0)).and(B(t, i).lessThan(0)) : L(!1), je = e ? u(n, de.negate()) : null, Ne = (e) => B(r, e).greaterThan(0).and(vr({
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
- })), Pe = (t, n) => e ? n.or(Ne(t)) : Ne(t), N = (t) => e ? I(B(r, t)) : W(V(0), B(r, t)), Fe = (t, n) => e ? J(t, je, n) : n, Ie = (e) => {
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: ir(a, t),
18890
- pdf: Oi(a, t).toVar()
19406
+ value: ar(a, t),
19407
+ pdf: _a(a, t).toVar()
18891
19408
  };
18892
- }, Le = (t, n) => {
18893
- if (!e) return Ie(t);
18894
- let i = Z(0).toVar(), s = V(0).toVar();
18895
- return F(n, () => {
18896
- i.assign(or(a, r, o)), s.assign(W(Zn(Qn(a), B(r, t).negate()), 1e-8));
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 = Ie(t);
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
- }, Re = x.add(w).add(E).add(O).toVar(), ze = Re.greaterThan(H(0)).toVar(), Be = V(0).toVar(), Ve = t ? {
18905
- share: (e) => hi(Se, Ce, e),
18906
- record: (e, t) => gi(Se, Ce, e, t)
18907
- } : null, He = t ? Pi(M(g, H(0), y, h, _, v), Ve, t) : null;
18908
- return He && He.offer(ve, ye, be, xe, ai.EMITTERS), F(ze, () => {
18909
- let e = Me(g, H(0), y.add(H(2)), h, _, v).toVar(), t = fr.wrap(Di(n, r, a, e, m, h, g, _, v, y, b, x, S, w, T, E, ee, O));
18910
- Be.assign(t.selectionTotalWeight), F(t.valid.and(t.pdf.greaterThan(0)), () => {
18911
- let e = ke(t.direction).toVar(), r = N(t.direction).toVar();
18912
- F(Pe(t.direction, e), () => {
18913
- let i = Fe(e, De(t.direction)).toVar(), a = n.add(t.direction.mul(t.distance)).sub(i).toVar(), o = U(a).toVar(), s = () => {
18914
- let { value: n, pdf: i } = Le(t.direction, e), a = V(1).toVar();
18915
- return F(i.greaterThan(0).and(t.lightType.equal(H(1))), () => {
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(W(t.pdf, 1e-10));
19437
+ }), t.emission.mul(n).mul(r).mul(a).div(G(t.pdf, 1e-10));
18921
19438
  };
18922
- if (He) He.offer(s(), i, a.div(o), o.mul(D), ai.LAMPS);
19439
+ if (Ve) Ve.offer(s(), i, a.div(o), o.mul(D), Ji.LAMPS);
18923
19440
  else {
18924
- let e = Oe(i, a.div(o), o.mul(D));
18925
- F(e.greaterThan(0).or(le), () => {
19441
+ let e = De(i, a.div(o), o.mul(D));
19442
+ I(e.greaterThan(0).or(ce), () => {
18926
19443
  let t = s();
18927
- we.addAssign(t.mul(e)), F(le, () => {
18928
- Te.addAssign(t);
19444
+ Ce.addAssign(t.mul(e)), I(ce, () => {
19445
+ we.addAssign(t);
18929
19446
  });
18930
19447
  });
18931
19448
  }
18932
19449
  });
18933
19450
  });
18934
- }), F(f.greaterThan(0).and(w.greaterThan(H(0))), () => {
18935
- let e = ke(s).toVar(), t = N(s).toVar();
18936
- F(Pe(s, e), () => {
18937
- let i = V(1e30).toVar(), o = H(-1).toVar();
18938
- Xe({
18939
- start: H(0),
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 = lr.wrap(hr(S, e));
18945
- F(t.intensity.greaterThan(0), () => {
18946
- let r = Tr(t, n, s).toVar();
18947
- F(r.greaterThan(0).and(r.lessThan(i)), () => {
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
- }), F(o.greaterThanEqual(H(0)), () => {
18952
- let c = lr.wrap(hr(S, o)), l = Fe(e, Ee).toVar(), u = n.add(s.mul(i)).sub(l).toVar(), m = U(u).toVar(), h = Oe(l, u.div(m), m.mul(D));
18953
- F(h.greaterThan(0).or(le), () => {
18954
- let e = W(V(0), B(s, c.normal).negate()).toVar();
18955
- F(e.greaterThan(0), () => {
18956
- let o = Er(n, c.position.sub(c.u).sub(c.v), c.u.mul(2), c.v.mul(2)).toVar(), s = i.mul(i).div(W(c.area.mul(e), ge)), l = J(c.shape.lessThan(.5).and(o.greaterThan(1e-5)), V(1).div(W(o, 1e-10)), s).toVar(), u = Qr(c, n, r, a), m = J(Be.greaterThan(0), u.div(W(Be, 1e-10)), V(1).div(W(V(Re), 1))), g = d({
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(), _ = xi(c).mul(bi(e, c.spread)).mul(p).mul(t).mul(g).div(W(f, 1e-10));
18960
- we.addAssign(_.mul(h)), F(le, () => {
18961
- Te.addAssign(_);
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
- }), F(ce, () => {
18968
- let e = J(pe.greaterThan(H(0)), H(2), H(1));
18969
- Xe({
18970
- start: H(0),
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(H(1)).toVar(), n = Z(0).toVar(), r = Z(0, 1, 0).toVar(), i = V(0).toVar();
18977
- F(t, () => {
18978
- let e = Me(g, H(0), y.add(H(9)), h, _, v);
18979
- r.assign(ii(me, _e, e)), n.assign(ri(r, me, he, _e).mul(re)), i.assign(J(n.x.add(n.y).add(n.z).greaterThan(0), V(1).div(_e.y), V(0)));
18980
- }).ElseIf(oe.greaterThan(0), () => {
18981
- let e = en(ae, ie, se, Me(g, H(0), y.add(H(1)), h, _, v));
18982
- r.assign(e.direction), n.assign(nn({
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: ht(ne),
19501
+ samp: mt(ne),
18985
19502
  direction: r,
18986
- environmentMatrix: ie,
18987
- environmentIntensity: re,
18988
- enableEnvironmentLight: V(1)
19503
+ environmentMatrix: re,
19504
+ environmentIntensity: M,
19505
+ enableEnvironmentLight: H(1)
18989
19506
  }).xyz), i.assign(e.pdf);
18990
- }), F(i.greaterThan(0), () => {
18991
- let e = ke(r).toVar(), a = N(r).toVar();
18992
- F(Pe(r, e), () => {
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 } = Le(r, e), c = J(s.greaterThan(0), J(t, d({
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
- })), V(1)).toVar();
19001
- return n.mul(o).mul(a).mul(c).div(W(i, 1e-10));
19517
+ })), H(1)).toVar();
19518
+ return n.mul(o).mul(a).mul(c).div(G(i, 1e-10));
19002
19519
  };
19003
- if (He) {
19004
- He.offer(o(), Fe(e, De(r)), r, V(0x56bc75e2d63100000), J(t, H(ai.SUN), H(ai.ENVIRONMENT)));
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 = Oe(Fe(e, De(r)), r, V(0x56bc75e2d63100000));
19008
- F(s.greaterThan(0).or(le), () => {
19524
+ let s = De(Pe(e, Ee(r)), r, H(0x56bc75e2d63100000));
19525
+ I(s.greaterThan(0).or(ce), () => {
19009
19526
  let e = o();
19010
- we.addAssign(e.mul(s)), F(le, () => {
19011
- Te.addAssign(e);
19527
+ Ce.addAssign(e.mul(s)), I(ce, () => {
19528
+ we.addAssign(e);
19012
19529
  });
19013
19530
  });
19014
19531
  });
19015
19532
  });
19016
19533
  });
19017
- }), He && we.addAssign(He.trace(Oe)), l({
19018
- shadowed: we,
19019
- unoccluded: Te
19534
+ }), Ve && Ce.addAssign(Ve.trace(De)), l({
19535
+ shadowed: Ce,
19536
+ unoccluded: we
19020
19537
  });
19021
- }), Ii = /* @__PURE__ */ Fi(!1), Li = /* @__PURE__ */ Fi(!0), Ri = /* @__PURE__ */ new Map(), zi = (e, t) => {
19538
+ }), Ta = /* @__PURE__ */ wa(!1), Ea = /* @__PURE__ */ wa(!0), Da = /* @__PURE__ */ new Map(), Oa = (e, t) => {
19022
19539
  let n = `${e}:${t}`;
19023
- return Ri.has(n) || Ri.set(n, Fi(e, t)), Ri.get(n);
19024
- }, Bi = 1e6, Vi = P(([e, t, n, r, i, a, s, l, u, d, f, p, m, h, g], _) => {
19025
- let v = me(_), y = Z(0).toVar(), x = Z(0).toVar(), w = V(0).toVar(), T = L(!1).toVar(), E = Z(1).toVar(), D = L(!1).toVar(), ee = L(!1).toVar(), O = m.toVar();
19026
- F(p.not(), () => {
19027
- F(h, () => {
19028
- O.assign(Yn(n, f, g));
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: V(1).sub(n.roughness),
19032
- metalFactor: V(.5).add(V(.5).mul(n.metalness)),
19033
- iorFactor: G(V(2).div(n.ior), 1),
19034
- maxSheenColor: W(n.sheenColor.x, W(n.sheenColor.y, n.sheenColor.z))
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(Yn(n, f, e));
19553
+ O.assign(Xn(n, f, e));
19037
19554
  });
19038
19555
  });
19039
- let k = i.toVar(), A = Z(0).toVar(), j = O.diffuse.toVar(), te = j.add(O.specular).toVar(), ne = te.add(O.sheen).toVar(), re = ne.add(O.clearcoat).toVar(), ie = re.add(O.diffuseTransmission), ae = () => {
19040
- F(n.roughness.greaterThan(0), () => {
19041
- let i = xe({ N: t }), a = ln({
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(pt(e.negate(), A));
19563
+ A.assign(i.mul(a)), y.assign(ft(e.negate(), A));
19047
19564
  }).Else(() => {
19048
- y.assign(pt(e.negate(), t)), D.assign(!0);
19565
+ y.assign(ft(e.negate(), t)), D.assign(!0);
19049
19566
  });
19050
- }, oe = F(k.lessThan(j), () => {
19051
- y.assign(sn({
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 ? F(n.anisotropy.greaterThan(0), () => {
19057
- let i = o.wrap(se(t, n.anisotropyRotation)), a = i.Ta, s = i.Ba, c = Z(B(e, a), B(e, s), B(e, t)), l = Hn(n.roughness, n.anisotropy), u = un({
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(pt(e.negate(), A));
19064
- }).Else(ae) : ae();
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 && (oe = oe.ElseIf(k.lessThan(ne), () => {
19067
- A.assign(on({
19583
+ v.sheen && (ae = ae.ElseIf(k.lessThan(ne), () => {
19584
+ A.assign(sn({
19068
19585
  N: t,
19069
- roughness: En(n.sheenRoughness),
19586
+ roughness: Dn(n.sheenRoughness),
19070
19587
  Xi: r
19071
- })), y.assign(pt(e.negate(), A));
19072
- })), v.clearcoat && (oe = oe.ElseIf(k.lessThan(re), () => {
19073
- let i = R(n.clearcoatRoughness, S, 1), a = xe({ N: Se(t, n, _) });
19074
- A.assign(a.mul(ln({
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(pt(e.negate(), A));
19079
- })), v.diffuseTransmission && (oe = oe.ElseIf(k.lessThan(ie), () => {
19080
- y.assign(sn({
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
- })), oe.Else(() => {
19085
- let i = B(e, t).greaterThan(0), o = Rr.wrap(Wr(e, t, n.ior, n.roughness, i, n.dispersion, r, a, V(0), s, l, u, d));
19086
- y.assign(o.direction), w.assign(W(O.transmission.mul(o.pdf), le)), E.assign(o.colorWeight), T.assign(!0);
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 ce = () => {
19605
+ let se = () => {
19089
19606
  let r = c.wrap(C(t, e, y, n));
19090
- F(D, () => {
19091
- w.assign(Bi), x.assign(ar(n, r).mul(Bi).div(W(O.specular.mul(r.NoL), 1e-6)));
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(ir(n, r)), w.assign(Xn(n, O, r));
19610
+ x.assign(ar(n, r)), w.assign(Zn(n, O, r));
19094
19611
  });
19095
19612
  };
19096
- return v.diffuseTransmission ? F(ee, () => {
19097
- x.assign(or(n, t, e)), w.assign(Zn(O.diffuseTransmission, B(t, y).negate()));
19098
- }).ElseIf(T.not(), ce) : F(T.not(), ce), w.assign(W(w, le)), de({
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
- }), Hi = /* @__PURE__ */ Q("\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]), Ui = /* @__PURE__ */ Q("\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"), Wi = P(([e, t, n, r, i, a, o, s, c, l]) => {
19107
- let u = V(1).toVar();
19108
- return F(e.greaterThanEqual(H(3)), () => {
19109
- let d = W(W(W(t.x, t.y), t.z), 0).toVar();
19110
- F(d.lessThan(8e-4).and(e.greaterThan(H(4))), () => {
19111
- let e = W(d.mul(125), .01), t = M(a, H(0), c.add(H(3)), i, o, s);
19112
- u.assign(J(t.lessThan(e), e, V(0)));
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
- F(n.isMetallic.and(n.isSmooth).and(e.lessThan(H(7))), () => {
19632
+ I(n.isMetallic.and(n.isSmooth).and(e.lessThan(U(7))), () => {
19116
19633
  t.addAssign(.3);
19117
- }), F(n.isTransmissive.and(e.lessThan(H(6))), () => {
19634
+ }), I(n.isTransmissive.and(e.lessThan(U(6))), () => {
19118
19635
  t.addAssign(.25);
19119
- }), F(n.isEmissive.and(e.lessThan(H(4))), () => {
19636
+ }), I(n.isEmissive.and(e.lessThan(U(4))), () => {
19120
19637
  t.addAssign(.15);
19121
- }), t.assign(R(t, 0, 1));
19122
- let f = H(3).toVar();
19123
- F(t.greaterThan(.6), () => {
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
- }), F(e.lessThan(f), () => {
19644
+ }), I(e.lessThan(f), () => {
19128
19645
  u.assign(1);
19129
19646
  }).Else(() => {
19130
19647
  let p = n.complexityScore.toVar();
19131
- F(n.isMetallic.and(n.isSmooth), () => {
19648
+ I(n.isMetallic.and(n.isSmooth), () => {
19132
19649
  p.addAssign(.15);
19133
- }), F(n.isTransmissive.and(n.hasClearcoat), () => {
19650
+ }), I(n.isTransmissive.and(n.hasClearcoat), () => {
19134
19651
  p.addAssign(.12);
19135
- }), F(n.isEmissive, () => {
19652
+ }), I(n.isEmissive, () => {
19136
19653
  p.addAssign(.1);
19137
- }), p.assign(R(p, 0, 1));
19138
- let m = V(.5).toVar();
19139
- F(l.and(d.greaterThan(.01)), () => {
19140
- let e = R(r.y, 0, 1);
19141
- m.assign(K(V(.3), V(.8), e.mul(e)));
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 = _t(V(.001), V(.1), d), g = d.mul(K(p.mul(.7), m, .3)).mul(h).toVar(), _ = K(R(t.mul(.4).add(d.mul(.6)).mul(1.2), .15, .95), R(d.mul(.4).add(t.mul(.1)), .03, .6), R(V(e.sub(f)).div(10), 0, 1)).toVar();
19144
- _.assign(K(_, W(_, g), .4)), F(t.greaterThan(.5), () => {
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(K(_, V(1), e));
19663
+ _.assign(q(_, H(1), e));
19147
19664
  });
19148
- let v = V(.12).add(t.mul(.08)), y = at(V(e.sub(f)).negate().mul(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 = J(n.isEmissive, V(.04), V(.02));
19151
- _.assign(R(_, b, 1));
19152
- let x = M(a, H(0), c.add(H(3)), i, o, s);
19153
- u.assign(J(x.lessThan(_), _, V(0)));
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
- }), Gi = j({
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 G(X(W(W(n.x, n.y), n.z).max(0).mul(64).add(.5)), X(Wt));
19676
+ return K(Z(G(G(n.x, n.y), n.z).max(0).mul(64).add(.5)), Z(Gt));
19332
19677
  };
19333
- function ma(e) {
19678
+ function Fa(e) {
19334
19679
  let { rayBufferRO: t, activeIndicesReadRO: n, activeIndicesWriteRW: r, counters: i, currentActiveCount: a } = e;
19335
- return P(() => {
19336
- let e = ct, o = i ? tt(i.element(X($.ENTERING_COUNT))) : a;
19337
- F(e.greaterThanEqual(o), () => {
19338
- Ze();
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
- F(be(t, s).bitAnd(X(Gt.ACTIVE)).notEqual(X(0)), () => {
19342
- let e = et(i.element(X($.ACTIVE_RAY_COUNT)), X(1));
19343
- r.element(e).assign(s), et(i.element(X($.ACTIVE_ENERGY)), pa(t, 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 ha(e) {
19692
+ function Ia(e) {
19348
19693
  let { rayBufferRO: t, activeIndicesReadRO: n, activeIndicesWriteRW: r, counters: i, currentActiveCount: a } = e;
19349
- return P(() => {
19350
- let e = ct, o = i ? tt(i.element(X($.ENTERING_COUNT))) : a, s = e.lessThan(o), c = n.element(e), l = be(t, c), u = s.and(l.bitAnd(X(Gt.ACTIVE)).notEqual(X(0))), d = J(u, X(1), X(0)), f = J(u, pa(t, c), X(0)), p = xt(d).toVar(), m = yt(d).toVar(), h = yt(f).toVar(), g = xt(X(1)).toVar(), _ = X(0).toVar();
19351
- F(g.equal(X(0)), () => {
19352
- _.assign(et(i.element(X($.ACTIVE_RAY_COUNT)), m)), et(i.element(X($.ACTIVE_ENERGY)), h);
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(_, X(0)).toVar();
19355
- F(u, () => {
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 ga(e, t, n) {
19361
- let r = W(X(t).add(X(255)).div(X(256)), X(1)).toVar();
19362
- e.element(X(0)).assign(G(r, X(n))), e.element(X(1)).assign(r.add(X(n - 1)).div(X(n))), e.element(X(2)).assign(X(1));
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 _a(e, t) {
19365
- F(t.greaterThan(X(0)), () => {
19366
- nt(e.element(X($.CONVERGED_COUNT)), X(0)), nt(e.element(X($.GEOMETRY_COUNT)), X(0)), nt(e.element(X($.CONVERGED_GEOMETRY_COUNT)), X(0));
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 va({ activeIndicesRW: e, counters: t, maxRayCount: n, isFirstChunk: r, sizes: i, maxGroups: a }) {
19370
- return P(() => {
19371
- let o = ct;
19372
- F(o.lessThan(n), () => {
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
- }), F(o.equal(X(0)), () => {
19375
- nt(t.element(X($.ACTIVE_RAY_COUNT)), n), nt(t.element(X($.ENTERING_COUNT)), n), ga(i, n, a), _a(t, r);
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 ya({ counters: e, isFirstChunk: t }) {
19380
- return P(() => {
19381
- nt(e.element(X($.ACTIVE_RAY_COUNT)), X(0)), _a(e, t);
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 ba({ counters: e, sizes: t, maxGroups: n, bounceCounts: r, pixelCountSlot: i }) {
19385
- return P(() => {
19386
- let a = tt(e.element(X($.ACTIVE_RAY_COUNT)));
19387
- nt(e.element(X($.ENTERING_COUNT)), a), ga(t, a, n), r.element(i).assign(a);
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 xa({ counters: e, maxRayCount: t }) {
19391
- return P(() => {
19392
- nt(e.element(X($.ENTERING_COUNT)), t);
19735
+ function Ha({ counters: e, maxRayCount: t }) {
19736
+ return F(() => {
19737
+ tt(e.element(Z($.ENTERING_COUNT)), t);
19393
19738
  });
19394
19739
  }
19395
- function Sa(e, t, n, r, i) {
19396
- t.element(n).assign(i), t.element(r).assign(tt(e.element(X($.ACTIVE_ENERGY)))), nt(e.element(X($.ENTERING_COUNT)), i);
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 Ca({ counters: e, record: t }) {
19399
- return P(() => {
19400
- t(tt(e.element(X($.ACTIVE_RAY_COUNT))));
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 wa({ counters: e, survivors: t, activeIndicesRW: n, record: r }) {
19404
- return P(() => {
19405
- let i = ct, a = tt(e.element(X($.ACTIVE_RAY_COUNT)));
19406
- F(i.equal(X(0)), () => {
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
- }), F(i.greaterThanEqual(a), () => {
19409
- Ze();
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 { Yr as $, Vi as A, Xn as At, Ti as B, nn as Bt, ea as C, xr as Ct, Zi as D, ir as Dt, Yi as E, sr as Et, zi as F, cn as Ft, pi as G, Bt as Gt, wi as H, qt as Ht, Li as I, ln as It, Zr as J, Lt as Jt, ii as K, Kt, Ii as L, un as Lt, Hi as M, Zn as Mt, xi as N, zn as Nt, Bi as O, Bn as Ot, bi as P, sn as Pt, Jr as Q, jt as Qt, ki as R, tn as Rt, ua as S, Cr as St, Xi as T, or as Tt, vi as U, Jt as Ut, Si as V, en as Vt, _i as W, $ as Wt, ei as X, kt as Xt, $r as Y, Rt as Yt, Qr as Z, Mt as Zt, oa as _, br as _t, va as a, jr as at, na as b, wr as bt, Ca as c, cr as ct, Gi as d, ur as dt, Ir as et, Ki as f, dr as ft, sa as g, gr as gt, ta as h, yr as ht, xa as i, Mr as it, Wi as j, Hn as jt, Ui as k, $n as kt, Sa as l, pr as lt, ia as m, mr as mt, ha as n, Or as nt, ya as o, Nr as ot, Qi as p, hr as pt, ri as q, Gt as qt, wa as r, kr as rt, ba as s, lr as st, ma as t, Kr as tt, ga as u, fr as ut, fa as v, _r as vt, Ji as w, Er as wt, la as x, Sr as xt, aa as y, Tr as yt, Ei as z, an as zt };
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 };