rayzee 7.11.0 → 7.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/rayzee.es.js +565 -545
- package/dist/rayzee.es.js.map +1 -1
- package/dist/rayzee.umd.js +5 -5
- package/dist/rayzee.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/Processor/ShaderBuilder.js +3 -0
- package/src/Stages/PathTracer.js +22 -0
- package/src/TSL/FinalWriteKernel.js +25 -6
- package/src/TSL/ShadeKernel.js +66 -2
- package/src/managers/DenoisingManager.js +6 -0
package/dist/rayzee.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MeshBasicNodeMaterial as e, QuadMesh as t, ReadbackBuffer as n, RectAreaLightNode as r, RenderTarget as i, SRGBColorSpace as a, StorageInstancedBufferAttribute as o, StorageTexture as s, TextureNode as c, WebGPUBackend as l, WebGPURenderer as u } from "three/webgpu";
|
|
2
|
-
import { Break as d, Fn as f, If as p, Loop as m, Return as h, TWO_PI as g, abs as _, acos as v, array as y, atan as b, atomicAdd as x, atomicLoad as S, atomicStore as C, attributeArray as w, bool as T, clamp as E, cos as D, cross as O, cubeTexture as k, dot as A, exp as j, float as M, floatBitsToUint as ee, floor as te, fract as ne, instanceIndex as re, int as N, ivec2 as
|
|
2
|
+
import { Break as d, Fn as f, If as p, Loop as m, Return as h, TWO_PI as g, abs as _, acos as v, array as y, atan as b, atomicAdd as x, atomicLoad as S, atomicStore as C, attributeArray as w, bool as T, clamp as E, cos as D, cross as O, cubeTexture as k, dot as A, exp as j, float as M, floatBitsToUint as ee, floor as te, fract as ne, instanceIndex as re, int as N, ivec2 as P, length as ie, lessThan as ae, localId as oe, log as se, mat3 as ce, max as F, min as le, mix as I, mod as ue, normalize as L, notEqual as de, packSnorm2x16 as fe, packUnorm2x16 as pe, pow as me, reflect as he, refract as ge, sampler as _e, select as R, sign as ve, sin as ye, smoothstep as be, sqrt as xe, storage as Se, struct as Ce, subgroupAdd as we, subgroupBroadcast as Te, subgroupExclusiveAdd as Ee, tan as De, texture as Oe, textureLoad as ke, textureSize as Ae, textureStore as je, uint as z, uintBitsToFloat as B, uniform as V, uniformArray as Me, unpackSnorm2x16 as Ne, unpackUnorm2x16 as Pe, uv as Fe, uvec2 as Ie, uvec4 as Le, vec2 as H, vec3 as U, vec4 as W, wgslFn as G, workgroupArray as Re, workgroupBarrier as ze, workgroupId as K } from "three/tsl";
|
|
3
3
|
import { ACESFilmicToneMapping as Be, AdditiveBlending as Ve, AgXToneMapping as He, AnimationMixer as Ue, BackSide as We, Box2 as Ge, Box3 as Ke, BufferGeometry as qe, ByteType as Je, CineonToneMapping as Ye, CircleGeometry as Xe, ClampToEdgeWrapping as Ze, Color as Qe, DataArrayTexture as $e, DataTexture as et, DataUtils as tt, DirectionalLight as nt, DirectionalLightHelper as rt, DoubleSide as it, EquirectangularReflectionMapping as at, EventDispatcher as ot, Float32BufferAttribute as q, FloatType as st, FrontSide as ct, Group as lt, HalfFloatType as ut, IntType as dt, LinearFilter as J, LinearSRGBColorSpace as ft, LinearToneMapping as pt, LoadingManager as mt, LoopOnce as ht, LoopRepeat as gt, MathUtils as _t, Matrix3 as vt, Matrix4 as yt, Mesh as bt, MeshBasicMaterial as xt, MeshPhysicalMaterial as St, MeshStandardMaterial as Ct, NearestFilter as wt, NeutralToneMapping as Tt, NoBlending as Et, NoToneMapping as Dt, Object3D as Ot, PerspectiveCamera as kt, PointLight as At, PointLightHelper as jt, Points as Mt, PointsMaterial as Nt, Quaternion as Pt, RGBAFormat as Ft, RGBFormat as It, RGFormat as Lt, Raycaster as Rt, RectAreaLight as zt, RedFormat as Bt, ReinhardToneMapping as Vt, RepeatWrapping as Ht, SRGBColorSpace as Ut, Scene as Wt, ShortType as Gt, SphereGeometry as Kt, SpotLight as qt, SpotLightHelper as Jt, Texture as Yt, TextureLoader as Xt, Timer as Zt, UnsignedByteType as Qt, UnsignedIntType as $t, UnsignedShortType as en, Vector2 as tn, Vector3 as nn } from "three";
|
|
4
4
|
import { RectAreaLightTexturesLib as rn } from "three/addons/lights/RectAreaLightTexturesLib.js";
|
|
5
5
|
import { RectAreaLightHelper as an } from "three/addons/helpers/RectAreaLightHelper.js";
|
|
@@ -53,7 +53,7 @@ function Sn(e, t) {
|
|
|
53
53
|
} });
|
|
54
54
|
}
|
|
55
55
|
function Cn(e, t = null) {
|
|
56
|
-
let n =
|
|
56
|
+
let n = Ce(e, t), r = new Set(Object.keys(e)), i = (...e) => Sn(n(...e), r);
|
|
57
57
|
return i.layout = n.layout, i.isStruct = !0, i.wrap = (e) => Sn(e, r), i;
|
|
58
58
|
}
|
|
59
59
|
var wn = Re("uint", 1).constructor, Tn = wn.prototype.generate;
|
|
@@ -138,21 +138,21 @@ var Nn = new et(new Float32Array([
|
|
|
138
138
|
1
|
|
139
139
|
]), 1, 1);
|
|
140
140
|
Nn.type = st, Nn.needsUpdate = !0;
|
|
141
|
-
var Pn =
|
|
141
|
+
var Pn = Oe(Mn);
|
|
142
142
|
Pn.setUpdateMatrix(!1);
|
|
143
|
-
var Fn =
|
|
143
|
+
var Fn = Oe(Nn);
|
|
144
144
|
Fn.setUpdateMatrix(!1);
|
|
145
145
|
var In = M(.7548776662466927), Ln = M(.5698402909980532), Rn = /* @__PURE__ */ G("\n fn getSobolDirectionVector( index: i32 ) -> u32 {\n\n switch ( index ) {\n case 0: { return 2147483648u; }\n case 1: { return 1073741824u; }\n case 2: { return 536870912u; }\n case 3: { return 268435456u; }\n case 4: { return 134217728u; }\n case 5: { return 67108864u; }\n case 6: { return 33554432u; }\n case 7: { return 16777216u; }\n case 8: { return 8388608u; }\n case 9: { return 4194304u; }\n case 10: { return 2097152u; }\n case 11: { return 1048576u; }\n case 12: { return 524288u; }\n case 13: { return 262144u; }\n case 14: { return 131072u; }\n case 15: { return 65536u; }\n case 16: { return 32768u; }\n case 17: { return 16384u; }\n case 18: { return 8192u; }\n case 19: { return 4096u; }\n case 20: { return 2048u; }\n case 21: { return 1024u; }\n case 22: { return 512u; }\n case 23: { return 256u; }\n case 24: { return 128u; }\n case 25: { return 64u; }\n case 26: { return 32u; }\n case 27: { return 16u; }\n case 28: { return 8u; }\n case 29: { return 4u; }\n case 30: { return 2u; }\n default: { return 1u; }\n }\n\n }\n"), zn = /* @__PURE__ */ G("\n fn pcgHash( state: u32 ) -> u32 {\n\n var s = state;\n s = s * 747796405u + 2891336453u;\n s = ( ( s >> ( ( s >> 28u ) + 4u ) ) ^ s ) * 277803737u;\n s = ( s >> 22u ) ^ s;\n return s;\n\n }\n"), Bn = /* @__PURE__ */ G("\n fn wang_hash( seed: u32 ) -> u32 {\n\n var s = seed;\n s = ( s ^ 61u ) ^ ( s >> 16u );\n s = s * 9u;\n s = s ^ ( s >> 4u );\n s = s * 0x27d4eb2du;\n s = s ^ ( s >> 15u );\n return s;\n\n }\n"), Vn = (e) => (e.assign(e.mul(1664525).add(1013904223)), M(e.shiftRight(8)).mul(1 / 16777216)), Y = (e) => (e.assign(zn({ state: e })), M(e.shiftRight(8)).mul(1 / 16777216)), Hn = (e) => {
|
|
146
146
|
let t = Vn(e).mul(g).toVar();
|
|
147
|
-
return H(D(t),
|
|
147
|
+
return H(D(t), ye(t)).mul(xe(Vn(e)));
|
|
148
148
|
}, Un = (e, t, n, r) => {
|
|
149
149
|
let i = z(r).bitAnd(z(63)), a = M(n).add(M(t).mul(7)), o = N(ne(a.mul(In).add(.5)).mul(128)), s = N(ne(a.mul(Ln).add(.5)).mul(128)), c = N(e.x).add(o).bitAnd(N(127)), l = N(e.y).add(s).bitAnd(N(127)), u = N(i).bitAnd(N(7)), d = N(i).shiftRight(N(3));
|
|
150
|
-
return
|
|
150
|
+
return P(u.mul(N(128)).add(c), d.mul(N(128)).add(l));
|
|
151
151
|
}, Wn = (e, t, n, r) => {
|
|
152
152
|
let i = Un(e, t, n, r), a = Fn.load(i).xy, o = M(z(r).shiftRight(z(6))), s = ne(H(In, Ln).mul(o));
|
|
153
153
|
return ne(a.add(s));
|
|
154
154
|
}, Gn = /* @__PURE__ */ G("\n fn haltonScrambled( index: i32, base: i32, scramble: u32 ) -> f32 {\n\n var result = 0.0f;\n var f = 1.0f;\n var i = index + 1;\n var s = scramble;\n var iter = 0;\n\n while ( i > 0 && iter < 32 ) {\n\n iter += 1;\n f /= f32( base );\n\n // Additive permutation per digit: (digit + s_k) mod base\n // Guaranteed bijection within [0, base) for any s_k\n var digit = i % base;\n digit = ( digit + i32( s % u32( base ) ) ) % base;\n result += f * f32( digit );\n i /= base;\n\n // Evolve scramble per digit position for position-dependent permutations\n s = s * 747796405u + 2891336453u;\n\n }\n\n return result;\n\n }\n"), Kn = /* @__PURE__ */ G("\n fn owen_scrambled_sobol( index: u32, dimension: u32, seed: u32 ) -> f32 {\n\n var result = 0u;\n for ( var i = 0; i < 32; i++ ) {\n\n if ( ( index & ( 1u << u32( i ) ) ) != 0u ) {\n\n result ^= getSobolDirectionVector( i );\n\n }\n\n }\n\n // Mix dimension into seed for inter-dimensional decorrelation\n // (Van der Corput base is shared; Owen scrambling with distinct seeds\n // produces decorrelated sequences across dimensions)\n let dimSeed = seed ^ ( dimension * 0x9e3779b9u + 0x6a09e667u );\n result = owen_scramble( result, dimSeed );\n return f32( result ) / 4294967296.0f;\n\n }\n", [Rn, /* @__PURE__ */ G("\n fn owen_scramble( x: u32, seed: u32 ) -> u32 {\n\n var v = x;\n v ^= v * 0x3d20adeau;\n v += seed;\n v *= ( seed >> 16u ) | 1u;\n v ^= v >> 15u;\n v *= 0x5851f42du;\n v ^= v >> 12u;\n v *= 0x4c957f2du;\n v ^= v >> 18u;\n return v;\n\n }\n")]), qn = (e, t, n, r, i, a, o, s) => {
|
|
155
|
-
let c =
|
|
155
|
+
let c = R(a.notEqual(N(-1)), a, jn), l = W(0).toVar();
|
|
156
156
|
return p(c.equal(N(0)), () => {
|
|
157
157
|
p(i.greaterThan(N(2)), () => {
|
|
158
158
|
l.x.assign(Vn(r)), p(i.greaterThan(N(1)), () => {
|
|
@@ -236,14 +236,14 @@ var In = M(.7548776662466927), Ln = M(.5698402909980532), Rn = /* @__PURE__ */ G
|
|
|
236
236
|
return p(n.lessThanEqual(N(1)), () => {
|
|
237
237
|
o.assign(Jn(e, t, N(0), r, N(-1), i, a));
|
|
238
238
|
}).Else(() => {
|
|
239
|
-
let i = N(
|
|
239
|
+
let i = N(xe(M(n))), s = n.add(i).sub(1).div(i), c = ue(t, i.mul(s)), l = ue(c, i), u = c.div(i), d = H(M(l), M(u)).div(H(M(i), M(s))), f = H(0).toVar();
|
|
240
240
|
p(jn.greaterThanEqual(N(3)), () => {
|
|
241
241
|
f.assign(Wn(e, t, N(0), a));
|
|
242
242
|
}).Else(() => {
|
|
243
243
|
let i = Vn(r).toVar(), o = Vn(r).toVar();
|
|
244
244
|
f.assign(H(i, o)), p(n.greaterThan(N(4)), () => {
|
|
245
245
|
let n = Wn(e, t, N(0), a).mul(.1);
|
|
246
|
-
f.assign(
|
|
246
|
+
f.assign(I(f, n, .2));
|
|
247
247
|
});
|
|
248
248
|
}), f.divAssign(H(M(i), M(s))), o.assign(d.add(f));
|
|
249
249
|
}), o;
|
|
@@ -1136,7 +1136,7 @@ var Mr = class {
|
|
|
1136
1136
|
setMaterialData(e) {
|
|
1137
1137
|
if (!e) return;
|
|
1138
1138
|
let t = e.length / 4;
|
|
1139
|
-
this.materialStorageNode ? (this.materialStorageAttr = new o(e, 4), this.materialStorageNode.value = this.materialStorageAttr, this.materialStorageNode.bufferCount = t) : (this.materialStorageAttr = new o(e, 4), this.materialStorageNode =
|
|
1139
|
+
this.materialStorageNode ? (this.materialStorageAttr = new o(e, 4), this.materialStorageNode.value = this.materialStorageAttr, this.materialStorageNode.bufferCount = t) : (this.materialStorageAttr = new o(e, 4), this.materialStorageNode = Se(this.materialStorageAttr, "vec4", t).toReadOnly()), this.materialCount = Math.floor(t / Fr), console.log(`MaterialDataManager: ${this.materialCount} materials (storage buffer)`);
|
|
1140
1140
|
}
|
|
1141
1141
|
getStorageAttr() {
|
|
1142
1142
|
return this.materialStorageAttr;
|
|
@@ -2122,7 +2122,7 @@ Cn({
|
|
|
2122
2122
|
});
|
|
2123
2123
|
//#endregion
|
|
2124
2124
|
//#region src/TSL/Common.js
|
|
2125
|
-
var Ii = 3.14159, Li = 1 / Ii, Ri = 2 * Ii, zi = 1e-6, Bi = .05, Vi = .089, Hi = .001, Ui = U(.2126, .7152, .0722), Wi = Q.SLOTS_PER_MATERIAL, Gi = Q.SLOT, Ki = Gi, qi =
|
|
2125
|
+
var Ii = 3.14159, Li = 1 / Ii, Ri = 2 * Ii, zi = 1e-6, Bi = .05, Vi = .089, Hi = .001, Ui = U(.2126, .7152, .0722), Wi = Q.SLOTS_PER_MATERIAL, Gi = Q.SLOT, Ki = Gi, qi = ce(3.2404542, -.969266, .0556434, -1.5371385, 1.8760108, -.2040259, -.4985314, .041556, 1.0572252);
|
|
2126
2126
|
G("\n fn sRGBToLinear( srgbColor: vec3f ) -> vec3f {\n\n return pow( srgbColor, vec3f( 2.2 ) );\n\n }\n"), G("\n fn gammaCorrection( color: vec3f ) -> vec3f {\n\n return pow( color, vec3f( 1.0 / 2.2 ) );\n\n }\n");
|
|
2127
2127
|
var Ji = G("\n fn square( x: f32 ) -> f32 {\n\n return x * x;\n\n }\n");
|
|
2128
2128
|
G("\n fn squareVec3( x: vec3f ) -> vec3f {\n\n return x * x;\n\n }\n");
|
|
@@ -2148,11 +2148,11 @@ var $i = G("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3
|
|
|
2148
2148
|
f(([e, t, n]) => {
|
|
2149
2149
|
let r = t.add(n).toVar(), i = A(r, r).toVar();
|
|
2150
2150
|
return r.assign(i.greaterThan(zi).select(r.div(i.sqrt()), U(0, 0, 1))), Oi({
|
|
2151
|
-
NoL:
|
|
2152
|
-
NoV:
|
|
2153
|
-
NoH:
|
|
2154
|
-
VoH:
|
|
2155
|
-
LoH:
|
|
2151
|
+
NoL: F(A(e, n), .001),
|
|
2152
|
+
NoV: F(A(e, t), .001),
|
|
2153
|
+
NoH: F(A(e, r), .001),
|
|
2154
|
+
VoH: F(A(t, r), .001),
|
|
2155
|
+
LoH: F(A(n, r), .001),
|
|
2156
2156
|
ToH: M(0),
|
|
2157
2157
|
BoH: M(0),
|
|
2158
2158
|
ToV: M(0),
|
|
@@ -2175,11 +2175,11 @@ var ea = f(([e, t]) => {
|
|
|
2175
2175
|
let a = Di.wrap(ea(e, r.anisotropyRotation));
|
|
2176
2176
|
o.assign(A(a.Ta, i)), s.assign(A(a.Ba, i)), c.assign(A(a.Ta, t)), l.assign(A(a.Ba, t)), u.assign(A(a.Ta, n)), d.assign(A(a.Ba, n));
|
|
2177
2177
|
}), Oi({
|
|
2178
|
-
NoL:
|
|
2179
|
-
NoV:
|
|
2180
|
-
NoH:
|
|
2181
|
-
VoH:
|
|
2182
|
-
LoH:
|
|
2178
|
+
NoL: F(A(e, n), .001),
|
|
2179
|
+
NoV: F(A(e, t), .001),
|
|
2180
|
+
NoH: F(A(e, i), .001),
|
|
2181
|
+
VoH: F(A(t, i), .001),
|
|
2182
|
+
LoH: F(A(n, i), .001),
|
|
2183
2183
|
ToH: o,
|
|
2184
2184
|
BoH: s,
|
|
2185
2185
|
ToV: c,
|
|
@@ -2324,7 +2324,7 @@ var ea = f(([e, t]) => {
|
|
|
2324
2324
|
})
|
|
2325
2325
|
});
|
|
2326
2326
|
}), la = f(() => {
|
|
2327
|
-
let e =
|
|
2327
|
+
let e = ce(1, 0, 0, 0, 1, 0, 0, 0, 1);
|
|
2328
2328
|
return yi({
|
|
2329
2329
|
color: W(1, 1, 1, 1),
|
|
2330
2330
|
emissive: U(0),
|
|
@@ -2411,7 +2411,7 @@ var ea = f(([e, t]) => {
|
|
|
2411
2411
|
return t.mul(t).mul(e);
|
|
2412
2412
|
};
|
|
2413
2413
|
f(([e, t, n]) => {
|
|
2414
|
-
let r =
|
|
2414
|
+
let r = F(U(M(1).sub(n)), e);
|
|
2415
2415
|
return e.add(r.sub(e).mul(fa(M(1).sub(t))));
|
|
2416
2416
|
});
|
|
2417
2417
|
var pa = f(([e, t]) => {
|
|
@@ -2421,79 +2421,79 @@ var pa = f(([e, t]) => {
|
|
|
2421
2421
|
let n = E(e, 0, 1);
|
|
2422
2422
|
return t.add(U(1).sub(t).mul(fa(M(1).sub(n))));
|
|
2423
2423
|
}), ha = f(([e]) => {
|
|
2424
|
-
let t =
|
|
2425
|
-
return U(1).add(t).div(
|
|
2424
|
+
let t = xe(e);
|
|
2425
|
+
return U(1).add(t).div(F(U(1).sub(t), U(da)));
|
|
2426
2426
|
}), ga = f(([e, t]) => {
|
|
2427
|
-
let n = e.sub(U(t)), r =
|
|
2427
|
+
let n = e.sub(U(t)), r = F(e.add(U(t)), U(da)), i = n.div(r);
|
|
2428
2428
|
return i.mul(i);
|
|
2429
2429
|
}), _a = f(([e, t]) => {
|
|
2430
|
-
let n = e.sub(t), r =
|
|
2430
|
+
let n = e.sub(t), r = F(e.add(t), da), i = n.div(r);
|
|
2431
2431
|
return i.mul(i);
|
|
2432
2432
|
}), va = (e) => U(_a(e, M(1))), ya = f(([e, t]) => {
|
|
2433
2433
|
let n = t.mul(t), r = n.mul(n), i = e.mul(e).mul(r.sub(1)).add(1);
|
|
2434
|
-
return r.div(
|
|
2434
|
+
return r.div(F(M(Ii).mul(i).mul(i), zi));
|
|
2435
2435
|
}), ba = f(([e, t]) => {
|
|
2436
|
-
let n =
|
|
2437
|
-
return
|
|
2436
|
+
let n = F(t, Bi), r = n.mul(n), i = M(1).div(r), a = e.mul(e).mul(i.mul(i).sub(1)).add(1);
|
|
2437
|
+
return le(i.mul(i).div(F(M(Ii).mul(a).mul(a), zi)), 100);
|
|
2438
2438
|
}), xa = f(([e, t]) => {
|
|
2439
2439
|
let n = t.add(1), r = n.mul(n).div(8);
|
|
2440
|
-
return e.div(
|
|
2440
|
+
return e.div(F(e.mul(M(1).sub(r)).add(r), zi));
|
|
2441
2441
|
}), Sa = f(([e, t, n]) => {
|
|
2442
2442
|
let r = xa(e, n);
|
|
2443
2443
|
return xa(t, n).mul(r);
|
|
2444
2444
|
}), Ca = f(([e, t, n]) => {
|
|
2445
|
-
let r = M(1).sub(n), i = n.mul(-.0275).add(.0425), a = n.mul(-.572).add(1.04), o = n.mul(.022).sub(.04), s =
|
|
2445
|
+
let r = M(1).sub(n), i = n.mul(-.0275).add(.0425), a = n.mul(-.572).add(1.04), o = n.mul(.022).sub(.04), s = le(r.mul(r), j(M(-6.4308).mul(t))).mul(r).add(i), c = M(-1.04).mul(s).add(a), l = M(1.04).mul(s).add(o), u = F(c.add(l), .1), d = U(1).add(e.mul(M(1).div(u).sub(1)));
|
|
2446
2446
|
return ki({
|
|
2447
2447
|
compensation: d,
|
|
2448
|
-
E_total: E(
|
|
2448
|
+
E_total: E(F(e.mul(c).add(U(l)), U(0)).mul(d), U(0), U(1))
|
|
2449
2449
|
});
|
|
2450
2450
|
});
|
|
2451
|
-
f(([e, t, n]) => ya(e, n).mul(e).div(
|
|
2451
|
+
f(([e, t, n]) => ya(e, n).mul(e).div(F(M(4).mul(t), zi)));
|
|
2452
2452
|
var wa = f(([e, t, n]) => {
|
|
2453
2453
|
let r = ya(e, n), i = xa(t, n);
|
|
2454
|
-
return r.mul(i).div(
|
|
2454
|
+
return r.mul(i).div(F(t.mul(4), zi));
|
|
2455
2455
|
}), Ta = f(([e, t]) => {
|
|
2456
|
-
let n =
|
|
2457
|
-
return H(
|
|
2456
|
+
let n = F(e.mul(e), 1e-4).toVar();
|
|
2457
|
+
return H(F(I(n, M(1), t.mul(t)), 1e-4), n);
|
|
2458
2458
|
}), Ea = f(([e, t, n, r, i]) => {
|
|
2459
|
-
let a = e.mul(t), o = U(t.mul(r), e.mul(i), a.mul(n)), s =
|
|
2459
|
+
let a = e.mul(t), o = U(t.mul(r), e.mul(i), a.mul(n)), s = F(A(o, o), zi), c = a.div(s);
|
|
2460
2460
|
return a.mul(c.mul(c)).div(Ii);
|
|
2461
2461
|
}), Da = f(([e, t, n, r, i, a, o, s]) => {
|
|
2462
2462
|
let c = s.mul(U(e.mul(n), t.mul(r), o).length()), l = o.mul(U(e.mul(i), t.mul(a), s).length());
|
|
2463
|
-
return M(.5).div(
|
|
2463
|
+
return M(.5).div(F(c.add(l), zi));
|
|
2464
2464
|
}), Oa = f(([e, t, n, r, i]) => {
|
|
2465
|
-
let a = e.mul(n), o = t.mul(r), s = a.mul(a).add(o.mul(o)), c =
|
|
2465
|
+
let a = e.mul(n), o = t.mul(r), s = a.mul(a).add(o.mul(o)), c = F(i.mul(i), zi), l = xe(M(1).add(s.div(c))).sub(1).mul(.5);
|
|
2466
2466
|
return M(1).div(l.add(1));
|
|
2467
2467
|
}), ka = f(([e, t, n, r, i, a, o, s]) => {
|
|
2468
2468
|
let c = Ea(e, t, n, r, i), l = Oa(e, t, o, s, a);
|
|
2469
|
-
return c.mul(l).div(
|
|
2469
|
+
return c.mul(l).div(F(a.mul(4), zi));
|
|
2470
2470
|
}), Aa = f(([e, t, n, r]) => {
|
|
2471
2471
|
let i = Oi.wrap(ta(t, n, r, e)), a = M(0).toVar();
|
|
2472
2472
|
return p(e.anisotropy.greaterThan(0), () => {
|
|
2473
2473
|
let t = Ta(e.roughness, e.anisotropy);
|
|
2474
2474
|
a.assign(ka(t.x, t.y, i.NoH, i.ToH, i.BoH, i.NoV, i.ToV, i.BoV));
|
|
2475
2475
|
}).Else(() => {
|
|
2476
|
-
a.assign(wa(i.NoH, i.NoV,
|
|
2476
|
+
a.assign(wa(i.NoH, i.NoV, F(e.roughness, .02)));
|
|
2477
2477
|
}), a;
|
|
2478
2478
|
}), ja = f(([e, t]) => {
|
|
2479
|
-
let n = M(Ri).mul(e).mul(1e-9), r = U(54856e-17, 44201e-17, 52481e-17), i = U(1681e3, 1795300, 2208400), a = U(43278e5, 93046e5, 66121e5), o = r.mul(
|
|
2480
|
-
return o.x.addAssign(M(9747e-17).mul(
|
|
2479
|
+
let n = M(Ri).mul(e).mul(1e-9), r = U(54856e-17, 44201e-17, 52481e-17), i = U(1681e3, 1795300, 2208400), a = U(43278e5, 93046e5, 66121e5), o = r.mul(xe(M(Ri).mul(a))).mul(D(i.mul(n).add(t))).mul(j(Ji({ x: n }).negate().mul(a))).toVar();
|
|
2480
|
+
return o.x.addAssign(M(9747e-17).mul(xe(M(Ri).mul(45282e5))).mul(D(M(2239900).mul(n).add(t.x))).mul(j(M(-45282e5).mul(Ji({ x: n }))))), qi.mul(o.div(1.0685e-7));
|
|
2481
2481
|
}), Ma = f(([e, t, n, r, i]) => {
|
|
2482
|
-
let a =
|
|
2482
|
+
let a = I(e, t, be(0, .03, r)).toVar(), o = Ji({ x: e.div(a) }).mul(M(1).sub(Ji({ x: n }))), s = M(1).sub(o).toVar(), c = U(0).toVar();
|
|
2483
2483
|
return p(s.lessThan(0), () => {
|
|
2484
2484
|
c.assign(U(1));
|
|
2485
2485
|
}).Else(() => {
|
|
2486
|
-
let t =
|
|
2487
|
-
S.mulAssign(y), x.addAssign(S.mul(M(2).mul(ja(M(1).mul(g), M(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(M(2).mul(ja(M(2).mul(g), M(2).mul(_))))), c.assign(
|
|
2486
|
+
let t = xe(s).toVar(), o = pa(n, _a(a, e)).toVar(), l = M(1).sub(o).toVar(), u = a.lessThan(e).select(M(Ii), M(0)), d = M(Ii).sub(u), f = ha(E(i, 0, .9999)).toVar(), p = ga(f, a).toVar(), m = U(pa(t, p.x), pa(t, p.y), pa(t, p.z)).toVar(), h = U(f.x.lessThan(a).select(M(Ii), M(0)), f.y.lessThan(a).select(M(Ii), M(0)), f.z.lessThan(a).select(M(Ii), M(0))), g = M(2).mul(a).mul(r).mul(t).toVar(), _ = U(d).add(h).toVar(), v = E(U(o).mul(m), 1e-5, .9999).toVar(), y = xe(v).toVar(), b = U(l.mul(l)).mul(m).div(U(1).sub(v)).toVar(), x = U(o).add(b).toVar().toVar(), S = b.sub(U(l)).toVar();
|
|
2487
|
+
S.mulAssign(y), x.addAssign(S.mul(M(2).mul(ja(M(1).mul(g), M(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(M(2).mul(ja(M(2).mul(g), M(2).mul(_))))), c.assign(F(x, U(0)));
|
|
2488
2488
|
}), c;
|
|
2489
2489
|
}), Na = f(([e, t, n]) => {
|
|
2490
2490
|
let r = n.invRoughness, i = n.metalFactor, a = M(0).toVar();
|
|
2491
2491
|
p(t.isMetallic, () => {
|
|
2492
|
-
a.assign(
|
|
2492
|
+
a.assign(F(r.mul(i), .7));
|
|
2493
2493
|
}).ElseIf(t.isSmooth, () => {
|
|
2494
2494
|
a.assign(r.mul(i).mul(1.2));
|
|
2495
2495
|
}).Else(() => {
|
|
2496
|
-
a.assign(
|
|
2496
|
+
a.assign(F(r.mul(i), e.metalness.mul(.1)));
|
|
2497
2497
|
});
|
|
2498
2498
|
let o = a.mul(e.specularIntensity).toVar(), s = M(1).sub(a).mul(M(1).sub(e.metalness)).toVar(), c = e.sheen.mul(n.maxSheenColor).toVar(), l = M(0).toVar();
|
|
2499
2499
|
p(t.hasClearcoat, () => {
|
|
@@ -2509,9 +2509,9 @@ var wa = f(([e, t, n]) => {
|
|
|
2509
2509
|
let t = n.iorFactor.mul(r).mul(.7);
|
|
2510
2510
|
u.assign(e.transmission.mul(t).mul(M(.5).add(M(.5).mul(e.ior.div(2)))).mul(M(1).add(e.dispersion.mul(.5))));
|
|
2511
2511
|
});
|
|
2512
|
-
let d = r.mul(t.isSmooth.select(M(.6), M(.5))), f =
|
|
2512
|
+
let d = r.mul(t.isSmooth.select(M(.6), M(.5))), f = le(e.iridescence.mul(d).mul(M(.5).add(M(.5).mul(e.iridescenceThicknessRange.y.sub(e.iridescenceThicknessRange.x).div(1e3)))).mul(M(.5).add(M(.5).mul(e.iridescenceIOR.div(2)))), s);
|
|
2513
2513
|
o.addAssign(f), s.subAssign(f);
|
|
2514
|
-
let m = o.add(s).add(c).add(l).add(u), h = M(1).div(
|
|
2514
|
+
let m = o.add(s).add(c).add(l).add(u), h = M(1).div(F(m, .001));
|
|
2515
2515
|
return Ti({
|
|
2516
2516
|
specular: o.mul(h),
|
|
2517
2517
|
diffuse: s.mul(h),
|
|
@@ -2521,7 +2521,7 @@ var wa = f(([e, t, n]) => {
|
|
|
2521
2521
|
iridescence: M(0)
|
|
2522
2522
|
});
|
|
2523
2523
|
}), Pa = f(([e, t, n]) => {
|
|
2524
|
-
let r = M(1).sub(e.roughness), i = M(.5).add(M(.5).mul(e.metalness)), a =
|
|
2524
|
+
let r = M(1).sub(e.roughness), i = M(.5).add(M(.5).mul(e.metalness)), a = le(M(2).div(e.ior), 1), o = F(e.sheenColor.r, F(e.sheenColor.g, e.sheenColor.b)), s = Ni({
|
|
2525
2525
|
F0: va(e.ior),
|
|
2526
2526
|
NoV: M(.5),
|
|
2527
2527
|
diffuseColor: e.color.rgb,
|
|
@@ -2538,11 +2538,11 @@ var wa = f(([e, t, n]) => {
|
|
|
2538
2538
|
let e = M(1).div(M(t).sub(1));
|
|
2539
2539
|
u.mulAssign(M(.8).add(e.mul(.2))), f.mulAssign(M(.7).add(e.mul(.3))), l.mulAssign(M(1).add(e.mul(.2)));
|
|
2540
2540
|
}), p(n.isMetallic.and(t.lessThan(N(3))), () => {
|
|
2541
|
-
u.assign(
|
|
2541
|
+
u.assign(F(u, .6)), l.mulAssign(.4);
|
|
2542
2542
|
}), p(n.isTransmissive, () => {
|
|
2543
|
-
d.assign(
|
|
2543
|
+
d.assign(F(d, .8)), l.mulAssign(.2), u.mulAssign(.6);
|
|
2544
2544
|
}), p(n.hasClearcoat, () => {
|
|
2545
|
-
f.assign(
|
|
2545
|
+
f.assign(F(f, .4));
|
|
2546
2546
|
});
|
|
2547
2547
|
let m = l.add(u).add(d).add(f).toVar();
|
|
2548
2548
|
return p(m.greaterThan(.001), () => {
|
|
@@ -2558,9 +2558,9 @@ var wa = f(([e, t, n]) => {
|
|
|
2558
2558
|
});
|
|
2559
2559
|
});
|
|
2560
2560
|
f(([e, t, n, r, i]) => {
|
|
2561
|
-
let a =
|
|
2561
|
+
let a = F(A(e, t), .001).toVar(), o = i.isRough.and(i.isMetallic.not()).and(n.transmission.equal(0)).and(n.clearcoat.equal(0)).toVar(), s = r.roughness.mul(r.roughness).toVar(), c = s.mul(s).toVar(), l = r.roughness.add(1), u = l.mul(l).div(8).toVar();
|
|
2562
2562
|
return Ni({
|
|
2563
|
-
F0:
|
|
2563
|
+
F0: I(va(n.ior).mul(n.specularColor), r.albedo.rgb, r.metalness).mul(n.specularIntensity).toVar(),
|
|
2564
2564
|
NoV: a,
|
|
2565
2565
|
diffuseColor: r.albedo.rgb.mul(M(1).sub(r.metalness)).toVar(),
|
|
2566
2566
|
isPurelyDiffuse: o,
|
|
@@ -2569,8 +2569,8 @@ f(([e, t, n, r, i]) => {
|
|
|
2569
2569
|
alpha2: c,
|
|
2570
2570
|
invRoughness: M(1).sub(r.roughness).toVar(),
|
|
2571
2571
|
metalFactor: M(.5).add(M(.5).mul(r.metalness)).toVar(),
|
|
2572
|
-
iorFactor:
|
|
2573
|
-
maxSheenColor:
|
|
2572
|
+
iorFactor: le(M(2).div(n.ior), 1).toVar(),
|
|
2573
|
+
maxSheenColor: F(n.sheenColor.r, F(n.sheenColor.g, n.sheenColor.b)).toVar()
|
|
2574
2574
|
});
|
|
2575
2575
|
});
|
|
2576
2576
|
//#endregion
|
|
@@ -2592,13 +2592,13 @@ var Fa = /* @__PURE__ */ G("\n fn ImportanceSampleGGX( N: vec3f, roughness: f32,
|
|
|
2592
2592
|
p(_(t).lessThan(.001), () => {
|
|
2593
2593
|
r.assign(M(1).sub(n.x.mul(2)));
|
|
2594
2594
|
}).Else(() => {
|
|
2595
|
-
let e =
|
|
2595
|
+
let e = F(M(1).sub(t).add(t.mul(2).mul(n.x)), 1e-4), i = M(1).sub(t.mul(t)).div(e);
|
|
2596
2596
|
r.assign(M(1).add(t.mul(t)).sub(i.mul(i)).div(t.mul(2)));
|
|
2597
2597
|
}), r.assign(E(r, -1, 1));
|
|
2598
|
-
let i =
|
|
2599
|
-
return $i({ N: e }).mul(U(i.mul(D(a)), i.mul(
|
|
2598
|
+
let i = xe(F(M(0), M(1).sub(r.mul(r)))), a = M(Ri).mul(n.y);
|
|
2599
|
+
return $i({ N: e }).mul(U(i.mul(D(a)), i.mul(ye(a)), r));
|
|
2600
2600
|
}), Wa = f(([e, t, n, r, i]) => {
|
|
2601
|
-
let a =
|
|
2601
|
+
let a = F(n, U(1e-4)), o = a.div(a.x.add(a.y).add(a.z)).toVar(), s = Y(i).toVar(), c = M(0).toVar();
|
|
2602
2602
|
p(s.lessThan(o.x), () => {
|
|
2603
2603
|
c.assign(e.x);
|
|
2604
2604
|
}).ElseIf(s.lessThan(o.x.add(o.y)), () => {
|
|
@@ -2606,48 +2606,48 @@ var Fa = /* @__PURE__ */ G("\n fn ImportanceSampleGGX( N: vec3f, roughness: f32,
|
|
|
2606
2606
|
}).Else(() => {
|
|
2607
2607
|
c.assign(e.z);
|
|
2608
2608
|
});
|
|
2609
|
-
let l = Y(i).toVar(), u =
|
|
2609
|
+
let l = Y(i).toVar(), u = se(F(M(1).sub(l), 1e-6)).negate().div(F(c, 1e-6)).toVar(), d = u.lessThan(r).toVar(), f = u.toVar(), m = U(0).toVar();
|
|
2610
2610
|
return p(d, () => {
|
|
2611
2611
|
let n = j(e.mul(u).negate()).toVar(), r = A(o, e.mul(n));
|
|
2612
|
-
m.assign(t.mul(n).div(
|
|
2612
|
+
m.assign(t.mul(n).div(F(r, 1e-6)));
|
|
2613
2613
|
}).Else(() => {
|
|
2614
2614
|
let t = j(e.mul(r).negate()).toVar(), n = A(o, t);
|
|
2615
|
-
m.assign(t.div(
|
|
2615
|
+
m.assign(t.div(F(n, 1e-6))), f.assign(r);
|
|
2616
2616
|
}), Ba({
|
|
2617
2617
|
didScatter: d,
|
|
2618
2618
|
t: f,
|
|
2619
2619
|
weight: m
|
|
2620
2620
|
});
|
|
2621
2621
|
}), Ga = f(([e, t, n]) => {
|
|
2622
|
-
let r =
|
|
2622
|
+
let r = F(t.mul(n), U(1e-4)), i = U(1).div(r), a = e.mul(i);
|
|
2623
2623
|
return Va({
|
|
2624
2624
|
sigmaT: i,
|
|
2625
2625
|
sigmaS: a,
|
|
2626
|
-
sigmaA:
|
|
2626
|
+
sigmaA: F(i.sub(a), U(0))
|
|
2627
2627
|
});
|
|
2628
2628
|
}), Ka = f(([e, t, n, r, i, a, o]) => {
|
|
2629
2629
|
let s = Ha({
|
|
2630
2630
|
direction: U(0),
|
|
2631
2631
|
throughput: U(1),
|
|
2632
2632
|
didReflect: !1
|
|
2633
|
-
}).toVar(), c =
|
|
2633
|
+
}).toVar(), c = R(r, t, t.negate()).toVar(), l = R(r, a, n.ior).toVar(), u = R(r, n.ior, o).toVar(), d = _(A(c, e)), f = l.mul(l).div(F(u.mul(u), zi)).mul(M(1).sub(d.mul(d))).greaterThan(1).toVar(), m = _a(u, l), h = R(f, M(1), pa(d, m)).toVar(), g = E(h, .02, .98).toVar(), v = f.or(Y(i).lessThan(g)).toVar();
|
|
2634
2634
|
return s.didReflect.assign(v), p(v, () => {
|
|
2635
|
-
let t = H(Y(i), Y(i)), r =
|
|
2635
|
+
let t = H(Y(i), Y(i)), r = he(e, Fa({
|
|
2636
2636
|
N: c,
|
|
2637
2637
|
roughness: n.roughness,
|
|
2638
2638
|
Xi: t
|
|
2639
2639
|
})).toVar();
|
|
2640
2640
|
p(A(r, c).lessThanEqual(0), () => {
|
|
2641
|
-
r.assign(
|
|
2642
|
-
}), s.direction.assign(r), s.throughput.assign(U(h.div(
|
|
2641
|
+
r.assign(he(e, c));
|
|
2642
|
+
}), s.direction.assign(r), s.throughput.assign(U(h.div(F(g, .02))));
|
|
2643
2643
|
}).Else(() => {
|
|
2644
|
-
let t =
|
|
2644
|
+
let t = ge(e, c, l.div(F(u, zi))).toVar();
|
|
2645
2645
|
p(A(t, t).lessThan(1e-4), () => {
|
|
2646
|
-
s.direction.assign(
|
|
2646
|
+
s.direction.assign(he(e, c)), s.didReflect.assign(!0);
|
|
2647
2647
|
}).Else(() => {
|
|
2648
|
-
s.direction.assign(
|
|
2649
|
-
let e = l.mul(l).div(
|
|
2650
|
-
s.throughput.assign(U(M(1).sub(h).div(
|
|
2648
|
+
s.direction.assign(L(t));
|
|
2649
|
+
let e = l.mul(l).div(F(u.mul(u), zi));
|
|
2650
|
+
s.throughput.assign(U(M(1).sub(h).div(F(M(1).sub(g), .02)).mul(e)));
|
|
2651
2651
|
});
|
|
2652
2652
|
}), s;
|
|
2653
2653
|
}), qa = Cn({
|
|
@@ -2708,18 +2708,18 @@ var Za = /* @__PURE__ */ f(([e, t, n]) => {
|
|
|
2708
2708
|
let r = n.div(1e3);
|
|
2709
2709
|
return e.add(t.mul(.03).div(r.mul(r)));
|
|
2710
2710
|
}), Qa = /* @__PURE__ */ f(([e, t, n, r]) => {
|
|
2711
|
-
let i =
|
|
2711
|
+
let i = R(e.lessThan(t), n, r), a = e.sub(t).mul(i);
|
|
2712
2712
|
return j(M(-.5).mul(a).mul(a));
|
|
2713
2713
|
}), $a = /* @__PURE__ */ f(([e]) => U(Qa(e, 442, .0624, .0374).mul(.362).add(Qa(e, 599.8, .0264, .0323).mul(1.056)).sub(Qa(e, 501.1, .049, .0382).mul(.065)), Qa(e, 568.8, .0213, .0247).mul(.821).add(Qa(e, 530.9, .0613, .0322).mul(.286)), Qa(e, 437, .0845, .0278).mul(1.217).add(Qa(e, 459, .0385, .0725).mul(.681)))), eo = f(([e, t, n]) => {
|
|
2714
|
-
let r =
|
|
2714
|
+
let r = I(M(380), M(700), n).toVar(), i = Za(e, t, r), a = $a(r).toVar();
|
|
2715
2715
|
return Ya({
|
|
2716
2716
|
wavelength: r,
|
|
2717
2717
|
ior: i,
|
|
2718
|
-
colorWeight:
|
|
2718
|
+
colorWeight: F(U(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))), U(0)).mul(U(1.819, 2.773, 2.928))
|
|
2719
2719
|
});
|
|
2720
2720
|
}), to = /* @__PURE__ */ G("\n fn calculateBeerLawAbsorption( attenuationColor: vec3f, attenuationDistance: f32, thickness: f32 ) -> vec3f {\n if ( attenuationDistance <= 0.0f ) { return vec3f( 1.0f ); }\n // Convert RGB attenuation color to absorption coefficients\n let absorption = -log( max( attenuationColor, vec3f( 0.001f ) ) ) / attenuationDistance;\n // Apply Beer's law\n return exp( -absorption * thickness );\n }\n");
|
|
2721
2721
|
f(([e, t, n, r]) => {
|
|
2722
|
-
let i =
|
|
2722
|
+
let i = R(r, M(1), n.ior).toVar(), a = R(r, n.ior, M(1)).toVar(), o = _(A(t, e)), s = i.mul(i).div(a.mul(a)).mul(M(1).sub(o.mul(o))), c = M(0).toVar();
|
|
2723
2723
|
return p(s.lessThanEqual(1), () => {
|
|
2724
2724
|
let e = pa(o, _a(a, i)), t = M(1).sub(e).mul(n.transmission).toVar();
|
|
2725
2725
|
p(r.not().and(n.attenuationDistance.greaterThan(0)), () => {
|
|
@@ -2743,40 +2743,40 @@ var no = f(([e, t, n, r, i, a, o, s, c]) => {
|
|
|
2743
2743
|
}).toVar();
|
|
2744
2744
|
return p(r.lessThanEqual(.05).and(a.greaterThan(0)), () => {
|
|
2745
2745
|
l.halfVector.assign(t), l.didReflect.assign(!1);
|
|
2746
|
-
let r = n, o =
|
|
2746
|
+
let r = n, o = R(i, M(1).div(r), r).toVar();
|
|
2747
2747
|
p(c.greaterThan(0), () => {
|
|
2748
2748
|
let e = Za(n, a, c);
|
|
2749
|
-
o.assign(
|
|
2749
|
+
o.assign(R(i, M(1).div(e), e));
|
|
2750
2750
|
}).Else(() => {
|
|
2751
2751
|
let e = Ya.wrap(eo(n, a, Y(s)));
|
|
2752
|
-
o.assign(
|
|
2752
|
+
o.assign(R(i, M(1).div(e.ior), e.ior)), l.colorWeight.assign(e.colorWeight), l.pathWavelength.assign(e.wavelength);
|
|
2753
2753
|
});
|
|
2754
|
-
let u =
|
|
2754
|
+
let u = ge(e.negate(), t, o).toVar();
|
|
2755
2755
|
p(A(u, u).lessThan(.001), () => {
|
|
2756
|
-
l.direction.assign(
|
|
2756
|
+
l.direction.assign(he(e.negate(), t)), l.didReflect.assign(!0), l.pdf.assign(1);
|
|
2757
2757
|
}).Else(() => {
|
|
2758
2758
|
l.direction.assign(u), l.pdf.assign(1);
|
|
2759
2759
|
});
|
|
2760
2760
|
}).Else(() => {
|
|
2761
|
-
let u =
|
|
2761
|
+
let u = F(Bi, r), d = Fa({
|
|
2762
2762
|
N: t,
|
|
2763
2763
|
roughness: u,
|
|
2764
2764
|
Xi: o
|
|
2765
2765
|
}).toVar();
|
|
2766
2766
|
l.halfVector.assign(d);
|
|
2767
|
-
let f =
|
|
2767
|
+
let f = R(i, M(1).div(n), n).toVar();
|
|
2768
2768
|
p(a.greaterThan(0), () => {
|
|
2769
2769
|
p(c.greaterThan(0), () => {
|
|
2770
2770
|
let e = Za(n, a, c);
|
|
2771
|
-
f.assign(
|
|
2771
|
+
f.assign(R(i, M(1).div(e), e));
|
|
2772
2772
|
}).Else(() => {
|
|
2773
2773
|
let e = Ya.wrap(eo(n, a, Y(s)));
|
|
2774
|
-
f.assign(
|
|
2774
|
+
f.assign(R(i, M(1).div(e.ior), e.ior)), l.colorWeight.assign(e.colorWeight), l.pathWavelength.assign(e.wavelength);
|
|
2775
2775
|
});
|
|
2776
2776
|
});
|
|
2777
|
-
let m = E(A(d, e), .001, 1).toVar(), h = E(A(t, d), .001, 1).toVar(), g = ya(h, u).toVar(), v =
|
|
2777
|
+
let m = E(A(d, e), .001, 1).toVar(), h = E(A(t, d), .001, 1).toVar(), g = ya(h, u).toVar(), v = ge(e.negate(), d, f).toVar();
|
|
2778
2778
|
p(A(v, v).lessThan(.001), () => {
|
|
2779
|
-
l.direction.assign(
|
|
2779
|
+
l.direction.assign(he(e.negate(), d)), l.didReflect.assign(!0), l.pdf.assign(g.mul(h).div(F(M(4).mul(m), Hi)));
|
|
2780
2780
|
}).Else(() => {
|
|
2781
2781
|
l.direction.assign(v), l.didReflect.assign(!1);
|
|
2782
2782
|
let e = E(A(d, v), .001, 1), t = m.add(f.mul(e)), n = _(e).div(t.mul(t));
|
|
@@ -2789,12 +2789,12 @@ var no = f(([e, t, n, r, i, a, o, s, c]) => {
|
|
|
2789
2789
|
throughput: U(1),
|
|
2790
2790
|
didReflect: !1,
|
|
2791
2791
|
pathWavelength: s
|
|
2792
|
-
}).toVar(), l =
|
|
2792
|
+
}).toVar(), l = R(r, t, t.negate()).toVar(), u = e.negate().toVar(), d = R(r, a, n.ior).toVar(), f = R(r, n.ior, o).toVar(), m = _(A(l, e)), h = d.mul(d).div(f.mul(f)).mul(M(1).sub(m.mul(m))).greaterThan(1).toVar(), g = _a(f, d), v = R(h, M(1), pa(m, g)).toVar(), y = M(0).toVar();
|
|
2793
2793
|
p(h, () => {
|
|
2794
2794
|
y.assign(1);
|
|
2795
2795
|
}).Else(() => {
|
|
2796
2796
|
let e = v, t = M(.95);
|
|
2797
|
-
y.assign(
|
|
2797
|
+
y.assign(I(e, t, n.metalness));
|
|
2798
2798
|
}), y.assign(E(y, .05, .95));
|
|
2799
2799
|
let b = h.or(Y(i).lessThan(y)).toVar();
|
|
2800
2800
|
c.didReflect.assign(b);
|
|
@@ -2804,20 +2804,20 @@ var no = f(([e, t, n, r, i, a, o, s, c]) => {
|
|
|
2804
2804
|
let e = Xa.wrap(no(u, l, n.ior, n.roughness, r, M(0), x, i, M(0)));
|
|
2805
2805
|
c.direction.assign(e.direction);
|
|
2806
2806
|
}).Else(() => {
|
|
2807
|
-
c.direction.assign(
|
|
2808
|
-
}), c.throughput.assign(n.color.xyz.mul(v).div(
|
|
2807
|
+
c.direction.assign(he(e, l));
|
|
2808
|
+
}), c.throughput.assign(n.color.xyz.mul(v).div(F(y, .05)));
|
|
2809
2809
|
}).Else(() => {
|
|
2810
2810
|
p(n.roughness.greaterThan(.05).or(n.dispersion.greaterThan(0)), () => {
|
|
2811
2811
|
let e = Xa.wrap(no(u, l, n.ior, n.roughness, r, n.dispersion, x, i, s));
|
|
2812
2812
|
c.pathWavelength.assign(e.pathWavelength), p(e.didReflect, () => {
|
|
2813
|
-
c.direction.assign(e.direction), c.didReflect.assign(!0), c.throughput.assign(n.color.xyz.div(
|
|
2813
|
+
c.direction.assign(e.direction), c.didReflect.assign(!0), c.throughput.assign(n.color.xyz.div(F(M(1).sub(y), .05)));
|
|
2814
2814
|
}).Else(() => {
|
|
2815
2815
|
c.direction.assign(e.direction), c.throughput.assign(e.colorWeight);
|
|
2816
2816
|
});
|
|
2817
2817
|
}).Else(() => {
|
|
2818
|
-
c.direction.assign(
|
|
2818
|
+
c.direction.assign(ge(e, l, d.div(f))), c.throughput.assign(U(1));
|
|
2819
2819
|
}), p(c.didReflect.not(), () => {
|
|
2820
|
-
c.throughput.mulAssign(n.color.xyz), c.throughput.mulAssign(d.mul(d).div(
|
|
2820
|
+
c.throughput.mulAssign(n.color.xyz), c.throughput.mulAssign(d.mul(d).div(F(f.mul(f), zi))), c.throughput.mulAssign(M(1).sub(v).div(F(M(1).sub(y), .05)));
|
|
2821
2821
|
});
|
|
2822
2822
|
}), c;
|
|
2823
2823
|
}), io = f(([e, t, n, r, i, a, o, s]) => {
|
|
@@ -2843,7 +2843,7 @@ var no = f(([e, t, n, r, i, a, o, s, c]) => {
|
|
|
2843
2843
|
c.alpha.assign(t);
|
|
2844
2844
|
});
|
|
2845
2845
|
}), p(f.not().and(n.alphaMode.equal(N(1))), () => {
|
|
2846
|
-
let t =
|
|
2846
|
+
let t = R(n.alphaTest.greaterThan(0), n.alphaTest, M(.5));
|
|
2847
2847
|
p(n.color.a.mul(n.opacity).lessThan(t), () => {
|
|
2848
2848
|
c.continueRay.assign(!0), c.direction.assign(e.direction), c.throughput.assign(U(1)), c.alpha.assign(0), c.isAlphaSkip.assign(!0), f.assign(!0);
|
|
2849
2849
|
}).Else(() => {
|
|
@@ -2872,7 +2872,7 @@ var lo = (e, t, n) => {
|
|
|
2872
2872
|
return a;
|
|
2873
2873
|
}, uo = (e, t, n) => {
|
|
2874
2874
|
let r = W(0).toVar();
|
|
2875
|
-
return lo(e, t, (e, t) => r.assign(
|
|
2875
|
+
return lo(e, t, (e, t) => r.assign(Oe(e, n).depth(t))), r;
|
|
2876
2876
|
}, fo = (e, t) => {
|
|
2877
2877
|
let n = H(1).toVar();
|
|
2878
2878
|
return lo(e, t, (e) => n.assign(H(1).div(H(Ae(e))))), n;
|
|
@@ -2893,7 +2893,7 @@ function ho(e) {
|
|
|
2893
2893
|
let t = Cr.MATERIAL_BUCKET_COUNT, n = [];
|
|
2894
2894
|
for (let r = 0; r < t; r++) {
|
|
2895
2895
|
let t = e && e[r];
|
|
2896
|
-
n.push(
|
|
2896
|
+
n.push(Oe(t || mo()));
|
|
2897
2897
|
}
|
|
2898
2898
|
return n;
|
|
2899
2899
|
}
|
|
@@ -2992,19 +2992,19 @@ var _o = /* @__PURE__ */ G("\n fn getTransformedUV( uv: vec2f, transform: mat3x3
|
|
|
2992
2992
|
return p(t.normalMapIndex.greaterThanEqual(N(0)), () => {
|
|
2993
2993
|
let i = uo(so, t.normalMapIndex, n.normalUV).xyz.mul(2).sub(1).toVar();
|
|
2994
2994
|
i.x.mulAssign(t.normalScale.x), i.y.assign(i.y.negate().mul(t.normalScale.x));
|
|
2995
|
-
let a =
|
|
2996
|
-
r.assign(
|
|
2995
|
+
let a = L(O(_(e.z).lessThan(.999).select(U(0, 0, 1), U(1, 0, 0)), e)), o = O(e, a);
|
|
2996
|
+
r.assign(L(a.mul(i.x).add(o.mul(i.y)).add(e.mul(i.z))));
|
|
2997
2997
|
}), r;
|
|
2998
2998
|
}), wo = f(([e, t, n]) => {
|
|
2999
2999
|
let r = e.toVar();
|
|
3000
3000
|
return p(t.bumpMapIndex.greaterThanEqual(N(0)).and(t.bumpScale.greaterThan(0)), () => {
|
|
3001
3001
|
let i = U(0, 0, 1).toVar();
|
|
3002
3002
|
lo(so, t.bumpMapIndex, (e, r) => {
|
|
3003
|
-
let a = H(1).div(H(Ae(e))).toVar(), o =
|
|
3004
|
-
i.assign(
|
|
3003
|
+
let a = H(1).div(H(Ae(e))).toVar(), o = Oe(e, n.bumpUV).depth(r).r, s = Oe(e, H(n.bumpUV.x.add(a.x), n.bumpUV.y)).depth(r).r, c = Oe(e, H(n.bumpUV.x, n.bumpUV.y.add(a.y))).depth(r).r, l = H(s.sub(o), c.sub(o)).mul(t.bumpScale);
|
|
3004
|
+
i.assign(L(U(l.x.negate(), l.y.negate(), 1)));
|
|
3005
3005
|
});
|
|
3006
|
-
let a =
|
|
3007
|
-
r.assign(I(
|
|
3006
|
+
let a = L(O(_(e.z).lessThan(.999).select(U(0, 0, 1), U(1, 0, 0)), e)), o = O(e, a), s = a.mul(i.x).add(o.mul(i.y)).add(e.mul(i.z));
|
|
3007
|
+
r.assign(L(I(e, s, E(t.bumpScale, 0, 1))));
|
|
3008
3008
|
}), r;
|
|
3009
3009
|
}), To = f(([e, t]) => {
|
|
3010
3010
|
let n = H(e.anisotropy, e.anisotropyRotation).toVar(), r = uo(so, e.anisotropyMapIndex, t).toVar(), i = r.rg.mul(2).sub(1).toVar(), a = i.length().toVar();
|
|
@@ -3040,7 +3040,7 @@ var _o = /* @__PURE__ */ G("\n fn getTransformedUV( uv: vec2f, transform: mat3x3
|
|
|
3040
3040
|
n.iridescence.assign(n.iridescence.mul(uo(so, e.iridescenceMapIndex, t).r));
|
|
3041
3041
|
}), p(e.iridescenceThicknessMapIndex.greaterThanEqual(N(0)), () => {
|
|
3042
3042
|
let r = uo(so, e.iridescenceThicknessMapIndex, t).g;
|
|
3043
|
-
n.iridescenceThickness.assign(
|
|
3043
|
+
n.iridescenceThickness.assign(I(e.iridescenceThicknessRange.x, e.iridescenceThicknessRange.y, r));
|
|
3044
3044
|
}), p(e.specularIntensityMapIndex.greaterThanEqual(N(0)), () => {
|
|
3045
3045
|
n.specularIntensity.assign(n.specularIntensity.mul(uo(so, e.specularIntensityMapIndex, t).a));
|
|
3046
3046
|
}), p(e.specularColorMapIndex.greaterThanEqual(N(0)), () => {
|
|
@@ -3112,7 +3112,7 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3112
3112
|
});
|
|
3113
3113
|
e.assign(uo(Ao, m.albedoMapIndex, l).a);
|
|
3114
3114
|
}), p(m.alphaMode.equal(N(1)), () => {
|
|
3115
|
-
let t = m.color.a.mul(e).mul(m.opacity), n =
|
|
3115
|
+
let t = m.color.a.mul(e).mul(m.opacity), n = R(m.alphaTest.greaterThan(0), m.alphaTest, M(.5));
|
|
3116
3116
|
p(t.lessThan(n), () => {
|
|
3117
3117
|
h.assign(!0);
|
|
3118
3118
|
});
|
|
@@ -3123,14 +3123,14 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3123
3123
|
}), h.assign(!0);
|
|
3124
3124
|
});
|
|
3125
3125
|
}), p(h, () => {
|
|
3126
|
-
let e =
|
|
3126
|
+
let e = F(M(1e-5), ie(n.hitPoint).mul(1e-6));
|
|
3127
3127
|
c.assign(n.hitPoint.add(t.mul(e))), l.subAssign(n.dst.add(e));
|
|
3128
3128
|
}).ElseIf(m.transmission.greaterThan(0), () => {
|
|
3129
|
-
let e = N(8), r = $(a, n.triangleIndex, N(0), e).xyz, i = $(a, n.triangleIndex, N(1), e).xyz, o = $(a, n.triangleIndex, N(2), e).xyz, u =
|
|
3129
|
+
let e = N(8), r = $(a, n.triangleIndex, N(0), e).xyz, i = $(a, n.triangleIndex, N(1), e).xyz, o = $(a, n.triangleIndex, N(2), e).xyz, u = L(O(i.sub(r), o.sub(r)));
|
|
3130
3130
|
n.normal.assign(u);
|
|
3131
|
-
let f = A(t, u).lessThan(0), h =
|
|
3131
|
+
let f = A(t, u).lessThan(0), h = R(f, u, u.negate());
|
|
3132
3132
|
p(f.not().and(m.attenuationDistance.greaterThan(0)), () => {
|
|
3133
|
-
let e =
|
|
3133
|
+
let e = ie(n.hitPoint.sub(c)), t = to(m.attenuationColor, m.attenuationDistance, e);
|
|
3134
3134
|
s.mulAssign(t.x.add(t.y).add(t.z).div(3));
|
|
3135
3135
|
});
|
|
3136
3136
|
let g = pa(_(A(t, h)), _a(m.ior, M(1))), v = M(1).sub(g).mul(m.transmission);
|
|
@@ -3146,14 +3146,14 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3146
3146
|
});
|
|
3147
3147
|
}), s;
|
|
3148
3148
|
}), Fo = f(([e, t, n]) => {
|
|
3149
|
-
let r =
|
|
3149
|
+
let r = F(M(1e-4), ie(e).mul(1e-6)).toVar();
|
|
3150
3150
|
return p(n.transmission.greaterThan(0), () => {
|
|
3151
3151
|
r.mulAssign(2);
|
|
3152
3152
|
}), p(n.roughness.lessThan(.1), () => {
|
|
3153
3153
|
r.mulAssign(1.5);
|
|
3154
3154
|
}), t.mul(r);
|
|
3155
3155
|
}), Io = f(([e, t, n, r]) => {
|
|
3156
|
-
let i =
|
|
3156
|
+
let i = F(M(0), A(t, e.direction)), a = M(0).toVar();
|
|
3157
3157
|
return p(i.greaterThan(0), () => {
|
|
3158
3158
|
let t = e.intensity.mul(A(e.color, Ui)), o = M(1).toVar();
|
|
3159
3159
|
p(n.metalness.greaterThan(.7), () => {
|
|
@@ -3165,17 +3165,17 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3165
3165
|
a.assign(t.mul(i).mul(o).mul(s));
|
|
3166
3166
|
}), a;
|
|
3167
3167
|
}), Lo = f(([e, t, n, r]) => {
|
|
3168
|
-
let i = e.position.sub(t), a =
|
|
3168
|
+
let i = e.position.sub(t), a = ie(i), o = a.mul(a), s = i.div(a), c = F(A(n, s), 0), l = M(0).toVar();
|
|
3169
3169
|
return p(c.greaterThan(0), () => {
|
|
3170
|
-
let t =
|
|
3170
|
+
let t = F(A(s, e.normal).negate(), 0);
|
|
3171
3171
|
p(t.greaterThan(0), () => {
|
|
3172
|
-
let n = e.area.div(
|
|
3172
|
+
let n = e.area.div(F(o, .1)), i = e.intensity.mul(A(e.color, Ui)).mul(e.area), a = M(1).toVar();
|
|
3173
3173
|
p(r.metalness.greaterThan(.7), () => {
|
|
3174
3174
|
a.mulAssign(1.5), p(r.roughness.lessThan(.3), () => {
|
|
3175
3175
|
a.mulAssign(M(1).add(M(1).sub(r.roughness).mul(.5)));
|
|
3176
3176
|
});
|
|
3177
3177
|
}), p(r.roughness.greaterThan(.6).and(r.metalness.lessThan(.3)), () => {
|
|
3178
|
-
let t =
|
|
3178
|
+
let t = le(e.area.mul(2), M(2));
|
|
3179
3179
|
a.mulAssign(t);
|
|
3180
3180
|
}), p(r.transmission.greaterThan(.5), () => {
|
|
3181
3181
|
a.mulAssign(M(1).add(r.transmission.mul(.3)));
|
|
@@ -3185,9 +3185,9 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3185
3185
|
}), Ro = f(([e, t, n, r]) => {
|
|
3186
3186
|
let i = e.position.sub(t), a = A(i, i), o = M(0).toVar();
|
|
3187
3187
|
return p(a.greaterThanEqual(.001), () => {
|
|
3188
|
-
let t =
|
|
3188
|
+
let t = xe(a), s = i.div(t), c = F(M(0), A(n, s));
|
|
3189
3189
|
p(c.greaterThan(0), () => {
|
|
3190
|
-
let t = M(1).div(
|
|
3190
|
+
let t = M(1).div(F(a, .1)), n = e.intensity.mul(A(e.color, Ui)), i = M(1).toVar();
|
|
3191
3191
|
p(r.metalness.greaterThan(.7), () => {
|
|
3192
3192
|
i.mulAssign(1.5), p(r.roughness.lessThan(.3), () => {
|
|
3193
3193
|
i.mulAssign(M(1).add(M(1).sub(r.roughness).mul(.4)));
|
|
@@ -3202,11 +3202,11 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3202
3202
|
}), zo = f(([e, t, n, r]) => {
|
|
3203
3203
|
let i = e.position.sub(t), a = A(i, i), o = M(0).toVar();
|
|
3204
3204
|
return p(a.greaterThanEqual(.001), () => {
|
|
3205
|
-
let t = i.div(
|
|
3205
|
+
let t = i.div(xe(a)), s = F(M(0), A(n, t));
|
|
3206
3206
|
p(s.greaterThan(0), () => {
|
|
3207
3207
|
let n = A(t.negate(), e.direction), i = D(e.angle);
|
|
3208
3208
|
p(n.greaterThanEqual(i), () => {
|
|
3209
|
-
let t = M(1).div(
|
|
3209
|
+
let t = M(1).div(F(a, .01)), c = be(i, i.add(.1), n), l = e.intensity.mul(A(e.color, Ui)), u = R(r.metalness.greaterThan(.7), M(1.5), R(r.roughness.greaterThan(.8), M(.8), M(1)));
|
|
3210
3210
|
o.assign(l.mul(t).mul(c).mul(s).mul(u));
|
|
3211
3211
|
});
|
|
3212
3212
|
});
|
|
@@ -3265,7 +3265,7 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3265
3265
|
}), Ko = f(([e, t]) => {
|
|
3266
3266
|
let n = t.mul(12);
|
|
3267
3267
|
return Bo({
|
|
3268
|
-
direction:
|
|
3268
|
+
direction: L(U(e.element(n), e.element(n.add(1)), e.element(n.add(2)))),
|
|
3269
3269
|
color: U(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))),
|
|
3270
3270
|
intensity: e.element(n.add(6)),
|
|
3271
3271
|
angle: e.element(n.add(7)),
|
|
@@ -3274,7 +3274,7 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3274
3274
|
goboScale: e.element(n.add(10))
|
|
3275
3275
|
});
|
|
3276
3276
|
}), qo = f(([e, t]) => {
|
|
3277
|
-
let n = t.mul(16), r = U(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = U(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a = O(r, i), o = e.element(n.add(15)), s =
|
|
3277
|
+
let n = t.mul(16), r = U(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = U(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a = O(r, i), o = e.element(n.add(15)), s = ie(a).mul(4);
|
|
3278
3278
|
return Vo({
|
|
3279
3279
|
position: U(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
|
|
3280
3280
|
u: r,
|
|
@@ -3284,8 +3284,8 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3284
3284
|
normalize: e.element(n.add(13)),
|
|
3285
3285
|
spread: e.element(n.add(14)),
|
|
3286
3286
|
shape: o,
|
|
3287
|
-
normal:
|
|
3288
|
-
area:
|
|
3287
|
+
normal: L(a),
|
|
3288
|
+
area: R(o.greaterThan(.5), s.mul(.7853981633974483), s)
|
|
3289
3289
|
});
|
|
3290
3290
|
}), Jo = f(([e, t]) => {
|
|
3291
3291
|
let n = t.mul(9);
|
|
@@ -3300,7 +3300,7 @@ var Po = f(([e, t, n, r, i, a, o]) => {
|
|
|
3300
3300
|
let n = t.mul(20);
|
|
3301
3301
|
return Uo({
|
|
3302
3302
|
position: U(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
|
|
3303
|
-
direction:
|
|
3303
|
+
direction: L(U(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5)))),
|
|
3304
3304
|
color: U(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))),
|
|
3305
3305
|
intensity: e.element(n.add(9)),
|
|
3306
3306
|
angle: e.element(n.add(10)),
|
|
@@ -3321,10 +3321,10 @@ var ts = /* @__PURE__ */ f(([e, t]) => {
|
|
|
3321
3321
|
return p(e.goboIndex.greaterThanEqual(N(0)), () => {
|
|
3322
3322
|
let r = e.direction.toVar(), i = t.negate().toVar(), a = A(i, r).toVar();
|
|
3323
3323
|
p(a.greaterThan(0), () => {
|
|
3324
|
-
let t =
|
|
3324
|
+
let t = L(O(R(_(r.z).lessThan(.999), U(0, 0, 1), U(1, 0, 0)), r)).toVar(), o = O(r, t), s = M(1).div(a).toVar(), c = A(i, t).mul(s), l = A(i, o).mul(s), u = M(.5).div(F(De(e.angle), M(1e-4))).toVar(), d = E(c.mul(u).add(.5), M(0), M(1)), f = E(l.mul(u).add(.5), M(0), M(1));
|
|
3325
3325
|
if ($o) {
|
|
3326
|
-
let t =
|
|
3327
|
-
n.assign(
|
|
3326
|
+
let t = Oe($o, H(d, f)).depth(e.goboIndex), r = le(t.r, t.a), i = R(e.goboIntensity.lessThan(0), M(1).sub(r), r), a = E(_(e.goboIntensity), M(0), M(1));
|
|
3327
|
+
n.assign(I(M(1), i, a));
|
|
3328
3328
|
}
|
|
3329
3329
|
}).Else(() => {
|
|
3330
3330
|
n.assign(0);
|
|
@@ -3333,10 +3333,10 @@ var ts = /* @__PURE__ */ f(([e, t]) => {
|
|
|
3333
3333
|
}), ns = /* @__PURE__ */ f(([e, t]) => {
|
|
3334
3334
|
let n = M(1).toVar();
|
|
3335
3335
|
return p(e.goboIndex.greaterThanEqual(N(0)), () => {
|
|
3336
|
-
let r = e.direction.toVar(), i =
|
|
3336
|
+
let r = e.direction.toVar(), i = L(O(R(_(r.z).lessThan(.999), U(0, 0, 1), U(1, 0, 0)), r)).toVar(), a = O(r, i), o = M(1).div(F(e.goboScale, M(1e-4))).toVar(), s = A(t, i).mul(o).add(.5).toVar(), c = A(t, a).mul(o).add(.5).toVar(), l = s.sub(s.floor()), u = c.sub(c.floor());
|
|
3337
3337
|
if ($o) {
|
|
3338
|
-
let t =
|
|
3339
|
-
n.assign(
|
|
3338
|
+
let t = Oe($o, H(l, u)).depth(e.goboIndex), r = le(t.r, t.a), i = R(e.goboIntensity.lessThan(0), M(1).sub(r), r), a = E(_(e.goboIntensity), M(0), M(1));
|
|
3339
|
+
n.assign(I(M(1), i, a));
|
|
3340
3340
|
}
|
|
3341
3341
|
}), n;
|
|
3342
3342
|
}), rs = null;
|
|
@@ -3346,10 +3346,10 @@ function is(e) {
|
|
|
3346
3346
|
var as = /* @__PURE__ */ f(([e, t]) => {
|
|
3347
3347
|
let n = M(1).toVar();
|
|
3348
3348
|
return p(e.iesIndex.greaterThanEqual(N(0)), () => {
|
|
3349
|
-
let r = e.direction.toVar(), i = t.negate().toVar(), a = E(v(E(A(i, r), M(-1), M(1))).div(M(Math.PI)), M(0), M(1)), o =
|
|
3349
|
+
let r = e.direction.toVar(), i = t.negate().toVar(), a = E(v(E(A(i, r), M(-1), M(1))).div(M(Math.PI)), M(0), M(1)), o = L(O(R(_(r.z).lessThan(.999), U(0, 0, 1), U(1, 0, 0)), r)).toVar(), s = O(r, o), c = A(i, o), l = b(A(i, s), c).div(M(2 * Math.PI)).add(.5);
|
|
3350
3350
|
if (rs) {
|
|
3351
|
-
let t =
|
|
3352
|
-
n.assign(
|
|
3351
|
+
let t = Oe(rs, H(l, a)).depth(e.iesIndex).r, r = E(e.iesIntensity, M(0), M(1));
|
|
3352
|
+
n.assign(I(M(1), t, r));
|
|
3353
3353
|
}
|
|
3354
3354
|
}), n;
|
|
3355
3355
|
}), os = /* @__PURE__ */ G("\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"), ss = f(([e, t, n]) => {
|
|
@@ -3357,15 +3357,15 @@ var as = /* @__PURE__ */ f(([e, t]) => {
|
|
|
3357
3357
|
return p(i.lessThan(-1e-4), () => {
|
|
3358
3358
|
let o = M(1).div(i), s = A(e.position.sub(t), r).mul(o).toVar();
|
|
3359
3359
|
p(s.greaterThan(.001), () => {
|
|
3360
|
-
let r = t.add(n.mul(s)).sub(e.position), i =
|
|
3361
|
-
p(
|
|
3360
|
+
let r = t.add(n.mul(s)).sub(e.position), i = ie(e.u), o = ie(e.v), c = e.u.div(i), l = e.v.div(o), u = A(r, c).div(i), d = A(r, l).div(o);
|
|
3361
|
+
p(R(e.shape.greaterThan(.5), u.mul(u).add(d.mul(d)).lessThanEqual(1), _(u).lessThanEqual(1).and(_(d).lessThanEqual(1))), () => {
|
|
3362
3362
|
a.assign(s);
|
|
3363
3363
|
});
|
|
3364
3364
|
});
|
|
3365
3365
|
}), a;
|
|
3366
3366
|
}), cs = /* @__PURE__ */ G("\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"), ls = /* @__PURE__ */ G("\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"), us = class {
|
|
3367
3367
|
constructor() {
|
|
3368
|
-
this.prevColorTexNode = null, this.prevAlbedoTexNode = null, this._sceneTextureNodes = null;
|
|
3368
|
+
this.prevColorTexNode = null, this.prevAlbedoTexNode = null, this.prevNormalDepthTexNode = null, this._sceneTextureNodes = null;
|
|
3369
3369
|
}
|
|
3370
3370
|
updateSceneTextures(e) {
|
|
3371
3371
|
let t = this._sceneTextureNodes, n = e.environment;
|
|
@@ -3385,8 +3385,8 @@ var as = /* @__PURE__ */ f(([e, t]) => {
|
|
|
3385
3385
|
createSceneTextureNodes(e, t) {
|
|
3386
3386
|
let n = e.triangleStorageNode, r = e.bvhStorageNode, i = e.materialData.materialStorageNode, a = e.lightStorageNode;
|
|
3387
3387
|
No(e.uniforms.get("enableAlphaShadows"));
|
|
3388
|
-
let o =
|
|
3389
|
-
this.prevColorTexNode =
|
|
3388
|
+
let o = Oe(e.environment.environmentTexture), s = t.getReadTextures();
|
|
3389
|
+
this.prevColorTexNode = Oe(s.color), this.prevAlbedoTexNode = Oe(s.albedo), this.prevNormalDepthTexNode = Oe(s.normalDepth);
|
|
3390
3390
|
let c = () => {
|
|
3391
3391
|
let e = new $e(new Uint8Array([
|
|
3392
3392
|
255,
|
|
@@ -3394,10 +3394,10 @@ var as = /* @__PURE__ */ f(([e, t]) => {
|
|
|
3394
3394
|
255,
|
|
3395
3395
|
255
|
|
3396
3396
|
]), 1, 1, 1);
|
|
3397
|
-
return e.minFilter = J, e.magFilter = J, e.generateMipmaps = !1, e.needsUpdate = !0,
|
|
3398
|
-
}, l = e.goboMaps ?
|
|
3397
|
+
return e.minFilter = J, e.magFilter = J, e.generateMipmaps = !1, e.needsUpdate = !0, Oe(e);
|
|
3398
|
+
}, l = e.goboMaps ? Oe(e.goboMaps) : c();
|
|
3399
3399
|
es(l);
|
|
3400
|
-
let u = e.iesProfiles ?
|
|
3400
|
+
let u = e.iesProfiles ? Oe(e.iesProfiles) : c();
|
|
3401
3401
|
is(u);
|
|
3402
3402
|
let d = {
|
|
3403
3403
|
triStorage: n,
|
|
@@ -3411,7 +3411,7 @@ var as = /* @__PURE__ */ f(([e, t]) => {
|
|
|
3411
3411
|
return this._sceneTextureNodes = d, d;
|
|
3412
3412
|
}
|
|
3413
3413
|
dispose() {
|
|
3414
|
-
this.prevColorTexNode = null, this.prevAlbedoTexNode = null, this._sceneTextureNodes = null;
|
|
3414
|
+
this.prevColorTexNode = null, this.prevAlbedoTexNode = null, this.prevNormalDepthTexNode = null, this._sceneTextureNodes = null;
|
|
3415
3415
|
}
|
|
3416
3416
|
}, ds = class {
|
|
3417
3417
|
constructor(e, t) {
|
|
@@ -7173,7 +7173,7 @@ var cc = 4, lc = class extends Qn {
|
|
|
7173
7173
|
}, this.environment = new _i(this.scene, this.uniforms), this.environment.callbacks.onReset = () => this.reset(), this.environment.callbacks.getSceneTextureNodes = () => this.shaderBuilder.getSceneTextureNodes(), this.shaderBuilder = new us(), this._initRenderingState(), this.setupBlueNoise(), this.tempVector2 = new tn(), this.lastCameraMatrix = new yt(), this.lastProjectionMatrix = new yt(), this.lastRenderMode = -1, this.renderModeChangeTimeout = null, this.renderModeChangeDelay = 50, this.pendingRenderMode = null, this.lastInteractionModeState = !1, this.cameraChanged = !1, this.updateCompletionThreshold();
|
|
7174
7174
|
}
|
|
7175
7175
|
_initDataTextures() {
|
|
7176
|
-
this.triangleStorageAttr = null, this.triangleStorageNode = null, this.triangleCount = 0, this.bvhStorageAttr = null, this.bvhStorageNode = null, this.bvhNodeCount = 0, this.directionalLightsData = null, this.pointLightsData = null, this.spotLightsData = null, this.areaLightsData = null, this.goboMaps = null, this.iesProfiles = null, this.stbnScalarTexture = null, this.stbnVec2Texture = null, this.lightStorageAttr = new o(new Float32Array(16), 4), this.lightStorageNode =
|
|
7176
|
+
this.triangleStorageAttr = null, this.triangleStorageNode = null, this.triangleCount = 0, this.bvhStorageAttr = null, this.bvhStorageNode = null, this.bvhNodeCount = 0, this.directionalLightsData = null, this.pointLightsData = null, this.spotLightsData = null, this.areaLightsData = null, this.goboMaps = null, this.iesProfiles = null, this.stbnScalarTexture = null, this.stbnVec2Texture = null, this.lightStorageAttr = new o(new Float32Array(16), 4), this.lightStorageNode = Se(this.lightStorageAttr, "vec4", 1).toReadOnly(), this._lbvhDataCache = null, this._emissiveDataCache = null, this._bitTrailMapCache = null, this._instanceTable = null, this.spheres = [];
|
|
7177
7177
|
}
|
|
7178
7178
|
_defineUniformGetters() {
|
|
7179
7179
|
let e = this.uniforms;
|
|
@@ -7324,12 +7324,12 @@ var cc = 4, lc = class extends Qn {
|
|
|
7324
7324
|
setTriangleData(e, t) {
|
|
7325
7325
|
if (!e) return;
|
|
7326
7326
|
let n = e.length / 4;
|
|
7327
|
-
this.triangleStorageNode ? (this.triangleStorageAttr = new o(e, 4), this.triangleStorageNode.value = this.triangleStorageAttr, this.triangleStorageNode.bufferCount = n) : (this.triangleStorageAttr = new o(e, 4), this.triangleStorageNode =
|
|
7327
|
+
this.triangleStorageNode ? (this.triangleStorageAttr = new o(e, 4), this.triangleStorageNode.value = this.triangleStorageAttr, this.triangleStorageNode.bufferCount = n) : (this.triangleStorageAttr = new o(e, 4), this.triangleStorageNode = Se(this.triangleStorageAttr, "vec4", n).toReadOnly()), this.triangleCount = t, console.log(`PathTracer: ${this.triangleCount} triangles (storage buffer)`);
|
|
7328
7328
|
}
|
|
7329
7329
|
setBVHData(e) {
|
|
7330
7330
|
if (!e) return;
|
|
7331
7331
|
let t = e.length / 4;
|
|
7332
|
-
this.bvhStorageNode ? (this.bvhStorageAttr = new o(e, 4), this.bvhStorageNode.value = this.bvhStorageAttr, this.bvhStorageNode.bufferCount = t) : (this.bvhStorageAttr = new o(e, 4), this.bvhStorageNode =
|
|
7332
|
+
this.bvhStorageNode ? (this.bvhStorageAttr = new o(e, 4), this.bvhStorageNode.value = this.bvhStorageAttr, this.bvhStorageNode.bufferCount = t) : (this.bvhStorageAttr = new o(e, 4), this.bvhStorageNode = Se(this.bvhStorageAttr, "vec4", t).toReadOnly()), this.bvhNodeCount = Math.floor(t / cc), console.log(`PathTracer: ${this.bvhNodeCount} BVH nodes (storage buffer)`);
|
|
7333
7333
|
}
|
|
7334
7334
|
setInstanceTable(e) {
|
|
7335
7335
|
this._instanceTable = e;
|
|
@@ -7522,18 +7522,18 @@ var hc = class {
|
|
|
7522
7522
|
this.capacity = t, fc = t;
|
|
7523
7523
|
let n = t * 7, r = new o(new Float32Array(n * 4), 4);
|
|
7524
7524
|
this._attrs.ray = r, this.rayBuffer = {
|
|
7525
|
-
rw:
|
|
7526
|
-
ro:
|
|
7525
|
+
rw: Se(r, "vec4"),
|
|
7526
|
+
ro: Se(r, "vec4").toReadOnly()
|
|
7527
7527
|
};
|
|
7528
7528
|
let i = new o(new Uint32Array(t), 1);
|
|
7529
7529
|
this._attrs.rng = i, this.rngBuffer = {
|
|
7530
|
-
rw:
|
|
7531
|
-
ro:
|
|
7530
|
+
rw: Se(i, "uint"),
|
|
7531
|
+
ro: Se(i, "uint").toReadOnly()
|
|
7532
7532
|
};
|
|
7533
7533
|
let a = t * 2, s = new o(new Float32Array(a * 4), 4);
|
|
7534
7534
|
this._attrs.hit = s, this.hitBuffer = {
|
|
7535
|
-
rw:
|
|
7536
|
-
ro:
|
|
7535
|
+
rw: Se(s, "vec4"),
|
|
7536
|
+
ro: Se(s, "vec4").toReadOnly()
|
|
7537
7537
|
};
|
|
7538
7538
|
let c = (n * 16 + t * 4 + a * 16) / (1024 * 1024);
|
|
7539
7539
|
console.log(`PackedRayBuffer: capacity=${t}, total=${c.toFixed(1)} MB (ray=${(n * 16 / 1048576).toFixed(0)}MB hit=${(a * 16 / 1048576).toFixed(0)}MB) [SoA ray/hit]`);
|
|
@@ -7544,7 +7544,7 @@ var hc = class {
|
|
|
7544
7544
|
dispose() {
|
|
7545
7545
|
mc(this._renderer, this._attrs.ray), mc(this._renderer, this._attrs.rng), mc(this._renderer, this._attrs.hit), this._attrs = {}, this.rayBuffer = null, this.rngBuffer = null, this.hitBuffer = null, this.capacity = 0;
|
|
7546
7546
|
}
|
|
7547
|
-
}, gc = (e, t) => e.element(pc(t, uc.ORIGIN_META)).xyz, _c = (e, t) => e.element(pc(t, uc.DIR_FLAGS)).xyz, vc = (e, t) => ee(e.element(pc(t, uc.DIR_FLAGS)).w), yc = (e, t) => e.element(pc(t, uc.THROUGHPUT_PDF)).xyz, bc = (e, t) => e.element(pc(t, uc.THROUGHPUT_PDF)).w, xc = (e, t) => e.element(pc(t, uc.RADIANCE_ALPHA)), Sc = (e) => z(e).mul(1), Cc = (e, t, n, r, i) => e.element(Sc(t)).assign(Le(
|
|
7547
|
+
}, gc = (e, t) => e.element(pc(t, uc.ORIGIN_META)).xyz, _c = (e, t) => e.element(pc(t, uc.DIR_FLAGS)).xyz, vc = (e, t) => ee(e.element(pc(t, uc.DIR_FLAGS)).w), yc = (e, t) => e.element(pc(t, uc.THROUGHPUT_PDF)).xyz, bc = (e, t) => e.element(pc(t, uc.THROUGHPUT_PDF)).w, xc = (e, t) => e.element(pc(t, uc.RADIANCE_ALPHA)), Sc = (e) => z(e).mul(1), Cc = (e, t, n, r, i) => e.element(Sc(t)).assign(Le(fe(H(n.x, n.y)), fe(H(n.z, r)), pe(H(i.x, i.y)), pe(H(i.z, 0)))), wc = (e, t) => e.element(Sc(t)), Tc = (e) => {
|
|
7548
7548
|
let t = Ne(e.x), n = Ne(e.y);
|
|
7549
7549
|
return W(U(t.x, t.y, n.x).mul(.5).add(.5), n.y);
|
|
7550
7550
|
}, Ec = (e) => U(Pe(e.z), Pe(e.w).x), Dc = (e, t, n, r, i) => e.element(pc(t, uc.ORIGIN_META)).assign(W(n, B(z(r).bitOr(z(i).shiftLeft(8))))), Oc = (e, t, n, r) => e.element(pc(t, uc.DIR_FLAGS)).assign(W(n, B(r))), kc = (e, t, n, r) => e.element(pc(t, uc.THROUGHPUT_PDF)).assign(W(n, r)), Ac = (e, t, n) => e.element(pc(t, uc.RADIANCE_ALPHA)).assign(n), jc = (e, t) => e.element(pc(t, dc.DIST_TRI_BARY)).x, Mc = (e, t) => ee(e.element(pc(t, dc.DIST_TRI_BARY)).y), Nc = (e, t) => e.element(pc(t, dc.DIST_TRI_BARY)).zw, Pc = (e, t) => e.element(pc(t, dc.NORMAL_MAT)).xyz, Fc = (e, t) => z(ee(e.element(pc(t, dc.NORMAL_MAT)).w).bitAnd(65535)), Ic = (e, t, n, r, i, a, o, s, c) => {
|
|
@@ -7584,17 +7584,17 @@ var hc = class {
|
|
|
7584
7584
|
this._renderer = t, this.capacity = 0, this.counters = null, this.activeIndices = null, this.activeIndicesRO = null, this.sortedIndices = null, this.sortedIndicesRO = null, this.sortGlobalHistogram = null, this.pingPong = 0, e > 0 && this.allocate(e);
|
|
7585
7585
|
}
|
|
7586
7586
|
allocate(e) {
|
|
7587
|
-
this.dispose(), this.capacity = e, this._countersAttr = new o(new Uint32Array(Gc.COUNT), 1), this.counters =
|
|
7587
|
+
this.dispose(), this.capacity = e, this._countersAttr = new o(new Uint32Array(Gc.COUNT), 1), this.counters = Se(this._countersAttr, "uint").toAtomic(), this.MAX_BOUNCE_SNAPSHOTS = 32, this._bounceCountsAttr = new o(new Uint32Array(this.MAX_BOUNCE_SNAPSHOTS), 1), this.bounceCounts = Se(this._bounceCountsAttr, "uint");
|
|
7588
7588
|
let t = new o(new Uint32Array(e), 1), n = new o(new Uint32Array(e), 1);
|
|
7589
7589
|
this._attrA = t, this._attrB = n, this.activeIndices = {
|
|
7590
|
-
a:
|
|
7591
|
-
b:
|
|
7590
|
+
a: Se(t, "uint"),
|
|
7591
|
+
b: Se(n, "uint")
|
|
7592
7592
|
}, this.activeIndicesRO = {
|
|
7593
|
-
a:
|
|
7594
|
-
b:
|
|
7593
|
+
a: Se(t, "uint").toReadOnly(),
|
|
7594
|
+
b: Se(n, "uint").toReadOnly()
|
|
7595
7595
|
};
|
|
7596
7596
|
let r = new o(new Uint32Array(e), 1);
|
|
7597
|
-
this._sortAttr = r, this.sortedIndices =
|
|
7597
|
+
this._sortAttr = r, this.sortedIndices = Se(r, "uint"), this.sortedIndicesRO = Se(r, "uint").toReadOnly(), this._sortGlobalHistAttr = new o(new Uint32Array(256), 1), this.sortGlobalHistogram = Se(this._sortGlobalHistAttr, "uint").toAtomic(), this.pingPong = 0;
|
|
7598
7598
|
let i = Gc.COUNT * 4 + e * 4 * 3;
|
|
7599
7599
|
console.log(`QueueManager: Allocated capacity=${e}, total=${(i / (1024 * 1024)).toFixed(1)} MB`);
|
|
7600
7600
|
}
|
|
@@ -7880,7 +7880,7 @@ var $c = class {
|
|
|
7880
7880
|
triTests: N(0)
|
|
7881
7881
|
}).toVar(), o = N(-1).toVar(), s = M(0).toVar(), c = M(0).toVar(), l = sl(), u = N(1).toVar();
|
|
7882
7882
|
l.element(N(0)).assign(N(0));
|
|
7883
|
-
let f =
|
|
7883
|
+
let f = I(U(1), ve(e.direction), de(e.direction, U(0))), h = I(U(1).div(e.direction), U(ol).mul(f), ae(_(e.direction), U(1e-8))).toVar(), g = e.origin, v = e.direction, y = ll({ rayDir: v }).toVar(), b = N(0).toVar();
|
|
7884
7884
|
return m(u.greaterThan(N(0)).and(b.lessThan(N(rl))), () => {
|
|
7885
7885
|
b.addAssign(1), u.subAssign(1);
|
|
7886
7886
|
let e = l.element(u).toVar(), r = $(t, e, N(0), N(il));
|
|
@@ -7902,7 +7902,7 @@ var $c = class {
|
|
|
7902
7902
|
woopParams: y
|
|
7903
7903
|
});
|
|
7904
7904
|
p(f.w.greaterThan(.5), () => {
|
|
7905
|
-
let e = f.x, t = f.y, l = f.z, u = $(n, r, N(3), N(al)).xyz, d = $(n, r, N(4), N(al)).xyz, m = $(n, r, N(5), N(al)), h = m.xyz, g = N(m.w).toVar(), _ = M(1).sub(t).sub(l), y = v.dot(
|
|
7905
|
+
let e = f.x, t = f.y, l = f.z, u = $(n, r, N(3), N(al)).xyz, d = $(n, r, N(4), N(al)).xyz, m = $(n, r, N(5), N(al)), h = m.xyz, g = N(m.w).toVar(), _ = M(1).sub(t).sub(l), y = v.dot(L(u.mul(_).add(d.mul(t)).add(h.mul(l))));
|
|
7906
7906
|
p(i.or(g.equal(N(2))).or(g.equal(N(0)).and(y.lessThan(-1e-4))).or(g.equal(N(1)).and(y.greaterThan(1e-4))), () => {
|
|
7907
7907
|
a.didHit.assign(!0), a.dst.assign(e), o.assign(r), s.assign(t), c.assign(l);
|
|
7908
7908
|
});
|
|
@@ -7927,19 +7927,19 @@ var $c = class {
|
|
|
7927
7927
|
boxMin: i.xyz,
|
|
7928
7928
|
boxMax: o.xyz
|
|
7929
7929
|
}).toVar();
|
|
7930
|
-
p(
|
|
7930
|
+
p(le(d, f).lessThan(a.dst), () => {
|
|
7931
7931
|
let e = d.lessThan(f);
|
|
7932
|
-
p(
|
|
7933
|
-
l.element(u).assign(
|
|
7932
|
+
p(R(e, f, d).lessThan(a.dst).and(u.lessThan(N(nl))), () => {
|
|
7933
|
+
l.element(u).assign(R(e, c, s)), u.addAssign(1);
|
|
7934
7934
|
}), p(u.lessThan(N(nl)), () => {
|
|
7935
|
-
l.element(u).assign(
|
|
7935
|
+
l.element(u).assign(R(e, s, c)), u.addAssign(1);
|
|
7936
7936
|
});
|
|
7937
7937
|
});
|
|
7938
7938
|
});
|
|
7939
7939
|
}), p(a.didHit, () => {
|
|
7940
7940
|
a.hitPoint.assign(e.origin.add(e.direction.mul(a.dst)));
|
|
7941
7941
|
let t = M(1).sub(s).sub(c), r = $(n, o, N(3), N(al)).xyz, i = $(n, o, N(4), N(al)).xyz, l = $(n, o, N(5), N(al)).xyz;
|
|
7942
|
-
a.normal.assign(
|
|
7942
|
+
a.normal.assign(L(r.mul(t).add(i.mul(s)).add(l.mul(c))));
|
|
7943
7943
|
let u = $(n, o, N(6), N(al)), d = $(n, o, N(7), N(al));
|
|
7944
7944
|
a.uv.assign(u.xy.mul(t).add(u.zw.mul(s)).add(d.xy.mul(c))), a.materialIndex.assign(N(d.z)), a.meshIndex.assign(N(d.w)), a.triangleIndex.assign(o);
|
|
7945
7945
|
}), a;
|
|
@@ -7956,7 +7956,7 @@ var $c = class {
|
|
|
7956
7956
|
triTests: N(0)
|
|
7957
7957
|
}).toVar(), a = sl(), o = N(1).toVar();
|
|
7958
7958
|
a.element(N(0)).assign(N(0));
|
|
7959
|
-
let s =
|
|
7959
|
+
let s = I(U(1), ve(e.direction), de(e.direction, U(0))), c = I(U(1).div(e.direction), U(ol).mul(s), ae(_(e.direction), U(1e-8))).toVar(), l = ll({ rayDir: e.direction }).toVar(), u = N(0).toVar();
|
|
7960
7960
|
return m(o.greaterThan(N(0)).and(i.didHit.not()).and(u.lessThan(N(rl))), () => {
|
|
7961
7961
|
u.addAssign(1), o.subAssign(1);
|
|
7962
7962
|
let r = a.element(o).toVar(), s = $(t, r, N(0), N(il));
|
|
@@ -7998,21 +7998,21 @@ var $c = class {
|
|
|
7998
7998
|
boxMin: l.xyz,
|
|
7999
7999
|
boxMax: u.xyz
|
|
8000
8000
|
}).toVar();
|
|
8001
|
-
p(
|
|
8001
|
+
p(le(m, h).lessThan(i.dst), () => {
|
|
8002
8002
|
let e = m.lessThan(h);
|
|
8003
|
-
p(
|
|
8004
|
-
a.element(o).assign(
|
|
8003
|
+
p(R(e, h, m).lessThan(i.dst).and(o.lessThan(N(nl))), () => {
|
|
8004
|
+
a.element(o).assign(R(e, f, d)), o.addAssign(1);
|
|
8005
8005
|
}), p(o.lessThan(N(nl)), () => {
|
|
8006
|
-
a.element(o).assign(
|
|
8006
|
+
a.element(o).assign(R(e, d, f)), o.addAssign(1);
|
|
8007
8007
|
});
|
|
8008
8008
|
});
|
|
8009
8009
|
});
|
|
8010
8010
|
}), i;
|
|
8011
8011
|
}), pl = f(([e, t, n, r, i, a, o, s, c, l, u]) => {
|
|
8012
|
-
let d = U(e.xy, 1), f = r.mul(W(d, 1)), m =
|
|
8012
|
+
let d = U(e.xy, 1), f = r.mul(W(d, 1)), m = L(ce(n[0].xyz, n[1].xyz, n[2].xyz).mul(f.xyz.div(f.w))).toVar(), h = U(n[3]).toVar(), g = h.toVar(), _ = m.toVar();
|
|
8013
8013
|
return p(i.and(a.greaterThan(0)).and(o.lessThan(64)).and(s.greaterThan(.001)), () => {
|
|
8014
|
-
let e = a.div(o).mul(.001).mul(c).mul(l), r = Hn(t), i = r.x.mul(u.max(.01)), d = r.y, f =
|
|
8015
|
-
g.assign(h.add(v)), _.assign(
|
|
8014
|
+
let e = a.div(o).mul(.001).mul(c).mul(l), r = Hn(t), i = r.x.mul(u.max(.01)), d = r.y, f = L(U(n[0])), p = L(U(n[1])), v = f.mul(i).add(p.mul(d)).mul(e);
|
|
8015
|
+
g.assign(h.add(v)), _.assign(L(h.add(m.mul(s)).sub(g)));
|
|
8016
8016
|
}), vi({
|
|
8017
8017
|
origin: g,
|
|
8018
8018
|
direction: _
|
|
@@ -8021,7 +8021,7 @@ var $c = class {
|
|
|
8021
8021
|
function ml(e) {
|
|
8022
8022
|
let { rayBufferRW: t, rngBufferRW: n, gBufferRW: r, resolution: i, frame: a, cameraWorldMatrix: o, cameraProjectionMatrixInverse: s, enableDOF: c, focalLength: l, aperture: u, focusDistance: d, sceneScale: m, apertureScale: h, anamorphicRatio: g, renderWidth: _, renderHeight: v, transmissiveBounces: y, transparentBackground: b, auxGBufferEnabled: x } = e, S = x.greaterThan(z(0));
|
|
8023
8023
|
return f(() => {
|
|
8024
|
-
let e = N(K.x).mul(16).add(N(
|
|
8024
|
+
let e = N(K.x).mul(16).add(N(oe.x)), f = N(K.y).mul(16).add(N(oe.y));
|
|
8025
8025
|
p(e.lessThan(_).and(f.lessThan(v)), () => {
|
|
8026
8026
|
let _ = H(M(e).add(.5), M(f).add(.5)), v = f.mul(N(i.x)).add(e), x = z(v), C = _.div(i).mul(2).sub(1).toVar();
|
|
8027
8027
|
C.y.assign(C.y.negate());
|
|
@@ -8030,7 +8030,7 @@ function ml(e) {
|
|
|
8030
8030
|
rayIndex: N(0),
|
|
8031
8031
|
frame: a
|
|
8032
8032
|
}).toVar() }).toVar(), T = Yn(_, N(1), N(1), w, i, a).toVar(), E = H(2).div(i), D = T.sub(.5).mul(E), O = C.add(D), k = vi.wrap(pl(O, w, o, s, c, l, u, d, m, h, g));
|
|
8033
|
-
Dc(t, x, k.origin, N(0), N(0)), Oc(t, x, k.direction, z(Kc.ACTIVE)), kc(t, x, W(1, 1, 1, 0).xyz, M(0)), Ac(t, x, W(U(0),
|
|
8033
|
+
Dc(t, x, k.origin, N(0), N(0)), Oc(t, x, k.direction, z(Kc.ACTIVE)), kc(t, x, W(1, 1, 1, 0).xyz, M(0)), Ac(t, x, W(U(0), R(b, M(1), M(0)))), p(S, () => {
|
|
8034
8034
|
Cc(r, z(v), U(0, 0, 1), M(1), U(0));
|
|
8035
8035
|
}), Rc(t, x, z(0), z(y), M(1), M(1), M(1)), n.element(x).assign(w);
|
|
8036
8036
|
});
|
|
@@ -8062,30 +8062,30 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8062
8062
|
let s = gl({
|
|
8063
8063
|
direction: t,
|
|
8064
8064
|
environmentMatrix: n
|
|
8065
|
-
}).toVar(), c =
|
|
8065
|
+
}).toVar(), c = Oe(e, s, 0).rgb.toVar(), l = ye(s.y.mul(Math.PI)).toVar(), u = A(c, Ui).mul(l), d = F(M(0), u.sub(i)).div(r), f = l.greaterThan(0).select(M(1).div(M(2 * Math.PI * Math.PI).mul(l)), M(0)), p = M(a.x).mul(M(a.y)).mul(d).mul(f);
|
|
8066
8066
|
o.assign(W(c, p));
|
|
8067
8067
|
}), o;
|
|
8068
8068
|
}), yl = f(([e, t, n, r, i, a, o, s, c]) => {
|
|
8069
|
-
let l = N(o.x).toVar(), u = o.y, d = E(s.x.mul(u.sub(1)), 0, u.sub(1)), f = N(te(d)), p =
|
|
8069
|
+
let l = N(o.x).toVar(), u = o.y, d = E(s.x.mul(u.sub(1)), 0, u.sub(1)), f = N(te(d)), p = le(f.add(1), N(u).sub(1)), m = ne(d), h = I(t.load(P(l, f)).x, t.load(P(l, p)).x, m).toVar(), g = o.x, _ = o.y, v = E(s.y.mul(g.sub(1)), 0, g.sub(1)), y = E(h.mul(_.sub(1)), 0, _.sub(1)), b = N(te(v)), x = N(te(y)), S = le(b.add(1), N(g).sub(1)), C = le(x.add(1), N(_).sub(1)), w = ne(v), T = ne(y), D = t.load(P(b, x)).x, O = t.load(P(S, x)).x, k = t.load(P(b, C)).x, j = t.load(P(S, C)).x, ee = H(I(I(D, O, w), I(k, j, w), T).toVar(), h).toVar(), re = _l({
|
|
8070
8070
|
uv: ee,
|
|
8071
8071
|
environmentMatrix: n
|
|
8072
|
-
}).toVar(),
|
|
8073
|
-
c.assign(
|
|
8074
|
-
let
|
|
8075
|
-
return W(re, M(o.x).mul(M(o.y)).mul(
|
|
8072
|
+
}).toVar(), ie = Oe(e, ee, 0).rgb.mul(r).toVar();
|
|
8073
|
+
c.assign(ie);
|
|
8074
|
+
let ae = ye(ee.y.mul(Math.PI)).toVar(), oe = A(ie.div(r), Ui).mul(ae), se = F(M(0), oe.sub(a)).div(i), ce = ae.greaterThan(0).select(M(1).div(M(2 * Math.PI * Math.PI).mul(ae)), M(0));
|
|
8075
|
+
return W(re, M(o.x).mul(M(o.y)).mul(se).mul(ce));
|
|
8076
8076
|
}), bl = /* @__PURE__ */ G("\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", [gl]), xl = f(([e, t, n, r]) => {
|
|
8077
8077
|
let i = t.toConst(), a = e.toVar();
|
|
8078
8078
|
a.y.subAssign(r);
|
|
8079
8079
|
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();
|
|
8080
8080
|
return p(l.greaterThanEqual(0), () => {
|
|
8081
|
-
let t =
|
|
8081
|
+
let t = xe(l).sub(s).toVar(), r = M(1e6).toVar(), c = i.y.toConst();
|
|
8082
8082
|
p(c.lessThanEqual(0), () => {
|
|
8083
8083
|
let t = e.y.negate().div(c).toConst(), n = e.add(i.mul(t)).toConst();
|
|
8084
8084
|
p(n.dot(n).lessThan(o), () => {
|
|
8085
8085
|
r.assign(t);
|
|
8086
8086
|
});
|
|
8087
8087
|
}), p(t.greaterThan(0), () => {
|
|
8088
|
-
u.assign(a.add(i.mul(
|
|
8088
|
+
u.assign(a.add(i.mul(le(t, r))).div(n));
|
|
8089
8089
|
});
|
|
8090
8090
|
}), u;
|
|
8091
8091
|
}), Sl = f(([e, t, n, r, i, a]) => {
|
|
@@ -8099,16 +8099,16 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8099
8099
|
return p(e.roughness.greaterThan(.98).and(e.metalness.lessThan(.02)).and(e.transmission.equal(0)).and(e.clearcoat.equal(0)).and(e.iridescence.equal(0)), () => {
|
|
8100
8100
|
n.assign(e.color.rgb.mul(M(1).sub(e.metalness)).mul(Li));
|
|
8101
8101
|
}).Else(() => {
|
|
8102
|
-
let r = E(
|
|
8102
|
+
let r = E(I(va(e.ior).mul(e.specularColor), e.color.rgb, e.metalness).mul(e.specularIntensity), U(0), U(1)).toVar(), i = e.color.rgb.toVar();
|
|
8103
8103
|
p(e.dispersion.greaterThan(0).and(e.transmission.greaterThan(.5)), () => {
|
|
8104
|
-
let t = E(e.dispersion.mul(.1), 0, .8), n =
|
|
8104
|
+
let t = E(e.dispersion.mul(.1), 0, .8), n = F(F(i.r, i.g), i.b), r = le(le(i.r, i.g), i.b);
|
|
8105
8105
|
p(n.greaterThan(r), () => {
|
|
8106
8106
|
let e = i.sub(r).div(n.sub(r));
|
|
8107
|
-
i.assign(
|
|
8107
|
+
i.assign(I(i, e, t.mul(.3)));
|
|
8108
8108
|
});
|
|
8109
8109
|
}), p(e.iridescence.greaterThan(0), () => {
|
|
8110
8110
|
let n = e.iridescenceThicknessRange.y, i = Ma(M(1), e.iridescenceIOR, t.VoH, n, r);
|
|
8111
|
-
r.assign(
|
|
8111
|
+
r.assign(I(r, i, e.iridescence));
|
|
8112
8112
|
});
|
|
8113
8113
|
let a = ma(t.VoH, r), o = U(0).toVar();
|
|
8114
8114
|
p(e.anisotropy.greaterThan(0), () => {
|
|
@@ -8116,7 +8116,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8116
8116
|
o.assign(a.mul(r.mul(i)));
|
|
8117
8117
|
}).Else(() => {
|
|
8118
8118
|
let n = ya(t.NoH, e.roughness), r = Sa(t.NoV, t.NoL, e.roughness);
|
|
8119
|
-
o.assign(n.mul(r).mul(a).div(
|
|
8119
|
+
o.assign(n.mul(r).mul(a).div(F(M(4).mul(t.NoV).mul(t.NoL), zi)));
|
|
8120
8120
|
});
|
|
8121
8121
|
let s = ki.wrap(Ca(r, t.NoV, e.roughness)), c = o.mul(s.compensation), l = U(1).sub(s.E_total).mul(M(1).sub(e.metalness)).mul(i).mul(Li).add(c).toVar();
|
|
8122
8122
|
p(e.sheen.greaterThan(0), () => {
|
|
@@ -8127,32 +8127,32 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8127
8127
|
});
|
|
8128
8128
|
}), n;
|
|
8129
8129
|
}), wl = f(([e, t, n, r]) => Cl(r, Oi.wrap(ta(n, e, t, r)))), Tl = f(([e, t]) => {
|
|
8130
|
-
let n = E(
|
|
8130
|
+
let n = E(I(va(t.ior).mul(t.specularColor), t.color.rgb, t.metalness).mul(t.specularIntensity), U(0), U(1)).toVar(), r = ma(e.VoH, n), i = U(0).toVar();
|
|
8131
8131
|
p(t.anisotropy.greaterThan(0), () => {
|
|
8132
8132
|
let n = Ta(t.roughness, t.anisotropy), a = Ea(n.x, n.y, e.NoH, e.ToH, e.BoH), o = Da(n.x, n.y, e.ToV, e.BoV, e.ToL, e.BoL, e.NoV, e.NoL);
|
|
8133
8133
|
i.assign(r.mul(a.mul(o)));
|
|
8134
8134
|
}).Else(() => {
|
|
8135
8135
|
let n = ya(e.NoH, t.roughness), a = Sa(e.NoV, e.NoL, t.roughness);
|
|
8136
|
-
i.assign(n.mul(a).mul(r).div(
|
|
8136
|
+
i.assign(n.mul(a).mul(r).div(F(M(4).mul(e.NoV).mul(e.NoL), zi)));
|
|
8137
8137
|
});
|
|
8138
|
-
let a = ki.wrap(Ca(n, e.NoV, t.roughness)), o = i.mul(a.compensation), s = U(1).sub(a.E_total).mul(M(1).sub(t.metalness)).mul(t.color.rgb).div(Ii).add(o), c =
|
|
8138
|
+
let a = ki.wrap(Ca(n, e.NoV, t.roughness)), o = i.mul(a.compensation), s = U(1).sub(a.E_total).mul(M(1).sub(t.metalness)).mul(t.color.rgb).div(Ii).add(o), c = F(t.clearcoatRoughness, Vi), l = ya(e.NoH, c), u = Sa(e.NoV, e.NoL, c), d = pa(e.VoH, M(.04)), f = l.mul(u).mul(d).div(F(M(4).mul(e.NoV).mul(e.NoL), zi)), m = M(1).sub(t.clearcoat.mul(d).mul(M(2).sub(d)));
|
|
8139
8139
|
return s.mul(m).add(U(f).mul(t.clearcoat));
|
|
8140
8140
|
}), El = 2 * Ii, Dl = f(([e, t]) => {
|
|
8141
8141
|
let n = M(1).toVar();
|
|
8142
8142
|
return p(t.lessThan(M(Ii).sub(.001)).and(e.greaterThan(0)), () => {
|
|
8143
|
-
let r = t.mul(.5).toVar(), i =
|
|
8144
|
-
n.assign(
|
|
8143
|
+
let r = t.mul(.5).toVar(), i = De(r).toVar(), a = xe(F(M(1).sub(e.mul(e)), 0)).div(F(e, 1e-4)), o = R(r.greaterThan(.05), M(1).div(F(i.sub(r), 1e-6)), M(3).div(F(r.mul(r).mul(r), 1e-9)));
|
|
8144
|
+
n.assign(F(i.sub(a).mul(o), 0));
|
|
8145
8145
|
}), n;
|
|
8146
8146
|
}), Ol = f(([e]) => {
|
|
8147
|
-
let t =
|
|
8147
|
+
let t = R(e.normalize.greaterThan(.5), M(1).div(F(e.area, 1e-10)), M(1));
|
|
8148
8148
|
return e.color.mul(e.intensity).mul(Li).mul(t);
|
|
8149
8149
|
}), kl = f(([e, t, n, r]) => {
|
|
8150
8150
|
let i = T(!1).toVar(), a = U(0, 1, 0).toVar(), o = U(0).toVar(), s = M(0).toVar(), c = M(0).toVar(), l = N(2).toVar();
|
|
8151
8151
|
return p(e.area.greaterThan(0), () => {
|
|
8152
8152
|
let u = U(0).toVar(), d = M(-1).toVar();
|
|
8153
8153
|
p(e.shape.greaterThan(.5), () => {
|
|
8154
|
-
let t =
|
|
8155
|
-
u.assign(e.position.add(e.u.mul(t.mul(D(r)))).add(e.v.mul(t.mul(
|
|
8154
|
+
let t = xe(n.x).toVar(), r = M(El).mul(n.y).toVar();
|
|
8155
|
+
u.assign(e.position.add(e.u.mul(t.mul(D(r)))).add(e.v.mul(t.mul(ye(r)))));
|
|
8156
8156
|
}).Else(() => {
|
|
8157
8157
|
let r = ls(t, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2), n).toVar();
|
|
8158
8158
|
p(r.w.greaterThan(0), () => {
|
|
@@ -8163,9 +8163,9 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8163
8163
|
});
|
|
8164
8164
|
let f = u.sub(t).toVar(), m = A(f, f).toVar();
|
|
8165
8165
|
p(m.greaterThanEqual(1e-10), () => {
|
|
8166
|
-
let t =
|
|
8166
|
+
let t = xe(m).toVar(), n = f.div(t).toVar(), u = A(n.negate(), e.normal).toVar();
|
|
8167
8167
|
l.assign(N(1)), s.assign(t), a.assign(n), o.assign(Ol(e).mul(Dl(u, e.spread)));
|
|
8168
|
-
let p = m.div(
|
|
8168
|
+
let p = m.div(F(e.area.mul(F(u, .001)), 1e-10)), h = R(d.greaterThan(0), d, p);
|
|
8169
8169
|
c.assign(h.mul(r)), i.assign(u.greaterThan(0));
|
|
8170
8170
|
});
|
|
8171
8171
|
}), Wo({
|
|
@@ -8179,7 +8179,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8179
8179
|
}), Al = f(([e, t, n]) => {
|
|
8180
8180
|
let r = T(!1).toVar(), i = U(0, 1, 0).toVar(), a = U(0).toVar(), o = M(0).toVar(), s = M(0).toVar(), c = N(3).toVar(), l = e.position.sub(t).toVar(), u = A(l, l).toVar();
|
|
8181
8181
|
return p(u.greaterThanEqual(1e-20), () => {
|
|
8182
|
-
let t =
|
|
8182
|
+
let t = xe(u).toVar(), c = l.div(t).toVar(), d = A(c.negate(), e.direction).toVar(), f = D(e.angle).toVar();
|
|
8183
8183
|
i.assign(c), o.assign(t), s.assign(n), r.assign(d.greaterThanEqual(f)), p(r, () => {
|
|
8184
8184
|
let n = Qo({
|
|
8185
8185
|
coneCosine: f,
|
|
@@ -8203,7 +8203,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8203
8203
|
}), jl = f(([e, t, n]) => {
|
|
8204
8204
|
let r = T(!1).toVar(), i = U(0, 1, 0).toVar(), a = U(0).toVar(), o = M(0).toVar(), s = M(0).toVar(), c = N(2).toVar(), l = e.position.sub(t).toVar(), u = A(l, l).toVar();
|
|
8205
8205
|
return p(u.greaterThanEqual(1e-20), () => {
|
|
8206
|
-
let t =
|
|
8206
|
+
let t = xe(u).toVar(), d = l.div(t), f = Zo({
|
|
8207
8207
|
lightDistance: t,
|
|
8208
8208
|
cutoffDistance: e.distance,
|
|
8209
8209
|
decayExponent: e.decay
|
|
@@ -8243,7 +8243,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8243
8243
|
condition: "<"
|
|
8244
8244
|
}, ({ i: r }) => {
|
|
8245
8245
|
p(r.lessThan(N(16)), () => {
|
|
8246
|
-
let i = Vo.wrap(qo(c, r)), o =
|
|
8246
|
+
let i = Vo.wrap(qo(c, r)), o = R(i.intensity.greaterThan(0), Lo(i, e, t, n), M(0)).toVar();
|
|
8247
8247
|
w.addAssign(o), p(o.greaterThan(0).and(Y(a).mul(w).lessThan(o)), () => {
|
|
8248
8248
|
E.assign(1), k.assign(r), A.assign(o);
|
|
8249
8249
|
});
|
|
@@ -8278,7 +8278,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8278
8278
|
});
|
|
8279
8279
|
});
|
|
8280
8280
|
}), p(w.lessThanEqual(0), () => {
|
|
8281
|
-
let t = N(r.x.mul(M(C))).toVar(), n = M(1).div(
|
|
8281
|
+
let t = N(r.x.mul(M(C))).toVar(), n = M(1).div(F(M(C), 1)).toVar();
|
|
8282
8282
|
x.assign(n);
|
|
8283
8283
|
let i = T(!1).toVar(), m = N(0).toVar();
|
|
8284
8284
|
p(s.greaterThan(N(0)), () => {
|
|
@@ -8286,7 +8286,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8286
8286
|
let n = Bo.wrap(Ko(o, t.sub(m)));
|
|
8287
8287
|
p(n.intensity.greaterThan(0), () => {
|
|
8288
8288
|
let t = ns(n, e);
|
|
8289
|
-
v.assign(
|
|
8289
|
+
v.assign(L(n.direction)), y.assign(n.color.mul(n.intensity).mul(t)), b.assign(1e6), S.assign(N(0)), g.assign(T(!0)), i.assign(T(!0));
|
|
8290
8290
|
});
|
|
8291
8291
|
}), m.addAssign(s);
|
|
8292
8292
|
}), p(l.greaterThan(N(0)), () => {
|
|
@@ -8315,13 +8315,13 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8315
8315
|
});
|
|
8316
8316
|
});
|
|
8317
8317
|
}).Else(() => {
|
|
8318
|
-
let t = A.div(
|
|
8318
|
+
let t = A.div(F(w, 1e-10)).toVar();
|
|
8319
8319
|
p(E.equal(N(0)).and(k.greaterThanEqual(N(0))), () => {
|
|
8320
|
-
let n = Bo.wrap(Ko(o, k)), i =
|
|
8320
|
+
let n = Bo.wrap(Ko(o, k)), i = L(n.direction).toVar(), s = M(1).toVar();
|
|
8321
8321
|
p(n.angle.greaterThan(0), () => {
|
|
8322
|
-
let e = D(n.angle.mul(.5)).toVar(), t =
|
|
8323
|
-
i.assign(
|
|
8324
|
-
let f = M(El).mul(
|
|
8322
|
+
let e = D(n.angle.mul(.5)).toVar(), t = I(e, M(1), r.y).toVar(), o = xe(F(M(0), M(1).sub(t.mul(t)))).toVar(), c = M(El).mul(Y(a)).toVar(), l = L(n.direction).toVar(), u = L(O(R(_(l.x).greaterThan(.9), U(0, 1, 0), U(1, 0, 0)), l)).toVar(), d = O(l, u).toVar();
|
|
8323
|
+
i.assign(L(l.mul(t).add(u.mul(D(c)).add(d.mul(ye(c))).mul(o))));
|
|
8324
|
+
let f = M(El).mul(F(M(1).sub(e), 1e-10));
|
|
8325
8325
|
s.assign(M(1).div(f));
|
|
8326
8326
|
});
|
|
8327
8327
|
let c = ns(n, e);
|
|
@@ -8348,11 +8348,11 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8348
8348
|
}), Nl = f(([e, t]) => {
|
|
8349
8349
|
let n = t.NoV, r = t.NoL.toVar(), i = t.NoH, a = M(1).sub(e.metalness).mul(M(1).sub(e.transmission)).toVar(), o = M(1).sub(a.mul(M(1).sub(e.metalness))).toVar(), s = a.add(o).toVar(), c = M(0).toVar();
|
|
8350
8350
|
return p(s.greaterThan(0), () => {
|
|
8351
|
-
let l = M(1).div(
|
|
8351
|
+
let l = M(1).div(F(s, 1e-10)).toVar();
|
|
8352
8352
|
a.mulAssign(l), o.mulAssign(l), p(a.greaterThan(0).and(r.greaterThan(0)), () => {
|
|
8353
8353
|
c.addAssign(a.mul(r).mul(Li));
|
|
8354
8354
|
}), p(o.greaterThan(0).and(r.greaterThan(0)), () => {
|
|
8355
|
-
let r =
|
|
8355
|
+
let r = F(e.roughness, .02), a = M(0).toVar();
|
|
8356
8356
|
p(e.anisotropy.greaterThan(0), () => {
|
|
8357
8357
|
let n = Ta(e.roughness, e.anisotropy);
|
|
8358
8358
|
a.assign(ka(n.x, n.y, t.NoH, t.ToH, t.BoH, t.NoV, t.ToV, t.BoV));
|
|
@@ -8360,7 +8360,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8360
8360
|
a.assign(wa(i, n, r));
|
|
8361
8361
|
}), c.addAssign(o.mul(a));
|
|
8362
8362
|
});
|
|
8363
|
-
}),
|
|
8363
|
+
}), F(c, 1e-8);
|
|
8364
8364
|
}), Pl = f(([e, t, n, r]) => Nl(r, Oi.wrap(ta(n, e, t, r)))), Fl = f(([e, t, n, r, i, a, o, s, c, l, u, d]) => {
|
|
8365
8365
|
let f = M(0).toVar();
|
|
8366
8366
|
return p(a.greaterThan(N(0)), () => {
|
|
@@ -8384,7 +8384,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8384
8384
|
}, ({ i: r }) => {
|
|
8385
8385
|
p(r.lessThan(N(16)), () => {
|
|
8386
8386
|
let i = Vo.wrap(qo(o, r));
|
|
8387
|
-
f.addAssign(
|
|
8387
|
+
f.addAssign(R(i.intensity.greaterThan(0), Lo(i, e, t, n), M(0)));
|
|
8388
8388
|
});
|
|
8389
8389
|
});
|
|
8390
8390
|
}), p(l.greaterThan(N(0)), () => {
|
|
@@ -8413,36 +8413,36 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8413
8413
|
});
|
|
8414
8414
|
}), f;
|
|
8415
8415
|
}), Il = f(([e, t, n, r, i, a, o, s, c, l, u, d, h, g, _, v, y, b, x, S, C, w, E, D, O, k, j, ee, te]) => {
|
|
8416
|
-
let ne = U(0).toVar(), re = U(0).toVar(),
|
|
8416
|
+
let ne = U(0).toVar(), re = U(0).toVar(), P = e.add(t.mul(.001)).toVar(), ie = f(([e, t, n]) => Po(e, t, n, fl, b, x, S));
|
|
8417
8417
|
return p(n.emissiveIntensity.lessThanEqual(10), () => {
|
|
8418
|
-
let f = U(1).toVar(), b = Fi.wrap(oa(n.roughness, n.metalness, s, f)), x = b.useBRDFSampling.toVar(), S = b.useLightSampling.toVar(),
|
|
8419
|
-
p(S.and(
|
|
8420
|
-
|
|
8418
|
+
let f = U(1).toVar(), b = Fi.wrap(oa(n.roughness, n.metalness, s, f)), x = b.useBRDFSampling.toVar(), S = b.useLightSampling.toVar(), ae = b.brdfWeight.toVar(), oe = b.lightWeight.toVar(), se = u.add(h).add(_).add(y).toVar(), ce = M(.001).mul(M(1).add(M(s).mul(.5))).toVar(), I = se.greaterThan(N(0)).toVar(), ue = M(0).toVar();
|
|
8419
|
+
p(S.and(I), () => {
|
|
8420
|
+
ue.addAssign(oe);
|
|
8421
8421
|
}), p(x, () => {
|
|
8422
|
-
|
|
8423
|
-
}), p(
|
|
8424
|
-
|
|
8422
|
+
ue.addAssign(ae);
|
|
8423
|
+
}), p(ue.lessThanEqual(0), () => {
|
|
8424
|
+
ue.assign(1), x.assign(T(!0)), ae.assign(1);
|
|
8425
8425
|
});
|
|
8426
|
-
let
|
|
8427
|
-
p(
|
|
8428
|
-
|
|
8426
|
+
let L = Y(c).toVar(), de = Y(c).toVar(), fe = L, pe = T(!1).toVar(), me = T(!1).toVar(), he = R(I, oe, M(0)), ge = M(1).div(F(ue, 1e-10)), _e = he.mul(ge);
|
|
8427
|
+
p(fe.lessThan(_e).and(S).and(I), () => {
|
|
8428
|
+
pe.assign(T(!0));
|
|
8429
8429
|
}).ElseIf(x, () => {
|
|
8430
|
-
he.assign(T(!0));
|
|
8431
|
-
}).ElseIf(F, () => {
|
|
8432
8430
|
me.assign(T(!0));
|
|
8433
|
-
})
|
|
8434
|
-
|
|
8431
|
+
}).ElseIf(I, () => {
|
|
8432
|
+
pe.assign(T(!0));
|
|
8433
|
+
}), p(pe, () => {
|
|
8434
|
+
let e = H(de, Y(c)).toVar(), i = Wo.wrap(Ml(P, t, n, e, s, c, l, u, d, h, g, _, v, y));
|
|
8435
8435
|
p(i.valid.and(i.pdf.greaterThan(0)), () => {
|
|
8436
|
-
let e =
|
|
8437
|
-
p(e.greaterThan(0).and(a.mul(e).greaterThan(
|
|
8436
|
+
let e = F(M(0), A(t, i.direction)).toVar(), a = i.emission.x.add(i.emission.y).add(i.emission.z);
|
|
8437
|
+
p(e.greaterThan(0).and(a.mul(e).greaterThan(ce)).and(Xo({
|
|
8438
8438
|
direction: i.direction,
|
|
8439
8439
|
surfaceNormal: t
|
|
8440
8440
|
})), () => {
|
|
8441
|
-
let a =
|
|
8441
|
+
let a = le(i.distance.sub(.001), M(1e3)), o = ie(P, i.direction, a);
|
|
8442
8442
|
p(o.greaterThan(0).or(te), () => {
|
|
8443
8443
|
let a = Oi.wrap(ta(t, r, i.direction, n)), s = Cl(n, a), c = Nl(n, a).toVar(), l = M(1).toVar();
|
|
8444
8444
|
p(c.greaterThan(0).and(x), () => {
|
|
8445
|
-
let e = i.pdf.mul(
|
|
8445
|
+
let e = i.pdf.mul(oe), t = c.mul(ae);
|
|
8446
8446
|
p(i.lightType.equal(N(1)), () => {
|
|
8447
8447
|
l.assign(Zi({
|
|
8448
8448
|
pdf1: e,
|
|
@@ -8450,16 +8450,16 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8450
8450
|
}));
|
|
8451
8451
|
});
|
|
8452
8452
|
});
|
|
8453
|
-
let u = i.emission.mul(s).mul(e).mul(l).div(
|
|
8453
|
+
let u = i.emission.mul(s).mul(e).mul(l).div(F(i.pdf, 1e-10)).mul(ue).div(F(oe, 1e-10));
|
|
8454
8454
|
ne.addAssign(u.mul(o)), p(te, () => {
|
|
8455
8455
|
re.addAssign(u);
|
|
8456
8456
|
});
|
|
8457
8457
|
});
|
|
8458
8458
|
});
|
|
8459
8459
|
});
|
|
8460
|
-
}), p(
|
|
8460
|
+
}), p(me, () => {
|
|
8461
8461
|
p(a.greaterThan(0).and(x), () => {
|
|
8462
|
-
let r =
|
|
8462
|
+
let r = F(M(0), A(t, i)).toVar();
|
|
8463
8463
|
p(r.greaterThan(0).and(Xo({
|
|
8464
8464
|
direction: i,
|
|
8465
8465
|
surfaceNormal: t
|
|
@@ -8475,8 +8475,8 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8475
8475
|
let a = Vo.wrap(qo(d, r));
|
|
8476
8476
|
p(a.intensity.greaterThan(0), () => {
|
|
8477
8477
|
let o = Lo(a, e, t, n).toVar();
|
|
8478
|
-
p(o.greaterThanEqual(
|
|
8479
|
-
p(ss(a,
|
|
8478
|
+
p(o.greaterThanEqual(ce), () => {
|
|
8479
|
+
p(ss(a, P, i).toVar().greaterThan(0), () => {
|
|
8480
8480
|
p(o.greaterThan(f), () => {
|
|
8481
8481
|
f.assign(o), b.assign(r);
|
|
8482
8482
|
}), c.assign(T(!0));
|
|
@@ -8484,16 +8484,16 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8484
8484
|
});
|
|
8485
8485
|
});
|
|
8486
8486
|
}), p(c.and(b.greaterThanEqual(N(0))), () => {
|
|
8487
|
-
let e = Vo.wrap(qo(d, b)), c = ss(e,
|
|
8487
|
+
let e = Vo.wrap(qo(d, b)), c = ss(e, P, i).toVar();
|
|
8488
8488
|
p(c.greaterThan(0), () => {
|
|
8489
|
-
let f =
|
|
8489
|
+
let f = ie(P, i, le(c.sub(.001), M(1e3)));
|
|
8490
8490
|
p(f.greaterThan(0).or(te), () => {
|
|
8491
|
-
let m =
|
|
8491
|
+
let m = F(M(0), A(i, e.normal).negate()).toVar();
|
|
8492
8492
|
p(m.greaterThan(0), () => {
|
|
8493
|
-
let i = c.mul(c), b = cs(
|
|
8494
|
-
pdf1: a.mul(
|
|
8495
|
-
pdf2: E.mul(
|
|
8496
|
-
}).toVar(), O = Ol(e).mul(Dl(m, e.spread)).mul(o).mul(r).mul(D).div(
|
|
8493
|
+
let i = c.mul(c), b = cs(P, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2)).toVar(), x = i.div(F(e.area.mul(m), zi)), S = R(e.shape.lessThan(.5).and(b.greaterThan(1e-5)), M(1).div(F(b, 1e-10)), x).toVar(), C = Lo(e, P, t, n), w = Fl(P, t, n, s, l, u, d, h, g, _, v, y).toVar(), T = R(w.greaterThan(0), C.div(F(w, 1e-10)), M(1).div(F(M(se), 1))), E = S.mul(T).toVar(), D = Zi({
|
|
8494
|
+
pdf1: a.mul(ae),
|
|
8495
|
+
pdf2: E.mul(oe)
|
|
8496
|
+
}).toVar(), O = Ol(e).mul(Dl(m, e.spread)).mul(o).mul(r).mul(D).div(F(a, 1e-10)).mul(ue).div(F(ae, 1e-10));
|
|
8497
8497
|
ne.addAssign(O.mul(f)), p(te, () => {
|
|
8498
8498
|
re.addAssign(O);
|
|
8499
8499
|
});
|
|
@@ -8507,17 +8507,17 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8507
8507
|
}), p(ee, () => {
|
|
8508
8508
|
let e = H(Y(c).toVar(), Y(c).toVar()).toVar(), i = U(0).toVar(), a = yl(C, D, E, w, O, k, j, e, i).toVar(), o = a.xyz.toVar(), s = a.w.toVar();
|
|
8509
8509
|
p(s.greaterThan(0), () => {
|
|
8510
|
-
let e =
|
|
8510
|
+
let e = F(M(0), A(t, o)).toVar();
|
|
8511
8511
|
p(e.greaterThan(0).and(Xo({
|
|
8512
8512
|
direction: o,
|
|
8513
8513
|
surfaceNormal: t
|
|
8514
8514
|
})), () => {
|
|
8515
|
-
let a =
|
|
8515
|
+
let a = ie(P, o, M(1e3));
|
|
8516
8516
|
p(a.greaterThan(0).or(te), () => {
|
|
8517
|
-
let c = Oi.wrap(ta(t, r, o, n)), l = Cl(n, c), u = Nl(n, c).toVar(), d =
|
|
8517
|
+
let c = Oi.wrap(ta(t, r, o, n)), l = Cl(n, c), u = Nl(n, c).toVar(), d = R(u.greaterThan(0), Qi({
|
|
8518
8518
|
pdf1: s,
|
|
8519
8519
|
pdf2: u
|
|
8520
|
-
}), M(1)).toVar(), f = i.mul(l).mul(e).mul(d).div(
|
|
8520
|
+
}), M(1)).toVar(), f = i.mul(l).mul(e).mul(d).div(F(s, 1e-10));
|
|
8521
8521
|
ne.addAssign(f.mul(a)), p(te, () => {
|
|
8522
8522
|
re.addAssign(f);
|
|
8523
8523
|
});
|
|
@@ -8530,15 +8530,15 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8530
8530
|
unoccluded: re
|
|
8531
8531
|
});
|
|
8532
8532
|
}), Ll = f(([e, t, n, r, i, a]) => {
|
|
8533
|
-
let o =
|
|
8533
|
+
let o = R(a, r, M(1).div(r)).toVar(), s = e.add(t.mul(o)).toVar(), c = A(s, s).toVar(), l = R(c.greaterThan(zi), s.div(xe(c)), n).toVar();
|
|
8534
8534
|
p(A(l, n).lessThan(0), () => {
|
|
8535
8535
|
l.assign(l.negate());
|
|
8536
8536
|
});
|
|
8537
|
-
let u = _(A(e, l)), d = _(A(t, l)).toVar(), f = _(A(n, l)).toVar(), m = ya(f, i), h = u.add(d.mul(o)).toVar(), g = h.mul(h), v = d.mul(o).mul(o).div(
|
|
8537
|
+
let u = _(A(e, l)), d = _(A(t, l)).toVar(), f = _(A(n, l)).toVar(), m = ya(f, i), h = u.add(d.mul(o)).toVar(), g = h.mul(h), v = d.mul(o).mul(o).div(F(g, zi));
|
|
8538
8538
|
return m.mul(f).mul(v);
|
|
8539
8539
|
}), Rl = f(([e, t, n, r]) => {
|
|
8540
8540
|
let i = e.add(t).toVar(), a = A(i, i).toVar();
|
|
8541
|
-
return wa(
|
|
8541
|
+
return wa(F(A(n, R(a.greaterThan(zi), i.div(xe(a)), n)), 0), F(A(n, e), 0), r);
|
|
8542
8542
|
}), zl = f(([e]) => {
|
|
8543
8543
|
let t = e.specularImportance.toVar(), n = t.greaterThan(.001).toVar(), r = e.diffuseImportance.toVar(), i = r.greaterThan(.001).toVar(), a = e.transmissionImportance.toVar(), o = a.greaterThan(.001).toVar(), s = e.clearcoatImportance.toVar(), c = s.greaterThan(.001).toVar(), l = t.add(r).add(a).add(s).toVar();
|
|
8544
8544
|
return p(l.lessThan(.001), () => {
|
|
@@ -8576,7 +8576,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8576
8576
|
}), p(e.useClearcoat.and(i.not()), () => {
|
|
8577
8577
|
n.assign(4);
|
|
8578
8578
|
}), n;
|
|
8579
|
-
}), Vl = f(([e]) =>
|
|
8579
|
+
}), Vl = f(([e]) => F(e, 0).mul(Li)), Hl = f(([e, t, n, r, i, a, o, s]) => {
|
|
8580
8580
|
let c = U(0).toVar(), l = U(0).toVar(), u = M(0).toVar(), d = M(0).toVar(), f = M(0).toVar();
|
|
8581
8581
|
return p(s.diffuseImportance.greaterThanEqual(0).and(s.specularImportance.greaterThanEqual(0)).and(s.transmissionImportance.greaterThanEqual(0)).and(s.clearcoatImportance.greaterThanEqual(0)).not(), () => {
|
|
8582
8582
|
let e = H(Y(o).toVar(), Y(o).toVar());
|
|
@@ -8586,14 +8586,14 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8586
8586
|
p(_.equal(N(1)), () => {
|
|
8587
8587
|
v.assign(r), y.assign(i), b.assign(a);
|
|
8588
8588
|
}).ElseIf(_.equal(N(2)), () => {
|
|
8589
|
-
v.assign(La(t, g)), y.assign(Vl(
|
|
8589
|
+
v.assign(La(t, g)), y.assign(Vl(F(A(t, v), 0))), b.assign(wl(e, v, t, n));
|
|
8590
8590
|
}).ElseIf(_.equal(N(3)), () => {
|
|
8591
8591
|
let r = A(e, t).greaterThan(0), i = Xa.wrap(no(e, t, n.ior, n.roughness, r, n.dispersion, g, o, M(0)).toVar());
|
|
8592
8592
|
v.assign(i.direction), y.assign(i.pdf), x.assign(i.colorWeight);
|
|
8593
8593
|
}).Else(() => {
|
|
8594
8594
|
v.assign(r), y.assign(i), b.assign(a);
|
|
8595
8595
|
});
|
|
8596
|
-
let S =
|
|
8596
|
+
let S = F(A(t, v), 0).toVar(), C = M(0).toVar();
|
|
8597
8597
|
p(m.useSpecular, () => {
|
|
8598
8598
|
let r = Aa(n, t, e, v);
|
|
8599
8599
|
C.addAssign(m.specularWeight.mul(r));
|
|
@@ -8604,9 +8604,9 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8604
8604
|
C.addAssign(m.transmissionWeight.mul(Ll(e, v, t, n.ior, n.roughness, r)));
|
|
8605
8605
|
}), p(m.useClearcoat.and(n.clearcoat.greaterThan(0)), () => {
|
|
8606
8606
|
C.addAssign(m.clearcoatWeight.mul(Rl(e, v, t, n.clearcoatRoughness)));
|
|
8607
|
-
}), y.assign(
|
|
8607
|
+
}), y.assign(F(y, Hi)), C.assign(F(C, Hi));
|
|
8608
8608
|
let w = y.div(C).toVar(), T = b.mul(S).mul(w).div(y), E = n.color.xyz.mul(x).mul(w);
|
|
8609
|
-
c.assign(v), l.assign(
|
|
8609
|
+
c.assign(v), l.assign(R(_.equal(N(3)), E, T)), u.assign(w), d.assign(y), f.assign(C);
|
|
8610
8610
|
}), Go({
|
|
8611
8611
|
direction: c,
|
|
8612
8612
|
throughput: l,
|
|
@@ -8630,8 +8630,8 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8630
8630
|
alpha2: M(0),
|
|
8631
8631
|
invRoughness: M(1).sub(n.roughness),
|
|
8632
8632
|
metalFactor: M(.5).add(M(.5).mul(n.metalness)),
|
|
8633
|
-
iorFactor:
|
|
8634
|
-
maxSheenColor:
|
|
8633
|
+
iorFactor: le(M(2).div(n.ior), 1),
|
|
8634
|
+
maxSheenColor: F(n.sheenColor.x, F(n.sheenColor.y, n.sheenColor.z))
|
|
8635
8635
|
}).toVar();
|
|
8636
8636
|
m.assign(Na(n, a, e));
|
|
8637
8637
|
});
|
|
@@ -8654,7 +8654,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8654
8654
|
});
|
|
8655
8655
|
_.assign(a.mul(l.x).add(o.mul(l.y)).add(t.mul(l.z)));
|
|
8656
8656
|
let p = E(A(t, _), .001, 1);
|
|
8657
|
-
u.assign(
|
|
8657
|
+
u.assign(he(e.negate(), _)), f.assign(ka(c.x, c.y, p, A(a, _), A(o, _), S, A(a, e), A(o, e))), d.assign(wl(e, u, t, n));
|
|
8658
8658
|
}).Else(() => {
|
|
8659
8659
|
let i = $i({ N: t }), a = Ra({
|
|
8660
8660
|
V: i.transpose().mul(e),
|
|
@@ -8663,7 +8663,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8663
8663
|
});
|
|
8664
8664
|
_.assign(i.mul(a));
|
|
8665
8665
|
let o = E(A(t, _), .001, 1);
|
|
8666
|
-
u.assign(
|
|
8666
|
+
u.assign(he(e.negate(), _)), f.assign(wa(o, S, n.roughness)), d.assign(wl(e, u, t, n));
|
|
8667
8667
|
});
|
|
8668
8668
|
}).ElseIf(h.lessThan(b), () => {
|
|
8669
8669
|
_.assign(Fa({
|
|
@@ -8672,7 +8672,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8672
8672
|
Xi: r
|
|
8673
8673
|
}));
|
|
8674
8674
|
let i = E(A(t, _), .001, 1), a = E(A(e, _), .001, 1);
|
|
8675
|
-
u.assign(
|
|
8675
|
+
u.assign(he(e.negate(), _));
|
|
8676
8676
|
let o = A(t, u).toVar();
|
|
8677
8677
|
p(o.lessThanEqual(0), () => {
|
|
8678
8678
|
u.assign(Ia({
|
|
@@ -8680,7 +8680,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8680
8680
|
xi: r
|
|
8681
8681
|
})), o.assign(E(A(t, u), 0, 1)), f.assign(o.mul(Li)), d.assign(wl(e, u, t, n));
|
|
8682
8682
|
}).Else(() => {
|
|
8683
|
-
f.assign(ba(i, n.sheenRoughness).mul(i).div(M(4).mul(a))), f.assign(
|
|
8683
|
+
f.assign(ba(i, n.sheenRoughness).mul(i).div(M(4).mul(a))), f.assign(F(f, Hi)), d.assign(wl(e, u, t, n));
|
|
8684
8684
|
});
|
|
8685
8685
|
}).ElseIf(h.lessThan(x), () => {
|
|
8686
8686
|
let i = E(n.clearcoatRoughness, Vi, 1);
|
|
@@ -8690,11 +8690,11 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8690
8690
|
Xi: r
|
|
8691
8691
|
}));
|
|
8692
8692
|
let a = E(A(t, _), 0, 1);
|
|
8693
|
-
u.assign(
|
|
8693
|
+
u.assign(he(e.negate(), _)), f.assign(wa(a, S, i)), f.assign(F(f, Hi)), d.assign(wl(e, u, t, n));
|
|
8694
8694
|
}).Else(() => {
|
|
8695
8695
|
let a = A(e, t).greaterThan(0), o = Xa.wrap(no(e, t, n.ior, n.roughness, a, n.dispersion, r, i, M(0)));
|
|
8696
|
-
u.assign(o.direction), f.assign(
|
|
8697
|
-
}), f.assign(
|
|
8696
|
+
u.assign(o.direction), f.assign(F(o.pdf, Hi)), d.assign(wl(e, u, t, n));
|
|
8697
|
+
}), f.assign(F(f, Hi)), wi({
|
|
8698
8698
|
direction: u,
|
|
8699
8699
|
value: d,
|
|
8700
8700
|
pdf: f
|
|
@@ -8702,10 +8702,10 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8702
8702
|
}), Wl = /* @__PURE__ */ G("\n fn regularizePathContribution( contribution: vec3f, pathLength: f32, fireflyThreshold: f32, frame: i32 ) -> vec3f {\n let threshold = calculateFireflyThreshold( fireflyThreshold, i32( pathLength ), frame );\n return applySoftSuppressionRGB( contribution, threshold, 0.5f );\n }\n", [na, ia]), Gl = /* @__PURE__ */ G("\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"), Kl = f(([e, t, n, r, i, a, o]) => {
|
|
8703
8703
|
let s = M(1).toVar();
|
|
8704
8704
|
return p(e.greaterThanEqual(N(3)), () => {
|
|
8705
|
-
let c =
|
|
8705
|
+
let c = F(F(F(t.x, t.y), t.z), 0).toVar();
|
|
8706
8706
|
p(c.lessThan(8e-4).and(e.greaterThan(N(4))), () => {
|
|
8707
|
-
let e =
|
|
8708
|
-
s.assign(
|
|
8707
|
+
let e = F(c.mul(125), .01), t = Y(i);
|
|
8708
|
+
s.assign(R(t.lessThan(e), e, M(0)));
|
|
8709
8709
|
}).Else(() => {
|
|
8710
8710
|
let t = n.complexityScore.toVar();
|
|
8711
8711
|
p(n.isMetallic.and(n.isSmooth).and(e.lessThan(N(7))), () => {
|
|
@@ -8734,19 +8734,19 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8734
8734
|
let d = M(.5).toVar();
|
|
8735
8735
|
p(a.and(o).and(c.greaterThan(.01)), () => {
|
|
8736
8736
|
let e = E(r.y, 0, 1);
|
|
8737
|
-
d.assign(
|
|
8737
|
+
d.assign(I(M(.3), M(.8), e.mul(e)));
|
|
8738
8738
|
});
|
|
8739
|
-
let f =
|
|
8740
|
-
h.assign(
|
|
8739
|
+
let f = be(M(.001), M(.1), c), m = c.mul(I(u.mul(.7), d, .3)).mul(f).toVar(), h = I(E(t.mul(.4).add(c.mul(.6)).mul(1.2), .15, .95), E(c.mul(.4).add(t.mul(.1)), .03, .6), E(M(e.sub(l)).div(10), 0, 1)).toVar();
|
|
8740
|
+
h.assign(I(h, F(h, m), .4)), p(t.greaterThan(.5), () => {
|
|
8741
8741
|
let e = t.sub(.5).mul(.6);
|
|
8742
|
-
h.assign(
|
|
8742
|
+
h.assign(I(h, M(1), e));
|
|
8743
8743
|
});
|
|
8744
8744
|
let g = M(.12).add(t.mul(.08)), _ = j(M(e.sub(l)).negate().mul(g));
|
|
8745
8745
|
h.mulAssign(_);
|
|
8746
|
-
let v =
|
|
8747
|
-
h.assign(
|
|
8746
|
+
let v = R(n.isEmissive, M(.04), M(.02));
|
|
8747
|
+
h.assign(F(h, v));
|
|
8748
8748
|
let y = Y(i);
|
|
8749
|
-
s.assign(
|
|
8749
|
+
s.assign(R(y.lessThan(h), h, M(0)));
|
|
8750
8750
|
});
|
|
8751
8751
|
});
|
|
8752
8752
|
}), s;
|
|
@@ -8755,7 +8755,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8755
8755
|
L: "vec3",
|
|
8756
8756
|
pdf: "float"
|
|
8757
8757
|
}), Jl = f(([e, t, n, r, i]) => {
|
|
8758
|
-
let a = t.normal, o = e.direction.negate(), s =
|
|
8758
|
+
let a = t.normal, o = e.direction.negate(), s = F(n.clearcoatRoughness, Vi), c = F(n.roughness, Vi), l = M(1).sub(c).mul(M(.5).add(M(.5).mul(n.metalness))).toVar(), u = n.clearcoat.mul(M(1).sub(s)).toVar(), d = M(1).sub(l).mul(M(1).sub(n.metalness)).toVar(), f = l.add(u).add(d);
|
|
8759
8759
|
l.divAssign(f), u.divAssign(f), d.divAssign(f);
|
|
8760
8760
|
let m = Y(i), h = U(0).toVar(), g = U(0).toVar();
|
|
8761
8761
|
p(m.lessThan(u), () => {
|
|
@@ -8763,7 +8763,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8763
8763
|
N: a,
|
|
8764
8764
|
roughness: s,
|
|
8765
8765
|
Xi: r
|
|
8766
|
-
})), h.assign(
|
|
8766
|
+
})), h.assign(he(o.negate(), g));
|
|
8767
8767
|
}).ElseIf(m.lessThan(u.add(l)), () => {
|
|
8768
8768
|
p(n.anisotropy.greaterThan(0), () => {
|
|
8769
8769
|
let e = Di.wrap(ea(a, n.anisotropyRotation)), t = U(A(o, e.Ta), A(o, e.Ba), A(o, a)), i = Ta(n.roughness, n.anisotropy), s = za({
|
|
@@ -8779,12 +8779,12 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8779
8779
|
roughness: c,
|
|
8780
8780
|
Xi: r
|
|
8781
8781
|
}));
|
|
8782
|
-
}), h.assign(
|
|
8782
|
+
}), h.assign(he(o.negate(), g));
|
|
8783
8783
|
}).Else(() => {
|
|
8784
8784
|
h.assign(Ia({
|
|
8785
8785
|
N: a,
|
|
8786
8786
|
xi: r
|
|
8787
|
-
})), g.assign(
|
|
8787
|
+
})), g.assign(L(o.add(h)));
|
|
8788
8788
|
});
|
|
8789
8789
|
let _ = Oi.wrap(ta(a, o, h, n)), v = ya(_.NoH, s).mul(_.NoH).div(M(4).mul(_.VoH)).mul(u), y = M(0).toVar();
|
|
8790
8790
|
p(n.anisotropy.greaterThan(0), () => {
|
|
@@ -8793,7 +8793,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8793
8793
|
}).Else(() => {
|
|
8794
8794
|
y.assign(ya(_.NoH, c).mul(_.NoH).div(M(4).mul(_.VoH)).mul(l));
|
|
8795
8795
|
});
|
|
8796
|
-
let b = _.NoL.div(Ii).mul(d), x =
|
|
8796
|
+
let b = _.NoL.div(Ii).mul(d), x = F(v.add(y).add(b), .001);
|
|
8797
8797
|
return ql({
|
|
8798
8798
|
brdf: Tl(_, n),
|
|
8799
8799
|
L: h,
|
|
@@ -8809,7 +8809,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8809
8809
|
return p(_(T).greaterThan(1e-8), () => {
|
|
8810
8810
|
let n = M(1).div(T), l = x.mul(w.y).sub(S.mul(C.y)).mul(n).toVar(), u = S.mul(C.x).sub(x.mul(w.x)).mul(n).toVar(), d = t.normal.toVar(), f = r.displacementScale.div(M(10)), h = e.direction, g = A(h, d).toVar(), v = h.sub(d.mul(g)).toVar(), y = A(l, l), b = A(l, u), E = A(u, u), D = y.mul(E).sub(b.mul(b)).toVar();
|
|
8811
8811
|
p(_(D).greaterThan(1e-10), () => {
|
|
8812
|
-
let e = M(1).div(D), n = A(v, l), x = A(v, u), S = H(E.mul(n).sub(b.mul(x)).mul(e), y.mul(x).sub(b.mul(n)).mul(e)).toVar(), C = g.toVar(), w =
|
|
8812
|
+
let e = M(1).div(D), n = A(v, l), x = A(v, u), S = H(E.mul(n).sub(b.mul(x)).mul(e), y.mul(x).sub(b.mul(n)).mul(e)).toVar(), C = g.toVar(), w = F(_(C), .001), T = f.div(w).toVar(), O = N(i.equal(N(0)).select(N(Yl), N(Xl))).toVar(), k = T.negate().toVar(), j = T.sub(k).div(M(O)).toVar(), ee = k.toVar(), te = k.toVar(), ne = N(0).toVar();
|
|
8813
8813
|
m({
|
|
8814
8814
|
start: N(0),
|
|
8815
8815
|
end: O,
|
|
@@ -8839,7 +8839,7 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8839
8839
|
e.assign(i);
|
|
8840
8840
|
});
|
|
8841
8841
|
});
|
|
8842
|
-
let i = e.add(n).mul(.5).toVar(), g = t.uv.add(S.mul(i)).toVar(), _ = t.hitPoint.add(h.mul(i)), v = ko(r.displacementMapIndex, g, r.displacementTransform), y = v.sub(.5).mul(f), b = fo(po(), r.displacementMapIndex).toVar(), x = v, w = ko(r.displacementMapIndex, g.add(H(b.x, 0)), r.displacementTransform), T = ko(r.displacementMapIndex, g.add(H(0, b.y)), r.displacementTransform), E =
|
|
8842
|
+
let i = e.add(n).mul(.5).toVar(), g = t.uv.add(S.mul(i)).toVar(), _ = t.hitPoint.add(h.mul(i)), v = ko(r.displacementMapIndex, g, r.displacementTransform), y = v.sub(.5).mul(f), b = fo(po(), r.displacementMapIndex).toVar(), x = v, w = ko(r.displacementMapIndex, g.add(H(b.x, 0)), r.displacementTransform), T = ko(r.displacementMapIndex, g.add(H(0, b.y)), r.displacementTransform), E = L(l).toVar(), D = L(u).toVar(), O = w.sub(x).mul(f), k = T.sub(x).mul(f), A = L(d.sub(E.mul(O)).sub(D.mul(k)));
|
|
8843
8843
|
a.assign(_), o.assign(g), s.assign(A), c.assign(y);
|
|
8844
8844
|
});
|
|
8845
8845
|
});
|
|
@@ -8865,13 +8865,13 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8865
8865
|
emissionOnly: "vec3",
|
|
8866
8866
|
distance: "float"
|
|
8867
8867
|
}), ru = f(([e, t, n, r]) => {
|
|
8868
|
-
let i =
|
|
8868
|
+
let i = xe(r.x), a = M(1).sub(i), o = r.y.mul(i), s = M(1).sub(a).sub(o);
|
|
8869
8869
|
return e.mul(a).add(t.mul(o)).add(n.mul(s));
|
|
8870
|
-
}), iu = f(([e, t, n]) =>
|
|
8871
|
-
let i =
|
|
8872
|
-
return
|
|
8870
|
+
}), iu = f(([e, t, n]) => ie(O(t.sub(e), n.sub(e))).mul(.5)), au = f(([e, t, n, r]) => {
|
|
8871
|
+
let i = L(e.sub(r)), a = L(t.sub(r)), o = L(n.sub(r)), s = _(A(i, O(a, o))), c = M(1).add(A(a, o)).add(A(i, o)).add(A(i, a));
|
|
8872
|
+
return F(M(2).mul(b(s, F(c, M(1e-10)))), M(0));
|
|
8873
8873
|
}), ou = f(([e, t, n, r]) => {
|
|
8874
|
-
let i = t.sub(e), a = n.sub(e), o = n.sub(t), s =
|
|
8874
|
+
let i = t.sub(e), a = n.sub(e), o = n.sub(t), s = F(A(i, i), F(A(a, a), A(o, o))), c = O(i, a), l = A(c, c), u = T(!1).toVar();
|
|
8875
8875
|
return p(l.greaterThan(1e-20), () => {
|
|
8876
8876
|
let t = A(c, r.sub(e)), n = t.mul(t).div(l);
|
|
8877
8877
|
u.assign(s.greaterThan(n));
|
|
@@ -8882,32 +8882,32 @@ var gl = /* @__PURE__ */ G("\n fn equirectDirectionToUv( direction: vec3f, envir
|
|
|
8882
8882
|
solidAngle: "float",
|
|
8883
8883
|
valid: "bool"
|
|
8884
8884
|
}), cu = f(([e]) => {
|
|
8885
|
-
let t =
|
|
8886
|
-
return
|
|
8885
|
+
let t = ie(e);
|
|
8886
|
+
return R(t.greaterThan(1e-10), e.div(t), U(0));
|
|
8887
8887
|
}), lu = f(([e, t, n, r, i]) => {
|
|
8888
8888
|
let a = su({
|
|
8889
8889
|
direction: U(0),
|
|
8890
8890
|
position: U(0),
|
|
8891
8891
|
solidAngle: M(0),
|
|
8892
8892
|
valid: !1
|
|
8893
|
-
}).toVar(), o =
|
|
8893
|
+
}).toVar(), o = L(e.sub(r)), s = L(t.sub(r)), c = L(n.sub(r)), l = au(e, t, n, r);
|
|
8894
8894
|
return a.solidAngle.assign(l), p(l.greaterThan(1e-7), () => {
|
|
8895
|
-
let u = E(A(cu(O(o, s)), cu(O(o, c))), -1, 1), d =
|
|
8896
|
-
p(_(
|
|
8897
|
-
let t = A(
|
|
8895
|
+
let u = E(A(cu(O(o, s)), cu(O(o, c))), -1, 1), d = xe(F(M(1).sub(u.mul(u)), 0)), f = v(u), m = i.x.mul(l).sub(f), h = ye(m), g = D(m), y = E(A(o, s), -1, 1), b = g.sub(u), x = h.add(d.mul(y)), S = x.mul(g).sub(b.mul(h)).mul(u).sub(x), C = x.mul(h).add(b.mul(g)).mul(d), w = E(R(_(C).greaterThan(1e-10), S.div(C), M(1)), -1, 1), T = A(c, o), k = cu(c.sub(o.mul(T))), j = xe(F(M(1).sub(w.mul(w)), 0)), ee = L(o.mul(w).add(k.mul(j))), te = A(ee, s), ne = M(1).sub(i.y.mul(M(1).sub(te))), re = xe(F(M(1).sub(ne.mul(ne)), 0)), N = cu(ee.sub(s.mul(te))), P = L(s.mul(ne).add(N.mul(re))), ie = L(O(t.sub(e), n.sub(e))), ae = A(ie, P);
|
|
8896
|
+
p(_(ae).greaterThan(1e-10), () => {
|
|
8897
|
+
let t = A(ie, e.sub(r)).div(ae);
|
|
8898
8898
|
p(t.greaterThan(0), () => {
|
|
8899
|
-
a.direction.assign(
|
|
8899
|
+
a.direction.assign(P), a.position.assign(r.add(P.mul(t))), a.valid.assign(!0);
|
|
8900
8900
|
});
|
|
8901
8901
|
});
|
|
8902
8902
|
}), a;
|
|
8903
8903
|
}), uu = f(([e, t, n, r]) => {
|
|
8904
|
-
let i = n.sub(t), a = r.sub(t), o = e.sub(t), s = A(i, i), c = A(i, a), l = A(a, a), u = A(o, i), d = A(o, a), f = M(1).div(
|
|
8904
|
+
let i = n.sub(t), a = r.sub(t), o = e.sub(t), s = A(i, i), c = A(i, a), l = A(a, a), u = A(o, i), d = A(o, a), f = M(1).div(F(s.mul(l).sub(c.mul(c)), M(1e-10))), p = l.mul(u).sub(c.mul(d)).mul(f), m = s.mul(d).sub(c.mul(u)).mul(f);
|
|
8905
8905
|
return U(M(1).sub(p).sub(m), p, m);
|
|
8906
8906
|
}), du = f(([e, t, n, r]) => {
|
|
8907
|
-
let i =
|
|
8908
|
-
return
|
|
8907
|
+
let i = xe(r.x), a = M(1).sub(i), o = r.y.mul(i), s = M(1).sub(a).sub(o);
|
|
8908
|
+
return L(e.mul(a).add(t.mul(o)).add(n.mul(s)));
|
|
8909
8909
|
});
|
|
8910
|
-
f(([e]) => e.emissiveIntensity.greaterThan(0).and(
|
|
8910
|
+
f(([e]) => e.emissiveIntensity.greaterThan(0).and(ie(e.emissive).greaterThan(0)));
|
|
8911
8911
|
var fu = 8, pu = 2, mu = Cn({
|
|
8912
8912
|
v0: "vec3",
|
|
8913
8913
|
v1: "vec3",
|
|
@@ -8928,14 +8928,14 @@ var fu = 8, pu = 2, mu = Cn({
|
|
|
8928
8928
|
materialIndex: N(c.z)
|
|
8929
8929
|
});
|
|
8930
8930
|
}), gu = f(([e, t, n, r, i, a, o]) => {
|
|
8931
|
-
let s = mu.wrap(hu(e, i)), c = iu(s.v0, s.v1, s.v2), l = $(a, s.materialIndex, N(Gi.EMISSIVE_ROUGHNESS), Wi), u = $(a, s.materialIndex, N(Gi.IOR_TRANSMISSION), Wi), d =
|
|
8931
|
+
let s = mu.wrap(hu(e, i)), c = iu(s.v0, s.v1, s.v2), l = $(a, s.materialIndex, N(Gi.EMISSIVE_ROUGHNESS), Wi), u = $(a, s.materialIndex, N(Gi.IOR_TRANSMISSION), Wi), d = F(l.x.mul(.2126).add(l.y.mul(.7152)).add(l.z.mul(.0722)).mul(u.a).mul(c), M(1e-10)).div(F(o, M(1e-10))), f = M(0).toVar();
|
|
8932
8932
|
return p(ou(s.v0, s.v1, s.v2, r), () => {
|
|
8933
8933
|
let e = au(s.v0, s.v1, s.v2, r);
|
|
8934
|
-
f.assign(d.div(
|
|
8934
|
+
f.assign(d.div(F(e, M(1e-10))));
|
|
8935
8935
|
}).Else(() => {
|
|
8936
|
-
let e =
|
|
8936
|
+
let e = L(O(s.v1.sub(s.v0), s.v2.sub(s.v0))), r = F(A(n.negate(), e), .001), i = t.mul(t), a = d.div(c);
|
|
8937
8937
|
f.assign(a.mul(i).div(r));
|
|
8938
|
-
}),
|
|
8938
|
+
}), F(f, Hi);
|
|
8939
8939
|
}), _u = f(([e, t, n, r]) => {
|
|
8940
8940
|
let i = N(0).toVar(), a = n.sub(1).toVar();
|
|
8941
8941
|
return m(i.lessThan(a), () => {
|
|
@@ -8959,21 +8959,21 @@ var fu = 8, pu = 2, mu = Cn({
|
|
|
8959
8959
|
valid: !1
|
|
8960
8960
|
}).toVar();
|
|
8961
8961
|
return p(a.greaterThan(N(0)), () => {
|
|
8962
|
-
let l = _u(r, i, a, Y(n)).toVar(), u = i.add(l.mul(N(pu))), d = r.element(u), f = r.element(u.add(1)), m = N(d.r), h =
|
|
8962
|
+
let l = _u(r, i, a, Y(n)).toVar(), u = i.add(l.mul(N(pu))), d = r.element(u), f = r.element(u.add(1)), m = N(d.r), h = F(d.g, M(1e-10)), g = f.xyz, _ = f.w, v = mu.wrap(hu(m, s)), y = H(Y(n).toVar(), Y(n).toVar()), b = L(O(v.v1.sub(v.v0), v.v2.sub(v.v0)));
|
|
8963
8963
|
p(ou(v.v0, v.v1, v.v2, e), () => {
|
|
8964
8964
|
let n = su.wrap(lu(v.v0, v.v1, v.v2, e, y));
|
|
8965
8965
|
p(n.valid.and(n.solidAngle.greaterThan(1e-7)), () => {
|
|
8966
8966
|
let r = n.direction, i = n.position, a = A(r, t), s = A(r, b.negate());
|
|
8967
8967
|
p(a.greaterThan(0).and(s.greaterThan(0)), () => {
|
|
8968
|
-
let t = uu(i, v.v0, v.v1, v.v2), a =
|
|
8969
|
-
c.position.assign(i), c.normal.assign(a), c.emission.assign(g), c.direction.assign(r), c.distance.assign(l), c.pdf.assign(
|
|
8968
|
+
let t = uu(i, v.v0, v.v1, v.v2), a = L(v.n0.mul(t.x).add(v.n1.mul(t.y)).add(v.n2.mul(t.z))), l = ie(i.sub(e)), u = h.div(F(o, M(1e-10))).div(n.solidAngle);
|
|
8969
|
+
c.position.assign(i), c.normal.assign(a), c.emission.assign(g), c.direction.assign(r), c.distance.assign(l), c.pdf.assign(F(u, Hi)), c.area.assign(_), c.cosThetaLight.assign(s), c.valid.assign(!0);
|
|
8970
8970
|
});
|
|
8971
8971
|
});
|
|
8972
8972
|
}).Else(() => {
|
|
8973
|
-
let n = ru(v.v0, v.v1, v.v2, y), r = du(v.n0, v.n1, v.n2, y), i = n.sub(e), a = A(i, i), s =
|
|
8973
|
+
let n = ru(v.v0, v.v1, v.v2, y), r = du(v.n0, v.n1, v.n2, y), i = n.sub(e), a = A(i, i), s = xe(a), l = i.div(s), u = A(l, t), d = A(l, r.negate());
|
|
8974
8974
|
p(u.greaterThan(0).and(d.greaterThan(0)), () => {
|
|
8975
|
-
let e = h.div(
|
|
8976
|
-
c.position.assign(n), c.normal.assign(r), c.emission.assign(g), c.direction.assign(l), c.distance.assign(s), c.pdf.assign(
|
|
8975
|
+
let e = h.div(F(o, M(1e-10)).mul(_)).mul(a).div(d);
|
|
8976
|
+
c.position.assign(n), c.normal.assign(r), c.emission.assign(g), c.direction.assign(l), c.distance.assign(s), c.pdf.assign(F(e, Hi)), c.area.assign(_), c.cosThetaLight.assign(d), c.valid.assign(!0);
|
|
8977
8977
|
});
|
|
8978
8978
|
});
|
|
8979
8979
|
}), c;
|
|
@@ -8988,11 +8988,11 @@ var fu = 8, pu = 2, mu = Cn({
|
|
|
8988
8988
|
let i = tu.wrap(vu(e, t, a, s, c, l, u, d));
|
|
8989
8989
|
p(i.valid.and(i.pdf.greaterThan(0)), () => {
|
|
8990
8990
|
h.hasEmissive.assign(!0), h.emissionOnly.assign(i.emission), h.distance.assign(i.distance);
|
|
8991
|
-
let a =
|
|
8991
|
+
let a = F(M(0), A(t, i.direction));
|
|
8992
8992
|
p(a.greaterThan(0), () => {
|
|
8993
8993
|
let s = m(e, t, r), c = e.add(s), l = i.distance.sub(.001), u = f(c, i.direction, l);
|
|
8994
8994
|
p(u.greaterThan(0), () => {
|
|
8995
|
-
let e = Oi.wrap(ta(t, n, i.direction, r)), s = Cl(r, e), c = Nl(r, e), l =
|
|
8995
|
+
let e = Oi.wrap(ta(t, n, i.direction, r)), s = Cl(r, e), c = Nl(r, e), l = R(c.greaterThan(0), Zi({
|
|
8996
8996
|
pdf1: i.pdf,
|
|
8997
8997
|
pdf2: c
|
|
8998
8998
|
}), M(1));
|
|
@@ -9001,9 +9001,9 @@ var fu = 8, pu = 2, mu = Cn({
|
|
|
9001
9001
|
});
|
|
9002
9002
|
});
|
|
9003
9003
|
}), h;
|
|
9004
|
-
}), bu = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, p]) => nu.wrap(yu(e, t, n, r, i, a, o, s, c, l, u, d, f, p)).contribution), xu = 4, Su = 2, Cu = 32, wu = f(([e, t, n, r]) =>
|
|
9005
|
-
let o = e.add(n).mul(.5), s =
|
|
9006
|
-
return
|
|
9004
|
+
}), bu = f(([e, t, n, r, i, a, o, s, c, l, u, d, f, p]) => nu.wrap(yu(e, t, n, r, i, a, o, s, c, l, u, d, f, p)).contribution), xu = 4, Su = 2, Cu = 32, wu = f(([e, t, n, r]) => R(t.greaterThan(r), M(1), t.mul(r).add(e.mul(n)))), Tu = f(([e, t, n, r]) => R(t.greaterThan(r), M(0), e.mul(r).sub(t.mul(n)))), Eu = f(([e, t, n, r, i, a]) => {
|
|
9005
|
+
let o = e.add(n).mul(.5), s = ie(n.sub(e)), c = a.sub(o), l = F(A(c, c), M(1e-12)), u = F(l, s.mul(.5)), d = A(r, c.div(xe(l))), f = xe(F(M(1).sub(d.mul(d)), M(0))), p = s.mul(s).mul(.25), m = E(p.div(l), M(0), M(1)), h = R(l.lessThan(p), M(-1), xe(F(M(1).sub(m), M(0)))), g = xe(F(M(1).sub(h.mul(h)), M(0))), _ = xe(F(M(1).sub(i.mul(i)), M(0))), v = wu(f, d, _, i), y = wu(Tu(f, d, _, i), v, g, h);
|
|
9006
|
+
return F(R(y.greaterThan(M(0)), t.mul(y).div(u), M(0)), M(0));
|
|
9007
9007
|
}), Du = f(([e, t, n, r, i, a, o]) => {
|
|
9008
9008
|
let s = tu({
|
|
9009
9009
|
position: U(0),
|
|
@@ -9033,36 +9033,36 @@ var fu = 8, pu = 2, mu = Cn({
|
|
|
9033
9033
|
});
|
|
9034
9034
|
});
|
|
9035
9035
|
}), p(u, () => {
|
|
9036
|
-
let u = l.mul(N(xu)), f = r.element(u), h = r.element(u.add(N(2))), g = N(h.x), _ = N(h.y), v =
|
|
9036
|
+
let u = l.mul(N(xu)), f = r.element(u), h = r.element(u.add(N(2))), g = N(h.x), _ = N(h.y), v = F(f.w, M(1e-10)), y = Y(n).mul(v), b = M(0).toVar(), x = g.add(_.sub(N(1))).toVar(), S = M(1e-10).toVar();
|
|
9037
9037
|
m({
|
|
9038
9038
|
start: N(0),
|
|
9039
9039
|
end: _
|
|
9040
9040
|
}, ({ i: e }) => {
|
|
9041
|
-
let t = g.add(e), n = a.add(t.mul(N(Su))), r =
|
|
9041
|
+
let t = g.add(e), n = a.add(t.mul(N(Su))), r = F(i.element(n).g, M(0));
|
|
9042
9042
|
b.addAssign(r), p(b.greaterThanEqual(y).and(r.greaterThan(M(0))), () => {
|
|
9043
9043
|
x.assign(t), S.assign(r), d();
|
|
9044
9044
|
});
|
|
9045
9045
|
}), c.mulAssign(S.div(v));
|
|
9046
|
-
let C = a.add(x.mul(N(Su))), w = i.element(C), T = i.element(C.add(N(1))), E = N(w.r), D = T.xyz, k = T.w, j = mu.wrap(hu(E, o)), ee = H(Y(n).toVar(), Y(n).toVar()), te =
|
|
9046
|
+
let C = a.add(x.mul(N(Su))), w = i.element(C), T = i.element(C.add(N(1))), E = N(w.r), D = T.xyz, k = T.w, j = mu.wrap(hu(E, o)), ee = H(Y(n).toVar(), Y(n).toVar()), te = L(O(j.v1.sub(j.v0), j.v2.sub(j.v0)));
|
|
9047
9047
|
p(ou(j.v0, j.v1, j.v2, e), () => {
|
|
9048
9048
|
let n = su.wrap(lu(j.v0, j.v1, j.v2, e, ee));
|
|
9049
9049
|
p(n.valid.and(n.solidAngle.greaterThan(M(1e-7))), () => {
|
|
9050
9050
|
let r = n.direction, i = n.position, a = A(r, t), o = A(r, te.negate());
|
|
9051
9051
|
p(a.greaterThan(M(0)).and(o.greaterThan(M(0))), () => {
|
|
9052
|
-
let t = uu(i, j.v0, j.v1, j.v2), a =
|
|
9053
|
-
s.position.assign(i), s.normal.assign(a), s.emission.assign(D), s.direction.assign(r), s.distance.assign(l), s.pdf.assign(
|
|
9052
|
+
let t = uu(i, j.v0, j.v1, j.v2), a = L(j.n0.mul(t.x).add(j.n1.mul(t.y)).add(j.n2.mul(t.z))), l = ie(i.sub(e)), u = c.div(F(n.solidAngle, M(1e-10)));
|
|
9053
|
+
s.position.assign(i), s.normal.assign(a), s.emission.assign(D), s.direction.assign(r), s.distance.assign(l), s.pdf.assign(F(u, Hi)), s.area.assign(k), s.cosThetaLight.assign(o), s.valid.assign(!0);
|
|
9054
9054
|
});
|
|
9055
9055
|
});
|
|
9056
9056
|
}).Else(() => {
|
|
9057
|
-
let n = ru(j.v0, j.v1, j.v2, ee), r = du(j.n0, j.n1, j.n2, ee), i = n.sub(e), a = A(i, i), o =
|
|
9057
|
+
let n = ru(j.v0, j.v1, j.v2, ee), r = du(j.n0, j.n1, j.n2, ee), i = n.sub(e), a = A(i, i), o = xe(a), l = i.div(o), u = A(l, t), d = A(l, r.negate());
|
|
9058
9058
|
p(u.greaterThan(M(0)).and(d.greaterThan(M(0))), () => {
|
|
9059
|
-
let e = c.div(
|
|
9060
|
-
s.position.assign(n), s.normal.assign(r), s.emission.assign(D), s.direction.assign(l), s.distance.assign(o), s.pdf.assign(
|
|
9059
|
+
let e = c.div(F(k, M(1e-10))).mul(a).div(d);
|
|
9060
|
+
s.position.assign(n), s.normal.assign(r), s.emission.assign(D), s.direction.assign(l), s.distance.assign(o), s.pdf.assign(F(e, Hi)), s.area.assign(k), s.cosThetaLight.assign(d), s.valid.assign(!0);
|
|
9061
9061
|
});
|
|
9062
9062
|
});
|
|
9063
9063
|
}), s;
|
|
9064
9064
|
}), Ou = f(([e, t, n, r, i, a, o, s]) => {
|
|
9065
|
-
let c = M(0).toVar(), l = N(e).toVar(), u = i.element(o.add(l.shiftRight(N(2)))), f = l.bitAnd(N(3)), h =
|
|
9065
|
+
let c = M(0).toVar(), l = N(e).toVar(), u = i.element(o.add(l.shiftRight(N(2)))), f = l.bitAnd(N(3)), h = R(f.equal(N(0)), u.x, R(f.equal(N(1)), u.y, R(f.equal(N(2)), u.z, u.w))).toVar();
|
|
9066
9066
|
return p(h.greaterThanEqual(M(0)), () => {
|
|
9067
9067
|
let e = N(h).toVar(), o = M(1).toVar(), u = N(0).toVar(), f = N(0).toVar(), g = T(!1).toVar();
|
|
9068
9068
|
m(Cu, () => {
|
|
@@ -9086,30 +9086,30 @@ var fu = 8, pu = 2, mu = Cn({
|
|
|
9086
9086
|
});
|
|
9087
9087
|
}), f.addAssign(N(1));
|
|
9088
9088
|
}), p(g.and(o.greaterThan(M(0))), () => {
|
|
9089
|
-
let e = u.mul(N(xu)), f = i.element(e), h = i.element(e.add(N(2))), g = N(h.x), _ = N(h.y), v =
|
|
9089
|
+
let e = u.mul(N(xu)), f = i.element(e), h = i.element(e.add(N(2))), g = N(h.x), _ = N(h.y), v = F(f.w, M(1e-10)), y = M(0).toVar();
|
|
9090
9090
|
m({
|
|
9091
9091
|
start: N(0),
|
|
9092
9092
|
end: _
|
|
9093
9093
|
}, ({ i: e }) => {
|
|
9094
9094
|
let t = g.add(e), n = i.element(a.add(t.mul(N(Su))));
|
|
9095
9095
|
p(N(n.r).equal(l), () => {
|
|
9096
|
-
y.assign(
|
|
9096
|
+
y.assign(F(n.g, M(0))), d();
|
|
9097
9097
|
});
|
|
9098
9098
|
}), o.mulAssign(y.div(v));
|
|
9099
9099
|
let b = mu.wrap(hu(l, s));
|
|
9100
9100
|
p(ou(b.v0, b.v1, b.v2, r), () => {
|
|
9101
9101
|
let e = au(b.v0, b.v1, b.v2, r);
|
|
9102
|
-
c.assign(o.div(
|
|
9102
|
+
c.assign(o.div(F(e, M(1e-10))));
|
|
9103
9103
|
}).Else(() => {
|
|
9104
|
-
let e =
|
|
9104
|
+
let e = L(O(b.v1.sub(b.v0), b.v2.sub(b.v0))), r = F(A(n.negate(), e), M(.001)), i = iu(b.v0, b.v1, b.v2), a = t.mul(t), s = o.div(F(i, M(1e-10)));
|
|
9105
9105
|
c.assign(s.mul(a).div(r));
|
|
9106
9106
|
});
|
|
9107
9107
|
});
|
|
9108
|
-
}),
|
|
9108
|
+
}), F(c, Hi);
|
|
9109
9109
|
}), ku = 0x8ac7230489e80000, Au = 1e-4, ju = 1e-4, Mu = .001;
|
|
9110
9110
|
function Nu(e) {
|
|
9111
|
-
let { bvhBuffer: t, triangleBuffer: n, materialBuffer: r, envCDFTexture: i, lightBuffer: a, rayBufferRW: o, rngBufferRW: s, hitBufferRO: c, gBufferRW: l, counters: u, activeIndicesRO: d, envTexture: g, environmentIntensity: _, envMatrix: v, enableEnvironmentLight: y, useEnvMapIS: b, groundProjectionEnabled: x, groundProjectionRadius: C, groundProjectionHeight: w, groundProjectionLevel: D, enableGroundCatcher: O, groundCatcherHeight: k, envTotalSum: ee, envCompensationDelta: te, envResolution: ne, directionalLightsBuffer:
|
|
9112
|
-
let i =
|
|
9111
|
+
let { bvhBuffer: t, triangleBuffer: n, materialBuffer: r, envCDFTexture: i, lightBuffer: a, rayBufferRW: o, rngBufferRW: s, hitBufferRO: c, gBufferRW: l, counters: u, activeIndicesRO: d, envTexture: g, environmentIntensity: _, envMatrix: v, enableEnvironmentLight: y, useEnvMapIS: b, groundProjectionEnabled: x, groundProjectionRadius: C, groundProjectionHeight: w, groundProjectionLevel: D, enableGroundCatcher: O, groundCatcherHeight: k, envTotalSum: ee, envCompensationDelta: te, envResolution: ne, directionalLightsBuffer: P, numDirectionalLights: ae, areaLightsBuffer: oe, numAreaLights: ce, pointLightsBuffer: le, numPointLights: I, spotLightsBuffer: ue, numSpotLights: de, maxBounceCount: fe, maxSubsurfaceSteps: pe, currentBounce: me, transparentBackground: he, backgroundIntensity: ge, backgroundColor: ve, backgroundBlurriness: ye, backgroundBlurSamples: be, showBackground: xe, globalIlluminationIntensity: Se, cameraProjectionMatrix: Ce, cameraViewMatrix: we, fireflyThreshold: Te, frame: Ee, resolution: De, emissiveTriangleCount: Oe, emissiveVec4Offset: ke, emissiveTotalPower: Ae, emissiveBoost: je, totalTriangleCount: B, enableEmissiveTriangleSampling: V, lightBVHNodeCount: Me, reverseMapVec4Offset: Ne, maxRayCount: Pe, auxGBufferEnabled: Fe } = e, Ie = Fe.greaterThan(z(0)), Le = a !== void 0, G = (e, t, n, r) => {
|
|
9112
|
+
let i = L(e).toVar(), a = F(n, N(1)).toVar(), o = U(0).toVar();
|
|
9113
9113
|
return m({
|
|
9114
9114
|
start: N(0),
|
|
9115
9115
|
end: a,
|
|
@@ -9119,7 +9119,7 @@ function Nu(e) {
|
|
|
9119
9119
|
let e = os(i, t, H(Y(r).toVar(), Y(r).toVar())).toVar();
|
|
9120
9120
|
o.addAssign(bl({
|
|
9121
9121
|
tex: g,
|
|
9122
|
-
samp:
|
|
9122
|
+
samp: _e(g),
|
|
9123
9123
|
direction: e,
|
|
9124
9124
|
environmentMatrix: v,
|
|
9125
9125
|
environmentIntensity: _,
|
|
@@ -9136,24 +9136,24 @@ function Nu(e) {
|
|
|
9136
9136
|
p(Fe.bitAnd(z(Kc.ACTIVE)).equal(z(0)), () => {
|
|
9137
9137
|
h();
|
|
9138
9138
|
});
|
|
9139
|
-
let Re = Fe.bitAnd(z(Kc.REDIRECTED)).equal(z(0)).toVar(), ze = gc(o, B).toVar(), K = _c(o, B).toVar(), Be = yc(o, B).toVar(), Ve = xc(o, B).toVar(), He = B, Ue = s.element(B).toVar(), We = jc(c, B).toVar(), Ge = Pc(c, B).toVar(), Ke = Nc(c, B).toVar(), qe = Fc(c, B).toVar(), Je = Mc(c, B).toVar(), Ye = Vc(o, B).toVar(), Xe = N(
|
|
9139
|
+
let Re = Fe.bitAnd(z(Kc.REDIRECTED)).equal(z(0)).toVar(), ze = gc(o, B).toVar(), K = _c(o, B).toVar(), Be = yc(o, B).toVar(), Ve = xc(o, B).toVar(), He = B, Ue = s.element(B).toVar(), We = jc(c, B).toVar(), Ge = Pc(c, B).toVar(), Ke = Nc(c, B).toVar(), qe = Fc(c, B).toVar(), Je = Mc(c, B).toVar(), Ye = Vc(o, B).toVar(), Xe = N(me).toVar(), Ze = Hc(o, B).toVar();
|
|
9140
9140
|
p(O.and(Xe.equal(0)), () => {
|
|
9141
9141
|
let e = K.y.toVar();
|
|
9142
9142
|
p(e.abs().greaterThan(M(zi)), () => {
|
|
9143
9143
|
let a = k.sub(ze.y).div(e).toVar();
|
|
9144
9144
|
p(a.greaterThan(M(Au)).and(a.lessThan(We)), () => {
|
|
9145
|
-
let e = ze.add(K.mul(a)).toVar(), c = U(0, 1, 0), u = K.negate().toVar(), d = yi.wrap(la()).toVar(), f = La(c, H(Y(Ue).toVar(), Y(Ue).toVar())).toVar(), m = f.y.mul(Li).toVar(), b = U(Li), S = Si.wrap(Il(e, c, d, u, f, m, b, Xe, Ue,
|
|
9145
|
+
let e = ze.add(K.mul(a)).toVar(), c = U(0, 1, 0), u = K.negate().toVar(), d = yi.wrap(la()).toVar(), f = La(c, H(Y(Ue).toVar(), Y(Ue).toVar())).toVar(), m = f.y.mul(Li).toVar(), b = U(Li), S = Si.wrap(Il(e, c, d, u, f, m, b, Xe, Ue, P, ae, oe, ce, le, I, ue, de, t, n, r, g, _, v, i, ee, te, ne, y, T(!0))).toVar(), O = F(A(S.shadowed, Ui), M(0)), k = F(A(S.unoccluded, Ui), M(0)).toVar(), j = E(O.div(F(k, M(ju))), 0, 1).toVar();
|
|
9146
9146
|
p(k.lessThan(M(Mu)), () => {
|
|
9147
9147
|
j.assign(1);
|
|
9148
9148
|
});
|
|
9149
9149
|
let re = Sl(ze, K, x, C, w, D).toVar(), N = U(0).toVar();
|
|
9150
|
-
p(
|
|
9151
|
-
p(
|
|
9152
|
-
N.assign(G(re,
|
|
9150
|
+
p(xe, () => {
|
|
9151
|
+
p(ye.greaterThan(0), () => {
|
|
9152
|
+
N.assign(G(re, ye.mul(1.3), be, Ue));
|
|
9153
9153
|
}).Else(() => {
|
|
9154
9154
|
N.assign(bl({
|
|
9155
9155
|
tex: g,
|
|
9156
|
-
samp:
|
|
9156
|
+
samp: _e(g),
|
|
9157
9157
|
direction: re,
|
|
9158
9158
|
environmentMatrix: v,
|
|
9159
9159
|
environmentIntensity: _,
|
|
@@ -9161,69 +9161,74 @@ function Nu(e) {
|
|
|
9161
9161
|
}).xyz);
|
|
9162
9162
|
});
|
|
9163
9163
|
});
|
|
9164
|
-
let
|
|
9164
|
+
let ie = R(xe, N.mul(ge), ve), se = R(he, U(0), ie.mul(j)), L = R(he, M(1).sub(j), M(1));
|
|
9165
9165
|
p(Ie, () => {
|
|
9166
9166
|
Cc(l, He, c, Gl({
|
|
9167
9167
|
worldPos: e,
|
|
9168
|
-
cameraProjectionMatrix:
|
|
9169
|
-
cameraViewMatrix:
|
|
9168
|
+
cameraProjectionMatrix: Ce,
|
|
9169
|
+
cameraViewMatrix: we
|
|
9170
9170
|
}), U(1));
|
|
9171
|
-
}), Ac(o, B, W(
|
|
9171
|
+
}), Ac(o, B, W(se, L)), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), s.element(B).assign(Ue), h();
|
|
9172
9172
|
});
|
|
9173
9173
|
});
|
|
9174
9174
|
}), p(We.greaterThan(ku), () => {
|
|
9175
|
-
let e = Re.and(
|
|
9175
|
+
let e = Re.and(xe), t = Re.not().and(y), n = U(0).toVar();
|
|
9176
9176
|
p(e.or(t), () => {
|
|
9177
9177
|
let e = K.toVar();
|
|
9178
9178
|
p(Re, () => {
|
|
9179
9179
|
e.assign(Sl(ze, K, x, C, w, D));
|
|
9180
9180
|
});
|
|
9181
9181
|
let t = U(0).toVar();
|
|
9182
|
-
p(Re.and(
|
|
9183
|
-
t.assign(G(e,
|
|
9182
|
+
p(Re.and(ye.greaterThan(0)), () => {
|
|
9183
|
+
t.assign(G(e, ye.mul(1.3), be, Ue));
|
|
9184
9184
|
}).Else(() => {
|
|
9185
9185
|
t.assign(bl({
|
|
9186
9186
|
tex: g,
|
|
9187
|
-
samp:
|
|
9187
|
+
samp: _e(g),
|
|
9188
9188
|
direction: e,
|
|
9189
9189
|
environmentMatrix: v,
|
|
9190
9190
|
environmentIntensity: _,
|
|
9191
9191
|
enableEnvironmentLight: M(1)
|
|
9192
9192
|
}).xyz);
|
|
9193
|
-
});
|
|
9194
|
-
let
|
|
9193
|
+
}), n.assign(E(t, U(0), U(1)));
|
|
9194
|
+
let r = M(1).toVar();
|
|
9195
9195
|
p(Re.not().and(b), () => {
|
|
9196
9196
|
let e = bc(o, B);
|
|
9197
9197
|
p(e.greaterThan(0), () => {
|
|
9198
9198
|
let t = vl(g, K, v, ee, te, ne).w;
|
|
9199
9199
|
p(t.greaterThan(0), () => {
|
|
9200
|
-
|
|
9200
|
+
r.assign(Qi({
|
|
9201
9201
|
pdf1: e,
|
|
9202
9202
|
pdf2: t
|
|
9203
9203
|
}));
|
|
9204
9204
|
});
|
|
9205
9205
|
});
|
|
9206
9206
|
});
|
|
9207
|
-
let
|
|
9208
|
-
Ve.assign(W(Ve.xyz.add(Wl(Be.mul(t).mul(
|
|
9209
|
-
}), p(Re.and(
|
|
9210
|
-
Ve.assign(W(Ve.xyz.add(Be.mul(
|
|
9211
|
-
}), p(
|
|
9207
|
+
let i = R(Re.not(), Se, M(1)), a = R(Re, ge, r.mul(i)), s = R(Re, M(0), M(Xe));
|
|
9208
|
+
Ve.assign(W(Ve.xyz.add(Wl(Be.mul(t).mul(a), s, Te, N(Ee))), Ve.w));
|
|
9209
|
+
}), p(Re.and(xe.not()).and(he.not()), () => {
|
|
9210
|
+
Ve.assign(W(Ve.xyz.add(Be.mul(ve)), Ve.w));
|
|
9211
|
+
}), p(he.and(Fe.bitAnd(z(Kc.HAS_HIT_OPAQUE)).equal(z(0))), () => {
|
|
9212
9212
|
Ve.w.assign(0);
|
|
9213
|
+
}), p(Ie.and(Fe.bitAnd(z(Kc.AUX_LOCKED)).equal(z(0))).and(Fe.bitAnd(z(Kc.REDIRECTED)).notEqual(z(0))), () => {
|
|
9214
|
+
let e = wc(l, He);
|
|
9215
|
+
p(A(Ec(e), U(1)).lessThan(M(1e-4)), () => {
|
|
9216
|
+
Cc(l, He, L(K), Tc(e).w, n);
|
|
9217
|
+
});
|
|
9213
9218
|
}), Ac(o, B, Ve), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), h();
|
|
9214
9219
|
});
|
|
9215
|
-
let Qe = ze.add(K.mul(We)).toVar(), $e =
|
|
9220
|
+
let Qe = ze.add(K.mul(We)).toVar(), $e = L(Ge).toVar(), et = Lc(o, B), tt = N(et.stackDepth).toVar(), nt = et.ior1.toVar(), rt = et.ior2.toVar(), it = et.ior3.toVar(), at = N(et.transTraversals).toVar(), ot = M(et.wavelength).toVar();
|
|
9216
9221
|
p(tt.greaterThan(0), () => {
|
|
9217
9222
|
let e = zc(o, B).toVar(), t = Uc(o, B), n = t.sigmaS.toVar(), r = t.g.toVar();
|
|
9218
|
-
p(
|
|
9223
|
+
p(F(F(n.x, n.y), n.z).lessThanEqual(0), () => {
|
|
9219
9224
|
Be.mulAssign(j(e.mul(We).negate()));
|
|
9220
9225
|
}).Else(() => {
|
|
9221
9226
|
let t = e.add(n), i = Ba.wrap(Wa(t, n, Be, We, Ue)).toVar();
|
|
9222
9227
|
Be.mulAssign(i.weight), p(i.didScatter, () => {
|
|
9223
9228
|
let e = H(Y(Ue), Y(Ue)), t = ze.add(K.mul(i.t)), n = Ua(K, r, e).toVar();
|
|
9224
9229
|
Ze.addAssign(1);
|
|
9225
|
-
let a = E(
|
|
9226
|
-
p(Ze.greaterThanEqual(
|
|
9230
|
+
let a = E(F(F(Be.x, Be.y), Be.z), .02, 1).toVar();
|
|
9231
|
+
p(Ze.greaterThanEqual(pe).or(Y(Ue).greaterThan(a)).toVar(), () => {
|
|
9227
9232
|
Ac(o, B, Ve), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), s.element(B).assign(Ue), h();
|
|
9228
9233
|
}), Be.divAssign(a), Fe.assign(Fe.bitOr(z(Kc.REDIRECTED))), Dc(o, B, t, Ye, Ze), Oc(o, B, n, Fe), kc(o, B, Be, bc(o, B)), Ac(o, B, Ve), s.element(B).assign(Ue), h();
|
|
9229
9234
|
});
|
|
@@ -9262,16 +9267,20 @@ function Nu(e) {
|
|
|
9262
9267
|
q.transmission.assign(dt.transmission), q.clearcoat.assign(dt.clearcoat), q.clearcoatRoughness.assign(dt.clearcoatRoughness), q.sheenColor.assign(dt.sheenColor), q.sheenRoughness.assign(dt.sheenRoughness), q.iridescence.assign(dt.iridescence), q.iridescenceThicknessRange.assign(H(q.iridescenceThicknessRange.x, dt.iridescenceThickness)), q.specularIntensity.assign(dt.specularIntensity), q.specularColor.assign(dt.specularColor);
|
|
9263
9268
|
let J = lt.albedo.toVar();
|
|
9264
9269
|
p(q.displacementMapIndex.greaterThanEqual(N(0)).and(q.displacementScale.greaterThan(0)), () => {
|
|
9265
|
-
$e.assign(
|
|
9270
|
+
$e.assign(L(ct.add(lt.normal.sub(L(Ge)))));
|
|
9266
9271
|
}).Else(() => {
|
|
9267
9272
|
$e.assign(lt.normal);
|
|
9268
9273
|
}), p(Xe.equal(0).and(Ie), () => {
|
|
9269
9274
|
let e = Gl({
|
|
9270
9275
|
worldPos: Qe,
|
|
9271
|
-
cameraProjectionMatrix:
|
|
9272
|
-
cameraViewMatrix:
|
|
9276
|
+
cameraProjectionMatrix: Ce,
|
|
9277
|
+
cameraViewMatrix: we
|
|
9278
|
+
});
|
|
9279
|
+
p(q.alphaMode.equal(N(2)), () => {
|
|
9280
|
+
Cc(l, He, $e, e, J.xyz), Fe.assign(Fe.bitOr(z(Kc.AUX_LOCKED)));
|
|
9281
|
+
}).Else(() => {
|
|
9282
|
+
Cc(l, He, U(0, 0, 1), e, U(0));
|
|
9273
9283
|
});
|
|
9274
|
-
Cc(l, He, U(0, 0, 1), e, U(0));
|
|
9275
9284
|
});
|
|
9276
9285
|
let ft = M(1).toVar(), pt = M(1).toVar();
|
|
9277
9286
|
p(tt.equal(1), () => {
|
|
@@ -9295,7 +9304,7 @@ function Nu(e) {
|
|
|
9295
9304
|
rt.assign(q.ior);
|
|
9296
9305
|
}), p(tt.equal(3), () => {
|
|
9297
9306
|
it.assign(q.ior);
|
|
9298
|
-
}), Bc(o, B,
|
|
9307
|
+
}), Bc(o, B, R(q.attenuationDistance.greaterThan(0), se(F(q.attenuationColor, U(.001))).negate().div(q.attenuationDistance), U(0))), Wc(o, B, U(0), M(0));
|
|
9299
9308
|
});
|
|
9300
9309
|
}).Else(() => {
|
|
9301
9310
|
p(tt.greaterThan(0), () => {
|
|
@@ -9322,21 +9331,24 @@ function Nu(e) {
|
|
|
9322
9331
|
});
|
|
9323
9332
|
}), p(ht.isTransmissive.and(at.greaterThan(0)), () => {
|
|
9324
9333
|
at.subAssign(1);
|
|
9325
|
-
}), Be.mulAssign(ht.throughput)
|
|
9326
|
-
|
|
9334
|
+
}), Be.mulAssign(ht.throughput), p(Ie.and(Fe.bitAnd(z(Kc.AUX_LOCKED)).equal(z(0))).and(ht.isTransmissive).and(ht.isAlphaSkip.not()).and(ht.isSubsurface.not()).and(q.roughness.greaterThan(.05).or(q.dispersion.greaterThan(0))), () => {
|
|
9335
|
+
let e = Tc(wc(l, He)).w;
|
|
9336
|
+
Cc(l, He, $e, e, J.xyz), Fe.assign(Fe.bitOr(z(Kc.AUX_LOCKED)));
|
|
9337
|
+
});
|
|
9338
|
+
let e = R(ht.entering, $e, $e.negate()), t = R(ht.didReflect, e, K), n = Qe.add(t.mul(.001));
|
|
9327
9339
|
p(ht.isAlphaSkip.not(), () => {
|
|
9328
9340
|
Fe.assign(Fe.bitOr(z(Kc.REDIRECTED)));
|
|
9329
9341
|
}), Dc(o, B, n, Ye, Ze), Oc(o, B, ht.direction, Fe), kc(o, B, Be, bc(o, B)), Ac(o, B, Ve), Rc(o, B, z(tt), z(at), nt, rt, it, z(ot.add(.5))), s.element(B).assign(Ue), h();
|
|
9330
9342
|
}), Fe.assign(Fe.bitOr(z(Kc.HAS_HIT_OPAQUE | Kc.REDIRECTED)));
|
|
9331
9343
|
let gt = lt.emissive.toVar();
|
|
9332
|
-
p(
|
|
9333
|
-
let e =
|
|
9334
|
-
Le && p(V.equal(N(1)).and(
|
|
9344
|
+
p(ie(gt).greaterThan(0), () => {
|
|
9345
|
+
let e = R(Re.not(), Se, M(1)), t = M(1).toVar();
|
|
9346
|
+
Le && p(V.equal(N(1)).and(Oe.greaterThan(N(0))).and(Xe.greaterThan(0)), () => {
|
|
9335
9347
|
let e = bc(o, B);
|
|
9336
9348
|
p(e.greaterThan(0), () => {
|
|
9337
9349
|
let i = M(0).toVar();
|
|
9338
9350
|
p(Me.greaterThan(N(0)), () => {
|
|
9339
|
-
i.assign(Ou(N(Je), We, K, ze, a,
|
|
9351
|
+
i.assign(Ou(N(Je), We, K, ze, a, ke, Ne, n));
|
|
9340
9352
|
}).Else(() => {
|
|
9341
9353
|
i.assign(gu(N(Je), We, K, ze, n, r, Ae));
|
|
9342
9354
|
}), t.assign(Zi({
|
|
@@ -9344,7 +9356,7 @@ function Nu(e) {
|
|
|
9344
9356
|
pdf2: i
|
|
9345
9357
|
}));
|
|
9346
9358
|
});
|
|
9347
|
-
}), Ve.assign(W(Ve.xyz.add(Wl(gt.mul(Be).mul(e).mul(t), M(Xe),
|
|
9359
|
+
}), Ve.assign(W(Ve.xyz.add(Wl(gt.mul(Be).mul(e).mul(t), M(Xe), Te, N(Ee))), Ve.w));
|
|
9348
9360
|
});
|
|
9349
9361
|
let _t = K.negate().toVar();
|
|
9350
9362
|
p(A($e, _t).lessThan(0), () => {
|
|
@@ -9357,7 +9369,7 @@ function Nu(e) {
|
|
|
9357
9369
|
Fe.assign(Fe.bitOr(z(Kc.AUX_LOCKED)));
|
|
9358
9370
|
});
|
|
9359
9371
|
});
|
|
9360
|
-
let vt = ji.wrap(aa(q.metalness, q.roughness, q.transmission, q.clearcoat, q.emissive, q.subsurface)).toVar(), yt = N(
|
|
9372
|
+
let vt = ji.wrap(aa(q.metalness, q.roughness, q.transmission, q.clearcoat, q.emissive, q.subsurface)).toVar(), yt = N(De.x).toVar(), bt = Jn(H(M(N(He).mod(yt)).add(.5), M(N(He).div(yt)).add(.5)), N(0), Xe, Ue, N(-1), De, Ee).toVar(), xt = Ti({
|
|
9361
9373
|
specular: M(0),
|
|
9362
9374
|
diffuse: M(0),
|
|
9363
9375
|
sheen: M(0),
|
|
@@ -9398,35 +9410,35 @@ function Nu(e) {
|
|
|
9398
9410
|
let e = wi.wrap(Ul(_t, $e, q, bt, Ue, vt, !1, xt, !1, St));
|
|
9399
9411
|
Ct.assign(e.direction), wt.assign(e.value), Tt.assign(e.pdf);
|
|
9400
9412
|
});
|
|
9401
|
-
let Et = Si.wrap(Il(Qe, $e, q, _t, Ct, Tt, wt, Xe, Ue,
|
|
9402
|
-
Ve.assign(W(Ve.xyz.add(Wl(Be.mul(Et).mul(Dt), M(Xe),
|
|
9413
|
+
let Et = Si.wrap(Il(Qe, $e, q, _t, Ct, Tt, wt, Xe, Ue, P, ae, oe, ce, le, I, ue, de, t, n, r, g, _, v, i, ee, te, ne, y, T(!1))).shadowed.toVar(), Dt = R(Xe.greaterThan(0), Se, M(1));
|
|
9414
|
+
Ve.assign(W(Ve.xyz.add(Wl(Be.mul(Et).mul(Dt), M(Xe), Te, N(Ee))), Ve.w)), Le && p(V.equal(N(1)).and(Oe.greaterThan(N(0))), () => {
|
|
9403
9415
|
let e = f(([e, i, a]) => Po(e, i, a, fl, t, n, r));
|
|
9404
9416
|
p(Me.greaterThan(N(0)), () => {
|
|
9405
|
-
let t = tu.wrap(Du(Qe, $e, Ue, a, a,
|
|
9417
|
+
let t = tu.wrap(Du(Qe, $e, Ue, a, a, ke, n));
|
|
9406
9418
|
p(Xe.greaterThan(N(1)).and(q.roughness.greaterThan(.9)).and(q.metalness.lessThan(.1)).not().and(t.valid).and(t.pdf.greaterThan(0)), () => {
|
|
9407
|
-
let n =
|
|
9419
|
+
let n = F(M(0), A($e, t.direction));
|
|
9408
9420
|
p(n.greaterThan(0), () => {
|
|
9409
9421
|
let r = Fo(Qe, $e, q), i = Qe.add(r), a = t.distance.sub(.001), o = e(i, t.direction, a);
|
|
9410
9422
|
p(o.greaterThan(0), () => {
|
|
9411
|
-
let e = wl(_t, t.direction, $e, q), r = Pl(_t, t.direction, $e, q), i =
|
|
9423
|
+
let e = wl(_t, t.direction, $e, q), r = Pl(_t, t.direction, $e, q), i = R(r.greaterThan(0), Zi({
|
|
9412
9424
|
pdf1: t.pdf,
|
|
9413
9425
|
pdf2: r
|
|
9414
9426
|
}), M(1)), a = t.emission.mul(e).mul(n).div(t.pdf).mul(o).mul(je).mul(i);
|
|
9415
|
-
Ve.assign(W(Ve.xyz.add(Wl(a.mul(Be).mul(Dt), M(Xe),
|
|
9427
|
+
Ve.assign(W(Ve.xyz.add(Wl(a.mul(Be).mul(Dt), M(Xe), Te, N(Ee))), Ve.w));
|
|
9416
9428
|
});
|
|
9417
9429
|
});
|
|
9418
9430
|
});
|
|
9419
9431
|
}).Else(() => {
|
|
9420
|
-
let t = bu(Qe, $e, _t, q, Xe, Ue, je, a,
|
|
9421
|
-
Ve.assign(W(Ve.xyz.add(Wl(t.mul(Be).mul(Dt), M(Xe),
|
|
9432
|
+
let t = bu(Qe, $e, _t, q, Xe, Ue, je, a, ke, Oe, Ae, n, e, Fo);
|
|
9433
|
+
Ve.assign(W(Ve.xyz.add(Wl(t.mul(Be).mul(Dt), M(Xe), Te, N(Ee))), Ve.w));
|
|
9422
9434
|
});
|
|
9423
9435
|
});
|
|
9424
|
-
let Ot = Ei.wrap(Pa(q, Xe, vt)).toVar(), kt = Go.wrap(Hl(_t, $e, q, Ct, Tt, wt, Ue, Ot)).toVar(), At = kt.direction.toVar(), jt =
|
|
9436
|
+
let Ot = Ei.wrap(Pa(q, Xe, vt)).toVar(), kt = Go.wrap(Hl(_t, $e, q, Ct, Tt, wt, Ue, Ot)).toVar(), At = kt.direction.toVar(), jt = F(kt.combinedPdf, .001).toVar();
|
|
9425
9437
|
Be.mulAssign(kt.throughput);
|
|
9426
9438
|
let Mt = Kl(Xe, Be, vt, At, Ue, y, b).toVar();
|
|
9427
9439
|
p(Mt.lessThanEqual(0), () => {
|
|
9428
9440
|
Ac(o, B, Ve), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), s.element(B).assign(Ue), h();
|
|
9429
|
-
}), Be.divAssign(Mt), p(Ye.greaterThanEqual(
|
|
9441
|
+
}), Be.divAssign(Mt), p(Ye.greaterThanEqual(fe), () => {
|
|
9430
9442
|
Ac(o, B, Ve), Oc(o, B, K, Fe.bitAnd(z(~Kc.ACTIVE))), s.element(B).assign(Ue), h();
|
|
9431
9443
|
}), Dc(o, B, Qe.add($e.mul(.001)), Ye.add(1), Ze), Oc(o, B, At, Fe), kc(o, B, Be, jt), Ac(o, B, Ve), Rc(o, B, z(tt), z(at), nt, rt, it, z(ot.add(.5))), s.element(B).assign(Ue);
|
|
9432
9444
|
});
|
|
@@ -9450,11 +9462,11 @@ function Pu(e) {
|
|
|
9450
9462
|
function Fu(e) {
|
|
9451
9463
|
let { rayBufferRO: t, activeIndicesReadRO: n, activeIndicesWriteRW: r, counters: i, currentActiveCount: a } = e;
|
|
9452
9464
|
return f(() => {
|
|
9453
|
-
let e = re, o = i ? S(i.element(z(Gc.ENTERING_COUNT))) : a, s = e.lessThan(o), c = n.element(e), l = vc(t, c), u = s.and(l.bitAnd(z(Kc.ACTIVE)).notEqual(z(0))), d =
|
|
9465
|
+
let e = re, o = i ? S(i.element(z(Gc.ENTERING_COUNT))) : a, s = e.lessThan(o), c = n.element(e), l = vc(t, c), u = s.and(l.bitAnd(z(Kc.ACTIVE)).notEqual(z(0))), d = R(u, z(1), z(0)), f = Ee(d).toVar(), m = we(d).toVar(), h = Ee(z(1)).toVar(), g = z(0).toVar();
|
|
9454
9466
|
p(h.equal(z(0)), () => {
|
|
9455
9467
|
g.assign(x(i.element(z(Gc.ACTIVE_RAY_COUNT)), m));
|
|
9456
9468
|
});
|
|
9457
|
-
let _ =
|
|
9469
|
+
let _ = Te(g, z(0)).toVar();
|
|
9458
9470
|
p(u, () => {
|
|
9459
9471
|
r.element(_.add(f)).assign(c);
|
|
9460
9472
|
});
|
|
@@ -9462,29 +9474,32 @@ function Fu(e) {
|
|
|
9462
9474
|
}
|
|
9463
9475
|
var Iu = /* @__PURE__ */ G("\n fn nanInfToRed( c: vec3f ) -> vec3f {\n let isNan = c.x != c.x || c.y != c.y || c.z != c.z;\n let isInf = abs( c.x ) > 1e30f || abs( c.y ) > 1e30f || abs( c.z ) > 1e30f;\n if ( isNan || isInf ) { return vec3f( 1.0f, 0.0f, 0.0f ); }\n return vec3f( 0.0f );\n }\n");
|
|
9464
9476
|
function Lu(e) {
|
|
9465
|
-
let { rayBufferRO: t, gBufferRO: n, writeColorTex: r, writeNDTex: i, writeAlbedoTex: a, resolution: o, frame: s, enableAccumulation: c, hasPreviousAccumulated: l, accumulationAlpha: u, cameraIsMoving: d, transparentBackground: m, prevAccumTexture: h, prevAlbedoTexture: g,
|
|
9477
|
+
let { rayBufferRO: t, gBufferRO: n, writeColorTex: r, writeNDTex: i, writeAlbedoTex: a, resolution: o, frame: s, enableAccumulation: c, hasPreviousAccumulated: l, accumulationAlpha: u, cameraIsMoving: d, transparentBackground: m, prevAccumTexture: h, prevAlbedoTexture: g, prevNormalDepthTexture: _, renderWidth: v, renderHeight: y, visMode: b, auxGBufferEnabled: x, cleanAuxNormalEnabled: S } = e, C = x.greaterThan(z(0)), w = S.greaterThan(z(0));
|
|
9466
9478
|
return f(() => {
|
|
9467
|
-
let e = N(K.x).mul(16).add(N(
|
|
9468
|
-
p(e.lessThan(
|
|
9469
|
-
let
|
|
9470
|
-
p(
|
|
9471
|
-
let e = wc(n,
|
|
9472
|
-
|
|
9479
|
+
let e = N(K.x).mul(16).add(N(oe.x)), f = N(K.y).mul(16).add(N(oe.y));
|
|
9480
|
+
p(e.lessThan(v).and(f.lessThan(y)), () => {
|
|
9481
|
+
let v = z(f.mul(N(o.x)).add(e)), y = xc(t, v), x = y.xyz.toVar(), S = R(m, y.w, M(1)).toVar(), T = W(0).toVar(), E = W(0).xyz.toVar();
|
|
9482
|
+
p(C, () => {
|
|
9483
|
+
let e = wc(n, v);
|
|
9484
|
+
T.assign(Tc(e)), E.assign(W(Ec(e), 0).xyz);
|
|
9473
9485
|
});
|
|
9474
|
-
let
|
|
9475
|
-
p(c.and(d.not()).and(s.greaterThan(z(0))).and(l).and(
|
|
9476
|
-
let e =
|
|
9477
|
-
|
|
9478
|
-
|
|
9486
|
+
let D = H(M(e).add(.5), M(f).add(.5)).div(o);
|
|
9487
|
+
p(c.and(d.not()).and(s.greaterThan(z(0))).and(l).and(b.notEqual(N(11))), () => {
|
|
9488
|
+
let e = Oe(h, D, 0).toVar();
|
|
9489
|
+
x.assign(I(e.xyz, y.xyz, u)), p(C, () => {
|
|
9490
|
+
E.assign(I(Oe(g, D, 0).xyz, E, u)), p(w, () => {
|
|
9491
|
+
let e = Oe(_, D, 0).xyz.mul(2).sub(1), t = T.xyz.mul(2).sub(1).toVar(), n = I(e, t, u).toVar(), r = ie(n), i = R(r.greaterThan(1e-4), n.div(r), t);
|
|
9492
|
+
T.assign(W(i.mul(.5).add(.5), T.w));
|
|
9493
|
+
});
|
|
9479
9494
|
}), p(m, () => {
|
|
9480
|
-
S.assign(
|
|
9495
|
+
S.assign(I(e.w, y.w, u));
|
|
9481
9496
|
});
|
|
9482
|
-
}), p(
|
|
9483
|
-
|
|
9497
|
+
}), p(b.equal(N(11)), () => {
|
|
9498
|
+
x.assign(Iu(x));
|
|
9484
9499
|
});
|
|
9485
|
-
let
|
|
9486
|
-
je(r,
|
|
9487
|
-
je(i,
|
|
9500
|
+
let O = Ie(z(e), z(f));
|
|
9501
|
+
je(r, O, W(x, S)).toWriteOnly(), p(C, () => {
|
|
9502
|
+
je(i, O, T).toWriteOnly(), je(a, O, W(E, 1)).toWriteOnly();
|
|
9488
9503
|
});
|
|
9489
9504
|
});
|
|
9490
9505
|
});
|
|
@@ -9498,32 +9513,32 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
|
|
|
9498
9513
|
}), y = Ci.wrap(dl(v, n, r).toVar());
|
|
9499
9514
|
return p(l.equal(N(7)), () => {
|
|
9500
9515
|
let e = M(y.triTests).div(u);
|
|
9501
|
-
_.assign(
|
|
9516
|
+
_.assign(R(e.lessThan(1), W(U(e), 1), W(1, 0, 0, 1)));
|
|
9502
9517
|
}), p(l.equal(N(8)), () => {
|
|
9503
9518
|
let e = M(y.boxTests).div(u);
|
|
9504
|
-
_.assign(
|
|
9519
|
+
_.assign(R(e.lessThan(1), W(U(e), 1), W(1, 0, 0, 1)));
|
|
9505
9520
|
}), p(l.equal(N(10)), () => {
|
|
9506
9521
|
p(c, () => {
|
|
9507
9522
|
let e = bl({
|
|
9508
9523
|
tex: a,
|
|
9509
|
-
samp:
|
|
9524
|
+
samp: _e(a),
|
|
9510
9525
|
direction: t,
|
|
9511
9526
|
environmentMatrix: o,
|
|
9512
9527
|
environmentIntensity: s,
|
|
9513
9528
|
enableEnvironmentLight: c
|
|
9514
|
-
}).toVar(), n = A(e.xyz, Ui).toVar(), r = n, i =
|
|
9529
|
+
}).toVar(), n = A(e.xyz, Ui).toVar(), r = n, i = F(u.mul(.1), .001), l = n.div(i), m = se(n.add(1e-6)).add(10).div(10), h = R(u.greaterThan(1), l, m).toVar(), g = U(0).toVar();
|
|
9515
9530
|
p(h.lessThan(.2), () => {
|
|
9516
|
-
g.assign(
|
|
9531
|
+
g.assign(I(U(0, 0, 0), U(0, 0, .5), h.mul(5)));
|
|
9517
9532
|
}).ElseIf(h.lessThan(.4), () => {
|
|
9518
|
-
g.assign(
|
|
9533
|
+
g.assign(I(U(0, 0, .5), U(0, 0, 1), h.sub(.2).mul(5)));
|
|
9519
9534
|
}).ElseIf(h.lessThan(.6), () => {
|
|
9520
|
-
g.assign(
|
|
9535
|
+
g.assign(I(U(0, 0, 1), U(0, 1, 0), h.sub(.4).mul(5)));
|
|
9521
9536
|
}).ElseIf(h.lessThan(.8), () => {
|
|
9522
|
-
g.assign(
|
|
9537
|
+
g.assign(I(U(0, 1, 0), U(1, 1, 0), h.sub(.6).mul(5)));
|
|
9523
9538
|
}).ElseIf(h.lessThan(1), () => {
|
|
9524
|
-
g.assign(
|
|
9539
|
+
g.assign(I(U(1, 1, 0), U(1, 0, 0), h.sub(.8).mul(5)));
|
|
9525
9540
|
}).Else(() => {
|
|
9526
|
-
g.assign(
|
|
9541
|
+
g.assign(I(U(1, 0, 0), U(1, 1, 1), le(h.sub(1), 1)));
|
|
9527
9542
|
});
|
|
9528
9543
|
let v = d.div(f);
|
|
9529
9544
|
p(v.x.lessThan(.1).and(v.y.lessThan(.1)), () => {
|
|
@@ -9539,9 +9554,9 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
|
|
|
9539
9554
|
p(y.didHit.not(), () => {
|
|
9540
9555
|
_.assign(W(0, 0, 0, 1));
|
|
9541
9556
|
}).Else(() => {
|
|
9542
|
-
let t = yi.wrap(ca(y.materialIndex, i)).toVar(), n = Ai.wrap(Oo(t, y.uv, y.normal)).toVar().emissive.toVar(), r =
|
|
9557
|
+
let t = yi.wrap(ca(y.materialIndex, i)).toVar(), n = Ai.wrap(Oo(t, y.uv, y.normal)).toVar().emissive.toVar(), r = ie(n).toVar();
|
|
9543
9558
|
p(r.greaterThan(0), () => {
|
|
9544
|
-
let t = n.div(
|
|
9559
|
+
let t = n.div(F(r.mul(.1), .001)).toVar(), i = ie(e.sub(y.hitPoint)), a = E(M(1).sub(i.div(10)), 0, 1), o = I(t, t.mul(U(1, .8, .6)), a.mul(.3));
|
|
9545
9560
|
_.assign(W(o, 1));
|
|
9546
9561
|
}).Else(() => {
|
|
9547
9562
|
_.assign(W(0, 0, .1, 1));
|
|
@@ -9551,7 +9566,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
|
|
|
9551
9566
|
p(y.didHit.not(), () => {
|
|
9552
9567
|
_.assign(W(.5, .5, 1, 1));
|
|
9553
9568
|
}).Else(() => {
|
|
9554
|
-
let e = yi.wrap(ca(y.materialIndex, i)).toVar(), t =
|
|
9569
|
+
let e = yi.wrap(ca(y.materialIndex, i)).toVar(), t = L(Ai.wrap(Oo(e, y.uv, y.normal)).toVar().normal);
|
|
9555
9570
|
_.assign(W(zu({ normal: t }), 1));
|
|
9556
9571
|
});
|
|
9557
9572
|
}), p(l.equal(N(2)), () => {
|
|
@@ -9576,7 +9591,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
|
|
|
9576
9591
|
p(y.didHit.not(), () => {
|
|
9577
9592
|
_.assign(W(0, 0, 0, 1));
|
|
9578
9593
|
}).Else(() => {
|
|
9579
|
-
let e = yi.wrap(ca(y.materialIndex, i)).toVar(), t = Ai.wrap(Oo(e, y.uv, y.normal)).toVar(), l = t.albedo.rgb, u =
|
|
9594
|
+
let e = yi.wrap(ca(y.materialIndex, i)).toVar(), t = Ai.wrap(Oo(e, y.uv, y.normal)).toVar(), l = t.albedo.rgb, u = L(t.normal).toVar(), f = zn({ state: Bn({ seed: z(d.x).mul(z(1973)).add(z(d.y).mul(z(9277))).add(g.mul(z(26699))) }) }).toVar(), m = La({
|
|
9580
9595
|
N: u,
|
|
9581
9596
|
xi: H(Y(f).toVar(), Y(f).toVar())
|
|
9582
9597
|
}).toVar(), h = vi({
|
|
@@ -9587,7 +9602,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
|
|
|
9587
9602
|
p(c, () => {
|
|
9588
9603
|
b.assign(bl({
|
|
9589
9604
|
tex: a,
|
|
9590
|
-
samp:
|
|
9605
|
+
samp: _e(a),
|
|
9591
9606
|
direction: m,
|
|
9592
9607
|
environmentMatrix: o,
|
|
9593
9608
|
environmentIntensity: s,
|
|
@@ -9597,9 +9612,9 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
|
|
|
9597
9612
|
}).Else(() => {
|
|
9598
9613
|
let e = yi.wrap(ca(v.materialIndex, i)).toVar(), t = Ai.wrap(Oo(e, v.uv, v.normal)).toVar();
|
|
9599
9614
|
b.assign(t.emissive), p(c, () => {
|
|
9600
|
-
let e =
|
|
9615
|
+
let e = L(t.normal).toVar(), n = bl({
|
|
9601
9616
|
tex: a,
|
|
9602
|
-
samp:
|
|
9617
|
+
samp: _e(a),
|
|
9603
9618
|
direction: e,
|
|
9604
9619
|
environmentMatrix: o,
|
|
9605
9620
|
environmentIntensity: s,
|
|
@@ -9613,9 +9628,9 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
|
|
|
9613
9628
|
});
|
|
9614
9629
|
}), p(l.equal(N(6)), () => {
|
|
9615
9630
|
p(y.didHit, () => {
|
|
9616
|
-
let e = y.normal.toVar(), n =
|
|
9631
|
+
let e = y.normal.toVar(), n = L(t.sub(e.mul(A(t, e).mul(2)))).toVar(), r = bl({
|
|
9617
9632
|
tex: a,
|
|
9618
|
-
samp:
|
|
9633
|
+
samp: _e(a),
|
|
9619
9634
|
direction: n,
|
|
9620
9635
|
environmentMatrix: o,
|
|
9621
9636
|
environmentIntensity: s,
|
|
@@ -9625,7 +9640,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
|
|
|
9625
9640
|
}).Else(() => {
|
|
9626
9641
|
let e = bl({
|
|
9627
9642
|
tex: a,
|
|
9628
|
-
samp:
|
|
9643
|
+
samp: _e(a),
|
|
9629
9644
|
direction: t,
|
|
9630
9645
|
environmentMatrix: o,
|
|
9631
9646
|
environmentIntensity: s,
|
|
@@ -9638,7 +9653,7 @@ var Ru = /* @__PURE__ */ G("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n ret
|
|
|
9638
9653
|
function Hu(e) {
|
|
9639
9654
|
let { writeColorTex: t, writeNDTex: n, writeAlbedoTex: r, resolution: i, renderWidth: a, renderHeight: o, cameraWorldMatrix: s, cameraProjectionMatrixInverse: c, cameraProjectionMatrix: l, cameraViewMatrix: u, enableDOF: d, focalLength: m, aperture: h, focusDistance: g, sceneScale: _, apertureScale: v, anamorphicRatio: y, bvhBuffer: b, triangleBuffer: x, materialBuffer: S, envTexture: C, environmentMatrix: w, environmentIntensity: T, enableEnvironmentLight: E, visMode: D, debugVisScale: O, frame: k } = e;
|
|
9640
9655
|
return f(() => {
|
|
9641
|
-
let e = N(K.x).mul(16).add(N(
|
|
9656
|
+
let e = N(K.x).mul(16).add(N(oe.x)), f = N(K.y).mul(16).add(N(oe.y));
|
|
9642
9657
|
p(e.lessThan(a).and(f.lessThan(o)), () => {
|
|
9643
9658
|
let a = H(M(e).add(.5), M(f).add(.5)), o = zn({ state: z(f.mul(N(i.x)).add(e)).add(z(1)) }).toVar(), A = a.div(i).mul(2).sub(1).toVar();
|
|
9644
9659
|
A.y.assign(A.y.negate());
|
|
@@ -9663,7 +9678,7 @@ function Uu({ sortGlobalHistogram: e, bins: t = 256 }) {
|
|
|
9663
9678
|
}
|
|
9664
9679
|
function Wu({ hitBufferRO: e, activeIndicesReadRO: t, sortGlobalHistogram: n, counters: r, bins: i = 256 }) {
|
|
9665
9680
|
return f(() => {
|
|
9666
|
-
let a = re, o =
|
|
9681
|
+
let a = re, o = oe.x, s = En("uint", i);
|
|
9667
9682
|
p(o.lessThan(z(i)), () => {
|
|
9668
9683
|
C(s.element(o), z(0));
|
|
9669
9684
|
}), ze();
|
|
@@ -9707,7 +9722,7 @@ function Ku({ hitBufferRO: e, activeIndicesReadRO: t, sortedIndicesRW: n, sortGl
|
|
|
9707
9722
|
//#region src/Stages/PathTracer.js
|
|
9708
9723
|
var qu = class extends lc {
|
|
9709
9724
|
constructor(e, t, n, r = {}) {
|
|
9710
|
-
super(e, t, n, r), this.name = "PathTracer", this._packedBuffers = null, this._queueManager = null, this._kernelManager = null, this._gBufferAttr = null, this._wavefrontReady = !1, this._auxGBufferEnabled = !1, this._auxGBufferUniform = V(0, "uint"), this._useDynamicDispatch = !0, this._sortMaterials = !1, this._useSubgroupCompact = !1, this._lastBounceCounts = null, this._lastBounceCountsBudget = -1, this._readbackPending = !1, this._readbackEveryNFrames = 4, this._readbackFrameCounter = 0, this._readbackGeneration = 0, this._curveSizingValid = !1, this._bounceEarlyExitThreshold = 100, this._wfRenderWidth = V(1920, "int"), this._wfRenderHeight = V(1080, "int"), this._wfMaxRayCount = V(0, "uint"), this._wfCurrentBounce = V(0, "int"), this.vramTracker = new $c(this.renderer), this._registerVRAMProviders(), console.log("PathTracer: initialized (wavefront)");
|
|
9725
|
+
super(e, t, n, r), this.name = "PathTracer", this._packedBuffers = null, this._queueManager = null, this._kernelManager = null, this._gBufferAttr = null, this._wavefrontReady = !1, this._auxGBufferEnabled = !1, this._auxGBufferUniform = V(0, "uint"), this._cleanAuxNormalEnabled = !1, this._cleanAuxNormalUniform = V(0, "uint"), this._useDynamicDispatch = !0, this._sortMaterials = !1, this._useSubgroupCompact = !1, this._lastBounceCounts = null, this._lastBounceCountsBudget = -1, this._readbackPending = !1, this._readbackEveryNFrames = 4, this._readbackFrameCounter = 0, this._readbackGeneration = 0, this._curveSizingValid = !1, this._bounceEarlyExitThreshold = 100, this._wfRenderWidth = V(1920, "int"), this._wfRenderHeight = V(1080, "int"), this._wfMaxRayCount = V(0, "uint"), this._wfCurrentBounce = V(0, "int"), this.vramTracker = new $c(this.renderer), this._registerVRAMProviders(), console.log("PathTracer: initialized (wavefront)");
|
|
9711
9726
|
}
|
|
9712
9727
|
_registerVRAMProviders() {
|
|
9713
9728
|
let e = this.vramTracker;
|
|
@@ -9764,7 +9779,7 @@ var qu = class extends lc {
|
|
|
9764
9779
|
let t = this.frameCount, n = this.renderMode.value, r = null;
|
|
9765
9780
|
n === 1 && t === 0 && (r = this.maxBounces.value, this.maxBounces.value = 1), this._handleResize(), this.manageASVGFForRenderMode(n), e && e.setState("tileRenderingComplete", !0), this.cameraChanged = this._updateCameraUniforms(), this.cameraOptimizer?.updateInteractionMode(this.cameraChanged), this.cameraChanged && (this._curveSizingValid = !1, this._readbackGeneration++), this._updateAccumulationUniforms(t, n), this.frame.value = t, this._setWfDispatch();
|
|
9766
9781
|
let i = this.storageTextures.getReadTextures();
|
|
9767
|
-
this.shaderBuilder.prevColorTexNode && (this.shaderBuilder.prevColorTexNode.value = i.color, this.shaderBuilder.prevAlbedoTexNode.value = i.albedo), this._refreshWfTextureNodes();
|
|
9782
|
+
this.shaderBuilder.prevColorTexNode && (this.shaderBuilder.prevColorTexNode.value = i.color, this.shaderBuilder.prevAlbedoTexNode.value = i.albedo, this.shaderBuilder.prevNormalDepthTexNode.value = i.normalDepth), this._refreshWfTextureNodes();
|
|
9768
9783
|
let a = this._kernelManager;
|
|
9769
9784
|
if ((this.visMode?.value | 0) > 0 && this.visMode.value !== 11) {
|
|
9770
9785
|
a.dispatch("debug"), this.storageTextures.copyToReadTargets(this.renderer);
|
|
@@ -9811,6 +9826,9 @@ var qu = class extends lc {
|
|
|
9811
9826
|
setAuxGBufferEnabled(e) {
|
|
9812
9827
|
e = !!e, this._auxGBufferEnabled !== e && (this._auxGBufferEnabled = e, this._auxGBufferUniform.value = +!!e, this.reset());
|
|
9813
9828
|
}
|
|
9829
|
+
setCleanAuxNormal(e) {
|
|
9830
|
+
e = !!e, this._cleanAuxNormalEnabled !== e && (this._cleanAuxNormalEnabled = e, this._cleanAuxNormalUniform.value = +!!e, this.reset());
|
|
9831
|
+
}
|
|
9814
9832
|
setSize(e, t) {
|
|
9815
9833
|
let n = this.storageTextures.renderWidth, r = this.storageTextures.renderHeight;
|
|
9816
9834
|
super.setSize(e, t), this._rebuildKernelsIfResized(n, r);
|
|
@@ -9862,14 +9880,14 @@ var qu = class extends lc {
|
|
|
9862
9880
|
this._bounceEarlyExitThreshold !== -1 && (this._bounceEarlyExitThreshold = Math.max(100, Math.floor(r / 1e3))), this._packedBuffers ? this._packedBuffers.resize(r) : this._packedBuffers = new hc(r, this.renderer);
|
|
9863
9881
|
let i = hc.requiredCapacity(r) * 1;
|
|
9864
9882
|
mc(this.renderer, this._gBufferAttr), this._gBufferAttr = new o(new Uint32Array(i * 4), 4);
|
|
9865
|
-
let a =
|
|
9883
|
+
let a = Se(this._gBufferAttr, "uvec4"), s = Se(this._gBufferAttr, "uvec4").toReadOnly();
|
|
9866
9884
|
this._queueManager ? this._queueManager.resize(this._packedBuffers.capacity) : this._queueManager = new qc(this._packedBuffers.capacity, this.renderer), this._kernelManager ||= new tl(this.renderer);
|
|
9867
9885
|
let c = this._packedBuffers, l = this._queueManager;
|
|
9868
9886
|
this._wfRenderWidth.value = t, this._wfRenderHeight.value = n, this._wfMaxRayCount.value = r;
|
|
9869
|
-
let u = this.shaderBuilder.prevColorTexNode, d = this.shaderBuilder.prevAlbedoTexNode, m = this.storageTextures.getWriteTextures(),
|
|
9870
|
-
C(
|
|
9887
|
+
let u = this.shaderBuilder.prevColorTexNode, d = this.shaderBuilder.prevAlbedoTexNode, m = this.shaderBuilder.prevNormalDepthTexNode, g = this.storageTextures.getWriteTextures(), _ = l.getCounters(), v = f(() => {
|
|
9888
|
+
C(_.element(z(Gc.ACTIVE_RAY_COUNT)), z(0));
|
|
9871
9889
|
});
|
|
9872
|
-
this._kernelManager.register("resetCounters",
|
|
9890
|
+
this._kernelManager.register("resetCounters", v().compute([
|
|
9873
9891
|
1,
|
|
9874
9892
|
1,
|
|
9875
9893
|
1
|
|
@@ -9878,10 +9896,10 @@ var qu = class extends lc {
|
|
|
9878
9896
|
1,
|
|
9879
9897
|
1
|
|
9880
9898
|
]));
|
|
9881
|
-
let
|
|
9882
|
-
C(
|
|
9899
|
+
let y = f(() => {
|
|
9900
|
+
C(_.element(z(Gc.ACTIVE_RAY_COUNT)), z(0));
|
|
9883
9901
|
});
|
|
9884
|
-
this._kernelManager.register("resetActiveCounter",
|
|
9902
|
+
this._kernelManager.register("resetActiveCounter", y().compute([
|
|
9885
9903
|
1,
|
|
9886
9904
|
1,
|
|
9887
9905
|
1
|
|
@@ -9890,11 +9908,11 @@ var qu = class extends lc {
|
|
|
9890
9908
|
1,
|
|
9891
9909
|
1
|
|
9892
9910
|
]));
|
|
9893
|
-
let
|
|
9894
|
-
let e = S(
|
|
9895
|
-
|
|
9911
|
+
let b = l.getBounceCounts(), x = this._wfCurrentBounce, w = f(() => {
|
|
9912
|
+
let e = S(_.element(z(Gc.ACTIVE_RAY_COUNT))), t = z(x).clamp(z(0), z(l.MAX_BOUNCE_SNAPSHOTS - 1));
|
|
9913
|
+
b.element(t).assign(e), C(_.element(z(Gc.ENTERING_COUNT)), e);
|
|
9896
9914
|
});
|
|
9897
|
-
this._kernelManager.register("snapshotBounceCount",
|
|
9915
|
+
this._kernelManager.register("snapshotBounceCount", w().compute([
|
|
9898
9916
|
1,
|
|
9899
9917
|
1,
|
|
9900
9918
|
1
|
|
@@ -9903,13 +9921,13 @@ var qu = class extends lc {
|
|
|
9903
9921
|
1,
|
|
9904
9922
|
1
|
|
9905
9923
|
]));
|
|
9906
|
-
let
|
|
9924
|
+
let T = l.activeIndices.a, E = f(() => {
|
|
9907
9925
|
let e = re;
|
|
9908
|
-
|
|
9909
|
-
C(
|
|
9926
|
+
T.element(e).assign(e), p(e.equal(z(0)), () => {
|
|
9927
|
+
C(_.element(z(Gc.ACTIVE_RAY_COUNT)), this._wfMaxRayCount), C(_.element(z(Gc.ENTERING_COUNT)), this._wfMaxRayCount);
|
|
9910
9928
|
});
|
|
9911
9929
|
});
|
|
9912
|
-
this._kernelManager.register("initActiveIndices",
|
|
9930
|
+
this._kernelManager.register("initActiveIndices", E().compute([
|
|
9913
9931
|
Math.ceil(r / 256),
|
|
9914
9932
|
1,
|
|
9915
9933
|
1
|
|
@@ -9918,7 +9936,7 @@ var qu = class extends lc {
|
|
|
9918
9936
|
1,
|
|
9919
9937
|
1
|
|
9920
9938
|
]));
|
|
9921
|
-
let
|
|
9939
|
+
let D = ml({
|
|
9922
9940
|
rayBufferRW: c.rayBuffer.rw,
|
|
9923
9941
|
rngBufferRW: c.rngBuffer.rw,
|
|
9924
9942
|
gBufferRW: a,
|
|
@@ -9939,7 +9957,7 @@ var qu = class extends lc {
|
|
|
9939
9957
|
transparentBackground: this.transparentBackground,
|
|
9940
9958
|
auxGBufferEnabled: this._auxGBufferUniform
|
|
9941
9959
|
});
|
|
9942
|
-
this._kernelManager.register("generate",
|
|
9960
|
+
this._kernelManager.register("generate", D().compute([
|
|
9943
9961
|
Math.ceil(t / 16),
|
|
9944
9962
|
Math.ceil(n / 16),
|
|
9945
9963
|
1
|
|
@@ -9948,23 +9966,23 @@ var qu = class extends lc {
|
|
|
9948
9966
|
16,
|
|
9949
9967
|
1
|
|
9950
9968
|
]));
|
|
9951
|
-
let
|
|
9952
|
-
co(
|
|
9953
|
-
let
|
|
9969
|
+
let O = this.bvhStorageNode, k = this.triangleStorageNode, A = this.materialData.materialStorageNode, j = Oe(this.environment.envCDFTexture), M = this.lightStorageNode, ee = this.materialData, te = this.environment, ne = ho(ee.srgbBuckets), N = ho(ee.linearBuckets);
|
|
9970
|
+
co(ne, N), Mo(ne);
|
|
9971
|
+
let P = te.environmentTexture ? Oe(te.environmentTexture) : e.envTex;
|
|
9954
9972
|
this._wfTexNodes = {
|
|
9955
|
-
envTex:
|
|
9956
|
-
envCDFTex:
|
|
9957
|
-
srgbBuckets:
|
|
9958
|
-
linearBuckets:
|
|
9973
|
+
envTex: P,
|
|
9974
|
+
envCDFTex: j,
|
|
9975
|
+
srgbBuckets: ne,
|
|
9976
|
+
linearBuckets: N
|
|
9959
9977
|
}, this._sortMaterials = (X.wavefrontSortMaterials ?? !1) && (this.materialData?.materialCount ?? 0) > 8;
|
|
9960
9978
|
let ie = hl({
|
|
9961
|
-
bvhBuffer:
|
|
9962
|
-
triangleBuffer:
|
|
9963
|
-
materialBuffer:
|
|
9979
|
+
bvhBuffer: O,
|
|
9980
|
+
triangleBuffer: k,
|
|
9981
|
+
materialBuffer: A,
|
|
9964
9982
|
rayBufferRO: c.rayBuffer.ro,
|
|
9965
9983
|
hitBufferRW: c.hitBuffer.rw,
|
|
9966
9984
|
activeIndicesRO: l.getActiveReadRO(),
|
|
9967
|
-
counters:
|
|
9985
|
+
counters: _,
|
|
9968
9986
|
maxRayCount: this._wfMaxRayCount
|
|
9969
9987
|
});
|
|
9970
9988
|
if (this._kernelManager.register("extend", ie().compute([
|
|
@@ -9992,7 +10010,7 @@ var qu = class extends lc {
|
|
|
9992
10010
|
hitBufferRO: c.hitBuffer.ro,
|
|
9993
10011
|
activeIndicesReadRO: l.getActiveReadRO(),
|
|
9994
10012
|
sortGlobalHistogram: e,
|
|
9995
|
-
counters:
|
|
10013
|
+
counters: _,
|
|
9996
10014
|
bins: t
|
|
9997
10015
|
})().compute([
|
|
9998
10016
|
Math.ceil(r / 256),
|
|
@@ -10018,7 +10036,7 @@ var qu = class extends lc {
|
|
|
10018
10036
|
activeIndicesReadRO: l.getActiveReadRO(),
|
|
10019
10037
|
sortedIndicesRW: l.getSortedRW(),
|
|
10020
10038
|
sortGlobalHistogram: e,
|
|
10021
|
-
counters:
|
|
10039
|
+
counters: _,
|
|
10022
10040
|
bins: t
|
|
10023
10041
|
})().compute([
|
|
10024
10042
|
Math.ceil(r / 256),
|
|
@@ -10033,17 +10051,17 @@ var qu = class extends lc {
|
|
|
10033
10051
|
let ae = Nu({
|
|
10034
10052
|
gBufferRW: a,
|
|
10035
10053
|
envCompensationDelta: this.envCompensationDelta,
|
|
10036
|
-
bvhBuffer:
|
|
10037
|
-
triangleBuffer:
|
|
10038
|
-
materialBuffer:
|
|
10039
|
-
envCDFTexture:
|
|
10040
|
-
lightBuffer:
|
|
10054
|
+
bvhBuffer: O,
|
|
10055
|
+
triangleBuffer: k,
|
|
10056
|
+
materialBuffer: A,
|
|
10057
|
+
envCDFTexture: j,
|
|
10058
|
+
lightBuffer: M,
|
|
10041
10059
|
rayBufferRW: c.rayBuffer.rw,
|
|
10042
10060
|
rngBufferRW: c.rngBuffer.rw,
|
|
10043
10061
|
hitBufferRO: c.hitBuffer.ro,
|
|
10044
|
-
counters:
|
|
10062
|
+
counters: _,
|
|
10045
10063
|
activeIndicesRO: this._sortMaterials ? l.getSortedRO() : l.getActiveReadRO(),
|
|
10046
|
-
envTexture:
|
|
10064
|
+
envTexture: P,
|
|
10047
10065
|
environmentIntensity: this.environmentIntensity,
|
|
10048
10066
|
envMatrix: this.environmentMatrix,
|
|
10049
10067
|
enableEnvironmentLight: this.enableEnvironment,
|
|
@@ -10105,7 +10123,7 @@ var qu = class extends lc {
|
|
|
10105
10123
|
rayBufferRO: c.rayBuffer.ro,
|
|
10106
10124
|
activeIndicesReadRO: l.getActiveReadRO(),
|
|
10107
10125
|
activeIndicesWriteRW: l.getActiveWrite(),
|
|
10108
|
-
counters:
|
|
10126
|
+
counters: _,
|
|
10109
10127
|
currentActiveCount: this._wfMaxRayCount
|
|
10110
10128
|
});
|
|
10111
10129
|
this._kernelManager.register("compact", se().compute([
|
|
@@ -10118,7 +10136,7 @@ var qu = class extends lc {
|
|
|
10118
10136
|
1
|
|
10119
10137
|
]));
|
|
10120
10138
|
let ce = f(() => {
|
|
10121
|
-
C(
|
|
10139
|
+
C(_.element(z(Gc.ENTERING_COUNT)), this._wfMaxRayCount);
|
|
10122
10140
|
});
|
|
10123
10141
|
this._kernelManager.register("enterFull", ce().compute([
|
|
10124
10142
|
1,
|
|
@@ -10129,13 +10147,13 @@ var qu = class extends lc {
|
|
|
10129
10147
|
1,
|
|
10130
10148
|
1
|
|
10131
10149
|
]));
|
|
10132
|
-
let
|
|
10150
|
+
let F = l.activeIndicesRO.b, le = l.activeIndices.a, I = f(() => {
|
|
10133
10151
|
let e = re;
|
|
10134
|
-
p(e.greaterThanEqual(S(
|
|
10152
|
+
p(e.greaterThanEqual(S(_.element(z(Gc.ACTIVE_RAY_COUNT)))), () => {
|
|
10135
10153
|
h();
|
|
10136
|
-
}),
|
|
10154
|
+
}), le.element(e).assign(F.element(e));
|
|
10137
10155
|
});
|
|
10138
|
-
this._kernelManager.register("compactCopyback",
|
|
10156
|
+
this._kernelManager.register("compactCopyback", I().compute([
|
|
10139
10157
|
Math.ceil(r / 256),
|
|
10140
10158
|
1,
|
|
10141
10159
|
1
|
|
@@ -10144,12 +10162,12 @@ var qu = class extends lc {
|
|
|
10144
10162
|
1,
|
|
10145
10163
|
1
|
|
10146
10164
|
]));
|
|
10147
|
-
let
|
|
10165
|
+
let ue = Lu({
|
|
10148
10166
|
rayBufferRO: c.rayBuffer.ro,
|
|
10149
10167
|
gBufferRO: s,
|
|
10150
|
-
writeColorTex:
|
|
10151
|
-
writeNDTex:
|
|
10152
|
-
writeAlbedoTex:
|
|
10168
|
+
writeColorTex: g.color,
|
|
10169
|
+
writeNDTex: g.normalDepth,
|
|
10170
|
+
writeAlbedoTex: g.albedo,
|
|
10153
10171
|
resolution: this.resolution,
|
|
10154
10172
|
frame: this.frame,
|
|
10155
10173
|
enableAccumulation: this.enableAccumulation,
|
|
@@ -10159,12 +10177,14 @@ var qu = class extends lc {
|
|
|
10159
10177
|
transparentBackground: this.transparentBackground,
|
|
10160
10178
|
prevAccumTexture: u,
|
|
10161
10179
|
prevAlbedoTexture: d,
|
|
10180
|
+
prevNormalDepthTexture: m,
|
|
10162
10181
|
renderWidth: this._wfRenderWidth,
|
|
10163
10182
|
renderHeight: this._wfRenderHeight,
|
|
10164
10183
|
visMode: this.visMode,
|
|
10165
|
-
auxGBufferEnabled: this._auxGBufferUniform
|
|
10184
|
+
auxGBufferEnabled: this._auxGBufferUniform,
|
|
10185
|
+
cleanAuxNormalEnabled: this._cleanAuxNormalUniform
|
|
10166
10186
|
});
|
|
10167
|
-
this._kernelManager.register("finalWrite",
|
|
10187
|
+
this._kernelManager.register("finalWrite", ue().compute([
|
|
10168
10188
|
Math.ceil(t / 16),
|
|
10169
10189
|
Math.ceil(n / 16),
|
|
10170
10190
|
1
|
|
@@ -10173,10 +10193,10 @@ var qu = class extends lc {
|
|
|
10173
10193
|
16,
|
|
10174
10194
|
1
|
|
10175
10195
|
]));
|
|
10176
|
-
let
|
|
10177
|
-
writeColorTex:
|
|
10178
|
-
writeNDTex:
|
|
10179
|
-
writeAlbedoTex:
|
|
10196
|
+
let L = Hu({
|
|
10197
|
+
writeColorTex: g.color,
|
|
10198
|
+
writeNDTex: g.normalDepth,
|
|
10199
|
+
writeAlbedoTex: g.albedo,
|
|
10180
10200
|
resolution: this.resolution,
|
|
10181
10201
|
renderWidth: this._wfRenderWidth,
|
|
10182
10202
|
renderHeight: this._wfRenderHeight,
|
|
@@ -10191,10 +10211,10 @@ var qu = class extends lc {
|
|
|
10191
10211
|
sceneScale: this.sceneScale,
|
|
10192
10212
|
apertureScale: this.apertureScale,
|
|
10193
10213
|
anamorphicRatio: this.anamorphicRatio,
|
|
10194
|
-
bvhBuffer:
|
|
10195
|
-
triangleBuffer:
|
|
10196
|
-
materialBuffer:
|
|
10197
|
-
envTexture:
|
|
10214
|
+
bvhBuffer: O,
|
|
10215
|
+
triangleBuffer: k,
|
|
10216
|
+
materialBuffer: A,
|
|
10217
|
+
envTexture: P,
|
|
10198
10218
|
environmentMatrix: this.environmentMatrix,
|
|
10199
10219
|
environmentIntensity: this.environmentIntensity,
|
|
10200
10220
|
enableEnvironmentLight: this.enableEnvironment,
|
|
@@ -10202,7 +10222,7 @@ var qu = class extends lc {
|
|
|
10202
10222
|
debugVisScale: this.debugVisScale,
|
|
10203
10223
|
frame: this.frame
|
|
10204
10224
|
});
|
|
10205
|
-
this._kernelManager.register("debug",
|
|
10225
|
+
this._kernelManager.register("debug", L().compute([
|
|
10206
10226
|
Math.ceil(t / 16),
|
|
10207
10227
|
Math.ceil(n / 16),
|
|
10208
10228
|
1
|
|
@@ -10267,19 +10287,19 @@ var qu = class extends lc {
|
|
|
10267
10287
|
let e = this.pathTracer;
|
|
10268
10288
|
if (!e) return !1;
|
|
10269
10289
|
let t = e.materialData?.materialStorageAttr, n = e.triangleStorageAttr && e.triangleStorageAttr !== this._lastTriAttr, r = e.bvhStorageAttr && e.bvhStorageAttr !== this._lastBvhAttr, i = t && t !== this._lastMatAttr;
|
|
10270
|
-
return (n || r || i) && (this._computeNode?.dispose?.(), this._computeNode = null, this._computeBuilt = !1, this._triStorageNode = null, this._bvhStorageNode = null, this._matStorageNode = null, this._dirty = !0), e.triangleStorageAttr && !this._triStorageNode && (this._triStorageNode =
|
|
10290
|
+
return (n || r || i) && (this._computeNode?.dispose?.(), this._computeNode = null, this._computeBuilt = !1, this._triStorageNode = null, this._bvhStorageNode = null, this._matStorageNode = null, this._dirty = !0), e.triangleStorageAttr && !this._triStorageNode && (this._triStorageNode = Se(e.triangleStorageAttr, "vec4", e.triangleStorageAttr.count).toReadOnly()), e.bvhStorageAttr && !this._bvhStorageNode && (this._bvhStorageNode = Se(e.bvhStorageAttr, "vec4", e.bvhStorageAttr.count).toReadOnly()), t && !this._matStorageNode && (this._matStorageNode = Se(t, "vec4", t.count).toReadOnly()), this._linearBuckets && go(this._linearBuckets, e.materialData?.linearBuckets), this._lastTriAttr = e.triangleStorageAttr || this._lastTriAttr, this._lastBvhAttr = e.bvhStorageAttr || this._lastBvhAttr, this._lastMatAttr = t || this._lastMatAttr, !!(this._triStorageNode && this._bvhStorageNode && this._matStorageNode);
|
|
10271
10291
|
}
|
|
10272
10292
|
_buildCompute() {
|
|
10273
10293
|
let e = this._triStorageNode, t = this._bvhStorageNode, n = this._matStorageNode;
|
|
10274
10294
|
this._linearBuckets = ho(this.pathTracer?.materialData?.linearBuckets), co(ho(null), this._linearBuckets);
|
|
10275
10295
|
let r = this.cameraWorldMatrix, i = this.cameraProjectionMatrixInverse, a = this.resolutionWidth, o = this.resolutionHeight, s = this._outputStorageTex, c = this._shadingStorageTex;
|
|
10276
10296
|
this._computeNode = f(([r, i]) => {
|
|
10277
|
-
let l = N(K.x).mul(8).add(N(
|
|
10297
|
+
let l = N(K.x).mul(8).add(N(oe.x)), u = N(K.y).mul(8).add(N(oe.y));
|
|
10278
10298
|
p(l.lessThan(N(a)).and(u.lessThan(N(o))), () => {
|
|
10279
|
-
let d = U(M(l).add(.5).div(a).mul(2).sub(1), M(u).add(.5).div(o).mul(2).sub(1).negate(), 1), f = i.mul(W(d, 1)), m =
|
|
10299
|
+
let d = U(M(l).add(.5).div(a).mul(2).sub(1), M(u).add(.5).div(o).mul(2).sub(1).negate(), 1), f = i.mul(W(d, 1)), m = L(ce(r[0].xyz, r[1].xyz, r[2].xyz).mul(f.xyz.div(f.w))), h = vi({
|
|
10280
10300
|
origin: U(r[3]),
|
|
10281
10301
|
direction: m
|
|
10282
|
-
}), g = Ci.wrap(dl(h, t, e)), _ = g.normal.mul(.5).add(.5), v =
|
|
10302
|
+
}), g = Ci.wrap(dl(h, t, e)), _ = g.normal.mul(.5).add(.5), v = le(g.dst, M(65504)), y = g.didHit.select(W(_, v), W(0, 0, 0, M(65504)));
|
|
10283
10303
|
je(s, Ie(z(l), z(u)), y).toWriteOnly();
|
|
10284
10304
|
let b = g.normal.toVar();
|
|
10285
10305
|
p(g.didHit, () => {
|
|
@@ -10354,11 +10374,11 @@ var qu = class extends lc {
|
|
|
10354
10374
|
_buildScreenSpaceCompute() {
|
|
10355
10375
|
let e = this._normalDepthTexNode, t = this.cameraWorldMatrix, n = this.cameraProjectionMatrixInverse, r = this.prevVP, i = this.resolutionWidth, a = this.resolutionHeight, o = this._screenSpaceStorageTex;
|
|
10356
10376
|
this._screenSpaceComputeNode = f(([t, n]) => {
|
|
10357
|
-
let s = N(K.x).mul(16).add(N(
|
|
10377
|
+
let s = N(K.x).mul(16).add(N(oe.x)), c = N(K.y).mul(16).add(N(oe.y));
|
|
10358
10378
|
p(s.lessThan(N(i)).and(c.lessThan(N(a))), () => {
|
|
10359
|
-
let l =
|
|
10379
|
+
let l = ke(e, P(s, c)).w, u = H(M(s).add(.5).div(i), M(c).add(.5).div(a)), d = W(0, 0, l, 1).toVar();
|
|
10360
10380
|
p(l.lessThan(M(6e4)), () => {
|
|
10361
|
-
let e = U(M(s).add(.5).div(i).mul(2).sub(1), M(c).add(.5).div(a).mul(2).sub(1).negate(), 1), o = n.mul(W(e, 1)), f =
|
|
10381
|
+
let e = U(M(s).add(.5).div(i).mul(2).sub(1), M(c).add(.5).div(a).mul(2).sub(1).negate(), 1), o = n.mul(W(e, 1)), f = L(ce(t[0].xyz, t[1].xyz, t[2].xyz).mul(o.xyz.div(o.w))), p = U(t[3]).add(f.mul(l)), m = r.mul(W(p, 1)), h = m.xy.div(m.w), g = H(h.x.mul(.5).add(.5), h.y.mul(-.5).add(.5)), _ = u.sub(g), v = g.x.greaterThanEqual(0).and(g.x.lessThanEqual(1)).and(g.y.greaterThanEqual(0)).and(g.y.lessThanEqual(1));
|
|
10362
10382
|
d.assign(v.select(W(_, l, 1), W(M(1e3), M(1e3), l, 0)));
|
|
10363
10383
|
}), je(o, Ie(z(s), z(c)), d).toWriteOnly();
|
|
10364
10384
|
});
|
|
@@ -10375,11 +10395,11 @@ var qu = class extends lc {
|
|
|
10375
10395
|
_buildWorldSpaceCompute() {
|
|
10376
10396
|
let e = this._normalDepthTexNode, t = this.cameraWorldMatrix, n = this.cameraProjectionMatrixInverse, r = this.prevVP, i = this.isFirstFrameU, a = this.deltaTime, o = this.velocityScale, s = this.resolutionWidth, c = this.resolutionHeight, l = this._worldSpaceStorageTex;
|
|
10377
10397
|
this._worldSpaceComputeNode = f(([t, n]) => {
|
|
10378
|
-
let u = N(K.x).mul(16).add(N(
|
|
10398
|
+
let u = N(K.x).mul(16).add(N(oe.x)), d = N(K.y).mul(16).add(N(oe.y));
|
|
10379
10399
|
p(u.lessThan(N(s)).and(d.lessThan(N(c))), () => {
|
|
10380
|
-
let f =
|
|
10400
|
+
let f = ke(e, P(u, d)).w, m = W(0, 0, 0, 0).toVar();
|
|
10381
10401
|
p(i.lessThan(.5).and(f.lessThan(M(6e4))), () => {
|
|
10382
|
-
let e = U(M(u).add(.5).div(s).mul(2).sub(1), M(d).add(.5).div(c).mul(2).sub(1).negate(), 1), i = n.mul(W(e, 1)), l =
|
|
10402
|
+
let e = U(M(u).add(.5).div(s).mul(2).sub(1), M(d).add(.5).div(c).mul(2).sub(1).negate(), 1), i = n.mul(W(e, 1)), l = L(ce(t[0].xyz, t[1].xyz, t[2].xyz).mul(i.xyz.div(i.w))), p = U(t[3]).add(l.mul(f)), h = H(M(u).add(.5).div(s), M(d).add(.5).div(c)), g = r.mul(W(p, 1)), _ = g.xy.div(g.w), v = H(_.x.mul(.5).add(.5), _.y.mul(-.5).add(.5)), y = v.x.greaterThanEqual(0).and(v.x.lessThanEqual(1)).and(v.y.greaterThanEqual(0)).and(v.y.lessThanEqual(1)), b = h.sub(v), x = U(b.x.div(a).mul(o), b.y.div(a).mul(o), 0);
|
|
10383
10403
|
m.assign(y.select(W(x, 1), W(0, 0, 0, .5)));
|
|
10384
10404
|
}), je(l, Ie(z(u), z(d)), m).toWriteOnly();
|
|
10385
10405
|
});
|
|
@@ -10445,7 +10465,7 @@ var qu = class extends lc {
|
|
|
10445
10465
|
dispose() {
|
|
10446
10466
|
this._screenSpaceComputeNode?.dispose(), this._worldSpaceComputeNode?.dispose(), this._screenSpaceStorageTex?.dispose(), this._worldSpaceStorageTex?.dispose(), this.screenSpaceTarget?.dispose(), this.worldSpaceTarget?.dispose(), this._normalDepthTexNode?.dispose();
|
|
10447
10467
|
}
|
|
10448
|
-
}, Xu = (e) =>
|
|
10468
|
+
}, Xu = (e) => R(e.equal(e), e, M(0)).clamp(0, 1e7), Zu = (e) => U(Xu(e.x), Xu(e.y), Xu(e.z)), Qu = class extends Qn {
|
|
10449
10469
|
constructor(e, t = {}) {
|
|
10450
10470
|
super("ASVGF", {
|
|
10451
10471
|
...t,
|
|
@@ -10485,10 +10505,10 @@ var qu = class extends lc {
|
|
|
10485
10505
|
_buildGradientCompute() {
|
|
10486
10506
|
let e = this._colorTexNode, t = this._albedoTexNode, n = this._motionTexNode, r = this._readTemporalTexNode, i = this.gradientNoiseFloor, a = this.gradientSigmaScale, o = this._gradientStorageTex, s = this.resW, c = this.resH, l = Re("float", 144), u = Re("float", 144);
|
|
10487
10507
|
this._gradientNode = f(() => {
|
|
10488
|
-
let d =
|
|
10489
|
-
let a = i.mod(z(12)), o = i.div(z(12)), d = h.add(N(a)).clamp(N(0), N(s).sub(1)), f = g.add(N(o)).clamp(N(0), N(c).sub(1)), p =
|
|
10508
|
+
let d = oe.x, f = oe.y, m = f.mul(8).add(d), h = N(K.x).mul(8).sub(2).toVar(), g = N(K.y).mul(8).sub(2).toVar(), v = (i) => {
|
|
10509
|
+
let a = i.mod(z(12)), o = i.div(z(12)), d = h.add(N(a)).clamp(N(0), N(s).sub(1)), f = g.add(N(o)).clamp(N(0), N(c).sub(1)), p = ke(e, P(d, f)).xyz, m = ke(t, P(d, f)).xyz, _ = Xi(Zu(p.div(F(m, U(mr))))).toVar();
|
|
10490
10510
|
l.element(i).assign(_);
|
|
10491
|
-
let v =
|
|
10511
|
+
let v = ke(n, P(d, f)), y = M(d).sub(v.x.mul(s)), b = M(f).sub(v.y.mul(c)), x = N(y.add(.5)).clamp(N(0), N(s).sub(1)), S = N(b.add(.5)).clamp(N(0), N(c).sub(1)), C = v.w.greaterThan(.5), w = ke(r, P(x, S)).xyz, T = C.select(Xi(w), _);
|
|
10492
10512
|
u.element(i).assign(T);
|
|
10493
10513
|
};
|
|
10494
10514
|
v(m);
|
|
@@ -10507,12 +10527,12 @@ var qu = class extends lc {
|
|
|
10507
10527
|
let i = f.add(z(2 + n)).mul(z(12)).add(d.add(z(2 + r))), a = l.element(i);
|
|
10508
10528
|
e.addAssign(a), t.addAssign(a.mul(a));
|
|
10509
10529
|
}
|
|
10510
|
-
let p = e.div(25), m =
|
|
10530
|
+
let p = e.div(25), m = xe(F(t.div(25).sub(p.mul(p)), M(0))).mul(a).toVar(), h = M(0).toVar();
|
|
10511
10531
|
for (let e = -2; e <= 2; e++) for (let t = -2; t <= 2; t++) {
|
|
10512
|
-
let n = f.add(z(2 + e)).mul(z(12)).add(d.add(z(2 + t))), r = l.element(n), a = u.element(n), o =
|
|
10532
|
+
let n = f.add(z(2 + e)).mul(z(12)).add(d.add(z(2 + t))), r = l.element(n), a = u.element(n), o = F(F(_(r.sub(a)).sub(m), M(0)).div(F(F(r, a), M(.001))).sub(i), M(0)).div(F(M(1).sub(i), M(1e-4)));
|
|
10513
10533
|
h.addAssign(o.mul(o));
|
|
10514
10534
|
}
|
|
10515
|
-
let g = h.div(25).clamp(0, 1).toVar(), v =
|
|
10535
|
+
let g = h.div(25).clamp(0, 1).toVar(), v = ke(n, P(x, S)), y = N(M(x).sub(v.x.mul(s)).add(.5)).clamp(N(0), N(s).sub(1)), b = N(M(S).sub(v.y.mul(c)).add(.5)).clamp(N(0), N(c).sub(1)), C = v.w.greaterThan(.5).select(ke(r, P(y, b)).w, M(0)).div(4).clamp(0, 1), w = g.mul(C);
|
|
10516
10536
|
je(o, Ie(z(x), z(S)), W(w, g, m, 1)).toWriteOnly();
|
|
10517
10537
|
});
|
|
10518
10538
|
})().compute([
|
|
@@ -10531,18 +10551,18 @@ var qu = class extends lc {
|
|
|
10531
10551
|
_buildTemporalForDirection(e) {
|
|
10532
10552
|
let t = this._colorTexNode, n = this._albedoTexNode, r = this._motionTexNode, i = this._normalDepthTexNode, a = this._prevNormalDepthTexNode, o = this._readTemporalTexNode, s = this._gradientReadTexNode, c = this._outputModulatedTex, l = this.maxAccumFrames, u = this.temporalAlpha, d = this.gradientStrength, m = this.temporalEnabledU, h = this.forceResetU, g = this.resW, v = this.resH;
|
|
10533
10553
|
return f(() => {
|
|
10534
|
-
let f = N(K.x).mul(8).add(N(
|
|
10554
|
+
let f = N(K.x).mul(8).add(N(oe.x)), y = N(K.y).mul(8).add(N(oe.y));
|
|
10535
10555
|
p(f.lessThan(N(g)).and(y.lessThan(N(v))), () => {
|
|
10536
|
-
let b =
|
|
10556
|
+
let b = P(f, y), x = ke(t, b).xyz, S = ke(n, b).xyz, C = F(S, U(mr)), w = Zu(x.div(C)), T = W(w, 1).toVar(), E = W(x, 1).toVar();
|
|
10537
10557
|
p(m.greaterThan(.5).and(h.lessThan(.5)), () => {
|
|
10538
|
-
let e =
|
|
10558
|
+
let e = ke(r, b), t = e.w.greaterThan(.5), n = M(f).sub(e.x.mul(g)), c = M(y).sub(e.y.mul(v)), m = n.greaterThanEqual(0).and(n.lessThan(M(g))).and(c.greaterThanEqual(0)).and(c.lessThan(M(v)));
|
|
10539
10559
|
p(t.and(m), () => {
|
|
10540
|
-
let e =
|
|
10541
|
-
let o =
|
|
10560
|
+
let e = ke(i, b), t = e.xyz.mul(2).sub(1), r = e.w, f = N(n), m = N(c), h = f.add(N(1)), y = m.add(N(1)), x = n.sub(M(f)), S = c.sub(M(m)), D = f.clamp(N(0), N(g).sub(1)), O = h.clamp(N(0), N(g).sub(1)), k = m.clamp(N(0), N(v).sub(1)), ee = y.clamp(N(0), N(v).sub(1)), te = M(1).sub(x).mul(M(1).sub(S)), ne = x.mul(M(1).sub(S)), re = M(1).sub(x).mul(S), ie = x.mul(S), ae = (e, n, i) => {
|
|
10561
|
+
let o = ke(a, P(e, n)), s = o.xyz.mul(2).sub(1), c = o.w, l = me(A(t, s).clamp(0, 1), M(16)), u = j(_(r.sub(c)).div(F(r, M(.001))).div(M(.05)).negate());
|
|
10542
10562
|
return i.mul(l).mul(u);
|
|
10543
|
-
},
|
|
10544
|
-
p(
|
|
10545
|
-
let e =
|
|
10563
|
+
}, oe = ae(D, k, te), se = ae(O, k, ne), ce = ae(D, ee, re), ue = ae(O, ee, ie), L = oe.add(se).add(ce).add(ue);
|
|
10564
|
+
p(L.greaterThan(M(.01)), () => {
|
|
10565
|
+
let e = ke(o, P(D, k)), t = ke(o, P(O, k)), n = ke(o, P(D, ee)), r = ke(o, P(O, ee)), i = M(1).div(L), a = e.xyz.mul(oe).add(t.xyz.mul(se)).add(n.xyz.mul(ce)).add(r.xyz.mul(ue)).mul(i), c = e.w.mul(oe).add(t.w.mul(se)).add(n.w.mul(ce)).add(r.w.mul(ue)).mul(i), f = ke(s, b).x.mul(d).clamp(0, 1), p = Zu(I(a, w, I(F(M(1).div(c.add(1)), u), M(1), f))), m = le(c.add(1), l);
|
|
10546
10566
|
T.assign(W(p, m)), E.assign(W(p.mul(C), 1));
|
|
10547
10567
|
});
|
|
10548
10568
|
});
|
|
@@ -10561,32 +10581,32 @@ var qu = class extends lc {
|
|
|
10561
10581
|
_buildHeatmapCompute() {
|
|
10562
10582
|
let e = this._heatmapRawColorTexNode, t = this._heatmapColorTexNode, n = this._heatmapTemporalTexNode, r = this._heatmapNDTexNode, i = this._heatmapMotionTexNode, a = this._heatmapGradientTexNode, o = this._heatmapStorageTex, s = this.debugMode, c = this.resW, l = this.resH;
|
|
10563
10583
|
this._heatmapComputeNode = f(() => {
|
|
10564
|
-
let u = N(K.x).mul(8).add(N(
|
|
10584
|
+
let u = N(K.x).mul(8).add(N(oe.x)), d = N(K.y).mul(8).add(N(oe.y));
|
|
10565
10585
|
p(u.lessThan(N(c)).and(d.lessThan(N(l))), () => {
|
|
10566
|
-
let f =
|
|
10586
|
+
let f = P(u, d), m = W(0, 0, 0, 1).toVar();
|
|
10567
10587
|
p(s.equal(N(0)), () => {
|
|
10568
|
-
let e =
|
|
10588
|
+
let e = ke(t, f).xyz;
|
|
10569
10589
|
m.assign(W(e, 1));
|
|
10570
10590
|
}).ElseIf(s.equal(N(1)), () => {
|
|
10571
10591
|
let t = M(0).toVar(), n = M(0).toVar();
|
|
10572
10592
|
for (let r = -1; r <= 1; r++) for (let i = -1; i <= 1; i++) {
|
|
10573
|
-
let a =
|
|
10593
|
+
let a = ke(e, P(u.add(i).clamp(N(0), N(c).sub(1)), d.add(r).clamp(N(0), N(l).sub(1)))).xyz, o = Xi(a);
|
|
10574
10594
|
t.addAssign(o), n.addAssign(o.mul(o));
|
|
10575
10595
|
}
|
|
10576
10596
|
t.divAssign(9), n.divAssign(9);
|
|
10577
|
-
let r =
|
|
10597
|
+
let r = F(n.sub(t.mul(t)), M(0)).div(F(t.mul(t), M(1e-4))).mul(10).clamp(0, 1), i = r.sub(.5).mul(4).clamp(0, 1), a = r.mul(4).clamp(0, 1).sub(r.sub(.75).mul(4).clamp(0, 1)), o = M(1).sub(r.sub(.25).mul(4).clamp(0, 1));
|
|
10578
10598
|
m.assign(W(i, a, o, 1));
|
|
10579
10599
|
}).ElseIf(s.equal(N(2)), () => {
|
|
10580
|
-
let e =
|
|
10600
|
+
let e = ke(n, f).w.div(32).clamp(0, 1);
|
|
10581
10601
|
m.assign(W(M(1).sub(e), e, M(.2), 1));
|
|
10582
10602
|
}).ElseIf(s.equal(N(3)), () => {
|
|
10583
|
-
let e =
|
|
10603
|
+
let e = ke(i, f), t = _(e.x).mul(100).clamp(0, 1), n = _(e.y).mul(100).clamp(0, 1), r = t.add(n).clamp(0, 1);
|
|
10584
10604
|
m.assign(W(t, n, r.mul(.3), 1));
|
|
10585
10605
|
}).ElseIf(s.equal(N(4)), () => {
|
|
10586
|
-
let e =
|
|
10606
|
+
let e = ke(r, f);
|
|
10587
10607
|
m.assign(W(e.xyz, 1));
|
|
10588
10608
|
}).Else(() => {
|
|
10589
|
-
let e =
|
|
10609
|
+
let e = ke(a, f).x.mul(5).clamp(0, 1);
|
|
10590
10610
|
m.assign(W(e, e.mul(.5), M(1).sub(e), 1));
|
|
10591
10611
|
}), je(o, Ie(z(u), z(d)), m).toWriteOnly();
|
|
10592
10612
|
});
|
|
@@ -10654,7 +10674,7 @@ var qu = class extends lc {
|
|
|
10654
10674
|
dispose() {
|
|
10655
10675
|
this._gradientNode?.dispose(), this._temporalNodeA?.dispose(), this._temporalNodeB?.dispose(), this._temporalTexA?.dispose(), this._temporalTexB?.dispose(), this._outputModulatedTex?.dispose(), this._gradientStorageTex?.dispose(), this._demodulatedRT?.dispose(), this._outputRT?.dispose(), this._gradientRT?.dispose(), this._heatmapComputeNode?.dispose(), this._heatmapStorageTex?.dispose(), this.heatmapTarget?.dispose(), this._colorTexNode?.dispose(), this._albedoTexNode?.dispose(), this._motionTexNode?.dispose(), this._normalDepthTexNode?.dispose(), this._prevNormalDepthTexNode?.dispose(), this._readTemporalTexNode?.dispose(), this._gradientReadTexNode?.dispose(), this._heatmapRawColorTexNode?.dispose(), this._heatmapColorTexNode?.dispose(), this._heatmapTemporalTexNode?.dispose(), this._heatmapNDTexNode?.dispose(), this._heatmapMotionTexNode?.dispose(), this._heatmapGradientTexNode?.dispose();
|
|
10656
10676
|
}
|
|
10657
|
-
}, $u = (e) =>
|
|
10677
|
+
}, $u = (e) => R(e.equal(e), e, M(0)).clamp(0, 1e7), ed = /* @__PURE__ */ G("\n fn temporalAccumulate(\n lum: f32,\n prevMean: f32,\n prevMeanSq: f32,\n alpha: f32,\n spatialVariance: f32,\n varianceBoost: f32\n ) -> vec4f {\n\n let newMean = prevMean + ( lum - prevMean ) * alpha;\n let newMeanSq = prevMeanSq + ( lum * lum - prevMeanSq ) * alpha;\n let temporalVariance = max( newMeanSq - newMean * newMean, 0.0 );\n\n return vec4f(\n newMean,\n newMeanSq,\n temporalVariance * varianceBoost,\n spatialVariance * varianceBoost\n );\n\n }\n"), td = class extends Qn {
|
|
10658
10678
|
constructor(e, t = {}) {
|
|
10659
10679
|
super("VarianceEstimation", {
|
|
10660
10680
|
...t,
|
|
@@ -10679,9 +10699,9 @@ var qu = class extends lc {
|
|
|
10679
10699
|
_buildComputeForDirection(e, t) {
|
|
10680
10700
|
let n = this._colorTexNode, r = this.temporalAlpha, i = this.varianceBoost, a = this.resW, o = this.resH, s = Re("float", 100);
|
|
10681
10701
|
return f(() => {
|
|
10682
|
-
let c =
|
|
10702
|
+
let c = oe.x, l = oe.y, u = l.mul(8).add(c), d = N(K.x).mul(8).sub(1), f = N(K.y).mul(8).sub(1), m = u.mod(10), h = u.div(10), g = ke(n, P(d.add(N(m)).clamp(N(0), N(a).sub(1)), f.add(N(h)).clamp(N(0), N(o).sub(1)))).xyz;
|
|
10683
10703
|
s.element(u).assign($u(Xi(g))), p(u.lessThan(z(36)), () => {
|
|
10684
|
-
let e = u.add(z(64)), t = e.mod(10), r = e.div(10), i =
|
|
10704
|
+
let e = u.add(z(64)), t = e.mod(10), r = e.div(10), i = ke(n, P(d.add(N(t)).clamp(N(0), N(a).sub(1)), f.add(N(r)).clamp(N(0), N(o).sub(1)))).xyz;
|
|
10685
10705
|
s.element(e).assign($u(Xi(i)));
|
|
10686
10706
|
}), ze();
|
|
10687
10707
|
let _ = N(K.x).mul(8).add(N(c)), v = N(K.y).mul(8).add(N(l));
|
|
@@ -10692,7 +10712,7 @@ var qu = class extends lc {
|
|
|
10692
10712
|
n.addAssign(r), a.addAssign(r.mul(r));
|
|
10693
10713
|
}
|
|
10694
10714
|
n.divAssign(9), a.divAssign(9);
|
|
10695
|
-
let o =
|
|
10715
|
+
let o = F(a.sub(n.mul(n)), M(0)), u = s.element(l.add(1).mul(10).add(c.add(1))), d = ke(t, P(_, v));
|
|
10696
10716
|
je(e, Ie(z(_), z(v)), ed(u, d.x, d.y, r, o, i)).toWriteOnly();
|
|
10697
10717
|
});
|
|
10698
10718
|
})().compute([
|
|
@@ -10787,14 +10807,14 @@ var qu = class extends lc {
|
|
|
10787
10807
|
1 / 256
|
|
10788
10808
|
];
|
|
10789
10809
|
return f(() => {
|
|
10790
|
-
let f = N(K.x).mul(8).add(N(
|
|
10810
|
+
let f = N(K.x).mul(8).add(N(oe.x)), v = N(K.y).mul(8).add(N(oe.y));
|
|
10791
10811
|
p(f.lessThan(N(h)).and(v.lessThan(N(g))), () => {
|
|
10792
|
-
let p =
|
|
10812
|
+
let p = P(f, v), y = ke(t, p).xyz, b = ke(n, p), x = ke(r, p).xyz.mul(2).sub(1), S = b.w, C = Xi(y), w = F(ke(i, p).xyz, U(mr)), T = F(Xi(w), M(mr)).toVar(), E = ke(a, p), D = I(E.z, F(E.z, E.w), u), O = l.mul(xe(F(D, M(0)))).div(T).add(M(1e-4)), k = U(0).toVar(), A = M(0).toVar();
|
|
10793
10813
|
for (let e = 0; e < 5; e++) for (let i = 0; i < 5; i++) {
|
|
10794
|
-
let a = i - 2, l = e - 2, u = _[e * 5 + i], p = f.add(d.mul(a)).clamp(N(0), N(h).sub(1)), m = v.add(d.mul(l)).clamp(N(0), N(g).sub(1)), b =
|
|
10814
|
+
let a = i - 2, l = e - 2, u = _[e * 5 + i], p = f.add(d.mul(a)).clamp(N(0), N(h).sub(1)), m = v.add(d.mul(l)).clamp(N(0), N(g).sub(1)), b = ke(t, P(p, m)).xyz, w = ke(n, P(p, m)), T = ke(r, P(p, m)).xyz.mul(2).sub(1), E = w.w, D = nd(C, Xi(b), x, T, S, E, y, b, M(u), O, s, c, o);
|
|
10795
10815
|
k.addAssign(b.mul(D)), A.addAssign(D);
|
|
10796
10816
|
}
|
|
10797
|
-
let j = k.div(
|
|
10817
|
+
let j = k.div(F(A, M(1e-4))), ee = m.equal(N(1)).select(j.mul(w), j);
|
|
10798
10818
|
je(e, Ie(z(f), z(v)), W(ee, 1)).toWriteOnly();
|
|
10799
10819
|
});
|
|
10800
10820
|
})().compute([
|
|
@@ -10842,7 +10862,7 @@ var qu = class extends lc {
|
|
|
10842
10862
|
dispose() {
|
|
10843
10863
|
this._computeNodeA?.dispose(), this._computeNodeB?.dispose(), this._storageTexA?.dispose(), this._storageTexB?.dispose(), this._outputTarget?.dispose(), this._readTexNode?.dispose(), this._normalDepthTexNode?.dispose(), this._shadingNormalTexNode?.dispose(), this._albedoTexNode?.dispose(), this._varianceTexNode?.dispose();
|
|
10844
10864
|
}
|
|
10845
|
-
}, id = 6e4, ad = (e) =>
|
|
10865
|
+
}, id = 6e4, ad = (e) => R(e.equal(e), e, M(0)).clamp(0, 1e7), od = (e) => U(ad(e.x), ad(e.y), ad(e.z)), sd = [
|
|
10846
10866
|
1 / 256,
|
|
10847
10867
|
4 / 256,
|
|
10848
10868
|
6 / 256,
|
|
@@ -10894,9 +10914,9 @@ var qu = class extends lc {
|
|
|
10894
10914
|
_buildDemod() {
|
|
10895
10915
|
let e = this._colorTexNode, t = this._ndTexNode, n = this._albedoTexNode, r = this._demodTex, i = this.resW, a = this.resH;
|
|
10896
10916
|
return f(() => {
|
|
10897
|
-
let o = N(K.x).mul(16).add(N(
|
|
10917
|
+
let o = N(K.x).mul(16).add(N(oe.x)), s = N(K.y).mul(16).add(N(oe.y));
|
|
10898
10918
|
p(o.lessThan(N(i)).and(s.lessThan(N(a))), () => {
|
|
10899
|
-
let i =
|
|
10919
|
+
let i = P(o, s), a = ke(e, i).xyz, c = ke(t, i).w.lessThan(M(id)), l = ke(n, i).xyz, u = R(c, F(l, U(mr)), U(1)), d = od(a.div(u));
|
|
10900
10920
|
je(r, Ie(z(o), z(s)), W(d, 1)).toWriteOnly();
|
|
10901
10921
|
});
|
|
10902
10922
|
})().compute([
|
|
@@ -10912,15 +10932,15 @@ var qu = class extends lc {
|
|
|
10912
10932
|
_buildAtrous(e) {
|
|
10913
10933
|
let t = this._readTexNode, n = this._colorTexNode, r = this._ndTexNode, i = this._snTexNode, a = this._albedoTexNode, o = this._varTexNode, s = this.filterStrength, c = this.phiLuminance, l = this.phiNormal, u = this.phiDepth, d = this.stepSizeU, m = this.isLastIterationU, h = this.resW, g = this.resH;
|
|
10914
10934
|
return f(() => {
|
|
10915
|
-
let f = N(K.x).mul(16).add(N(
|
|
10935
|
+
let f = N(K.x).mul(16).add(N(oe.x)), _ = N(K.y).mul(16).add(N(oe.y));
|
|
10916
10936
|
p(f.lessThan(N(h)).and(_.lessThan(N(g))), () => {
|
|
10917
|
-
let p =
|
|
10937
|
+
let p = P(f, _), v = ke(t, p).xyz, y = Xi(v), b = ke(r, p).w, x = ke(i, p).xyz.mul(2).sub(1), S = b.lessThan(M(id)), C = R(S, M(1), M(0)), w = ke(a, p).xyz, T = R(S, F(w, U(mr)), U(1)), E = F(Xi(T), M(mr)), D = ke(o, p), O = F(D.z, D.w), k = c.mul(xe(F(O, M(0)))).div(E).add(M(1e-4)), j = U(0).toVar(), ee = M(0).toVar();
|
|
10918
10938
|
for (let e = 0; e < 5; e++) for (let n = 0; n < 5; n++) {
|
|
10919
|
-
let a = n - 2, o = e - 2, s = sd[e * 5 + n], c =
|
|
10920
|
-
j.addAssign(p.mul(
|
|
10939
|
+
let a = n - 2, o = e - 2, s = sd[e * 5 + n], c = P(f.add(d.mul(a)).clamp(N(0), N(h).sub(1)), _.add(d.mul(o)).clamp(N(0), N(g).sub(1))), p = ke(t, c).xyz, m = Xi(p), v = ke(r, c).w, S = ke(i, c).xyz.mul(2).sub(1), w = R(v.lessThan(M(id)), M(1), M(0)), T = y.sub(m).abs().div(k).negate().exp(), E = me(A(x, S).clamp(0, 1), l), D = b.sub(v).abs().div(F(b.mul(u), M(.001))).negate().exp(), O = C.mul(w), te = C.oneMinus().mul(w.oneMinus()), ne = O.add(te), re = I(M(1), E.mul(D), O), ie = M(s).mul(T).mul(re).mul(ne);
|
|
10940
|
+
j.addAssign(p.mul(ie)), ee.addAssign(ie);
|
|
10921
10941
|
}
|
|
10922
|
-
let te = j.div(
|
|
10923
|
-
je(e, Ie(z(f), z(_)), W(
|
|
10942
|
+
let te = j.div(F(ee, M(1e-4))), ne = m.equal(N(1)), re = ke(n, p).xyz, ie = I(re, te.mul(T), s), ae = ne.select(ie, te);
|
|
10943
|
+
je(e, Ie(z(f), z(_)), W(ae, 1)).toWriteOnly();
|
|
10924
10944
|
});
|
|
10925
10945
|
})().compute([
|
|
10926
10946
|
this._dispatchX,
|
|
@@ -10999,9 +11019,9 @@ var qu = class extends lc {
|
|
|
10999
11019
|
_buildDownsampleCompute() {
|
|
11000
11020
|
let e = this._inputTexNode, t = this._downsampleStorageTex, n = this.epsilonU, r = this.inputResW, i = this.inputResH;
|
|
11001
11021
|
this._downsampleComputeNode = f(() => {
|
|
11002
|
-
let a = N(K.x).mul(8).add(N(
|
|
11022
|
+
let a = N(K.x).mul(8).add(N(oe.x)), o = N(K.y).mul(8).add(N(oe.y)), s = r.div(M(64)), c = i.div(M(64)), l = M(a).mul(s), u = M(o).mul(c), d = M(0).toVar(), f = M(0).toVar();
|
|
11003
11023
|
for (let t = 0; t < 4; t++) for (let r = 0; r < 4; r++) {
|
|
11004
|
-
let i = Xi(
|
|
11024
|
+
let i = Xi(ke(e, P(N(l.add(M((r + .5) / 4).mul(s))), N(u.add(M((t + .5) / 4).mul(c))))).xyz);
|
|
11005
11025
|
p(i.greaterThan(n), () => {
|
|
11006
11026
|
d.addAssign(i.add(n).log()), f.addAssign(1);
|
|
11007
11027
|
});
|
|
@@ -11020,10 +11040,10 @@ var qu = class extends lc {
|
|
|
11020
11040
|
_buildHistogramCompute() {
|
|
11021
11041
|
let e = this._downsampleTarget.texture, t = this._histogramBuffer, n = this.centerWeightU;
|
|
11022
11042
|
this._histogramComputeNode = f(() => {
|
|
11023
|
-
let r =
|
|
11043
|
+
let r = oe.x;
|
|
11024
11044
|
C(t.element(r), z(0)), ze();
|
|
11025
11045
|
for (let i = 0; i < 16; i++) {
|
|
11026
|
-
let a = r.mul(16).add(i), o = a.mod(64), s = a.div(64), c =
|
|
11046
|
+
let a = r.mul(16).add(i), o = a.mod(64), s = a.div(64), c = ke(e, P(N(o), N(s))), l = c.x, u = c.y;
|
|
11027
11047
|
p(u.greaterThan(0), () => {
|
|
11028
11048
|
let e = z(l.div(u).sub(M(ud)).div(M(dd)).mul(M(ld)).floor().clamp(0, M(ld - 1))), r = M(o).add(.5).div(M(64)), i = M(s).add(.5).div(M(64)), a = r.sub(.5), c = i.sub(.5), d = z(a.mul(a).add(c.mul(c)).mul(n).negate().exp().mul(M(pd)));
|
|
11029
11049
|
x(t.element(e), d);
|
|
@@ -11054,7 +11074,7 @@ var qu = class extends lc {
|
|
|
11054
11074
|
c.addAssign(e.mul(n)), l.addAssign(n);
|
|
11055
11075
|
});
|
|
11056
11076
|
});
|
|
11057
|
-
let d =
|
|
11077
|
+
let d = F(l, M(1)), f = c.div(d), h = f.exp();
|
|
11058
11078
|
je(t, Ie(z(0), z(0)), W(h, i, f, 1)).toWriteOnly();
|
|
11059
11079
|
})().compute(1, [
|
|
11060
11080
|
1,
|
|
@@ -11065,7 +11085,7 @@ var qu = class extends lc {
|
|
|
11065
11085
|
_buildAdaptationCompute() {
|
|
11066
11086
|
let e = this._reductionReadTexNode, t = this._adaptationResult, n = this.keyValueU, r = this.minExposureU, i = this.maxExposureU, a = this.adaptSpeedBrightU, o = this.adaptSpeedDarkU, s = this.deltaTimeU, c = this.isFirstFrameU, l = this.previousExposureU;
|
|
11067
11087
|
this._adaptationComputeNode = f(() => {
|
|
11068
|
-
let u =
|
|
11088
|
+
let u = ke(e, P(N(0), N(0))).x, d = md(u, l, n, r, i, a, o, s, c);
|
|
11069
11089
|
t.element(z(0)).assign(d);
|
|
11070
11090
|
})().compute(1, [
|
|
11071
11091
|
1,
|
|
@@ -11135,7 +11155,7 @@ var qu = class extends lc {
|
|
|
11135
11155
|
...r,
|
|
11136
11156
|
executionMode: Zn.ALWAYS
|
|
11137
11157
|
}), this.renderer = n, this.saturation = V(r.saturation ?? 1), this._transparentBackground = V(0, "int"), this._sourceTexNode = new c();
|
|
11138
|
-
let i = this._sourceTexNode.sample(Fe()), a =
|
|
11158
|
+
let i = this._sourceTexNode.sample(Fe()), a = I(U(A(i.xyz, Ui)), i.xyz, this.saturation), o = R(this._transparentBackground, i.w, 1);
|
|
11139
11159
|
this.compositorMaterial = new e(), this.compositorMaterial.colorNode = W(a, o), this.compositorMaterial.blending = Et, this.compositorQuad = new t(this.compositorMaterial);
|
|
11140
11160
|
}
|
|
11141
11161
|
_resolveSourceTexture(e) {
|
|
@@ -15471,7 +15491,7 @@ var qf = {
|
|
|
15471
15491
|
}
|
|
15472
15492
|
_syncGBufferStages() {
|
|
15473
15493
|
let e = this._stages, t = e.normalDepth, n = e.motionVector, r = !!e.asvgf?.enabled, i = r || !!(e.edgeFilter?.enabled || e.bilateralFilter?.enabled);
|
|
15474
|
-
t && (i && !t.enabled && t.reset(), t.enabled = i), n && (r && !n.enabled && (n.matricesInitialized = !1, n.isFirstFrame = !0, n.frameCount = 0), n.enabled = r), e.pathTracer?.setAuxGBufferEnabled?.(i || !!this.denoiser?.enabled);
|
|
15494
|
+
t && (i && !t.enabled && t.reset(), t.enabled = i), n && (r && !n.enabled && (n.matricesInitialized = !1, n.isFirstFrame = !0, n.frameCount = 0), n.enabled = r), e.pathTracer?.setAuxGBufferEnabled?.(i || !!this.denoiser?.enabled), e.pathTracer?.setCleanAuxNormal?.(!!this.denoiser?.enabled && this.denoiser?.quality !== "fast");
|
|
15475
15495
|
for (let r of [
|
|
15476
15496
|
e.asvgf,
|
|
15477
15497
|
e.variance,
|
|
@@ -15525,7 +15545,7 @@ var qf = {
|
|
|
15525
15545
|
this.denoiser && (this.denoiser.enabled = e), this._syncGBufferStages();
|
|
15526
15546
|
}
|
|
15527
15547
|
setOIDNQuality(e) {
|
|
15528
|
-
this.denoiser?.updateQuality(e);
|
|
15548
|
+
this.denoiser?.updateQuality(e), this._stages.pathTracer?.setCleanAuxNormal?.(!!this.denoiser?.enabled && e !== "fast");
|
|
15529
15549
|
}
|
|
15530
15550
|
setTileHelperEnabled(e) {
|
|
15531
15551
|
this._setTileHelper(e);
|
|
@@ -16030,7 +16050,7 @@ var qf = {
|
|
|
16030
16050
|
}
|
|
16031
16051
|
this._sceneHelpers?.clear(), this._sceneHelpers = null, this.scene?.clear(), this.scene = null, this.renderer?._canvasTarget && this.renderer._onCanvasTargetResize && this.renderer._canvasTarget.removeEventListener("resize", this.renderer._onCanvasTargetResize);
|
|
16032
16052
|
try {
|
|
16033
|
-
let e =
|
|
16053
|
+
let e = Oe().value, t = k().value;
|
|
16034
16054
|
e?._listeners?.dispose && (e._listeners.dispose.length = 0), t?._listeners?.dispose && (t._listeners.dispose.length = 0);
|
|
16035
16055
|
} catch (e) {
|
|
16036
16056
|
console.warn("PathTracerApp: failed to clear TSL texture singleton listeners", e);
|