rayzee 9.1.1 → 9.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/rayzee.es.js +637 -637
- package/dist/rayzee.umd.js +21 -21
- package/package.json +1 -1
- package/src/Processor/IESParser.js +1 -2
- package/src/Processor/SceneProcessor.js +1 -2
- package/src/Stages/PathTracer.js +1 -1
- package/src/Stages/PathTracerStage.js +1 -2
- package/src/TSL/EmissiveSampling.js +1 -1
- package/src/TSL/GenerateKernel.js +1 -2
- package/src/TSL/ShadeKernel.js +3 -3
- package/src/managers/DenoisingManager.js +1 -1
package/dist/rayzee.es.js
CHANGED
|
@@ -2,7 +2,7 @@ import { a as e, i as t, n, r } from "./NeuralSuperRes-CbNvQjCw.js";
|
|
|
2
2
|
import { C as i, S as a, T as o, _ as s, a as c, b as l, c as u, d, f, g as p, h as m, i as h, l as g, m as _, n as v, o as y, p as b, r as x, s as S, u as C, v as w, w as T, x as E, y as D } from "./ToneMapGPU-DpUZDMbQ.js";
|
|
3
3
|
import { i as O, n as k, r as A } from "./NeuralRetouch-BRquqfmZ.js";
|
|
4
4
|
import { ContextNode as ee, ExternalTexture as te, LinearSRGBColorSpace as j, MeshBasicNodeMaterial as ne, NodeMaterial as re, QuadMesh as ie, ReadbackBuffer as ae, RectAreaLightNode as oe, RenderTarget as se, SRGBColorSpace as ce, StorageInstancedBufferAttribute as le, StorageTexture as ue, TextureNode as de, WebGPUBackend as fe, WebGPURenderer as pe } from "three/webgpu";
|
|
5
|
-
import { Break as me, Fn as M, If as N, Loop as he, Return as ge, TWO_PI as _e, abs as ve, acos as ye, array as be, asin as xe, atan as Se, atomicAdd as Ce, atomicLoad as we, atomicStore as Te, attributeArray as Ee, bool as De, clamp as P, cos as Oe, cross as
|
|
5
|
+
import { Break as me, Fn as M, If as N, Loop as he, Return as ge, TWO_PI as _e, abs as ve, acos as ye, array as be, asin as xe, atan as Se, atomicAdd as Ce, atomicLoad as we, atomicStore as Te, attributeArray as Ee, bool as De, clamp as P, cos as Oe, cross as ke, cubeTexture as Ae, dot as F, exp as je, exp2 as Me, float as I, floatBitsToUint as Ne, floor as L, fract as Pe, instanceIndex as Fe, int as R, ivec2 as Ie, ivec3 as Le, length as Re, lessThan as ze, localId as Be, log as Ve, log2 as He, mat3 as Ue, max as z, min as We, mix as B, mod as Ge, normalize as V, notEqual as Ke, packHalf2x16 as qe, packSnorm2x16 as Je, packUnorm2x16 as Ye, pow as Xe, reflect as Ze, refract as Qe, round as $e, sampler as et, saturate as tt, screenCoordinate as nt, select as H, sign as rt, sin as it, smoothstep as at, sqrt as U, step as ot, storage as st, struct as ct, subgroupAdd as lt, subgroupBroadcast as ut, subgroupExclusiveAdd as dt, tan as ft, texture as pt, texture3DLoad as mt, textureLoad as W, textureSize as ht, textureStore as gt, uint as G, uintBitsToFloat as _t, uniform as K, uniformArray as vt, unpackHalf2x16 as yt, unpackSnorm2x16 as bt, unpackUnorm2x16 as q, uv as xt, uvec2 as St, uvec4 as Ct, vec2 as J, vec3 as Y, vec4 as X, wgslFn as wt, workgroupArray as Tt, workgroupBarrier as Et, workgroupId as Dt } from "three/tsl";
|
|
6
6
|
import { ACESFilmicToneMapping as Ot, AddEquation as kt, AnimationClip as At, AnimationMixer as jt, BackSide as Mt, BooleanKeyframeTrack as Nt, Box2 as Pt, Box3 as Ft, BufferAttribute as It, BufferGeometry as Lt, ByteType as Rt, CircleGeometry as zt, ClampToEdgeWrapping as Bt, Color as Vt, Controls as Ht, CustomBlending as Ut, Data3DTexture as Wt, DataArrayTexture as Gt, DataTexture as Kt, DataUtils as qt, DirectionalLight as Jt, DirectionalLightHelper as Yt, DoubleSide as Xt, EquirectangularReflectionMapping as Zt, EventDispatcher as Qt, Float32BufferAttribute as $t, FloatType as en, FrontSide as tn, Group as nn, HalfFloatType as rn, InstancedBufferAttribute as an, InstancedMesh as on, IntType as sn, InterpolateSmooth as cn, LinearFilter as Z, LinearSRGBColorSpace as ln, LoaderUtils as un, LoadingManager as dn, LoopOnce as fn, LoopRepeat as pn, MaterialLoader as mn, MathUtils as hn, Matrix3 as gn, Matrix4 as _n, Mesh as vn, MeshBasicMaterial as yn, MeshPhysicalMaterial as bn, MeshStandardMaterial as xn, NearestFilter as Sn, NoBlending as Cn, NoColorSpace as wn, NoToneMapping as Tn, NumberKeyframeTrack as En, Object3D as Dn, OneFactor as On, OrthographicCamera as kn, PerspectiveCamera as An, PointLight as jn, PointLightHelper as Mn, Points as Nn, PointsMaterial as Pn, PropertyBinding as Fn, Quaternion as In, QuaternionKeyframeTrack as Ln, RGBAFormat as Rn, RGBFormat as zn, RGFormat as Bn, Raycaster as Vn, RectAreaLight as Hn, RedFormat as Un, RedIntegerFormat as Wn, RenderTarget as Gn, RepeatWrapping as Kn, SRGBColorSpace as qn, Scene as Jn, ShortType as Yn, SphereGeometry as Xn, SpotLight as Zn, SpotLightHelper as Qn, Texture as $n, TextureLoader as er, Timer as tr, Uint32BufferAttribute as nr, UnsignedByteType as rr, UnsignedIntType as ir, UnsignedShortType as ar, Vector2 as or, Vector3 as sr, Vector4 as cr, VectorKeyframeTrack as lr } from "three";
|
|
7
7
|
import { RectAreaLightTexturesLib as ur } from "three/addons/lights/RectAreaLightTexturesLib.js";
|
|
8
8
|
import { RectAreaLightHelper as dr } from "three/addons/helpers/RectAreaLightHelper.js";
|
|
@@ -161,14 +161,14 @@ var Ur = pt(Vr);
|
|
|
161
161
|
Ur.setUpdateMatrix(!1);
|
|
162
162
|
var Wr = pt(Hr);
|
|
163
163
|
Wr.setUpdateMatrix(!1);
|
|
164
|
-
var Gr =
|
|
164
|
+
var Gr = I(.7548776662466927), Kr = I(.5698402909980532), qr = /* @__PURE__ */ wt("\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"), Jr = /* @__PURE__ */ wt("\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"), Yr = (e) => (e.assign(e.mul(1664525).add(1013904223)), I(e.shiftRight(8)).mul(1 / 16777216)), Xr = (e) => (e.assign(qr({ state: e })), I(e.shiftRight(8)).mul(1 / 16777216)), Zr = (e) => {
|
|
165
165
|
let t = Yr(e).mul(_e).toVar();
|
|
166
166
|
return J(Oe(t), it(t)).mul(U(Yr(e)));
|
|
167
167
|
}, Qr = 4096, $r = (e, t, n, r) => {
|
|
168
|
-
let i = G(r).bitAnd(G(63)), a =
|
|
168
|
+
let i = G(r).bitAnd(G(63)), a = I(n).add(I(t).mul(7)), o = R(Pe(a.mul(Gr).add(.5)).mul(128)), s = R(Pe(a.mul(Kr).add(.5)).mul(128)), c = R(e.x).add(o).bitAnd(R(127)), l = R(e.y).add(s).bitAnd(R(127)), u = R(i).bitAnd(R(7)), d = R(i).shiftRight(R(3));
|
|
169
169
|
return Ie(u.mul(R(128)).add(c), d.mul(R(128)).add(l));
|
|
170
170
|
}, ei = (e, t, n, r) => {
|
|
171
|
-
let i = $r(e, t, n, r), a = Wr.load(i).xy, o =
|
|
171
|
+
let i = $r(e, t, n, r), a = Wr.load(i).xy, o = I(G(r).shiftRight(G(6))), s = Pe(J(Gr, Kr).mul(o));
|
|
172
172
|
return Pe(a.add(s));
|
|
173
173
|
}, ti = /* @__PURE__ */ wt("\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"), ni = /* @__PURE__ */ wt("\n fn owen_scramble( x: u32, seed: u32 ) -> u32 {\n\n var v = reverseBits( x );\n v += seed;\n v ^= v * 0x6c50b47cu;\n v ^= v * 0xb82f1e52u;\n v ^= v * 0xc7afe638u;\n v ^= v * 0x8d22f6e6u;\n return reverseBits( v );\n\n }\n"), ri = /* @__PURE__ */ wt("\n fn sobol2D( index: u32 ) -> vec2u {\n\n let r0 = reverseBits( index );\n\n var x = r0;\n x ^= ( x << 1u ) & 0xaaaaaaaau;\n x ^= ( x << 2u ) & 0xccccccccu;\n x ^= ( x << 4u ) & 0xf0f0f0f0u;\n x ^= ( x << 8u ) & 0xff00ff00u;\n x ^= ( x << 16u ) & 0xffff0000u;\n\n return vec2u( r0, x );\n\n }\n"), ii = /* @__PURE__ */ wt("\n fn owen_scrambled_sobol( index: u32, dimension: u32, seed: u32 ) -> f32 {\n\n let dimSeed = seed ^ ( dimension * 0x9e3779b9u + 0x6a09e667u );\n let shuffled = owen_scramble( index, dimSeed ^ 0xa511e9b3u );\n let pair = sobol2D( shuffled );\n let raw = select( pair.x, pair.y, ( dimension & 1u ) != 0u );\n return f32( owen_scramble( raw, dimSeed ) ) / 4294967296.0f;\n\n }\n", [ri, ni]), ai = /* @__PURE__ */ wt("\n fn owen_scrambled_sobol2D( index: u32, seed: u32 ) -> vec2f {\n\n let shuffled = owen_scramble( index, seed ^ 0xa511e9b3u );\n let pair = sobol2D( shuffled );\n return vec2f(\n f32( owen_scramble( pair.x, seed ^ 0x68bc21ebu ) ) / 4294967296.0f,\n f32( owen_scramble( pair.y, seed ^ 0x02e5be93u ) ) / 4294967296.0f\n );\n\n }\n", [ri, ni]), oi = (e, t, n, r, i, a, o, s) => {
|
|
174
174
|
let c = H(a.notEqual(R(-1)), a, Br), l = X(0).toVar();
|
|
@@ -256,7 +256,7 @@ var Gr = L(.7548776662466927), Kr = L(.5698402909980532), qr = /* @__PURE__ */ w
|
|
|
256
256
|
}));
|
|
257
257
|
}), o;
|
|
258
258
|
}, li = (e, t, n, r, i, a) => {
|
|
259
|
-
let o =
|
|
259
|
+
let o = I(0).toVar();
|
|
260
260
|
return N(Br.equal(R(0)), () => {
|
|
261
261
|
o.assign(Xr(r));
|
|
262
262
|
}).ElseIf(Br.equal(R(1)), () => {
|
|
@@ -279,11 +279,11 @@ var Gr = L(.7548776662466927), Kr = L(.5698402909980532), qr = /* @__PURE__ */ w
|
|
|
279
279
|
return N(n.lessThanEqual(R(1)), () => {
|
|
280
280
|
o.assign(si(e, t, R(0), r, R(-1), i, a));
|
|
281
281
|
}).Else(() => {
|
|
282
|
-
let i = R(U(
|
|
282
|
+
let i = R(U(I(n))), s = n.add(i).sub(1).div(i), c = Ge(t, i.mul(s)), l = Ge(c, i), u = c.div(i), d = J(I(l), I(u)).div(J(I(i), I(s))), f = J(Yr(r).toVar(), Yr(r).toVar()).toVar();
|
|
283
283
|
N(n.greaterThan(R(4)), () => {
|
|
284
284
|
let n = ei(e, t, R(0), a).mul(.1);
|
|
285
285
|
f.assign(B(f, n, .2));
|
|
286
|
-
}), f.divAssign(J(
|
|
286
|
+
}), f.divAssign(J(I(i), I(s))), o.assign(d.add(f));
|
|
287
287
|
}), o;
|
|
288
288
|
}, di = /* @__PURE__ */ wt("\n fn getDecorrelatedSeed( pixelCoord: vec2f, rayIndex: i32, frame: u32 ) -> u32 {\n\n // Use multiple primes for better decorrelation\n let pixelSeed = u32( pixelCoord.x ) * 2654435761u + u32( pixelCoord.y ) * 3266489917u;\n let raySeed = u32( rayIndex ) * 668265263u;\n let frameSeed = frame * 374761393u;\n\n // Multiple rounds of hashing for better quality\n var seed = wang_hash( pixelSeed );\n seed = pcgHash( seed ^ raySeed );\n seed = wang_hash( seed + frameSeed );\n return seed;\n\n }\n", [Jr, qr]), fi = {
|
|
289
289
|
ALWAYS: "always",
|
|
@@ -3984,7 +3984,7 @@ Lr({
|
|
|
3984
3984
|
});
|
|
3985
3985
|
//#endregion
|
|
3986
3986
|
//#region src/TSL/Common.js
|
|
3987
|
-
var ic = /* @__PURE__ */ wt("\n fn offsetRayOrigin( p: vec3f, n: vec3f ) -> vec3f {\n let step = select( vec3<i32>( 32 ), vec3<i32>( -32 ), ( p < vec3f( 0.0 ) ) != ( n < vec3f( 0.0 ) ) );\n let far = bitcast<vec3f>( bitcast<vec3<i32>>( p ) + step );\n return select( far, p + n * 1e-5, abs( p ) < vec3f( 1.0 ) );\n }\n"), ac = .9999, oc = 3.14159, sc = 1 / oc, cc = 2 * oc, lc = 1e-6, uc = .05, dc = .089, fc = .001, pc = Y(.2126, .7152, .0722), mc = 65504, hc = (e, t = 1e7) => H(e.equal(e), e,
|
|
3987
|
+
var ic = /* @__PURE__ */ wt("\n fn offsetRayOrigin( p: vec3f, n: vec3f ) -> vec3f {\n let step = select( vec3<i32>( 32 ), vec3<i32>( -32 ), ( p < vec3f( 0.0 ) ) != ( n < vec3f( 0.0 ) ) );\n let far = bitcast<vec3f>( bitcast<vec3<i32>>( p ) + step );\n return select( far, p + n * 1e-5, abs( p ) < vec3f( 1.0 ) );\n }\n"), ac = .9999, oc = 3.14159, sc = 1 / oc, cc = 2 * oc, lc = 1e-6, uc = .05, dc = .089, fc = .001, pc = Y(.2126, .7152, .0722), mc = 65504, hc = (e, t = 1e7) => H(e.equal(e), e, I(0)).clamp(0, t), gc = (e, t = 1e7) => Y(hc(e.x, t), hc(e.y, t), hc(e.z, t)), _c = $.SLOTS_PER_MATERIAL, vc = $.SLOT, yc = vc, bc = Ue(3.2404542, -.969266, .0556434, -1.5371385, 1.8760108, -.2040259, -.4985314, .041556, 1.0572252);
|
|
3988
3988
|
wt("\n fn sRGBToLinear( srgbColor: vec3f ) -> vec3f {\n\n return pow( srgbColor, vec3f( 2.2 ) );\n\n }\n"), wt("\n fn gammaCorrection( color: vec3f ) -> vec3f {\n\n return pow( color, vec3f( 1.0 / 2.2 ) );\n\n }\n");
|
|
3989
3989
|
var xc = wt("\n fn square( x: f32 ) -> f32 {\n\n return x * x;\n\n }\n");
|
|
3990
3990
|
wt("\n fn squareVec3( x: vec3f ) -> vec3f {\n\n return x * x;\n\n }\n"), wt("\n fn maxComponent( v: vec3f ) -> f32 {\n\n return max( max( v.r, v.g ), v.b );\n\n }\n"), wt("\n fn minComponent( v: vec3f ) -> f32 {\n\n return min( min( v.r, v.g ), v.b );\n\n }\n");
|
|
@@ -4006,19 +4006,19 @@ var Sc = wt("\n fn luminance( color: vec3f ) -> f32 {\n\n return dot( color, ve
|
|
|
4006
4006
|
wt("\n fn applyDithering( color: vec3f, uv: vec2f, ditheringAmount: f32, resolution: vec2f ) -> vec3f {\n\n let bayerRow0 = vec4f( 0.0 / 16.0, 8.0 / 16.0, 2.0 / 16.0, 10.0 / 16.0 );\n let bayerRow1 = vec4f( 12.0 / 16.0, 4.0 / 16.0, 14.0 / 16.0, 6.0 / 16.0 );\n let bayerRow2 = vec4f( 3.0 / 16.0, 11.0 / 16.0, 1.0 / 16.0, 9.0 / 16.0 );\n let bayerRow3 = vec4f( 15.0 / 16.0, 7.0 / 16.0, 13.0 / 16.0, 5.0 / 16.0 );\n let bayer = mat4x4f( bayerRow0, bayerRow1, bayerRow2, bayerRow3 );\n\n let pixelCoord = vec2i( uv * resolution );\n let dither = bayer[ pixelCoord.x % 4 ][ pixelCoord.y % 4 ];\n\n return color + ( dither - 0.5 ) * ditheringAmount / 255.0;\n\n }\n");
|
|
4007
4007
|
var Tc = wt("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3f;\n if ( abs( N.x ) < 0.999 ) {\n majorAxis = vec3f( 1.0, 0.0, 0.0 );\n } else {\n majorAxis = vec3f( 0.0, 1.0, 0.0 );\n }\n let T = normalize( cross( N, majorAxis ) );\n let B = normalize( cross( N, T ) );\n return mat3x3f( T, B, N );\n\n }\n");
|
|
4008
4008
|
M(([e, t, n]) => {
|
|
4009
|
-
let r = t.add(n).toVar(), i =
|
|
4009
|
+
let r = t.add(n).toVar(), i = F(r, r).toVar();
|
|
4010
4010
|
return r.assign(i.greaterThan(lc).select(r.div(i.sqrt()), Y(0, 0, 1))), Zs({
|
|
4011
|
-
NoL: z(
|
|
4012
|
-
NoV: z(
|
|
4013
|
-
NoH: z(
|
|
4014
|
-
VoH: z(
|
|
4015
|
-
LoH: z(
|
|
4016
|
-
ToH:
|
|
4017
|
-
BoH:
|
|
4018
|
-
ToV:
|
|
4019
|
-
BoV:
|
|
4020
|
-
ToL:
|
|
4021
|
-
BoL:
|
|
4011
|
+
NoL: z(F(e, n), .001),
|
|
4012
|
+
NoV: z(F(e, t), .001),
|
|
4013
|
+
NoH: z(F(e, r), .001),
|
|
4014
|
+
VoH: z(F(t, r), .001),
|
|
4015
|
+
LoH: z(F(n, r), .001),
|
|
4016
|
+
ToH: I(0),
|
|
4017
|
+
BoH: I(0),
|
|
4018
|
+
ToV: I(0),
|
|
4019
|
+
BoV: I(0),
|
|
4020
|
+
ToL: I(0),
|
|
4021
|
+
BoL: I(0)
|
|
4022
4022
|
});
|
|
4023
4023
|
});
|
|
4024
4024
|
var Ec = M(([e, t]) => {
|
|
@@ -4028,18 +4028,18 @@ var Ec = M(([e, t]) => {
|
|
|
4028
4028
|
Ba: i.mul(a).sub(r.mul(o))
|
|
4029
4029
|
});
|
|
4030
4030
|
}), Dc = M(([e, t, n, r]) => {
|
|
4031
|
-
let i = t.add(n).toVar(), a =
|
|
4031
|
+
let i = t.add(n).toVar(), a = F(i, i).toVar();
|
|
4032
4032
|
i.assign(a.greaterThan(lc).select(i.div(a.sqrt()), Y(0, 0, 1)));
|
|
4033
|
-
let o =
|
|
4033
|
+
let o = I(0).toVar(), s = I(0).toVar(), c = I(0).toVar(), l = I(0).toVar(), u = I(0).toVar(), d = I(0).toVar();
|
|
4034
4034
|
return N(r.anisotropy.greaterThan(0), () => {
|
|
4035
4035
|
let a = Xs.wrap(Ec(e, r.anisotropyRotation));
|
|
4036
|
-
o.assign(
|
|
4036
|
+
o.assign(F(a.Ta, i)), s.assign(F(a.Ba, i)), c.assign(F(a.Ta, t)), l.assign(F(a.Ba, t)), u.assign(F(a.Ta, n)), d.assign(F(a.Ba, n));
|
|
4037
4037
|
}), Zs({
|
|
4038
|
-
NoL: z(
|
|
4039
|
-
NoV: z(
|
|
4040
|
-
NoH: z(
|
|
4041
|
-
VoH: z(
|
|
4042
|
-
LoH: z(
|
|
4038
|
+
NoL: z(F(e, n), .001),
|
|
4039
|
+
NoV: z(F(e, t), .001),
|
|
4040
|
+
NoH: z(F(e, i), .001),
|
|
4041
|
+
VoH: z(F(t, i), .001),
|
|
4042
|
+
LoH: z(F(n, i), .001),
|
|
4043
4043
|
ToH: o,
|
|
4044
4044
|
BoH: s,
|
|
4045
4045
|
ToV: c,
|
|
@@ -4062,7 +4062,7 @@ var Ec = M(([e, t]) => {
|
|
|
4062
4062
|
|
|
4063
4063
|
}
|
|
4064
4064
|
`, [kc]), jc = M(([e, t, n, r, i, a]) => {
|
|
4065
|
-
let o = e.greaterThan(.7).toVar(), s = t.greaterThan(.8), c = t.lessThan(.3).toVar(), l = n.greaterThan(.5).toVar(), u = r.greaterThan(.5).toVar(), d = a.greaterThan(0), f = i.x.add(i.y).add(i.z).greaterThan(0).toVar(), p =
|
|
4065
|
+
let o = e.greaterThan(.7).toVar(), s = t.greaterThan(.8), c = t.lessThan(.3).toVar(), l = n.greaterThan(.5).toVar(), u = r.greaterThan(.5).toVar(), d = a.greaterThan(0), f = i.x.add(i.y).add(i.z).greaterThan(0).toVar(), p = I(.15).mul(I(o)).add(I(.25).mul(I(c))).add(I(.45).mul(I(l))).add(I(.35).mul(I(u))).add(I(.3).mul(I(f))).add(I(.4).mul(I(d))), m = I(0).toVar();
|
|
4066
4066
|
return N(o.and(c), () => {
|
|
4067
4067
|
m.addAssign(.15);
|
|
4068
4068
|
}), N(l.and(u), () => {
|
|
@@ -4172,25 +4172,25 @@ var Ec = M(([e, t]) => {
|
|
|
4172
4172
|
return Us({
|
|
4173
4173
|
color: X(1, 1, 1, 1),
|
|
4174
4174
|
emissive: Y(0),
|
|
4175
|
-
emissiveIntensity:
|
|
4176
|
-
roughness:
|
|
4177
|
-
metalness:
|
|
4178
|
-
ior:
|
|
4179
|
-
transmission:
|
|
4180
|
-
thickness:
|
|
4181
|
-
clearcoat:
|
|
4182
|
-
clearcoatRoughness:
|
|
4183
|
-
opacity:
|
|
4184
|
-
transparent:
|
|
4175
|
+
emissiveIntensity: I(0),
|
|
4176
|
+
roughness: I(1),
|
|
4177
|
+
metalness: I(0),
|
|
4178
|
+
ior: I(1.5),
|
|
4179
|
+
transmission: I(0),
|
|
4180
|
+
thickness: I(0),
|
|
4181
|
+
clearcoat: I(0),
|
|
4182
|
+
clearcoatRoughness: I(0),
|
|
4183
|
+
opacity: I(1),
|
|
4184
|
+
transparent: I(0),
|
|
4185
4185
|
attenuationColor: Y(1),
|
|
4186
|
-
attenuationDistance:
|
|
4187
|
-
dispersion:
|
|
4188
|
-
sheen:
|
|
4189
|
-
sheenRoughness:
|
|
4186
|
+
attenuationDistance: I(0),
|
|
4187
|
+
dispersion: I(0),
|
|
4188
|
+
sheen: I(0),
|
|
4189
|
+
sheenRoughness: I(1),
|
|
4190
4190
|
sheenColor: Y(0),
|
|
4191
|
-
specularIntensity:
|
|
4191
|
+
specularIntensity: I(1),
|
|
4192
4192
|
specularColor: Y(1),
|
|
4193
|
-
alphaTest:
|
|
4193
|
+
alphaTest: I(0),
|
|
4194
4194
|
alphaMode: R(0),
|
|
4195
4195
|
side: R(0),
|
|
4196
4196
|
depthWrite: R(1),
|
|
@@ -4198,8 +4198,8 @@ var Ec = M(([e, t]) => {
|
|
|
4198
4198
|
emissiveMapIndex: R(-1),
|
|
4199
4199
|
normalMapIndex: R(-1),
|
|
4200
4200
|
bumpMapIndex: R(-1),
|
|
4201
|
-
bumpScale:
|
|
4202
|
-
displacementScale:
|
|
4201
|
+
bumpScale: I(1),
|
|
4202
|
+
displacementScale: I(0),
|
|
4203
4203
|
metalnessMapIndex: R(-1),
|
|
4204
4204
|
roughnessMapIndex: R(-1),
|
|
4205
4205
|
displacementMapIndex: R(-1),
|
|
@@ -4211,16 +4211,16 @@ var Ec = M(([e, t]) => {
|
|
|
4211
4211
|
metalnessTransform: e,
|
|
4212
4212
|
roughnessTransform: e,
|
|
4213
4213
|
displacementTransform: e,
|
|
4214
|
-
iridescence:
|
|
4215
|
-
iridescenceIOR:
|
|
4214
|
+
iridescence: I(0),
|
|
4215
|
+
iridescenceIOR: I(1.3),
|
|
4216
4216
|
iridescenceThicknessRange: J(100, 400),
|
|
4217
|
-
subsurface:
|
|
4217
|
+
subsurface: I(0),
|
|
4218
4218
|
subsurfaceColor: Y(1),
|
|
4219
4219
|
subsurfaceRadius: Y(1, .2, .1),
|
|
4220
|
-
subsurfaceRadiusScale:
|
|
4221
|
-
subsurfaceAnisotropy:
|
|
4222
|
-
anisotropy:
|
|
4223
|
-
anisotropyRotation:
|
|
4220
|
+
subsurfaceRadiusScale: I(1),
|
|
4221
|
+
subsurfaceAnisotropy: I(0),
|
|
4222
|
+
anisotropy: I(0),
|
|
4223
|
+
anisotropyRotation: I(0),
|
|
4224
4224
|
anisotropyMapIndex: R(-1),
|
|
4225
4225
|
transmissionMapIndex: R(-1),
|
|
4226
4226
|
clearcoatMapIndex: R(-1),
|
|
@@ -4308,8 +4308,8 @@ var tl = class {
|
|
|
4308
4308
|
dispose() {
|
|
4309
4309
|
el(this._renderer, this._attrs.ray), el(this._renderer, this._attrs.hit), this._attrs = {}, this.rayBuffer = null, this.hitBuffer = null, this.capacity = 0;
|
|
4310
4310
|
}
|
|
4311
|
-
}, nl = (e, t) => e.element($c(t, Xc.ORIGIN_META)).xyz, rl = (e, t) => e.element($c(t, Xc.DIR_FLAGS)).xyz, il = (e, t) =>
|
|
4312
|
-
let o = cl(t), s = a === null ? q(e.element(o).w).y :
|
|
4311
|
+
}, nl = (e, t) => e.element($c(t, Xc.ORIGIN_META)).xyz, rl = (e, t) => e.element($c(t, Xc.DIR_FLAGS)).xyz, il = (e, t) => Ne(e.element($c(t, Xc.DIR_FLAGS)).w), al = (e, t) => e.element($c(t, Xc.THROUGHPUT_PDF)).xyz, ol = (e, t) => e.element($c(t, Xc.THROUGHPUT_PDF)).w, sl = (e, t) => e.element($c(t, Xc.RADIANCE_ALPHA)), cl = (e) => G(e).mul(1), ll = (e, t, n, r, i, a = null) => {
|
|
4312
|
+
let o = cl(t), s = a === null ? q(e.element(o).w).y : I(a);
|
|
4313
4313
|
return e.element(o).assign(Ct(Je(J(n.x, n.y)), Je(J(n.z, r)), Ye(J(i.x, i.y)), Ye(J(i.z, s))));
|
|
4314
4314
|
}, ul = (e, t, n) => {
|
|
4315
4315
|
let r = cl(t), i = e.element(r).toVar();
|
|
@@ -4318,18 +4318,18 @@ var tl = class {
|
|
|
4318
4318
|
let t = bt(e.x), n = bt(e.y);
|
|
4319
4319
|
return X(Y(t.x, t.y, n.x).mul(.5).add(.5), n.y);
|
|
4320
4320
|
}, ml = (e) => Y(q(e.z), q(e.w).x), hl = (e) => {
|
|
4321
|
-
let t = P(
|
|
4322
|
-
return H(
|
|
4321
|
+
let t = P(L(He(z(e, 1e-6))), -8, 7), n = P(I(e).mul(Me(t.negate())).sub(1).mul(64), 0, 63);
|
|
4322
|
+
return H(I(e).lessThan(.004), G(0), G(t.add(8)).shiftLeft(6).bitOr(G(n)));
|
|
4323
4323
|
}, gl = (e, t) => {
|
|
4324
|
-
let n =
|
|
4325
|
-
return H(n.equal(G(0)),
|
|
4324
|
+
let n = Ne(e.element($c(t, Xc.ORIGIN_META)).w).shiftRight(22), r = I(n.shiftRight(6).bitAnd(G(15))).sub(8), i = I(n.bitAnd(G(63))).div(64).add(1);
|
|
4325
|
+
return H(n.equal(G(0)), I(0), i.mul(Me(r)));
|
|
4326
4326
|
}, _l = (e, t, n, r, i, a = G(0), o = null) => {
|
|
4327
4327
|
let s = G(r).bitAnd(G(255)).bitOr(G(i).bitAnd(G(255)).shiftLeft(8)).bitOr(G(a).bitAnd(G(63)).shiftLeft(16));
|
|
4328
4328
|
return o !== null && (s = s.bitOr(hl(o).shiftLeft(22))), e.element($c(t, Xc.ORIGIN_META)).assign(X(n, _t(s)));
|
|
4329
4329
|
}, vl = (e, t, n, r) => e.element($c(t, Xc.DIR_FLAGS)).assign(X(n, _t(r))), yl = (e, t, n, r) => e.element($c(t, Xc.THROUGHPUT_PDF)).assign(X(n, r)), bl = (e, t, n) => e.element($c(t, Xc.RADIANCE_ALPHA)).assign(n), xl = (e, t) => _t(e.element($c(t, Zc.DIST_TRI_BARY)).x), Sl = (e, t) => e.element($c(t, Zc.DIST_TRI_BARY)).y, Cl = (e, t) => _t(e.element($c(t, Zc.DIST_TRI_BARY)).zw), wl = (e, t) => Fc(e.element($c(t, Zc.NORMAL_MAT)).x), Tl = (e, t) => G(e.element($c(t, Zc.NORMAL_MAT)).y), El = (e, t) => R(e.element($c(t, Zc.NORMAL_MAT)).z).sub(R(1)), Dl = (e, t) => e.element($c(t, Zc.NORMAL_MAT)).w, Ol = (e, t) => e.element($c(t, Zc.RNG)).x, kl = (e, t, n) => e.element($c(t, Zc.RNG)).assign(Ct(n, 0, 0, 0)), Al = (e, t, n, r, i, a, o, s, c, l = G(0)) => {
|
|
4330
|
-
e.element($c(t, Zc.DIST_TRI_BARY)).assign(Ct(
|
|
4330
|
+
e.element($c(t, Zc.DIST_TRI_BARY)).assign(Ct(Ne(n), r, Ne(i), Ne(a))), e.element($c(t, Zc.NORMAL_MAT)).assign(Ct(Pc(o), s, c, l));
|
|
4331
4331
|
}, jl = (e, t) => {
|
|
4332
|
-
let n = e.element($c(t, Xc.MEDIUM_STACK)), r =
|
|
4332
|
+
let n = e.element($c(t, Xc.MEDIUM_STACK)), r = Ne(n.x);
|
|
4333
4333
|
return {
|
|
4334
4334
|
stackDepth: r.bitAnd(255),
|
|
4335
4335
|
transTraversals: r.shiftRight(8).bitAnd(255),
|
|
@@ -4344,10 +4344,10 @@ var tl = class {
|
|
|
4344
4344
|
}, Fl = (e) => {
|
|
4345
4345
|
let t = P(e, Y(0), Y(1)).mul(1023).add(.5);
|
|
4346
4346
|
return G(t.x).bitOr(G(t.y).shiftLeft(10)).bitOr(G(t.z).shiftLeft(20));
|
|
4347
|
-
}, Il = (e) => Y(
|
|
4347
|
+
}, Il = (e) => Y(I(e.bitAnd(G(1023))), I(e.shiftRight(10).bitAnd(G(1023))), I(e.shiftRight(20).bitAnd(G(1023)))).div(1023), Ll = (e, t) => Il(Ne(e.element($c(t, Xc.MEDIUM_SIGMA_A)).w)), Rl = (e, t, n) => {
|
|
4348
4348
|
let r = e.element($c(t, Xc.MEDIUM_SIGMA_A)).xyz.toVar();
|
|
4349
4349
|
e.element($c(t, Xc.MEDIUM_SIGMA_A)).assign(X(r, _t(Fl(n))));
|
|
4350
|
-
}, zl = (e, t) => R(
|
|
4350
|
+
}, zl = (e, t) => R(Ne(e.element($c(t, Xc.ORIGIN_META)).w).bitAnd(255)), Bl = (e, t) => R(Ne(e.element($c(t, Xc.ORIGIN_META)).w).shiftRight(8).bitAnd(255)), Vl = (e, t) => R(Ne(e.element($c(t, Xc.ORIGIN_META)).w).shiftRight(16).bitAnd(G(63))), Hl = (e, t) => {
|
|
4351
4351
|
let n = e.element($c(t, Xc.SSS_SIGMA_S));
|
|
4352
4352
|
return {
|
|
4353
4353
|
sigmaS: n.xyz,
|
|
@@ -4930,9 +4930,9 @@ var Mu = Math.sqrt(Gl * Gl - Wl * Wl), Nu = Gl - Wl, Pu = Math.PI, Fu = [
|
|
|
4930
4930
|
], Iu = (e) => Fu.map(e);
|
|
4931
4931
|
function Lu(e) {
|
|
4932
4932
|
return {
|
|
4933
|
-
r:
|
|
4934
|
-
m:
|
|
4935
|
-
o: z(
|
|
4933
|
+
r: je(e.mul(-1 / 8)),
|
|
4934
|
+
m: je(e.mul(-1 / Kl)),
|
|
4935
|
+
o: z(I(0), I(1).sub(ve(e.sub(25)).div(15)))
|
|
4936
4936
|
};
|
|
4937
4937
|
}
|
|
4938
4938
|
function Ru(e, t) {
|
|
@@ -4940,19 +4940,19 @@ function Ru(e, t) {
|
|
|
4940
4940
|
}
|
|
4941
4941
|
function zu(e, t) {
|
|
4942
4942
|
return Iu((n) => {
|
|
4943
|
-
let r = e[n].mul(t), i =
|
|
4943
|
+
let r = e[n].mul(t), i = je(r.negate()), a = I(1).sub(i).div(z(r, 1e-12));
|
|
4944
4944
|
return {
|
|
4945
|
-
weight: B(
|
|
4945
|
+
weight: B(I(1).sub(r.mul(.5)), a, ot(.001, r)).mul(t),
|
|
4946
4946
|
transmittance: i
|
|
4947
4947
|
};
|
|
4948
4948
|
});
|
|
4949
4949
|
}
|
|
4950
4950
|
function Bu(e, t, n, r, i, a = 1, o = 0) {
|
|
4951
|
-
let s = P(r, 0, t - 1), c = P(i, 0, n - 1), l =
|
|
4951
|
+
let s = P(r, 0, t - 1), c = P(i, 0, n - 1), l = L(s), u = L(c), d = s.sub(l), f = c.sub(u), p = G(l), m = G(u), h = We(p.add(1), G(t - 1)), g = We(m.add(1), G(n - 1)), _ = (n, r) => e.element(r.mul(t).add(n).mul(a).add(o));
|
|
4952
4952
|
return B(B(_(p, m), _(h, m), d), B(_(p, g), _(h, g), d), f);
|
|
4953
4953
|
}
|
|
4954
4954
|
function Vu(e, t) {
|
|
4955
|
-
let n = e.add(Wl), r = U(z(e.mul(e.add(2 * Wl)), 0)), i = n.mul(t), a = i.negate().add(U(z(i.mul(i).add(Mu * Mu).sub(r.mul(r)), 0))), o =
|
|
4955
|
+
let n = e.add(Wl), r = U(z(e.mul(e.add(2 * Wl)), 0)), i = n.mul(t), a = i.negate().add(U(z(i.mul(i).add(Mu * Mu).sub(r.mul(r)), 0))), o = I(Nu).sub(e), s = r.add(Mu);
|
|
4956
4956
|
return {
|
|
4957
4957
|
x: a.sub(o).div(z(s.sub(o), 1e-6)).mul(255),
|
|
4958
4958
|
y: r.div(Mu).mul(63),
|
|
@@ -4962,9 +4962,9 @@ function Vu(e, t) {
|
|
|
4962
4962
|
}
|
|
4963
4963
|
function Hu(e, t, n, r, i) {
|
|
4964
4964
|
let a = Vu(n, r), o = Bu(e, 256, 64, a.x, a.y).xyz, s = at(i.negate(), i, r.add(a.rho.div(a.r)));
|
|
4965
|
-
return Iu((e) =>
|
|
4965
|
+
return Iu((e) => je(t.rayleigh[e].mul(o.x).add(t.mieExtinction[e].mul(o.y)).add(t.ozone[e].mul(o.z)).negate()).mul(s));
|
|
4966
4966
|
}
|
|
4967
|
-
var Uu = (e) =>
|
|
4967
|
+
var Uu = (e) => I(e).div(15).pow(2).mul(Nu), Wu = (e) => U(P(e.div(Nu), 0, 1)).mul(15), Gu = -3 * Pu / 180, Ku = 15 * Pu / 180, qu = .5 + Math.atan((-Pu / 2 - Gu) / Ku) / Pu, Ju = .5 + Math.atan((Pu / 2 - Gu) / Ku) / Pu, Yu = (e, t) => it(P(ft(I(e).div(t - 1).mul(Ju - qu).add(qu - .5).mul(Pu)).mul(Ku).add(Gu), -Pu / 2, Pu / 2)), Xu = (e, t) => Se(xe(P(e, -1, 1)).sub(Gu).div(Ku)).div(Pu).add(.5 - qu).div(Ju - qu).mul(t - 1), Zu = 1e-30, Qu = (e) => Ve(z(e, X(Zu)));
|
|
4968
4968
|
function $u(e, t, n, r, i) {
|
|
4969
4969
|
let a = [
|
|
4970
4970
|
[P(Xu(n, 64), 0, 63), 64],
|
|
@@ -4972,7 +4972,7 @@ function $u(e, t, n, r, i) {
|
|
|
4972
4972
|
[P(r.add(1).mul(.5 * 15), 0, 15), 16],
|
|
4973
4973
|
[P(ye(P(i, -1, 1)).mul(7 / Pu), 0, 7), 8]
|
|
4974
4974
|
].map(([e, t]) => {
|
|
4975
|
-
let n =
|
|
4975
|
+
let n = L(e), r = e.sub(n).toVar(), i = G(n).toVar();
|
|
4976
4976
|
return {
|
|
4977
4977
|
t: r,
|
|
4978
4978
|
i0: i,
|
|
@@ -4997,15 +4997,15 @@ function $u(e, t, n, r, i) {
|
|
|
4997
4997
|
for (let n = 0; n < r.length; n += 2) t.push(B(r[n], r[n + 1], a[e].t));
|
|
4998
4998
|
r = t;
|
|
4999
4999
|
}
|
|
5000
|
-
return
|
|
5000
|
+
return je(r[0]);
|
|
5001
5001
|
});
|
|
5002
5002
|
}
|
|
5003
5003
|
function ed(e, t) {
|
|
5004
5004
|
let n = Xu(t, 128);
|
|
5005
|
-
return Iu((t) =>
|
|
5005
|
+
return Iu((t) => je(Bu(e, 128, 1, n, I(0), 4, t)));
|
|
5006
5006
|
}
|
|
5007
5007
|
function td(e, t) {
|
|
5008
|
-
let n = e.add(Wl).toVar(), r = n.mul(t).toVar(), i = e.mul(e.add(2 * Wl)).toVar(), a = r.mul(r).sub(i), o = t.lessThan(0).and(a.greaterThanEqual(0)).toVar(), s = i.div(z(r.negate().add(U(z(a, 0))), 1e-9)), c = r.negate().add(U(z(r.mul(r).add(
|
|
5008
|
+
let n = e.add(Wl).toVar(), r = n.mul(t).toVar(), i = e.mul(e.add(2 * Wl)).toVar(), a = r.mul(r).sub(i), o = t.lessThan(0).and(a.greaterThanEqual(0)).toVar(), s = i.div(z(r.negate().add(U(z(a, 0))), 1e-9)), c = r.negate().add(U(z(r.mul(r).add(I(Gl).sub(n).mul(n.add(Gl))), 0)));
|
|
5009
5009
|
return {
|
|
5010
5010
|
r: n,
|
|
5011
5011
|
b: r,
|
|
@@ -5014,7 +5014,7 @@ function td(e, t) {
|
|
|
5014
5014
|
tMax: o.select(s, c).toVar()
|
|
5015
5015
|
};
|
|
5016
5016
|
}
|
|
5017
|
-
var nd = (e, t, n) => e.sub(t.mul(n)).div(z(U(
|
|
5017
|
+
var nd = (e, t, n) => e.sub(t.mul(n)).div(z(U(I(1).sub(t.mul(t)).mul(I(1).sub(n.mul(n)))), 1e-4));
|
|
5018
5018
|
function rd(e, t, n, r) {
|
|
5019
5019
|
let i = t.mul(t.add(e.b.mul(2))), a = U(e.r.mul(e.r).add(i));
|
|
5020
5020
|
return {
|
|
@@ -5025,7 +5025,7 @@ function rd(e, t, n, r) {
|
|
|
5025
5025
|
}
|
|
5026
5026
|
var id = (e) => e.mul(e).add(1).mul(3 / (16 * Pu));
|
|
5027
5027
|
function ad(e, t) {
|
|
5028
|
-
let n = t * t, r = 3 / (8 * Pu) * (1 - n) / (2 + n), i = z(
|
|
5028
|
+
let n = t * t, r = 3 / (8 * Pu) * (1 - n) / (2 + n), i = z(I(1 + n).sub(e.mul(2 * t)), 1e-6);
|
|
5029
5029
|
return e.mul(e).add(1).mul(r).div(i.mul(U(i)));
|
|
5030
5030
|
}
|
|
5031
5031
|
function od({ transmittance: e }, t = 256) {
|
|
@@ -5035,26 +5035,26 @@ function od({ transmittance: e }, t = 256) {
|
|
|
5035
5035
|
N(r.greaterThanEqual(G(n)), () => {
|
|
5036
5036
|
ge();
|
|
5037
5037
|
});
|
|
5038
|
-
let i =
|
|
5038
|
+
let i = I(r.mod(256)).div(255), a = I(r.div(256)).div(63).mul(Mu).toVar(), o = U(a.mul(a).add(Wl * Wl)).toVar(), s = I(Gl).sub(o), c = a.add(Mu), l = s.add(i.mul(c.sub(s))).toVar(), u = P(I(Mu * Mu).sub(a.mul(a)).sub(l.mul(l)).div(z(o.mul(l).mul(2), 1e-9)), -1, 1).toVar(), d = a.mul(a).toVar(), f = o.mul(u).mul(2).toVar(), p = Y(0).toVar();
|
|
5039
5039
|
he({
|
|
5040
5040
|
start: R(0),
|
|
5041
5041
|
end: R(t),
|
|
5042
5042
|
type: "int",
|
|
5043
5043
|
condition: "<"
|
|
5044
5044
|
}, ({ i: e }) => {
|
|
5045
|
-
let n =
|
|
5045
|
+
let n = I(e).div(t), r = I(e).add(1).div(t), i = l.mul(n.mul(n)), a = l.mul(r.mul(r)), s = i.add(a).mul(.5), c = s.mul(s.add(f)), u = Lu(z(d.add(c).div(U(o.mul(o).add(c)).add(Wl)), 0));
|
|
5046
5046
|
p.addAssign(Y(u.r, u.m, u.o).mul(a.sub(i)));
|
|
5047
5047
|
}), e.element(r).assign(X(p, 0));
|
|
5048
5048
|
})().compute(n, [64]);
|
|
5049
5049
|
}
|
|
5050
5050
|
var sd = 4 * Pu / 128;
|
|
5051
5051
|
function cd(e, t, n, r) {
|
|
5052
|
-
let i =
|
|
5052
|
+
let i = I(e).add(I(n.div(r)).add(.5).div(r)).div(16).mul(2).sub(1), a = U(z(I(1).sub(i.mul(i)), 0)), o = I(t).add(I(n.mod(r)).add(.5).div(r)).mul(Pu / 8);
|
|
5053
5053
|
return Y(a.mul(Oe(o)), i, a.mul(it(o)));
|
|
5054
5054
|
}
|
|
5055
5055
|
function ld(e, t) {
|
|
5056
5056
|
let n = Xu(t, 64);
|
|
5057
|
-
return Iu((t) => Bu(e, 64, 1, n,
|
|
5057
|
+
return Iu((t) => Bu(e, 64, 1, n, I(0), 4, t));
|
|
5058
5058
|
}
|
|
5059
5059
|
function ud(e, { first: t, out: n, cellSamples: r = 2, steps: i = 20 }) {
|
|
5060
5060
|
let { transmittance: a, transfer: o, multipleScattering: s, groundE: c, coefficients: l, sunSinRadius: u, mieG: d } = e, f = 1024 * 128, p = r * r;
|
|
@@ -5063,7 +5063,7 @@ function ud(e, { first: t, out: n, cellSamples: r = 2, steps: i = 20 }) {
|
|
|
5063
5063
|
N(e.greaterThanEqual(G(f)), () => {
|
|
5064
5064
|
ge();
|
|
5065
5065
|
});
|
|
5066
|
-
let m = e.mod(128), h = e.div(128), g = Yu(h.mod(64), 64).toVar(), _ = z(Uu(h.div(64)), .001).toVar(), v = Y(U(z(
|
|
5066
|
+
let m = e.mod(128), h = e.div(128), g = Yu(h.mod(64), 64).toVar(), _ = z(Uu(h.div(64)), .001).toVar(), v = Y(U(z(I(1).sub(g.mul(g)), 0)), g, 0).toVar(), y = Iu(() => X(0).toVar()), b = t ? Iu(() => X(0).toVar()) : null;
|
|
5067
5067
|
he({
|
|
5068
5068
|
start: R(0),
|
|
5069
5069
|
end: R(p),
|
|
@@ -5071,14 +5071,14 @@ function ud(e, { first: t, out: n, cellSamples: r = 2, steps: i = 20 }) {
|
|
|
5071
5071
|
condition: "<",
|
|
5072
5072
|
name: "ray"
|
|
5073
5073
|
}, ({ ray: e }) => {
|
|
5074
|
-
let n = cd(m.div(8), m.mod(8), e, r).toVar(), o =
|
|
5074
|
+
let n = cd(m.div(8), m.mod(8), e, r).toVar(), o = F(n, v).toVar(), f = t ? id(o).toVar() : null, p = t ? ad(o, d).toVar() : null, h = t ? null : Array.from({ length: 8 }, () => X(0).toVar()), x = td(_, n.y), S = Iu(() => X(1).toVar());
|
|
5075
5075
|
he({
|
|
5076
5076
|
start: R(0),
|
|
5077
5077
|
end: R(i),
|
|
5078
5078
|
type: "int",
|
|
5079
5079
|
condition: "<"
|
|
5080
5080
|
}, ({ i: e }) => {
|
|
5081
|
-
let n =
|
|
5081
|
+
let n = I(e).div(i), r = I(e).add(1).div(i), c = x.tMax.mul(n.mul(n)), d = x.tMax.mul(r.mul(r)).sub(c), m = rd(x, c.add(d.mul(.5)), g, o), _ = Lu(m.h), v = Iu((e) => l.rayleigh[e].mul(_.r)), C = Iu((e) => l.mieScattering[e].mul(_.m)), w = zu(Ru(l, _), d), T;
|
|
5082
5082
|
if (t) {
|
|
5083
5083
|
let e = Hu(a, l, m.h, m.muS, u);
|
|
5084
5084
|
T = Iu((t) => e[t].mul(v[t].mul(f).add(C[t].mul(p))));
|
|
@@ -5090,7 +5090,7 @@ function ud(e, { first: t, out: n, cellSamples: r = 2, steps: i = 20 }) {
|
|
|
5090
5090
|
}), N(x.hitsGround, () => {
|
|
5091
5091
|
let e = P(x.r.mul(g).add(x.tMax.mul(o)).div(Wl), -1, 1), n;
|
|
5092
5092
|
if (t) {
|
|
5093
|
-
let t = Hu(a, l,
|
|
5093
|
+
let t = Hu(a, l, I(0), e, u);
|
|
5094
5094
|
n = Iu((n) => t[n].mul(z(e, 0)));
|
|
5095
5095
|
} else n = ld(c, e);
|
|
5096
5096
|
for (let e of Fu) y[e].addAssign(S[e].mul(n[e]).mul(l.albedo[e]).mul(1 / Pu));
|
|
@@ -5118,7 +5118,7 @@ function dd(e, { incoming: t, stage: n }) {
|
|
|
5118
5118
|
for (let n of Fu) e[n].addAssign(r.element(f.add(G(t)).mul(4).add(n)));
|
|
5119
5119
|
}), p = Iu((t) => {
|
|
5120
5120
|
let n = We(e[t].div(128), .95);
|
|
5121
|
-
return n.div(
|
|
5121
|
+
return n.div(I(1).sub(n)).toVar();
|
|
5122
5122
|
});
|
|
5123
5123
|
}
|
|
5124
5124
|
for (let r = 0; r < 2; r++) {
|
|
@@ -5148,7 +5148,7 @@ function dd(e, { incoming: t, stage: n }) {
|
|
|
5148
5148
|
type: "int",
|
|
5149
5149
|
condition: "<"
|
|
5150
5150
|
}, ({ i: n }) => {
|
|
5151
|
-
let r =
|
|
5151
|
+
let r = I(G(n).div(8)).add(.5).div(16).mul(2).sub(1);
|
|
5152
5152
|
for (let i of Fu) e[i].addAssign(t.element(f.add(G(n)).mul(4).add(i)).mul(r));
|
|
5153
5153
|
});
|
|
5154
5154
|
for (let t of Fu) s.element(d.mul(4).add(t)).assign(e[t].mul(sd));
|
|
@@ -5164,7 +5164,7 @@ function pd({ transmittance: e, multipleScattering: t, coefficients: n, sunSinRa
|
|
|
5164
5164
|
type: "int",
|
|
5165
5165
|
condition: "<"
|
|
5166
5166
|
}, ({ i }) => {
|
|
5167
|
-
let h =
|
|
5167
|
+
let h = I(i).div(c), g = I(i).add(1).div(c), _ = m.mul(h.mul(h)), v = m.mul(g.mul(g)).sub(_), y = rd(a, _.add(v.mul(.5)), o, s), b = Lu(y.h), x = Iu((e) => n.rayleigh[e].mul(b.r)), S = Iu((e) => n.mieScattering[e].mul(b.m)), C = Hu(e, n, y.h, y.muS, r), w = zu(Ru(n, b), v);
|
|
5168
5168
|
d && N(i.mod(fd).equal(0), () => {
|
|
5169
5169
|
let e = $u(t, y.h, y.muS, y.mu, nd(s, y.mu, y.muS));
|
|
5170
5170
|
for (let t = 0; t < 8; t++) d[t].assign(e[t]);
|
|
@@ -5179,13 +5179,13 @@ function pd({ transmittance: e, multipleScattering: t, coefficients: n, sunSinRa
|
|
|
5179
5179
|
};
|
|
5180
5180
|
}
|
|
5181
5181
|
function md(e, { sqrtDirections: t = 12, steps: n = 32 } = {}) {
|
|
5182
|
-
let { irradiance: r } = e, i = t * t, a =
|
|
5182
|
+
let { irradiance: r } = e, i = t * t, a = I(.001);
|
|
5183
5183
|
return M(() => {
|
|
5184
5184
|
let o = Fe;
|
|
5185
5185
|
N(o.greaterThanEqual(G(128)), () => {
|
|
5186
5186
|
ge();
|
|
5187
5187
|
});
|
|
5188
|
-
let s = Yu(o, 128).toVar(), c = Y(U(z(
|
|
5188
|
+
let s = Yu(o, 128).toVar(), c = Y(U(z(I(1).sub(s.mul(s)), 0)), s, 0).toVar(), l = Iu(() => X(0).toVar());
|
|
5189
5189
|
he({
|
|
5190
5190
|
start: R(0),
|
|
5191
5191
|
end: R(i),
|
|
@@ -5193,13 +5193,13 @@ function md(e, { sqrtDirections: t = 12, steps: n = 32 } = {}) {
|
|
|
5193
5193
|
condition: "<",
|
|
5194
5194
|
name: "dirIndex"
|
|
5195
5195
|
}, ({ dirIndex: r }) => {
|
|
5196
|
-
let i =
|
|
5196
|
+
let i = I(r.div(t)).add(.5).div(t), o = I(r.mod(t)).add(.5).div(t), u = U(i), d = o.mul(2 * Pu), f = Y(u.mul(Oe(d)), U(z(I(1).sub(i), 0)), u.mul(it(d))).toVar(), { L: p } = pd(e, td(a, f.y), s, F(f, c), n);
|
|
5197
5197
|
for (let e of Fu) l[e].addAssign(p[e]);
|
|
5198
5198
|
});
|
|
5199
5199
|
for (let e of Fu) r.element(o.mul(4).add(e)).assign(Qu(l[e].mul(Pu / i)));
|
|
5200
5200
|
})().compute(128, [64]);
|
|
5201
5201
|
}
|
|
5202
|
-
var hd = (e) =>
|
|
5202
|
+
var hd = (e) => I(e).div(255).pow(2).mul(Pu);
|
|
5203
5203
|
function gd(e, { width: t, height: n, steps: r = 40, multipleScattering: i = !0 }) {
|
|
5204
5204
|
let { sky: a, skyRows: o, irradiance: s, coefficients: c, rgb: l, sunDirection: u, altitude: d, sunSinRadius: f, transmittance: p } = e, m = i ? e : {
|
|
5205
5205
|
...e,
|
|
@@ -5210,19 +5210,19 @@ function gd(e, { width: t, height: n, steps: r = 40, multipleScattering: i = !0
|
|
|
5210
5210
|
N(e.greaterThanEqual(G(h)), () => {
|
|
5211
5211
|
ge();
|
|
5212
5212
|
});
|
|
5213
|
-
let t =
|
|
5213
|
+
let t = I(1).sub(I(e.div(256)).add(.5).div(n)).mul(Pu), i = Oe(t).toVar(), a = z(d, .001).toVar(), g = u.y.toVar(), _ = it(t).mul(Oe(hd(e.mod(256)))).mul(U(z(I(1).sub(g.mul(g)), 0))).add(i.mul(g)).toVar(), v = td(a, i), { L: y, throughput: b } = pd(m, v, g, _, r);
|
|
5214
5214
|
N(v.hitsGround, () => {
|
|
5215
|
-
let e = P(v.r.mul(g).add(v.tMax.mul(_)).div(Wl), -1, 1).toVar(), t = Hu(p, c,
|
|
5215
|
+
let e = P(v.r.mul(g).add(v.tMax.mul(_)).div(Wl), -1, 1).toVar(), t = Hu(p, c, I(0), e, f), n = ed(s, e);
|
|
5216
5216
|
for (let r of Fu) y[r].addAssign(b[r].mul(c.albedo[r]).mul(1 / Pu).mul(t[r].mul(z(e, 0)).add(n[r])));
|
|
5217
5217
|
});
|
|
5218
|
-
let x = Iu((e) => y[e].mul(c.solar[e])), S = (e) => x.reduce((t, n, r) => t.add(
|
|
5218
|
+
let x = Iu((e) => y[e].mul(c.solar[e])), S = (e) => x.reduce((t, n, r) => t.add(F(n, l[e * 4 + r])), I(0));
|
|
5219
5219
|
o.element(e).assign(X(z(Y(S(0), S(1), S(2)), Y(0)), 1));
|
|
5220
5220
|
})().compute(h, [64]), M(() => {
|
|
5221
5221
|
let e = Fe;
|
|
5222
5222
|
N(e.greaterThanEqual(G(t * n)), () => {
|
|
5223
5223
|
ge();
|
|
5224
5224
|
});
|
|
5225
|
-
let r =
|
|
5225
|
+
let r = I(e.mod(t)).add(.5).div(t).sub(.5).mul(2 * Pu).sub(Se(u.z, u.x)), i = U(ve(Se(it(r), Oe(r))).div(Pu)).mul(255).toVar(), s = We(L(i), 254).toVar(), c = e.div(t).mul(256).add(G(s)).toVar();
|
|
5226
5226
|
a.element(e).assign(B(o.element(c), o.element(c.add(1)), i.sub(s)));
|
|
5227
5227
|
})().compute(t * n, [64])];
|
|
5228
5228
|
}
|
|
@@ -5249,7 +5249,7 @@ function vd(e, t, n) {
|
|
|
5249
5249
|
}), r;
|
|
5250
5250
|
}
|
|
5251
5251
|
function yd({ pixels: e, rows: t, prefix: n, stats: r, cdf: i, width: a, height: o }) {
|
|
5252
|
-
let s = _d(a), c = (e) => it(
|
|
5252
|
+
let s = _d(a), c = (e) => it(I(e).add(.5).mul(Math.PI / o)), l = (t, n, r) => F(e.element(t.mul(a).add(n)).xyz, pc).mul(r), u = () => N(Fe.greaterThan(G(0)), () => {
|
|
5253
5253
|
ge();
|
|
5254
5254
|
});
|
|
5255
5255
|
return [
|
|
@@ -5258,7 +5258,7 @@ function yd({ pixels: e, rows: t, prefix: n, stats: r, cdf: i, width: a, height:
|
|
|
5258
5258
|
N(e.greaterThanEqual(G(o)), () => {
|
|
5259
5259
|
ge();
|
|
5260
5260
|
});
|
|
5261
|
-
let n = c(e).toVar(), r =
|
|
5261
|
+
let n = c(e).toVar(), r = I(0).toVar();
|
|
5262
5262
|
he({
|
|
5263
5263
|
start: R(0),
|
|
5264
5264
|
end: R(a),
|
|
@@ -5270,7 +5270,7 @@ function yd({ pixels: e, rows: t, prefix: n, stats: r, cdf: i, width: a, height:
|
|
|
5270
5270
|
})().compute(o, [64]),
|
|
5271
5271
|
M(() => {
|
|
5272
5272
|
u();
|
|
5273
|
-
let e =
|
|
5273
|
+
let e = I(0).toVar();
|
|
5274
5274
|
he({
|
|
5275
5275
|
start: R(0),
|
|
5276
5276
|
end: R(o),
|
|
@@ -5285,7 +5285,7 @@ function yd({ pixels: e, rows: t, prefix: n, stats: r, cdf: i, width: a, height:
|
|
|
5285
5285
|
N(e.greaterThanEqual(G(o)), () => {
|
|
5286
5286
|
ge();
|
|
5287
5287
|
});
|
|
5288
|
-
let i = c(e).toVar(), s = r.element(0).y.toVar(), u =
|
|
5288
|
+
let i = c(e).toVar(), s = r.element(0).y.toVar(), u = I(0).toVar(), d = I(0).toVar();
|
|
5289
5289
|
he({
|
|
5290
5290
|
start: R(0),
|
|
5291
5291
|
end: R(a),
|
|
@@ -5298,7 +5298,7 @@ function yd({ pixels: e, rows: t, prefix: n, stats: r, cdf: i, width: a, height:
|
|
|
5298
5298
|
})().compute(o, [64]),
|
|
5299
5299
|
M(() => {
|
|
5300
5300
|
u();
|
|
5301
|
-
let e =
|
|
5301
|
+
let e = I(0).toVar();
|
|
5302
5302
|
he({
|
|
5303
5303
|
start: R(0),
|
|
5304
5304
|
end: R(o),
|
|
@@ -5307,7 +5307,7 @@ function yd({ pixels: e, rows: t, prefix: n, stats: r, cdf: i, width: a, height:
|
|
|
5307
5307
|
}, ({ i: n }) => {
|
|
5308
5308
|
e.addAssign(t.element(n).y);
|
|
5309
5309
|
});
|
|
5310
|
-
let n = e.greaterThan(0).toVar(), c =
|
|
5310
|
+
let n = e.greaterThan(0).toVar(), c = I(0).toVar();
|
|
5311
5311
|
he({
|
|
5312
5312
|
start: R(0),
|
|
5313
5313
|
end: R(o),
|
|
@@ -5325,7 +5325,7 @@ function yd({ pixels: e, rows: t, prefix: n, stats: r, cdf: i, width: a, height:
|
|
|
5325
5325
|
condition: "<",
|
|
5326
5326
|
name: "row"
|
|
5327
5327
|
}, ({ row: e }) => {
|
|
5328
|
-
let n = H(c.greaterThan(0),
|
|
5328
|
+
let n = H(c.greaterThan(0), I(vd(o, (e) => t.element(e).z, I(e).add(1).div(o).mul(c))), I(o - 1));
|
|
5329
5329
|
i.element(G(e).mul(s).add(a)).assign(n.add(.5).div(o));
|
|
5330
5330
|
});
|
|
5331
5331
|
})().compute(1, [1]),
|
|
@@ -5337,7 +5337,7 @@ function yd({ pixels: e, rows: t, prefix: n, stats: r, cdf: i, width: a, height:
|
|
|
5337
5337
|
let c = e.mod(a), l = e.div(a), u = r.element(1).z.greaterThan(0).toVar(), d = t.element(l).toVar(), f = H(u, d.y, d.x).toVar(), p = l.mul(a).toVar(), m = vd(a, (e) => {
|
|
5338
5338
|
let t = n.element(p.add(G(e)));
|
|
5339
5339
|
return H(u, t.y, t.x);
|
|
5340
|
-
},
|
|
5340
|
+
}, I(c).add(1).div(a).mul(f)), h = H(f.greaterThan(0), I(m), I(a - 1));
|
|
5341
5341
|
i.element(l.mul(s).add(c)).assign(h.add(.5).div(a));
|
|
5342
5342
|
})().compute(a * o, [64])
|
|
5343
5343
|
];
|
|
@@ -6298,7 +6298,7 @@ function zf({ source: e, display: t, view: n, look: r, context: i }) {
|
|
|
6298
6298
|
function Bf({ texture: e, size: t, minEv: n, maxEv: r }) {
|
|
6299
6299
|
let i = t - 1, a = r - n, o = (t) => mt(e, P(t, Le(0), Le(i))).rgb;
|
|
6300
6300
|
return M(([e, r]) => {
|
|
6301
|
-
let s = P(He(z(z(e.mul(r), Y(0)), Y(1e-10))).sub(
|
|
6301
|
+
let s = P(He(z(z(e.mul(r), Y(0)), Y(1e-10))).sub(I(n)).div(I(a)), Y(0), Y(1)).mul(I(i)).toVar(), c = P(Le(L(s)), Le(0), Le(t - 2)).toVar(), l = P(s.sub(Y(c)), Y(0), Y(1)).toVar(), u = Y(0).toVar(), d = Le(0).toVar(), f = Le(0).toVar(), p = Le(1).toVar();
|
|
6302
6302
|
N(l.x.greaterThan(l.y), () => {
|
|
6303
6303
|
N(l.y.greaterThan(l.z), () => {
|
|
6304
6304
|
u.assign(Y(l.x, l.y, l.z)), d.assign(Le(1, 0, 0)), f.assign(Le(1, 1, 0)), p.assign(Le(1, 1, 1));
|
|
@@ -7381,15 +7381,15 @@ var Pp = a("env"), Fp = 1024, Ip = 512, Lp = Math.PI / 180, Rp = new _n(), zp =
|
|
|
7381
7381
|
return t.mul(t).mul(e);
|
|
7382
7382
|
};
|
|
7383
7383
|
M(([e, t, n]) => {
|
|
7384
|
-
let r = z(Y(
|
|
7385
|
-
return e.add(r.sub(e).mul(Hp(
|
|
7384
|
+
let r = z(Y(I(1).sub(n)), e);
|
|
7385
|
+
return e.add(r.sub(e).mul(Hp(I(1).sub(t))));
|
|
7386
7386
|
});
|
|
7387
7387
|
var Up = M(([e, t]) => {
|
|
7388
7388
|
let n = P(e, 0, 1);
|
|
7389
|
-
return t.add(
|
|
7389
|
+
return t.add(I(1).sub(t).mul(Hp(I(1).sub(n))));
|
|
7390
7390
|
}), Wp = M(([e, t]) => {
|
|
7391
7391
|
let n = P(e, 0, 1);
|
|
7392
|
-
return t.add(Y(1).sub(t).mul(Hp(
|
|
7392
|
+
return t.add(Y(1).sub(t).mul(Hp(I(1).sub(n))));
|
|
7393
7393
|
}), Gp = M(([e]) => {
|
|
7394
7394
|
let t = U(e);
|
|
7395
7395
|
return Y(1).add(t).div(z(Y(1).sub(t), Y(Vp)));
|
|
@@ -7399,24 +7399,24 @@ var Up = M(([e, t]) => {
|
|
|
7399
7399
|
}), qp = M(([e, t]) => {
|
|
7400
7400
|
let n = e.sub(t), r = z(e.add(t), Vp), i = n.div(r);
|
|
7401
7401
|
return i.mul(i);
|
|
7402
|
-
}), Jp = (e) => Y(qp(e,
|
|
7402
|
+
}), Jp = (e) => Y(qp(e, I(1))), Yp = M(([e, t]) => {
|
|
7403
7403
|
let n = P(e, 0, 1), r = t.mul(t).sub(1).add(n.mul(n)), i = U(z(r, 0)), a = i.sub(n).div(z(i.add(n), Vp)), o = n.mul(i.add(n)).sub(1).div(z(n.mul(i.sub(n)).add(1), Vp));
|
|
7404
|
-
return H(r.greaterThan(0), P(a.mul(a).mul(.5).mul(o.mul(o).add(1)), 0, 1),
|
|
7404
|
+
return H(r.greaterThan(0), P(a.mul(a).mul(.5).mul(o.mul(o).add(1)), 0, 1), I(1));
|
|
7405
7405
|
}), Xp = M(([e, t]) => {
|
|
7406
|
-
let n = qp(t,
|
|
7407
|
-
return P(Yp(e, t).sub(n).div(z(
|
|
7406
|
+
let n = qp(t, I(1));
|
|
7407
|
+
return P(Yp(e, t).sub(n).div(z(I(1).sub(n), Vp)), 0, 1);
|
|
7408
7408
|
}), Zp = 1e-30, Qp = M(([e, t]) => {
|
|
7409
7409
|
let n = t.mul(t), r = n.mul(n), i = e.mul(e).mul(r.sub(1)).add(1);
|
|
7410
|
-
return r.div(z(
|
|
7410
|
+
return r.div(z(I(oc).mul(i).mul(i), Zp));
|
|
7411
7411
|
}), $p = M(([e, t]) => {
|
|
7412
|
-
let n = z(t, uc), r = n.mul(n), i =
|
|
7413
|
-
return i.div(z(
|
|
7414
|
-
}), em = M(([e]) =>
|
|
7415
|
-
let n = t.mul(t), r = n.mul(n), i = e.add(U(r.add(
|
|
7416
|
-
return
|
|
7412
|
+
let n = z(t, uc), r = n.mul(n), i = I(1).div(r.mul(r)), a = e.mul(e).mul(i.sub(1)).add(1);
|
|
7413
|
+
return i.div(z(I(oc).mul(a).mul(a), lc));
|
|
7414
|
+
}), em = M(([e]) => I(1).div(z(e, uc))), tm = M(([e, t]) => P(I(1).div(z(I(4).mul(t.add(e).sub(t.mul(e))), lc)), 0, 1)), nm = M(([e, t]) => {
|
|
7415
|
+
let n = t.mul(t), r = n.mul(n), i = e.add(U(r.add(I(1).sub(r).mul(e.mul(e)))));
|
|
7416
|
+
return I(2).mul(e).div(z(i, lc));
|
|
7417
7417
|
}), rm = M(([e, t, n]) => {
|
|
7418
|
-
let r = n.mul(n), i = r.mul(r), a = t.mul(U(i.add(
|
|
7419
|
-
return
|
|
7418
|
+
let r = n.mul(n), i = r.mul(r), a = t.mul(U(i.add(I(1).sub(i).mul(e.mul(e))))), o = e.mul(U(i.add(I(1).sub(i).mul(t.mul(t)))));
|
|
7419
|
+
return I(.5).div(z(a.add(o), lc));
|
|
7420
7420
|
}), im = 16, am = 17, om = .5, sm = am, cm = new Kt(new Float32Array([
|
|
7421
7421
|
1,
|
|
7422
7422
|
.0302,
|
|
@@ -24830,8 +24830,8 @@ var Up = M(([e, t]) => {
|
|
|
24830
24830
|
cm.minFilter = Z, cm.magFilter = Z, cm.wrapS = Bt, cm.wrapT = Bt, cm.generateMipmaps = !1, cm.needsUpdate = !0;
|
|
24831
24831
|
var lm = pt(cm);
|
|
24832
24832
|
lm.setUpdateMatrix(!1);
|
|
24833
|
-
var um = (e, t, n = 0) => J(P(e, 0, 1).mul(im - 1).add(.5).add(
|
|
24834
|
-
let u = lm.sample(um(l, c)).toVar(), d = P(n.sub(1).div(n.add(1)).div(om), 0, 1).mul(am - 1).toVar(), f = We(
|
|
24833
|
+
var um = (e, t, n = 0) => J(P(e, 0, 1).mul(im - 1).add(.5).add(I(n).mul(im)).div(im * sm), P(t, 0, 1).mul((im - 1) / im).add(.5 / im)), dm = M(([e, t]) => P(lm.sample(um(t, e)).g, 0, 1)), fm = M(([e, t, n, r, i, a, o, s, c, l]) => {
|
|
24834
|
+
let u = lm.sample(um(l, c)).toVar(), d = P(n.sub(1).div(n.add(1)).div(om), 0, 1).mul(am - 1).toVar(), f = We(L(d), I(am - 2)).toVar(), p = lm.sample(um(l, c, f.add(1))).toVar(), m = P(B(p.r, p.g, d.sub(f)), 0, 1), h = z(u.r, .05).toVar(), g = P(u.b, 0, 1).toVar(), _ = e.mul(h.sub(m)).add(Y(t.mul(m))), v = r.mul(h.sub(g)).add(Y(g)), y = a.mul(h.sub(g)).add(Y(g)), b = z(B(B(_, v, i), y, o), Y(0)), x = Y(1).add(s.mul(I(1).div(h).sub(1)));
|
|
24835
24835
|
return Qs({
|
|
24836
24836
|
compensation: x,
|
|
24837
24837
|
E_total: P(b.mul(x), Y(0), Y(1))
|
|
@@ -24850,32 +24850,32 @@ var um = (e, t, n = 0) => J(P(e, 0, 1).mul(im - 1).add(.5).add(L(n).mul(im)).div
|
|
|
24850
24850
|
return r.mul(i).div(z(t.mul(4), lc));
|
|
24851
24851
|
}), hm = M(([e, t]) => {
|
|
24852
24852
|
let n = z(e.mul(e), 1e-4).toVar();
|
|
24853
|
-
return J(z(B(n,
|
|
24853
|
+
return J(z(B(n, I(1), t.mul(t)), 1e-4), n);
|
|
24854
24854
|
}), gm = M(([e, t, n, r, i]) => {
|
|
24855
|
-
let a = e.mul(t), o = Y(t.mul(r), e.mul(i), a.mul(n)), s = z(
|
|
24855
|
+
let a = e.mul(t), o = Y(t.mul(r), e.mul(i), a.mul(n)), s = z(F(o, o), Zp), c = a.div(s);
|
|
24856
24856
|
return a.mul(c.mul(c)).div(oc);
|
|
24857
24857
|
}), _m = M(([e, t, n, r, i, a, o, s]) => {
|
|
24858
24858
|
let c = s.mul(Y(e.mul(n), t.mul(r), o).length()), l = o.mul(Y(e.mul(i), t.mul(a), s).length());
|
|
24859
|
-
return
|
|
24859
|
+
return I(.5).div(z(c.add(l), lc));
|
|
24860
24860
|
}), vm = M(([e, t, n, r, i]) => {
|
|
24861
|
-
let a = e.mul(n), o = t.mul(r), s = a.mul(a).add(o.mul(o)), c = z(i.mul(i), lc), l = U(
|
|
24862
|
-
return
|
|
24861
|
+
let a = e.mul(n), o = t.mul(r), s = a.mul(a).add(o.mul(o)), c = z(i.mul(i), lc), l = U(I(1).add(s.div(c))).sub(1).mul(.5);
|
|
24862
|
+
return I(1).div(l.add(1));
|
|
24863
24863
|
}), ym = M(([e, t, n, r, i, a, o, s]) => {
|
|
24864
24864
|
let c = gm(e, t, n, r, i), l = vm(e, t, o, s, a);
|
|
24865
24865
|
return c.mul(l).div(z(a.mul(4), lc));
|
|
24866
24866
|
}), bm = M(([e, t]) => {
|
|
24867
|
-
let n =
|
|
24868
|
-
return o.x.addAssign(
|
|
24867
|
+
let n = I(cc).mul(e).mul(1e-9), r = Y(54856e-17, 44201e-17, 52481e-17), i = Y(1681e3, 1795300, 2208400), a = Y(43278e5, 93046e5, 66121e5), o = r.mul(U(I(cc).mul(a))).mul(Oe(i.mul(n).add(t))).mul(je(xc({ x: n }).negate().mul(a))).toVar();
|
|
24868
|
+
return o.x.addAssign(I(9747e-17).mul(U(I(cc).mul(45282e5))).mul(Oe(I(2239900).mul(n).add(t.x))).mul(je(I(-45282e5).mul(xc({ x: n }))))), bc.mul(o.div(1.0685e-7));
|
|
24869
24869
|
}), xm = M(([e, t, n, r, i]) => {
|
|
24870
|
-
let a = B(e, t, at(0, .03, r)).toVar(), o = xc({ x: e.div(a) }).mul(
|
|
24870
|
+
let a = B(e, t, at(0, .03, r)).toVar(), o = xc({ x: e.div(a) }).mul(I(1).sub(xc({ x: n }))), s = I(1).sub(o).toVar(), c = Y(0).toVar();
|
|
24871
24871
|
return N(s.lessThan(0), () => {
|
|
24872
24872
|
c.assign(Y(1));
|
|
24873
24873
|
}).Else(() => {
|
|
24874
|
-
let t = U(s).toVar(), o = Up(n, qp(a, e)).toVar(), l =
|
|
24875
|
-
S.mulAssign(y), x.addAssign(S.mul(
|
|
24874
|
+
let t = U(s).toVar(), o = Up(n, qp(a, e)).toVar(), l = I(1).sub(o).toVar(), u = a.lessThan(e).select(I(oc), I(0)), d = I(oc).sub(u), f = Gp(P(i, 0, .9999)).toVar(), p = Kp(f, a).toVar(), m = Y(Up(t, p.x), Up(t, p.y), Up(t, p.z)).toVar(), h = Y(f.x.lessThan(a).select(I(oc), I(0)), f.y.lessThan(a).select(I(oc), I(0)), f.z.lessThan(a).select(I(oc), I(0))), g = I(2).mul(a).mul(r).mul(t).toVar(), _ = Y(d).add(h).toVar(), v = P(Y(o).mul(m), 1e-5, .9999).toVar(), y = U(v).toVar(), b = Y(l.mul(l)).mul(m).div(Y(1).sub(v)).toVar(), x = Y(o).add(b).toVar().toVar(), S = b.sub(Y(l)).toVar();
|
|
24875
|
+
S.mulAssign(y), x.addAssign(S.mul(I(2).mul(bm(I(1).mul(g), I(1).mul(_))))), S.mulAssign(y), x.addAssign(S.mul(I(2).mul(bm(I(2).mul(g), I(2).mul(_))))), c.assign(z(x, Y(0)));
|
|
24876
24876
|
}), c;
|
|
24877
24877
|
}), Sm = M(([e, t, n]) => {
|
|
24878
|
-
let r = n.invRoughness, i = n.metalFactor, a =
|
|
24878
|
+
let r = n.invRoughness, i = n.metalFactor, a = I(0).toVar();
|
|
24879
24879
|
N(t.isMetallic, () => {
|
|
24880
24880
|
a.assign(z(r.mul(i), .7));
|
|
24881
24881
|
}).ElseIf(t.isSmooth, () => {
|
|
@@ -24883,43 +24883,43 @@ var um = (e, t, n = 0) => J(P(e, 0, 1).mul(im - 1).add(.5).add(L(n).mul(im)).div
|
|
|
24883
24883
|
}).Else(() => {
|
|
24884
24884
|
a.assign(z(r.mul(i), e.metalness.mul(.1)));
|
|
24885
24885
|
});
|
|
24886
|
-
let o = a.mul(e.specularIntensity).toVar(), s =
|
|
24886
|
+
let o = a.mul(e.specularIntensity).toVar(), s = I(1).sub(a).mul(I(1).sub(e.metalness)).mul(I(1).sub(e.transmission)).toVar(), c = e.sheen.mul(n.maxSheenColor).toVar(), l = I(0).toVar();
|
|
24887
24887
|
N(t.hasClearcoat, () => {
|
|
24888
24888
|
l.assign(e.clearcoat.mul(r).mul(.4));
|
|
24889
24889
|
}).Else(() => {
|
|
24890
24890
|
l.assign(e.clearcoat.mul(r).mul(.35));
|
|
24891
24891
|
});
|
|
24892
|
-
let u =
|
|
24892
|
+
let u = I(0).toVar();
|
|
24893
24893
|
N(t.isTransmissive, () => {
|
|
24894
24894
|
let t = n.iorFactor.mul(r).mul(.8);
|
|
24895
|
-
u.assign(e.transmission.mul(t).mul(
|
|
24895
|
+
u.assign(e.transmission.mul(t).mul(I(.6).add(I(.4).mul(e.ior.div(2)))).mul(I(1).add(e.dispersion.mul(.6))));
|
|
24896
24896
|
}).Else(() => {
|
|
24897
24897
|
let t = n.iorFactor.mul(r).mul(.7);
|
|
24898
|
-
u.assign(e.transmission.mul(t).mul(
|
|
24898
|
+
u.assign(e.transmission.mul(t).mul(I(.5).add(I(.5).mul(e.ior.div(2)))).mul(I(1).add(e.dispersion.mul(.5))));
|
|
24899
24899
|
});
|
|
24900
|
-
let d = r.mul(t.isSmooth.select(
|
|
24900
|
+
let d = r.mul(t.isSmooth.select(I(.6), I(.5))), f = We(e.iridescence.mul(d).mul(I(.5).add(I(.5).mul(e.iridescenceThicknessRange.y.sub(e.iridescenceThicknessRange.x).div(1e3)))).mul(I(.5).add(I(.5).mul(e.iridescenceIOR.div(2)))), s);
|
|
24901
24901
|
o.addAssign(f), s.subAssign(f);
|
|
24902
|
-
let p = o.add(s).add(c).add(l).add(u), m =
|
|
24902
|
+
let p = o.add(s).add(c).add(l).add(u), m = I(1).div(z(p, .001));
|
|
24903
24903
|
return Ys({
|
|
24904
24904
|
specular: o.mul(m),
|
|
24905
24905
|
diffuse: s.mul(m),
|
|
24906
24906
|
sheen: c.mul(m),
|
|
24907
24907
|
clearcoat: l.mul(m),
|
|
24908
24908
|
transmission: u.mul(m),
|
|
24909
|
-
iridescence:
|
|
24909
|
+
iridescence: I(0)
|
|
24910
24910
|
});
|
|
24911
24911
|
}), Cm = M(([e, t, n]) => {
|
|
24912
|
-
let r =
|
|
24912
|
+
let r = I(0).toVar();
|
|
24913
24913
|
return N(n.NoL.greaterThan(0), () => {
|
|
24914
24914
|
r.addAssign(t.diffuse.mul(n.NoL).mul(sc));
|
|
24915
|
-
let i =
|
|
24915
|
+
let i = I(0).toVar();
|
|
24916
24916
|
N(e.anisotropy.greaterThan(0), () => {
|
|
24917
24917
|
let t = hm(e.roughness, e.anisotropy);
|
|
24918
24918
|
i.assign(ym(t.x, t.y, n.NoH, n.ToH, n.BoH, n.NoV, n.ToV, n.BoV));
|
|
24919
24919
|
}).Else(() => {
|
|
24920
24920
|
i.assign(mm(n.NoH, n.NoV, e.roughness));
|
|
24921
24921
|
}), r.addAssign(t.specular.mul(i)), N(t.sheen.greaterThan(0), () => {
|
|
24922
|
-
let i = $p(n.NoH, e.sheenRoughness).mul(n.NoH).div(z(
|
|
24922
|
+
let i = $p(n.NoH, e.sheenRoughness).mul(n.NoH).div(z(I(4).mul(n.VoH), lc));
|
|
24923
24923
|
r.addAssign(t.sheen.mul(i));
|
|
24924
24924
|
}), N(t.clearcoat.greaterThan(0), () => {
|
|
24925
24925
|
let i = P(e.clearcoatRoughness, dc, 1);
|
|
@@ -24927,9 +24927,9 @@ var um = (e, t, n = 0) => J(P(e, 0, 1).mul(im - 1).add(.5).add(L(n).mul(im)).div
|
|
|
24927
24927
|
});
|
|
24928
24928
|
}), r;
|
|
24929
24929
|
}), wm = M(([e]) => Sm(e, tc.wrap(jc(e.metalness, e.roughness, e.transmission, e.clearcoat, e.emissive, e.subsurface)), rc({
|
|
24930
|
-
invRoughness:
|
|
24931
|
-
metalFactor:
|
|
24932
|
-
iorFactor: We(
|
|
24930
|
+
invRoughness: I(1).sub(e.roughness),
|
|
24931
|
+
metalFactor: I(.5).add(I(.5).mul(e.metalness)),
|
|
24932
|
+
iorFactor: We(I(2).div(e.ior), 1),
|
|
24933
24933
|
maxSheenColor: z(e.sheenColor.x, z(e.sheenColor.y, e.sheenColor.z))
|
|
24934
24934
|
}))), Tm = M(([e, t]) => Cm(e, Ys.wrap(wm(e)), t)), Em = /* @__PURE__ */ wt("\n fn ImportanceSampleGGX( N: vec3f, roughness: f32, Xi: vec2f ) -> vec3f {\n let alpha = roughness * roughness;\n let phi = 6.28318530717958647692f * Xi.x;\n let cosTheta = sqrt( ( 1.0f - Xi.y ) / ( 1.0f + ( alpha * alpha - 1.0f ) * Xi.y ) );\n let sinTheta = sqrt( max( 0.0f, 1.0f - cosTheta * cosTheta ) );\n let H = vec3f( cos( phi ) * sinTheta, sin( phi ) * sinTheta, cosTheta );\n // TBN construction\n let up = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( 0.0f, 0.0f, 1.0f ), abs( N.z ) < 0.999f );\n let tangent = normalize( cross( up, N ) );\n let bitangent = cross( N, tangent );\n return normalize( tangent * H.x + bitangent * H.y + N * H.z );\n }\n"), Dm = /* @__PURE__ */ wt("\n fn ImportanceSampleCosine( N: vec3f, xi: vec2f ) -> vec3f {\n let T = normalize( cross( N, N.yzx + vec3f( 0.1f, 0.2f, 0.3f ) ) );\n let B = cross( N, T );\n let phi = 6.28318530717958647692f * xi.x;\n let cosTheta = sqrt( 1.0f - xi.y );\n let sinTheta = sqrt( xi.y );\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( T * localDir.x + B * localDir.y + N * localDir.z );\n }\n"), Om = /* @__PURE__ */ wt("\n fn cosineWeightedSample( N: vec3f, xi: vec2f ) -> vec3f {\n let T = normalize( cross( N, N.yzx + vec3f( 0.1f, 0.2f, 0.3f ) ) );\n let B = cross( N, T );\n let phi = 6.28318530717958647692f * xi.y;\n let cosTheta = sqrt( 1.0f - xi.x );\n let sinTheta = sqrt( xi.x );\n let localDir = vec3f( sinTheta * cos( phi ), sinTheta * sin( phi ), cosTheta );\n return normalize( T * localDir.x + B * localDir.y + N * localDir.z );\n }\n"), km = /* @__PURE__ */ wt("\n fn sampleGGXVNDF( V: vec3f, roughness: f32, Xi: vec2f ) -> vec3f {\n let alpha = roughness * roughness;\n // Transform view direction to local space\n let Vh = normalize( vec3f( alpha * V.x, alpha * V.y, V.z ) );\n // Construct orthonormal basis around view direction\n let lensq = Vh.x * Vh.x + Vh.y * Vh.y;\n let T1 = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( -Vh.y, Vh.x, 0.0f ) / sqrt( lensq ), lensq > 1e-8f );\n let T2 = cross( Vh, T1 );\n // Sample point with polar coordinates (r, phi)\n let r = sqrt( Xi.x );\n let phi = 6.28318530717958647692f * Xi.y;\n let t1 = r * cos( phi );\n let t2tmp = r * sin( phi );\n let s = 0.5f * ( 1.0f + Vh.z );\n let t2 = ( 1.0f - s ) * sqrt( 1.0f - t1 * t1 ) + s * t2tmp;\n // Compute normal\n let Nh = T1 * t1 + T2 * t2 + Vh * sqrt( max( 0.0f, 1.0f - t1 * t1 - t2 * t2 ) );\n // Transform the normal back to the ellipsoid configuration\n return normalize( vec3f( alpha * Nh.x, alpha * Nh.y, max( 0.0f, Nh.z ) ) );\n }\n"), Am = /* @__PURE__ */ wt("\n fn sampleGGXVNDFAniso( V: vec3f, alphaX: f32, alphaY: f32, Xi: vec2f ) -> vec3f {\n let Vh = normalize( vec3f( alphaX * V.x, alphaY * V.y, V.z ) );\n let lensq = Vh.x * Vh.x + Vh.y * Vh.y;\n let T1 = select( vec3f( 1.0f, 0.0f, 0.0f ), vec3f( -Vh.y, Vh.x, 0.0f ) / sqrt( lensq ), lensq > 1e-8f );\n let T2 = cross( Vh, T1 );\n let r = sqrt( Xi.x );\n let phi = 6.28318530717958647692f * Xi.y;\n let t1 = r * cos( phi );\n let t2tmp = r * sin( phi );\n let s = 0.5f * ( 1.0f + Vh.z );\n let t2 = ( 1.0f - s ) * sqrt( 1.0f - t1 * t1 ) + s * t2tmp;\n let Nh = T1 * t1 + T2 * t2 + Vh * sqrt( max( 0.0f, 1.0f - t1 * t1 - t2 * t2 ) );\n return normalize( vec3f( alphaX * Nh.x, alphaY * Nh.y, max( 0.0f, Nh.z ) ) );\n }\n"), jm = Lr({
|
|
24935
24935
|
didScatter: "bool",
|
|
@@ -24944,17 +24944,17 @@ var um = (e, t, n = 0) => J(P(e, 0, 1).mul(im - 1).add(.5).add(L(n).mul(im)).div
|
|
|
24944
24944
|
throughput: "vec3",
|
|
24945
24945
|
didReflect: "bool"
|
|
24946
24946
|
}), Pm = M(([e, t, n]) => {
|
|
24947
|
-
let r =
|
|
24947
|
+
let r = I(0).toVar();
|
|
24948
24948
|
N(ve(t).lessThan(.001), () => {
|
|
24949
|
-
r.assign(
|
|
24949
|
+
r.assign(I(1).sub(n.x.mul(2)));
|
|
24950
24950
|
}).Else(() => {
|
|
24951
|
-
let e = z(
|
|
24952
|
-
r.assign(
|
|
24951
|
+
let e = z(I(1).sub(t).add(t.mul(2).mul(n.x)), 1e-4), i = I(1).sub(t.mul(t)).div(e);
|
|
24952
|
+
r.assign(I(1).add(t.mul(t)).sub(i.mul(i)).div(t.mul(2)));
|
|
24953
24953
|
}), r.assign(P(r, -1, 1));
|
|
24954
|
-
let i = U(z(
|
|
24954
|
+
let i = U(z(I(0), I(1).sub(r.mul(r)))), a = I(cc).mul(n.y);
|
|
24955
24955
|
return Tc({ N: e }).mul(Y(i.mul(Oe(a)), i.mul(it(a)), r));
|
|
24956
24956
|
}), Fm = M(([e, t, n, r, i, a, o, s, c]) => {
|
|
24957
|
-
let l = z(n, Y(1e-4)), u = l.div(l.x.add(l.y).add(l.z)).toVar(), d = li(a, R(0), c.add(R(10)), i, o, s).toVar(), f =
|
|
24957
|
+
let l = z(n, Y(1e-4)), u = l.div(l.x.add(l.y).add(l.z)).toVar(), d = li(a, R(0), c.add(R(10)), i, o, s).toVar(), f = I(0).toVar();
|
|
24958
24958
|
N(d.lessThan(u.x), () => {
|
|
24959
24959
|
f.assign(e.x);
|
|
24960
24960
|
}).ElseIf(d.lessThan(u.x.add(u.y)), () => {
|
|
@@ -24962,12 +24962,12 @@ var um = (e, t, n = 0) => J(P(e, 0, 1).mul(im - 1).add(.5).add(L(n).mul(im)).div
|
|
|
24962
24962
|
}).Else(() => {
|
|
24963
24963
|
f.assign(e.z);
|
|
24964
24964
|
});
|
|
24965
|
-
let p = li(a, R(0), c.add(R(9)), i, o, s).toVar(), m = Ve(z(
|
|
24965
|
+
let p = li(a, R(0), c.add(R(9)), i, o, s).toVar(), m = Ve(z(I(1).sub(p), 1e-6)).negate().div(z(f, 1e-6)).toVar(), h = m.lessThan(r).toVar(), g = m.toVar(), _ = Y(0).toVar();
|
|
24966
24966
|
return N(h, () => {
|
|
24967
|
-
let n =
|
|
24967
|
+
let n = je(e.mul(m).negate()).toVar(), r = F(u, e.mul(n));
|
|
24968
24968
|
_.assign(t.mul(n).div(z(r, 1e-6)));
|
|
24969
24969
|
}).Else(() => {
|
|
24970
|
-
let t =
|
|
24970
|
+
let t = je(e.mul(r).negate()).toVar(), n = F(u, t);
|
|
24971
24971
|
_.assign(t.div(z(n, 1e-6))), g.assign(r);
|
|
24972
24972
|
}), jm({
|
|
24973
24973
|
didScatter: h,
|
|
@@ -24986,24 +24986,24 @@ var um = (e, t, n = 0) => J(P(e, 0, 1).mul(im - 1).add(.5).add(L(n).mul(im)).div
|
|
|
24986
24986
|
direction: Y(0),
|
|
24987
24987
|
throughput: Y(1),
|
|
24988
24988
|
didReflect: !1
|
|
24989
|
-
}).toVar(), f = H(r, t, t.negate()).toVar(), p = H(r, l, n.ior).toVar(), m = H(r, n.ior, u).toVar(), h = ve(
|
|
24989
|
+
}).toVar(), f = H(r, t, t.negate()).toVar(), p = H(r, l, n.ior).toVar(), m = H(r, n.ior, u).toVar(), h = ve(F(f, e)), g = p.mul(p).div(z(m.mul(m), lc)).mul(I(1).sub(h.mul(h))).greaterThan(1).toVar(), _ = Yp(h, m.div(z(p, lc))).toVar(), v = P(_, .02, .98).toVar(), y = g.or(li(a, R(0), c.add(R(11)), i, o, s).lessThan(v)).toVar();
|
|
24990
24990
|
return d.didReflect.assign(y), N(y, () => {
|
|
24991
24991
|
let t = ci(a, R(0), c.add(R(5)), i, o, s), r = Ze(e, Em({
|
|
24992
24992
|
N: f,
|
|
24993
24993
|
roughness: n.roughness,
|
|
24994
24994
|
Xi: t
|
|
24995
24995
|
})).toVar();
|
|
24996
|
-
N(
|
|
24996
|
+
N(F(r, f).lessThanEqual(0), () => {
|
|
24997
24997
|
r.assign(Ze(e, f));
|
|
24998
24998
|
}), d.direction.assign(r), d.throughput.assign(Y(_.div(z(v, .02))));
|
|
24999
24999
|
}).Else(() => {
|
|
25000
25000
|
let t = Qe(e, f, p.div(z(m, lc))).toVar();
|
|
25001
|
-
N(
|
|
25001
|
+
N(F(t, t).lessThan(1e-4), () => {
|
|
25002
25002
|
d.direction.assign(Ze(e, f)), d.didReflect.assign(!0);
|
|
25003
25003
|
}).Else(() => {
|
|
25004
25004
|
d.direction.assign(V(t));
|
|
25005
25005
|
let e = p.mul(p).div(z(m.mul(m), lc));
|
|
25006
|
-
d.throughput.assign(Y(
|
|
25006
|
+
d.throughput.assign(Y(I(1).sub(_).div(z(I(1).sub(v), .02)).mul(e)));
|
|
25007
25007
|
});
|
|
25008
25008
|
}), d;
|
|
25009
25009
|
}), Rm = Lr({
|
|
@@ -25065,9 +25065,9 @@ var Hm = /* @__PURE__ */ M(([e, t, n]) => {
|
|
|
25065
25065
|
return e.add(t.mul(.03).div(r.mul(r)));
|
|
25066
25066
|
}), Um = /* @__PURE__ */ M(([e, t, n, r]) => {
|
|
25067
25067
|
let i = H(e.lessThan(t), n, r), a = e.sub(t).mul(i);
|
|
25068
|
-
return
|
|
25068
|
+
return je(I(-.5).mul(a).mul(a));
|
|
25069
25069
|
}), Wm = /* @__PURE__ */ M(([e]) => Y(Um(e, 442, .0624, .0374).mul(.362).add(Um(e, 599.8, .0264, .0323).mul(1.056)).sub(Um(e, 501.1, .049, .0382).mul(.065)), Um(e, 568.8, .0213, .0247).mul(.821).add(Um(e, 530.9, .0613, .0322).mul(.286)), Um(e, 437, .0845, .0278).mul(1.217).add(Um(e, 459, .0385, .0725).mul(.681)))), Gm = M(([e, t, n]) => {
|
|
25070
|
-
let r = B(
|
|
25070
|
+
let r = B(I(380), I(700), n).toVar(), i = Hm(e, t, r), a = Wm(r).toVar();
|
|
25071
25071
|
return Bm({
|
|
25072
25072
|
wavelength: r,
|
|
25073
25073
|
ior: i,
|
|
@@ -25078,22 +25078,22 @@ var Hm = /* @__PURE__ */ M(([e, t, n]) => {
|
|
|
25078
25078
|
direction: Y(0),
|
|
25079
25079
|
halfVector: Y(0),
|
|
25080
25080
|
didReflect: !1,
|
|
25081
|
-
pdf:
|
|
25081
|
+
pdf: I(0),
|
|
25082
25082
|
colorWeight: Y(1),
|
|
25083
25083
|
pathWavelength: c
|
|
25084
25084
|
}).toVar();
|
|
25085
25085
|
return N(r.lessThanEqual(.05).and(a.greaterThan(0)), () => {
|
|
25086
25086
|
p.halfVector.assign(t), p.didReflect.assign(!1);
|
|
25087
|
-
let r = n, o = H(i,
|
|
25087
|
+
let r = n, o = H(i, I(1).div(r), r).toVar();
|
|
25088
25088
|
N(c.greaterThan(0), () => {
|
|
25089
25089
|
let e = Hm(n, a, c);
|
|
25090
|
-
o.assign(H(i,
|
|
25090
|
+
o.assign(H(i, I(1).div(e), e));
|
|
25091
25091
|
}).Else(() => {
|
|
25092
25092
|
let e = Bm.wrap(Gm(n, a, li(l, R(0), f.add(R(5)), s, u, d)));
|
|
25093
|
-
o.assign(H(i,
|
|
25093
|
+
o.assign(H(i, I(1).div(e.ior), e.ior)), p.colorWeight.assign(e.colorWeight), p.pathWavelength.assign(e.wavelength);
|
|
25094
25094
|
});
|
|
25095
25095
|
let m = Qe(e.negate(), t, o).toVar();
|
|
25096
|
-
N(
|
|
25096
|
+
N(F(m, m).lessThan(.001), () => {
|
|
25097
25097
|
p.direction.assign(Ze(e.negate(), t)), p.didReflect.assign(!0), p.pdf.assign(1);
|
|
25098
25098
|
}).Else(() => {
|
|
25099
25099
|
p.direction.assign(m), p.pdf.assign(1);
|
|
@@ -25105,22 +25105,22 @@ var Hm = /* @__PURE__ */ M(([e, t, n]) => {
|
|
|
25105
25105
|
Xi: o
|
|
25106
25106
|
}).toVar();
|
|
25107
25107
|
p.halfVector.assign(h);
|
|
25108
|
-
let g = H(i,
|
|
25108
|
+
let g = H(i, I(1).div(n), n).toVar();
|
|
25109
25109
|
N(a.greaterThan(0), () => {
|
|
25110
25110
|
N(c.greaterThan(0), () => {
|
|
25111
25111
|
let e = Hm(n, a, c);
|
|
25112
|
-
g.assign(H(i,
|
|
25112
|
+
g.assign(H(i, I(1).div(e), e));
|
|
25113
25113
|
}).Else(() => {
|
|
25114
25114
|
let e = Bm.wrap(Gm(n, a, li(l, R(0), f.add(R(5)), s, u, d)));
|
|
25115
|
-
g.assign(H(i,
|
|
25115
|
+
g.assign(H(i, I(1).div(e.ior), e.ior)), p.colorWeight.assign(e.colorWeight), p.pathWavelength.assign(e.wavelength);
|
|
25116
25116
|
});
|
|
25117
25117
|
});
|
|
25118
|
-
let _ = P(
|
|
25119
|
-
N(
|
|
25120
|
-
p.direction.assign(Ze(e.negate(), h)), p.didReflect.assign(!0), p.pdf.assign(y.mul(v).div(z(
|
|
25118
|
+
let _ = P(F(h, e), .001, 1).toVar(), v = P(F(t, h), .001, 1).toVar(), y = Qp(v, m).toVar(), b = Qe(e.negate(), h, g).toVar();
|
|
25119
|
+
N(F(b, b).lessThan(.001), () => {
|
|
25120
|
+
p.direction.assign(Ze(e.negate(), h)), p.didReflect.assign(!0), p.pdf.assign(y.mul(v).div(z(I(4).mul(_), fc)));
|
|
25121
25121
|
}).Else(() => {
|
|
25122
25122
|
p.direction.assign(b), p.didReflect.assign(!1);
|
|
25123
|
-
let e = P(
|
|
25123
|
+
let e = P(F(h, b), .001, 1), t = _.add(g.mul(e)), n = ve(e).div(t.mul(t));
|
|
25124
25124
|
p.pdf.assign(y.mul(v).mul(n));
|
|
25125
25125
|
});
|
|
25126
25126
|
}), p;
|
|
@@ -25130,11 +25130,11 @@ var Hm = /* @__PURE__ */ M(([e, t, n]) => {
|
|
|
25130
25130
|
throughput: Y(1),
|
|
25131
25131
|
didReflect: !1,
|
|
25132
25132
|
pathWavelength: d
|
|
25133
|
-
}).toVar(), p = H(r, t, t.negate()).toVar(), m = e.negate().toVar(), h = H(r, l, n.ior).toVar(), g = H(r, n.ior, u).toVar(), _ = ve(
|
|
25133
|
+
}).toVar(), p = H(r, t, t.negate()).toVar(), m = e.negate().toVar(), h = H(r, l, n.ior).toVar(), g = H(r, n.ior, u).toVar(), _ = ve(F(p, e)), v = h.mul(h).div(g.mul(g)).mul(I(1).sub(_.mul(_))).greaterThan(1).toVar(), y = Yp(_, g.div(h)).toVar(), b = I(0).toVar();
|
|
25134
25134
|
N(v, () => {
|
|
25135
25135
|
b.assign(1);
|
|
25136
25136
|
}).Else(() => {
|
|
25137
|
-
let e = y, t =
|
|
25137
|
+
let e = y, t = I(.95);
|
|
25138
25138
|
b.assign(B(e, t, n.metalness));
|
|
25139
25139
|
}), b.assign(P(b, .05, .95));
|
|
25140
25140
|
let x = v.or(li(a, R(0), c.add(R(4)), i, o, s).lessThan(b)).toVar();
|
|
@@ -25142,7 +25142,7 @@ var Hm = /* @__PURE__ */ M(([e, t, n]) => {
|
|
|
25142
25142
|
let S = ci(a, R(0), c.add(R(4)), i, o, s).toVar();
|
|
25143
25143
|
return N(x, () => {
|
|
25144
25144
|
N(n.roughness.greaterThan(.05), () => {
|
|
25145
|
-
let e = Vm.wrap(qm(m, p, n.ior, n.roughness, r,
|
|
25145
|
+
let e = Vm.wrap(qm(m, p, n.ior, n.roughness, r, I(0), S, i, I(0), a, o, s, c));
|
|
25146
25146
|
f.direction.assign(e.direction);
|
|
25147
25147
|
}).Else(() => {
|
|
25148
25148
|
f.direction.assign(Ze(e, p));
|
|
@@ -25151,14 +25151,14 @@ var Hm = /* @__PURE__ */ M(([e, t, n]) => {
|
|
|
25151
25151
|
N(n.roughness.greaterThan(.05).or(n.dispersion.greaterThan(0)), () => {
|
|
25152
25152
|
let e = Vm.wrap(qm(m, p, n.ior, n.roughness, r, n.dispersion, S, i, d, a, o, s, c));
|
|
25153
25153
|
f.pathWavelength.assign(e.pathWavelength), N(e.didReflect, () => {
|
|
25154
|
-
f.direction.assign(e.direction), f.didReflect.assign(!0), f.throughput.assign(n.color.xyz.div(z(
|
|
25154
|
+
f.direction.assign(e.direction), f.didReflect.assign(!0), f.throughput.assign(n.color.xyz.div(z(I(1).sub(b), .05)));
|
|
25155
25155
|
}).Else(() => {
|
|
25156
25156
|
f.direction.assign(e.direction), f.throughput.assign(e.colorWeight);
|
|
25157
25157
|
});
|
|
25158
25158
|
}).Else(() => {
|
|
25159
25159
|
f.direction.assign(Qe(e, p, h.div(g))), f.throughput.assign(Y(1));
|
|
25160
25160
|
}), N(f.didReflect.not(), () => {
|
|
25161
|
-
f.throughput.mulAssign(n.color.xyz), f.throughput.mulAssign(h.mul(h).div(z(g.mul(g), lc))), f.throughput.mulAssign(
|
|
25161
|
+
f.throughput.mulAssign(n.color.xyz), f.throughput.mulAssign(h.mul(h).div(z(g.mul(g), lc))), f.throughput.mulAssign(I(1).sub(y).div(z(I(1).sub(b), .05)));
|
|
25162
25162
|
});
|
|
25163
25163
|
}), f;
|
|
25164
25164
|
}), Ym = M(([e, t, n, r, i, a, o, s, c, l, u, d]) => {
|
|
@@ -25171,7 +25171,7 @@ var Hm = /* @__PURE__ */ M(([e, t, n]) => {
|
|
|
25171
25171
|
entering: !1,
|
|
25172
25172
|
direction: e.direction,
|
|
25173
25173
|
throughput: Y(1),
|
|
25174
|
-
alpha:
|
|
25174
|
+
alpha: I(1),
|
|
25175
25175
|
pathWavelength: d
|
|
25176
25176
|
}).toVar();
|
|
25177
25177
|
return N(n.alphaMode.equal(R(0)).and(n.transmission.lessThanEqual(0)).and(n.subsurface.lessThanEqual(0)), () => {}).Else(() => {
|
|
@@ -25184,7 +25184,7 @@ var Hm = /* @__PURE__ */ M(([e, t, n]) => {
|
|
|
25184
25184
|
f.alpha.assign(t);
|
|
25185
25185
|
});
|
|
25186
25186
|
}), N(g.not().and(n.alphaMode.equal(R(1))), () => {
|
|
25187
|
-
let t = H(n.alphaTest.greaterThan(0), n.alphaTest,
|
|
25187
|
+
let t = H(n.alphaTest.greaterThan(0), n.alphaTest, I(.5));
|
|
25188
25188
|
N(n.color.a.mul(n.opacity).lessThan(t), () => {
|
|
25189
25189
|
f.continueRay.assign(!0), f.direction.assign(e.direction), f.throughput.assign(Y(1)), f.alpha.assign(0), f.isAlphaSkip.assign(!0), g.assign(!0);
|
|
25190
25190
|
}).Else(() => {
|
|
@@ -25192,11 +25192,11 @@ var Hm = /* @__PURE__ */ M(([e, t, n]) => {
|
|
|
25192
25192
|
});
|
|
25193
25193
|
}), N(g.not().and(n.transmission.greaterThan(0)).and(c.greaterThan(R(0))), () => {
|
|
25194
25194
|
N(m.lessThan(n.transmission), () => {
|
|
25195
|
-
let r =
|
|
25196
|
-
f.direction.assign(c.direction), f.throughput.assign(c.throughput), f.continueRay.assign(!0), f.isTransmissive.assign(!0), f.didReflect.assign(c.didReflect), f.entering.assign(r), f.alpha.assign(
|
|
25195
|
+
let r = F(e.direction, t).lessThan(0), c = Rm.wrap(Jm(e.direction, t, n, r, h, i, a, o, s, l, u, d));
|
|
25196
|
+
f.direction.assign(c.direction), f.throughput.assign(c.throughput), f.continueRay.assign(!0), f.isTransmissive.assign(!0), f.didReflect.assign(c.didReflect), f.entering.assign(r), f.alpha.assign(I(1).sub(n.transmission)), f.pathWavelength.assign(c.pathWavelength);
|
|
25197
25197
|
});
|
|
25198
25198
|
}), N(g.not().and(n.subsurface.greaterThan(0)), () => {
|
|
25199
|
-
let c =
|
|
25199
|
+
let c = F(e.direction, t).lessThan(0);
|
|
25200
25200
|
N(c.not().or(li(i, R(0), s.add(R(8)), r, a, o).lessThan(n.subsurface)), () => {
|
|
25201
25201
|
let d = Nm.wrap(Lm(e.direction, t, n, c, r, i, a, o, s, l, u)).toVar();
|
|
25202
25202
|
f.direction.assign(d.direction), f.throughput.assign(d.throughput), f.continueRay.assign(!0), f.isSubsurface.assign(!0), f.didReflect.assign(d.didReflect), f.entering.assign(c), f.alpha.assign(1);
|
|
@@ -25335,7 +25335,7 @@ var sh = /* @__PURE__ */ wt("\n fn getTransformedUV( uv: vec2f, transform: mat3x
|
|
|
25335
25335
|
}), ph = /* @__PURE__ */ wt("\n fn uvTransformJacobian( t: mat3x3f ) -> vec2f {\n return vec2f( t[1][1], t[0][1] );\n }\n"), mh = M(([e, t, n, r, i, a]) => {
|
|
25336
25336
|
let o = _t(Nc(e, t, 0).xyz), s = _t(Nc(e, t, 1).xyz).sub(o), c = _t(Nc(e, t, 2).xyz).sub(o), l = _t(Nc(e, t, 3)), u = _t(Nc(e, t, 4).xy), d = l.zw.sub(l.xy), f = u.sub(l.xy), p = d.x.mul(f.y).sub(d.y.mul(f.x)), m = X(0).toVar();
|
|
25337
25337
|
return N(ve(p).greaterThan(1e-12), () => {
|
|
25338
|
-
let e =
|
|
25338
|
+
let e = I(1).div(p), t = s.mul(f.y).sub(c.mul(d.y)).mul(e).toVar(), o = c.mul(d.x).sub(s.mul(f.x)).mul(e).toVar(), l = ph({ t: r }), u = t.mul(l.x).sub(o.mul(l.y)).toVar();
|
|
25339
25339
|
N(Re(u).greaterThan(1e-12), () => {
|
|
25340
25340
|
t.assign(u);
|
|
25341
25341
|
}), N(a.greaterThanEqual(R(0)), () => {
|
|
@@ -25352,7 +25352,7 @@ var sh = /* @__PURE__ */ wt("\n fn getTransformedUV( uv: vec2f, transform: mat3x
|
|
|
25352
25352
|
v: o
|
|
25353
25353
|
}));
|
|
25354
25354
|
}), N(Re(t).greaterThan(1e-12), () => {
|
|
25355
|
-
m.assign(X(V(t), rt(
|
|
25355
|
+
m.assign(X(V(t), rt(F(ke(n, t), o))));
|
|
25356
25356
|
});
|
|
25357
25357
|
}), m;
|
|
25358
25358
|
}), hh = M(([e, t, n, r]) => {
|
|
@@ -25360,14 +25360,14 @@ var sh = /* @__PURE__ */ wt("\n fn getTransformedUV( uv: vec2f, transform: mat3x
|
|
|
25360
25360
|
return N(t.normalMapIndex.greaterThanEqual(R(0)), () => {
|
|
25361
25361
|
let a = th(Qm, t.normalMapIndex, n.normalUV).xyz.mul(2).sub(1).toVar();
|
|
25362
25362
|
a.x.mulAssign(t.normalScale.x), a.y.assign(a.y.negate().mul(t.normalScale.x));
|
|
25363
|
-
let o = Y(0).toVar(), s =
|
|
25363
|
+
let o = Y(0).toVar(), s = I(1).toVar(), c = r.xyz.sub(e.mul(F(e, r.xyz))).toVar();
|
|
25364
25364
|
N(ve(r.w).greaterThan(.5).and(Re(c).greaterThan(1e-6)), () => {
|
|
25365
25365
|
o.assign(V(c)), s.assign(r.w);
|
|
25366
25366
|
}).Else(() => {
|
|
25367
25367
|
let t = ve(e.z).lessThan(.999).select(Y(0, 0, 1), Y(1, 0, 0));
|
|
25368
|
-
o.assign(V(
|
|
25368
|
+
o.assign(V(ke(t, e)));
|
|
25369
25369
|
});
|
|
25370
|
-
let l =
|
|
25370
|
+
let l = ke(e, o).mul(s);
|
|
25371
25371
|
i.assign(V(o.mul(a.x).add(l.mul(a.y)).add(e.mul(a.z))));
|
|
25372
25372
|
}), i;
|
|
25373
25373
|
}), gh = M(([e, t, n]) => {
|
|
@@ -25378,7 +25378,7 @@ var sh = /* @__PURE__ */ wt("\n fn getTransformedUV( uv: vec2f, transform: mat3x
|
|
|
25378
25378
|
let a = J(1).div(J(ht(e))).toVar(), o = pt(e, n.bumpUV).depth(r).r, s = pt(e, J(n.bumpUV.x.add(a.x), n.bumpUV.y)).depth(r).r, c = pt(e, J(n.bumpUV.x, n.bumpUV.y.add(a.y))).depth(r).r, l = J(s.sub(o), c.sub(o)).mul(t.bumpScale);
|
|
25379
25379
|
i.assign(V(Y(l.x.negate(), l.y.negate(), 1)));
|
|
25380
25380
|
});
|
|
25381
|
-
let a = V(
|
|
25381
|
+
let a = V(ke(ve(e.z).lessThan(.999).select(Y(0, 0, 1), Y(1, 0, 0)), e)), o = ke(e, a), s = a.mul(i.x).add(o.mul(i.y)).add(e.mul(i.z));
|
|
25382
25382
|
r.assign(V(B(e, s, P(t.bumpScale, 0, 1))));
|
|
25383
25383
|
}), r;
|
|
25384
25384
|
}), _h = M(([e, t]) => {
|
|
@@ -25428,7 +25428,7 @@ var sh = /* @__PURE__ */ wt("\n fn getTransformedUV( uv: vec2f, transform: mat3x
|
|
|
25428
25428
|
n.assign(n.mul(r.rgb));
|
|
25429
25429
|
}), n;
|
|
25430
25430
|
}), bh = M(([e, t, n, r]) => {
|
|
25431
|
-
let i = X(0).toVar(), a = Y(0).toVar(), o =
|
|
25431
|
+
let i = X(0).toVar(), a = Y(0).toVar(), o = I(0).toVar(), s = I(0).toVar(), c = Y(0).toVar(), l = ch(e).toVar();
|
|
25432
25432
|
return i.assign(e.color), a.assign(e.emissive.mul(e.emissiveIntensity)), o.assign(e.metalness), s.assign(e.roughness), c.assign(n), N(l, () => {
|
|
25433
25433
|
let l = nc.wrap(uh(t, e)).toVar();
|
|
25434
25434
|
i.assign(dh(e, l));
|
|
@@ -25445,7 +25445,7 @@ var sh = /* @__PURE__ */ wt("\n fn getTransformedUV( uv: vec2f, transform: mat3x
|
|
|
25445
25445
|
hasTextures: l
|
|
25446
25446
|
});
|
|
25447
25447
|
}), xh = M(([e, t, n]) => {
|
|
25448
|
-
let r =
|
|
25448
|
+
let r = I(0).toVar();
|
|
25449
25449
|
return N(e.greaterThanEqual(R(0)), () => {
|
|
25450
25450
|
let i = sh({
|
|
25451
25451
|
uv: t,
|
|
@@ -25458,7 +25458,7 @@ function Ch(e) {
|
|
|
25458
25458
|
Sh = e;
|
|
25459
25459
|
}
|
|
25460
25460
|
var wh = M(([e, t, n, r, i, a, o]) => {
|
|
25461
|
-
let s =
|
|
25461
|
+
let s = I(1).toVar(), c = e.toVar(), l = I(n).toVar();
|
|
25462
25462
|
return he({
|
|
25463
25463
|
start: R(0),
|
|
25464
25464
|
end: R(16)
|
|
@@ -25476,50 +25476,50 @@ var wh = M(([e, t, n, r, i, a, o]) => {
|
|
|
25476
25476
|
});
|
|
25477
25477
|
let d = Gs.wrap(zc(n.materialIndex, o)), f = De(!1).toVar(), p = Hc();
|
|
25478
25478
|
p && N(p.equal(R(1)), () => {
|
|
25479
|
-
let e =
|
|
25479
|
+
let e = I(1).toVar();
|
|
25480
25480
|
Sh && N(d.albedoMapIndex.greaterThanEqual(R(0)), () => {
|
|
25481
|
-
let t = n.uv.x, r = n.uv.y, i =
|
|
25481
|
+
let t = n.uv.x, r = n.uv.y, i = I(1).sub(t).sub(r), o = _t(Nc(a, n.triangleIndex, 3)), s = _t(Nc(a, n.triangleIndex, 4).xy), c = sh({
|
|
25482
25482
|
uv: o.xy.mul(i).add(o.zw.mul(t)).add(s.mul(r)),
|
|
25483
25483
|
transform: d.albedoTransform
|
|
25484
25484
|
});
|
|
25485
25485
|
e.assign(th(Sh, d.albedoMapIndex, c).a);
|
|
25486
25486
|
}), N(d.alphaMode.equal(R(1)), () => {
|
|
25487
|
-
let t = d.color.a.mul(e).mul(d.opacity), n = H(d.alphaTest.greaterThan(0), d.alphaTest,
|
|
25487
|
+
let t = d.color.a.mul(e).mul(d.opacity), n = H(d.alphaTest.greaterThan(0), d.alphaTest, I(.5));
|
|
25488
25488
|
N(t.lessThan(n), () => {
|
|
25489
25489
|
f.assign(!0);
|
|
25490
25490
|
});
|
|
25491
25491
|
}).ElseIf(d.alphaMode.equal(R(2)), () => {
|
|
25492
25492
|
let t = P(d.color.a.mul(d.opacity).mul(e), 0, 1);
|
|
25493
|
-
s.mulAssign(
|
|
25493
|
+
s.mulAssign(I(1).sub(t)), N(s.lessThan(1e-4), () => {
|
|
25494
25494
|
s.assign(0), me();
|
|
25495
25495
|
}), f.assign(!0);
|
|
25496
25496
|
});
|
|
25497
25497
|
}), N(f, () => {
|
|
25498
|
-
let e = z(
|
|
25498
|
+
let e = z(I(1e-5), Re(n.hitPoint).mul(1e-6));
|
|
25499
25499
|
c.assign(n.hitPoint.add(t.mul(e))), l.subAssign(n.dst.add(e));
|
|
25500
25500
|
}).ElseIf(d.transmission.greaterThan(0), () => {
|
|
25501
|
-
let e = _t(Nc(a, n.triangleIndex, 0).xyz), r = _t(Nc(a, n.triangleIndex, 1).xyz), o = _t(Nc(a, n.triangleIndex, 2).xyz), u = V(
|
|
25501
|
+
let e = _t(Nc(a, n.triangleIndex, 0).xyz), r = _t(Nc(a, n.triangleIndex, 1).xyz), o = _t(Nc(a, n.triangleIndex, 2).xyz), u = V(ke(r.sub(e), o.sub(e))).toVar();
|
|
25502
25502
|
N(n.instanceLeaf.greaterThanEqual(R(0)), () => {
|
|
25503
25503
|
u.assign(V(Kc(Wc(i, n.instanceLeaf), u)));
|
|
25504
25504
|
});
|
|
25505
25505
|
let f = u;
|
|
25506
25506
|
n.normal.assign(f);
|
|
25507
|
-
let p =
|
|
25507
|
+
let p = F(t, f).lessThan(0), m = H(p, f, f.negate());
|
|
25508
25508
|
N(p.not().and(d.attenuationDistance.greaterThan(0)), () => {
|
|
25509
25509
|
let e = Re(n.hitPoint.sub(c)), t = Km(d.attenuationColor, d.attenuationDistance, e);
|
|
25510
25510
|
s.mulAssign(t.x.add(t.y).add(t.z).div(3));
|
|
25511
25511
|
});
|
|
25512
|
-
let h = Yp(ve(
|
|
25512
|
+
let h = Yp(ve(F(t, m)), z(d.ior, 1)), g = I(1).sub(h).mul(d.transmission);
|
|
25513
25513
|
s.mulAssign(g), N(s.lessThan(1e-4), () => {
|
|
25514
25514
|
s.assign(0), me();
|
|
25515
25515
|
});
|
|
25516
|
-
let _ = z(
|
|
25516
|
+
let _ = z(I(1e-5), Re(n.hitPoint).mul(1e-6));
|
|
25517
25517
|
c.assign(n.hitPoint.add(t.mul(_))), l.subAssign(n.dst.add(_));
|
|
25518
25518
|
}).ElseIf(d.transparent, () => {
|
|
25519
|
-
s.mulAssign(
|
|
25519
|
+
s.mulAssign(I(1).sub(d.opacity)), N(s.lessThan(1e-4), () => {
|
|
25520
25520
|
s.assign(0), me();
|
|
25521
25521
|
});
|
|
25522
|
-
let e = z(
|
|
25522
|
+
let e = z(I(1e-5), Re(n.hitPoint).mul(1e-6));
|
|
25523
25523
|
c.assign(n.hitPoint.add(t.mul(e))), l.subAssign(n.dst.add(e));
|
|
25524
25524
|
}).Else(() => {
|
|
25525
25525
|
s.assign(0), me();
|
|
@@ -25528,57 +25528,57 @@ var wh = M(([e, t, n, r, i, a, o]) => {
|
|
|
25528
25528
|
});
|
|
25529
25529
|
M(([e, t]) => ic(e, t).sub(e));
|
|
25530
25530
|
var Th = M(([e, t, n, r]) => {
|
|
25531
|
-
let i = z(
|
|
25531
|
+
let i = z(I(0), F(t, e.direction)), a = I(0).toVar();
|
|
25532
25532
|
return N(i.greaterThan(0), () => {
|
|
25533
|
-
let t = e.intensity.mul(
|
|
25533
|
+
let t = e.intensity.mul(F(e.color, pc)), o = I(1).toVar();
|
|
25534
25534
|
N(n.metalness.greaterThan(.7), () => {
|
|
25535
25535
|
o.assign(1.5);
|
|
25536
25536
|
}).ElseIf(n.roughness.greaterThan(.8), () => {
|
|
25537
25537
|
o.assign(.7);
|
|
25538
25538
|
});
|
|
25539
|
-
let s =
|
|
25539
|
+
let s = I(1).div(I(1).add(I(r).mul(.5)));
|
|
25540
25540
|
a.assign(t.mul(i).mul(o).mul(s));
|
|
25541
25541
|
}), a;
|
|
25542
25542
|
}), Eh = M(([e, t, n, r]) => {
|
|
25543
|
-
let i = e.position.sub(t), a = Re(i), o = a.mul(a), s = i.div(a), c = z(
|
|
25543
|
+
let i = e.position.sub(t), a = Re(i), o = a.mul(a), s = i.div(a), c = z(F(n, s), 0), l = I(0).toVar();
|
|
25544
25544
|
return N(c.greaterThan(0), () => {
|
|
25545
|
-
let t = z(
|
|
25545
|
+
let t = z(F(s, e.normal).negate(), 0);
|
|
25546
25546
|
N(t.greaterThan(0), () => {
|
|
25547
|
-
let n = We(e.area.div(z(o, 1e-12)),
|
|
25547
|
+
let n = We(e.area.div(z(o, 1e-12)), I(2 * Math.PI)), i = H(e.normalize.greaterThan(.5), I(1).div(z(e.area, 1e-10)), I(1)), a = e.intensity.mul(F(e.color, pc)).mul(i), s = I(1).toVar();
|
|
25548
25548
|
N(r.metalness.greaterThan(.7), () => {
|
|
25549
25549
|
s.mulAssign(1.5), N(r.roughness.lessThan(.3), () => {
|
|
25550
|
-
s.mulAssign(
|
|
25550
|
+
s.mulAssign(I(1).add(I(1).sub(r.roughness).mul(.5)));
|
|
25551
25551
|
});
|
|
25552
25552
|
}), N(r.transmission.greaterThan(.5), () => {
|
|
25553
|
-
s.mulAssign(
|
|
25553
|
+
s.mulAssign(I(1).add(r.transmission.mul(.3)));
|
|
25554
25554
|
}), l.assign(a.mul(n).mul(c).mul(t).mul(s));
|
|
25555
25555
|
});
|
|
25556
25556
|
}), l;
|
|
25557
25557
|
}), Dh = M(([e, t, n, r]) => {
|
|
25558
|
-
let i = e.position.sub(t), a =
|
|
25558
|
+
let i = e.position.sub(t), a = F(i, i), o = I(0).toVar();
|
|
25559
25559
|
return N(a.greaterThanEqual(.001), () => {
|
|
25560
|
-
let t = U(a), s = i.div(t), c = z(
|
|
25560
|
+
let t = U(a), s = i.div(t), c = z(I(0), F(n, s));
|
|
25561
25561
|
N(c.greaterThan(0), () => {
|
|
25562
|
-
let t =
|
|
25562
|
+
let t = I(1).div(z(a, .1)), n = e.intensity.mul(F(e.color, pc)), i = I(1).toVar();
|
|
25563
25563
|
N(r.metalness.greaterThan(.7), () => {
|
|
25564
25564
|
i.mulAssign(1.5), N(r.roughness.lessThan(.3), () => {
|
|
25565
|
-
i.mulAssign(
|
|
25565
|
+
i.mulAssign(I(1).add(I(1).sub(r.roughness).mul(.4)));
|
|
25566
25566
|
});
|
|
25567
25567
|
}), N(r.roughness.greaterThan(.6), () => {
|
|
25568
25568
|
i.mulAssign(.9);
|
|
25569
25569
|
}), N(r.transmission.greaterThan(.5), () => {
|
|
25570
|
-
i.mulAssign(
|
|
25570
|
+
i.mulAssign(I(1).add(r.transmission.mul(.2)));
|
|
25571
25571
|
}), o.assign(n.mul(t).mul(c).mul(i));
|
|
25572
25572
|
});
|
|
25573
25573
|
}), o;
|
|
25574
25574
|
}), Oh = M(([e, t, n, r]) => {
|
|
25575
|
-
let i = e.position.sub(t), a =
|
|
25575
|
+
let i = e.position.sub(t), a = F(i, i), o = I(0).toVar();
|
|
25576
25576
|
return N(a.greaterThanEqual(.001), () => {
|
|
25577
|
-
let t = i.div(U(a)), s = z(
|
|
25577
|
+
let t = i.div(U(a)), s = z(I(0), F(n, t));
|
|
25578
25578
|
N(s.greaterThan(0), () => {
|
|
25579
|
-
let n =
|
|
25579
|
+
let n = F(t.negate(), e.direction), i = Oe(e.angle);
|
|
25580
25580
|
N(n.greaterThanEqual(i), () => {
|
|
25581
|
-
let t =
|
|
25581
|
+
let t = I(1).div(z(a, .01)), c = at(i, i.add(.1), n), l = e.intensity.mul(F(e.color, pc)), u = H(r.metalness.greaterThan(.7), I(1.5), H(r.roughness.greaterThan(.8), I(.8), I(1)));
|
|
25582
25582
|
o.assign(l.mul(t).mul(c).mul(s).mul(u));
|
|
25583
25583
|
});
|
|
25584
25584
|
});
|
|
@@ -25645,7 +25645,7 @@ var Th = M(([e, t, n, r]) => {
|
|
|
25645
25645
|
goboScale: e.element(n.add(10))
|
|
25646
25646
|
});
|
|
25647
25647
|
}), Ih = M(([e, t]) => {
|
|
25648
|
-
let n = t.mul(16), r = Y(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = Y(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a =
|
|
25648
|
+
let n = t.mul(16), r = Y(e.element(n.add(3)), e.element(n.add(4)), e.element(n.add(5))).toVar(), i = Y(e.element(n.add(6)), e.element(n.add(7)), e.element(n.add(8))).toVar(), a = ke(r, i), o = e.element(n.add(15)), s = Re(a).mul(4);
|
|
25649
25649
|
return Ah({
|
|
25650
25650
|
position: Y(e.element(n), e.element(n.add(1)), e.element(n.add(2))),
|
|
25651
25651
|
u: r,
|
|
@@ -25688,26 +25688,26 @@ function Uh(e) {
|
|
|
25688
25688
|
Hh = e;
|
|
25689
25689
|
}
|
|
25690
25690
|
var Wh = /* @__PURE__ */ M(([e, t]) => {
|
|
25691
|
-
let n =
|
|
25691
|
+
let n = I(1).toVar();
|
|
25692
25692
|
return N(e.goboIndex.greaterThanEqual(R(0)), () => {
|
|
25693
|
-
let r = e.direction.toVar(), i = t.negate().toVar(), a =
|
|
25693
|
+
let r = e.direction.toVar(), i = t.negate().toVar(), a = F(i, r).toVar();
|
|
25694
25694
|
N(a.greaterThan(0), () => {
|
|
25695
|
-
let t = V(
|
|
25695
|
+
let t = V(ke(H(ve(r.z).lessThan(.999), Y(0, 0, 1), Y(1, 0, 0)), r)).toVar(), o = ke(r, t), s = I(1).div(a).toVar(), c = F(i, t).mul(s), l = F(i, o).mul(s), u = I(.5).div(z(ft(e.angle), I(1e-4))).toVar(), d = P(c.mul(u).add(.5), I(0), I(1)), f = P(l.mul(u).add(.5), I(0), I(1));
|
|
25696
25696
|
if (Hh) {
|
|
25697
|
-
let t = pt(Hh, J(d, f)).depth(e.goboIndex), r = We(t.r, t.a), i = H(e.goboIntensity.lessThan(0),
|
|
25698
|
-
n.assign(B(
|
|
25697
|
+
let t = pt(Hh, J(d, f)).depth(e.goboIndex), r = We(t.r, t.a), i = H(e.goboIntensity.lessThan(0), I(1).sub(r), r), a = P(ve(e.goboIntensity), I(0), I(1));
|
|
25698
|
+
n.assign(B(I(1), i, a));
|
|
25699
25699
|
}
|
|
25700
25700
|
}).Else(() => {
|
|
25701
25701
|
n.assign(0);
|
|
25702
25702
|
});
|
|
25703
25703
|
}), n;
|
|
25704
25704
|
}), Gh = /* @__PURE__ */ M(([e, t]) => {
|
|
25705
|
-
let n =
|
|
25705
|
+
let n = I(1).toVar();
|
|
25706
25706
|
return N(e.goboIndex.greaterThanEqual(R(0)), () => {
|
|
25707
|
-
let r = e.direction.toVar(), i = V(
|
|
25707
|
+
let r = e.direction.toVar(), i = V(ke(H(ve(r.z).lessThan(.999), Y(0, 0, 1), Y(1, 0, 0)), r)).toVar(), a = ke(r, i), o = I(1).div(z(e.goboScale, I(1e-4))).toVar(), s = F(t, i).mul(o).add(.5).toVar(), c = F(t, a).mul(o).add(.5).toVar(), l = s.sub(s.floor()), u = c.sub(c.floor());
|
|
25708
25708
|
if (Hh) {
|
|
25709
|
-
let t = pt(Hh, J(l, u)).depth(e.goboIndex), r = We(t.r, t.a), i = H(e.goboIntensity.lessThan(0),
|
|
25710
|
-
n.assign(B(
|
|
25709
|
+
let t = pt(Hh, J(l, u)).depth(e.goboIndex), r = We(t.r, t.a), i = H(e.goboIntensity.lessThan(0), I(1).sub(r), r), a = P(ve(e.goboIntensity), I(0), I(1));
|
|
25710
|
+
n.assign(B(I(1), i, a));
|
|
25711
25711
|
}
|
|
25712
25712
|
}), n;
|
|
25713
25713
|
}), Kh = null;
|
|
@@ -25715,20 +25715,20 @@ function qh(e) {
|
|
|
25715
25715
|
Kh = e;
|
|
25716
25716
|
}
|
|
25717
25717
|
var Jh = /* @__PURE__ */ M(([e, t]) => {
|
|
25718
|
-
let n =
|
|
25718
|
+
let n = I(1).toVar();
|
|
25719
25719
|
return N(e.iesIndex.greaterThanEqual(R(0)), () => {
|
|
25720
|
-
let r = e.direction.toVar(), i = t.negate().toVar(), a = P(ye(P(
|
|
25720
|
+
let r = e.direction.toVar(), i = t.negate().toVar(), a = P(ye(P(F(i, r), I(-1), I(1))).div(I(Math.PI)), I(0), I(1)), o = V(ke(H(ve(r.z).lessThan(.999), Y(0, 0, 1), Y(1, 0, 0)), r)).toVar(), s = ke(r, o), c = F(i, o), l = Se(F(i, s), c).div(I(2 * Math.PI)).add(.5);
|
|
25721
25721
|
if (Kh) {
|
|
25722
|
-
let t = pt(Kh, J(l, a)).depth(e.iesIndex).r, r = P(e.iesIntensity,
|
|
25723
|
-
n.assign(B(
|
|
25722
|
+
let t = pt(Kh, J(l, a)).depth(e.iesIndex).r, r = P(e.iesIntensity, I(0), I(1));
|
|
25723
|
+
n.assign(B(I(1), t, r));
|
|
25724
25724
|
}
|
|
25725
25725
|
}), n;
|
|
25726
25726
|
}), Yh = /* @__PURE__ */ wt("\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"), Xh = M(([e, t, n]) => {
|
|
25727
|
-
let r = e.normal, i =
|
|
25727
|
+
let r = e.normal, i = F(r, n), a = I(-1).toVar();
|
|
25728
25728
|
return N(i.lessThan(-1e-4), () => {
|
|
25729
|
-
let o =
|
|
25729
|
+
let o = I(1).div(i), s = F(e.position.sub(t), r).mul(o).toVar();
|
|
25730
25730
|
N(s.greaterThan(.001), () => {
|
|
25731
|
-
let r = t.add(n.mul(s)).sub(e.position), i = Re(e.u), o = Re(e.v), c = e.u.div(i), l = e.v.div(o), u =
|
|
25731
|
+
let r = t.add(n.mul(s)).sub(e.position), i = Re(e.u), o = Re(e.v), c = e.u.div(i), l = e.v.div(o), u = F(r, c).div(i), d = F(r, l).div(o);
|
|
25732
25732
|
N(H(e.shape.greaterThan(.5), u.mul(u).add(d.mul(d)).lessThanEqual(1), ve(u).lessThanEqual(1).and(ve(d).lessThanEqual(1))), () => {
|
|
25733
25733
|
a.assign(s);
|
|
25734
25734
|
});
|
|
@@ -28923,7 +28923,7 @@ function Mv(e, t, n, r) {
|
|
|
28923
28923
|
}
|
|
28924
28924
|
//#endregion
|
|
28925
28925
|
//#region src/version.js
|
|
28926
|
-
var Nv = "9.1.
|
|
28926
|
+
var Nv = "9.1.2", Pv = 1e4, Fv = 15e5;
|
|
28927
28927
|
function Iv(e, t, n = Pv) {
|
|
28928
28928
|
return e >= n && t / Fv < e / 3;
|
|
28929
28929
|
}
|
|
@@ -31219,9 +31219,9 @@ var Cy = 1 << 18, wy = a("pathtracer"), Ty = 100, Ey = 4, Dy = class extends pi
|
|
|
31219
31219
|
_updateCameraUniforms() {
|
|
31220
31220
|
return !this._matricesApproxEqual(this.lastCameraMatrix, this.camera.matrixWorld) || !this._matricesApproxEqual(this.lastProjectionMatrix, this.camera.projectionMatrixInverse) ? (this.cameraWorldMatrix.value.copy(this.camera.matrixWorld), this.cameraViewMatrix.value.copy(this.camera.matrixWorldInverse), this.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix), this.cameraProjectionMatrixInverse.value.copy(this.camera.projectionMatrixInverse), this.lastCameraMatrix.copy(this.camera.matrixWorld), this.lastProjectionMatrix.copy(this.camera.projectionMatrixInverse), !0) : !1;
|
|
31221
31221
|
}
|
|
31222
|
-
_updateAccumulationUniforms(e
|
|
31223
|
-
let
|
|
31224
|
-
this.lastInteractionModeState =
|
|
31222
|
+
_updateAccumulationUniforms(e) {
|
|
31223
|
+
let t = this.cameraOptimizer?.isInInteractionMode() ?? !1;
|
|
31224
|
+
this.lastInteractionModeState = t, this.accumulationEnabled ? t ? (this.accumulationAlpha.value = 1, this.hasPreviousAccumulated.value = 0) : (this.accumulationAlpha.value = Oi(e), this.hasPreviousAccumulated.value = +(e > 0)) : (this.accumulationAlpha.value = 1, this.hasPreviousAccumulated.value = 0);
|
|
31225
31225
|
}
|
|
31226
31226
|
_publishTexturesToContext(e, t) {
|
|
31227
31227
|
e.setTexture("pathtracer:color", t.color), e.setTexture("pathtracer:normalDepth", t.normalDepth), e.setTexture("pathtracer:albedo", t.albedo), e.setState("pathtracer:samples", this.frameCount), e.setState("interactionMode", this.cameraOptimizer?.isInInteractionMode() ?? !1), e.setState("renderMode", this.renderMode.value);
|
|
@@ -31578,7 +31578,7 @@ var Gy = (e, t, n, r) => ({
|
|
|
31578
31578
|
}, qy = M(([e, t, n, r]) => {
|
|
31579
31579
|
let i = Y(t[3]).toVar();
|
|
31580
31580
|
return N(Uy(r), () => {
|
|
31581
|
-
let r = n.mul(X(e.x.mul(2).sub(1),
|
|
31581
|
+
let r = n.mul(X(e.x.mul(2).sub(1), I(1).sub(e.y.mul(2)), 0, 1));
|
|
31582
31582
|
i.assign(t.mul(X(r.xy, 0, 1)).xyz);
|
|
31583
31583
|
}), i;
|
|
31584
31584
|
}), Jy = M(([e, t, n, r, i, a, o]) => {
|
|
@@ -31587,27 +31587,27 @@ var Gy = (e, t, n, r) => ({
|
|
|
31587
31587
|
let n = B(i.x, i.y, e.x).toVar(), r = B(a.y, a.x, e.y).toVar(), c = Oe(r).toVar(), l = Y(0).toVar(), u = Y(0).toVar(), d = Y(0).toVar();
|
|
31588
31588
|
N(o.equal(R(1)), () => {
|
|
31589
31589
|
let e = Y(t[2].x, 0, t[2].z).toVar();
|
|
31590
|
-
N(
|
|
31590
|
+
N(F(e, e).lessThan(I(1e-8)), () => {
|
|
31591
31591
|
e.assign(Y(t[1].x, 0, t[1].z));
|
|
31592
|
-
}), d.assign(V(e)), u.assign(Y(0, 1, 0)), l.assign(
|
|
31592
|
+
}), d.assign(V(e)), u.assign(Y(0, 1, 0)), l.assign(ke(u, d));
|
|
31593
31593
|
}).Else(() => {
|
|
31594
31594
|
l.assign(V(Y(t[0]))), u.assign(V(Y(t[1]))), d.assign(V(Y(t[2])));
|
|
31595
31595
|
}), s.assign(V(l.mul(it(n).mul(c)).add(u.mul(it(r))).sub(d.mul(Oe(n).mul(c)))));
|
|
31596
31596
|
}).ElseIf(Uy(r), () => {
|
|
31597
31597
|
s.assign(V(Y(t[2])).negate());
|
|
31598
31598
|
}).Else(() => {
|
|
31599
|
-
let r = Y(e.x.mul(2).sub(1),
|
|
31599
|
+
let r = Y(e.x.mul(2).sub(1), I(1).sub(e.y.mul(2)), 1), i = n.mul(X(r, 1));
|
|
31600
31600
|
s.assign(V(Ue(t[0].xyz, t[1].xyz, t[2].xyz).mul(i.xyz.div(i.w))));
|
|
31601
31601
|
}), s;
|
|
31602
31602
|
}), Yy = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g]) => {
|
|
31603
31603
|
let _ = qy(e, n, r, i).toVar(), v = Jy(e, n, r, i, a, o, s).toVar(), y = _.toVar(), b = v.toVar(), x = h.equal(R(1)), S = x.and(g.greaterThan(0)).or(x.not().and(l.greaterThan(0)).and(u.lessThan(64)));
|
|
31604
31604
|
return N(c.and(S).and(d.greaterThan(.001)), () => {
|
|
31605
|
-
let e = H(i.equal(Vy), o.y.sub(o.x).mul(.5), H(Uy(i),
|
|
31605
|
+
let e = H(i.equal(Vy), o.y.sub(o.x).mul(.5), H(Uy(i), I(1), r[1].y)), a = H(x, g.mul(d).mul(e), l.div(u.mul(2)).mul(.001).mul(f).mul(p)), s = Zr(t), c = s.x.mul(m.max(.01)), h = s.y, S = Y(0).toVar(), C = d.toVar();
|
|
31606
31606
|
N(i.equal(Vy), () => {
|
|
31607
31607
|
S.assign(Tc({ N: v }).mul(Y(c, h, 0)));
|
|
31608
31608
|
}).Else(() => {
|
|
31609
31609
|
let e = V(Y(n[0])), t = V(Y(n[1]));
|
|
31610
|
-
S.assign(e.mul(c).add(t.mul(h))), C.assign(d.div(
|
|
31610
|
+
S.assign(e.mul(c).add(t.mul(h))), C.assign(d.div(F(v, V(Y(n[2]))).negate()));
|
|
31611
31611
|
}), y.assign(_.add(S.mul(a))), b.assign(V(_.add(v.mul(C)).sub(y)));
|
|
31612
31612
|
}), Hs({
|
|
31613
31613
|
origin: y,
|
|
@@ -31615,27 +31615,27 @@ var Gy = (e, t, n, r) => ({
|
|
|
31615
31615
|
});
|
|
31616
31616
|
});
|
|
31617
31617
|
function Xy(e) {
|
|
31618
|
-
let { rayBufferRW: t, hitBufferRW: n, gBufferRW: r, resolution: i, frame: a, cameraWorldMatrix: o, cameraProjectionMatrixInverse: s, cameraProjection: c, panoLonRange: l, panoLatRange: u, panoLevelHorizon: d, enableDOF: f, focalLength: p, aperture: m, focusDistance: h, unitsPerMetre: g, apertureScale: _, anamorphicRatio: v, dofMode: y, dofBlur: b, renderWidth: x, chunkRowBase: S, chunkRows: C, transmissiveBounces: w,
|
|
31619
|
-
let C = J(
|
|
31618
|
+
let { rayBufferRW: t, hitBufferRW: n, gBufferRW: r, resolution: i, frame: a, cameraWorldMatrix: o, cameraProjectionMatrixInverse: s, cameraProjection: c, panoLonRange: l, panoLatRange: u, panoLevelHorizon: d, enableDOF: f, focalLength: p, aperture: m, focusDistance: h, unitsPerMetre: g, apertureScale: _, anamorphicRatio: v, dofMode: y, dofBlur: b, renderWidth: x, chunkRowBase: S, chunkRows: C, transmissiveBounces: w, auxGBufferEnabled: T, listDriven: E = !1, activeIndicesRO: D = null, counters: O = null } = e, k = T.greaterThan(G(0)), A = (e, x, S) => {
|
|
31619
|
+
let C = J(I(e).add(.5), I(x).add(.5)), T = qr({ state: di({
|
|
31620
31620
|
pixelCoord: C,
|
|
31621
31621
|
rayIndex: R(0),
|
|
31622
31622
|
frame: a
|
|
31623
31623
|
}).toVar() }).toVar(), E = ui(C, R(1), R(1), T, i, a).toVar().sub(.5), D = J(C.x.add(E.x), C.y.sub(E.y)).div(i), O = Hs.wrap(Yy(D, T, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b));
|
|
31624
|
-
_l(t, S, O.origin, R(0), R(0)), vl(t, S, O.direction, G(jy.ACTIVE)), yl(t, S, X(1, 1, 1, 0).xyz,
|
|
31625
|
-
ll(r, S, Y(0, 0, 1),
|
|
31626
|
-
}), Ml(t, S, G(0), G(w),
|
|
31624
|
+
_l(t, S, O.origin, R(0), R(0)), vl(t, S, O.direction, G(jy.ACTIVE)), yl(t, S, X(1, 1, 1, 0).xyz, I(0)), bl(t, S, X(Y(0), I(1))), N(k, () => {
|
|
31625
|
+
ll(r, S, Y(0, 0, 1), I(1), Y(0), I(0)), Rl(t, S, Y(1));
|
|
31626
|
+
}), Ml(t, S, G(0), G(w), I(1), I(1), I(1)), kl(n, S, T);
|
|
31627
31627
|
};
|
|
31628
31628
|
return M(() => {
|
|
31629
|
-
if (
|
|
31629
|
+
if (E) {
|
|
31630
31630
|
let e = Fe;
|
|
31631
|
-
N(e.lessThan(we(
|
|
31632
|
-
let t = R(
|
|
31633
|
-
|
|
31631
|
+
N(e.lessThan(we(O.element(G(ky.ENTERING_COUNT)))), () => {
|
|
31632
|
+
let t = R(D.element(e)), n = t.add(S.mul(x));
|
|
31633
|
+
A(n.mod(x), n.div(x), G(t));
|
|
31634
31634
|
});
|
|
31635
31635
|
} else {
|
|
31636
31636
|
let e = R(Dt.x).mul(16).add(R(Be.x)), t = R(Dt.y).mul(16).add(R(Be.y));
|
|
31637
31637
|
N(e.lessThan(x).and(t.lessThan(C)), () => {
|
|
31638
|
-
|
|
31638
|
+
A(e, t.add(S), G(t.mul(x).add(e)));
|
|
31639
31639
|
});
|
|
31640
31640
|
}
|
|
31641
31641
|
});
|
|
@@ -31648,7 +31648,7 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31648
31648
|
}, ob = (e, t) => Y(e[0].xyz.dot(t).add(e[0].w), e[1].xyz.dot(t).add(e[1].w), e[2].xyz.dot(t).add(e[2].w)), sb = (e, t) => Y(e[0].xyz.dot(t), e[1].xyz.dot(t), e[2].xyz.dot(t)), cb = wt("\n fn RayTriangleGeometry( rayOrigin: vec3f, rayDir: vec3f, pA: vec3f, pB: vec3f, pC: vec3f, closestHitDst: f32, woopParams: vec4f ) -> vec4f {\n\n // Returns vec4(t, u, v, hit) where hit > 0.5 means intersection.\n // woopParams: (Sx, Sy, Sz, bitcast<f32>(packed kx|ky<<2|kz<<4))\n var result = vec4f( 1e20f, 0.0f, 0.0f, 0.0f );\n\n let Sx = woopParams.x;\n let Sy = woopParams.y;\n let Sz = woopParams.z;\n // Packed as regular f32 (values 0–42), not bitcast — avoids subnormal FTZ on Apple GPUs.\n let packed = i32( woopParams.w );\n let kx = packed & 3;\n let ky = ( packed >> 2 ) & 3;\n let kz = ( packed >> 4 ) & 3;\n\n let A = pA - rayOrigin;\n let B = pB - rayOrigin;\n let C = pC - rayOrigin;\n\n let Akz = A[ kz ];\n let Bkz = B[ kz ];\n let Ckz = C[ kz ];\n\n let Ax = A[ kx ] - Sx * Akz;\n let Ay = A[ ky ] - Sy * Akz;\n let Bx = B[ kx ] - Sx * Bkz;\n let By = B[ ky ] - Sy * Bkz;\n let Cx = C[ kx ] - Sx * Ckz;\n let Cy = C[ ky ] - Sy * Ckz;\n\n // Edge function tests — all three must share sign (or be exactly zero) for hit.\n let U = Cx * By - Cy * Bx;\n let V = Ax * Cy - Ay * Cx;\n let W = Bx * Ay - By * Ax;\n\n let neg = U < 0.0f || V < 0.0f || W < 0.0f;\n let pos = U > 0.0f || V > 0.0f || W > 0.0f;\n if ( !( neg && pos ) ) {\n\n let det = U + V + W;\n if ( det != 0.0f ) {\n\n let T = U * ( Sz * Akz ) + V * ( Sz * Bkz ) + W * ( Sz * Ckz );\n\n // Sign-aware bounds check on t (multiply both sides by sign(det) once).\n let detSign = select( -1.0f, 1.0f, det > 0.0f );\n let tSigned = T * detSign;\n let detAbs = abs( det );\n\n if ( tSigned > 0.0f && tSigned < closestHitDst * detAbs ) {\n\n // Match Möller-Trumbore convention: u = weight of B, v = weight of C.\n // In Woop's edge functions, U → weight of A, V → weight of B, W → weight of C.\n let invDet = 1.0f / det;\n result = vec4f( T * invDet, V * invDet, W * invDet, 1.0f );\n\n }\n\n }\n\n }\n\n return result;\n\n }\n"), lb = wt("\n fn computeWoopFromInvDir( rayDir: vec3f, invDir: vec3f ) -> vec4f {\n\n let absDir = abs( rayDir );\n\n // kz = argmax(|dir|)\n var kz: i32 = 0;\n if ( absDir.y >= absDir.x ) { kz = 1; }\n if ( absDir.z >= absDir[ u32( kz ) ] ) { kz = 2; }\n\n var kx: i32 = ( kz + 1 ) % 3;\n var ky: i32 = ( kx + 1 ) % 3;\n\n // Preserve triangle winding when the dominant axis component is negative.\n if ( rayDir[ u32( kz ) ] < 0.0f ) {\n let tmp = kx;\n kx = ky;\n ky = tmp;\n }\n\n let Sz = invDir[ u32( kz ) ];\n let Sx = rayDir[ u32( kx ) ] * Sz;\n let Sy = rayDir[ u32( ky ) ] * Sz;\n\n let packed = kx | ( ky << 2 ) | ( kz << 4 );\n return vec4f( Sx, Sy, Sz, f32( packed ) );\n\n }\n"), ub = wt("\n fn fastRayAABBDst( rayOrigin: vec3f, invDir: vec3f, boxMin: vec3f, boxMax: vec3f ) -> f32 {\n\n let t1 = ( boxMin - rayOrigin ) * invDir;\n let t2 = ( boxMax - rayOrigin ) * invDir;\n\n let tmin = min( t1, t2 );\n let tmax = max( t1, t2 );\n\n let tNear = max( max( tmin.x, tmin.y ), tmin.z );\n let tFar = min( min( tmax.x, tmax.y ), tmax.z ) * 1.00000024f; // Robust traversal: 2 ULP padding (Ize 2013)\n\n let isHit = tNear <= tFar && tFar > 0.0f;\n return select( 1e20f, max( tNear, 0.0f ), isHit );\n\n }\n"), db = (e) => M(([t, n, r, i]) => {
|
|
31649
31649
|
let a = i ?? De(!1), o = n.value?.foldedLeaves === !0, s = ib(o), c = qs({
|
|
31650
31650
|
didHit: !1,
|
|
31651
|
-
dst:
|
|
31651
|
+
dst: I(0x56bc75e2d63100000),
|
|
31652
31652
|
hitPoint: Y(0),
|
|
31653
31653
|
normal: Y(0),
|
|
31654
31654
|
uv: J(0),
|
|
@@ -31657,7 +31657,7 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31657
31657
|
instanceLeaf: R(-1),
|
|
31658
31658
|
boxTests: R(0),
|
|
31659
31659
|
triTests: R(0)
|
|
31660
|
-
}).toVar(), l = R(-1).toVar(), u =
|
|
31660
|
+
}).toVar(), l = R(-1).toVar(), u = I(0).toVar(), d = I(0).toVar(), f = tb(), p = R(1).toVar();
|
|
31661
31661
|
f.element(R(0)).assign(R(0));
|
|
31662
31662
|
let m = Y(t.origin).toVar(), h = Y(t.direction).toVar(), g = ab(h).toVar(), _ = lb({
|
|
31663
31663
|
rayDir: h,
|
|
@@ -31679,7 +31679,7 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31679
31679
|
woopParams: x
|
|
31680
31680
|
});
|
|
31681
31681
|
N(p.w.greaterThan(.5), () => {
|
|
31682
|
-
let e = p.x, t = p.y, i = p.z, m = Fc(o.w), h = Fc(s.w), g = Fc(f.w), _ = Nc(r, n, 4).z, v = R(_.shiftRight(G(24)).bitAnd(G(3))).toVar(), b =
|
|
31682
|
+
let e = p.x, t = p.y, i = p.z, m = Fc(o.w), h = Fc(s.w), g = Fc(f.w), _ = Nc(r, n, 4).z, v = R(_.shiftRight(G(24)).bitAnd(G(3))).toVar(), b = I(1).sub(t).sub(i), x = y.dot(V(m.mul(b).add(h.mul(t)).add(g.mul(i))));
|
|
31683
31683
|
N(a.or(v.equal(R(2))).or(v.equal(R(0)).and(x.lessThan(-1e-4))).or(v.equal(R(1)).and(x.greaterThan(1e-4))), () => {
|
|
31684
31684
|
c.didHit.assign(!0), c.dst.assign(e), l.assign(n), u.assign(t), d.assign(i), w.assign(S);
|
|
31685
31685
|
});
|
|
@@ -31695,13 +31695,13 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31695
31695
|
let r = () => {
|
|
31696
31696
|
let r = t, i = Mc(n, r, R(0), R($y));
|
|
31697
31697
|
e && c.boxTests.addAssign(1);
|
|
31698
|
-
let a =
|
|
31698
|
+
let a = Ne(i.w).toVar();
|
|
31699
31699
|
N(s(a), () => {
|
|
31700
31700
|
N(a.equal(G(pa.TRIANGLE_LEAF)), () => {
|
|
31701
|
-
T(
|
|
31701
|
+
T(Ne(i.x), Ne(i.y));
|
|
31702
31702
|
}).Else(() => {
|
|
31703
31703
|
N(i.z.greaterThan(.5).and(p.lessThan(R(Zy))), () => {
|
|
31704
|
-
N(
|
|
31704
|
+
N(Ne(i.y).bitAnd(G(da)).equal(G(0)), () => {
|
|
31705
31705
|
let e = Wc(n, r), t = sb(e, h).toVar();
|
|
31706
31706
|
v.assign(ob(e, m)), y.assign(t);
|
|
31707
31707
|
let i = ab(t).toVar();
|
|
@@ -31711,11 +31711,11 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31711
31711
|
})), S.assign(r), C.assign(p);
|
|
31712
31712
|
}).Else(() => {
|
|
31713
31713
|
v.assign(m), y.assign(h), b.assign(g), x.assign(_), S.assign(R(-1));
|
|
31714
|
-
}), f.element(p).assign(R(
|
|
31714
|
+
}), f.element(p).assign(R(Ne(i.x))), p.addAssign(1);
|
|
31715
31715
|
});
|
|
31716
31716
|
});
|
|
31717
31717
|
}).Else(() => {
|
|
31718
|
-
let e = Mc(n, r, R(1), R($y)), t = Mc(n, r, R(2), R($y)), o = Mc(n, r, R(3), R($y)), s = R(a).toVar(), l = R(
|
|
31718
|
+
let e = Mc(n, r, R(1), R($y)), t = Mc(n, r, R(2), R($y)), o = Mc(n, r, R(3), R($y)), s = R(a).toVar(), l = R(Ne(e.w)).toVar(), u = S.greaterThanEqual(R(0)), d = H(u, v, m).toVar(), h = H(u, b, g).toVar(), _ = ub({
|
|
31719
31719
|
rayOrigin: d,
|
|
31720
31720
|
invDir: h,
|
|
31721
31721
|
boxMin: i.xyz,
|
|
@@ -31739,7 +31739,7 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31739
31739
|
o ? N(t.lessThan(R(0)), () => T(nb(t), rb(t))).Else(r) : r();
|
|
31740
31740
|
}), N(c.didHit, () => {
|
|
31741
31741
|
c.hitPoint.assign(t.origin.add(t.direction.mul(c.dst)));
|
|
31742
|
-
let e =
|
|
31742
|
+
let e = I(1).sub(u).sub(d), i = Fc(Nc(r, l, 0).w), a = Fc(Nc(r, l, 1).w), o = Fc(Nc(r, l, 2).w), s = V(i.mul(e).add(a.mul(u)).add(o.mul(d))).toVar();
|
|
31743
31743
|
N(w.greaterThanEqual(R(0)), () => {
|
|
31744
31744
|
s.assign(V(Gc(Wc(n, w), s)));
|
|
31745
31745
|
}), c.normal.assign(s);
|
|
@@ -31791,13 +31791,13 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31791
31791
|
let e = s.element(c).toVar();
|
|
31792
31792
|
_.assign(H(c.lessThan(v), R(-1), _));
|
|
31793
31793
|
let n = () => {
|
|
31794
|
-
let n = e, r = Mc(t, n, R(0), R($y)), i =
|
|
31794
|
+
let n = e, r = Mc(t, n, R(0), R($y)), i = Ne(r.w).toVar();
|
|
31795
31795
|
N(a(i), () => {
|
|
31796
31796
|
N(i.equal(G(pa.TRIANGLE_LEAF)), () => {
|
|
31797
|
-
b(
|
|
31797
|
+
b(Ne(r.x), Ne(r.y));
|
|
31798
31798
|
}).Else(() => {
|
|
31799
31799
|
N(r.z.greaterThan(.5).and(c.lessThan(R(Zy))), () => {
|
|
31800
|
-
N(
|
|
31800
|
+
N(Ne(r.y).bitAnd(G(da)).equal(G(0)), () => {
|
|
31801
31801
|
let e = Wc(t, n), r = sb(e, u).toVar();
|
|
31802
31802
|
p.assign(ob(e, l)), m.assign(r);
|
|
31803
31803
|
let i = ab(r).toVar();
|
|
@@ -31807,11 +31807,11 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31807
31807
|
})), _.assign(n), v.assign(c);
|
|
31808
31808
|
}).Else(() => {
|
|
31809
31809
|
p.assign(l), m.assign(u), h.assign(d), g.assign(f), _.assign(R(-1));
|
|
31810
|
-
}), s.element(c).assign(R(
|
|
31810
|
+
}), s.element(c).assign(R(Ne(r.x))), c.addAssign(1);
|
|
31811
31811
|
});
|
|
31812
31812
|
});
|
|
31813
31813
|
}).Else(() => {
|
|
31814
|
-
let e = Mc(t, n, R(1), R($y)), a = Mc(t, n, R(2), R($y)), u = Mc(t, n, R(3), R($y)), f = R(i).toVar(), m = R(
|
|
31814
|
+
let e = Mc(t, n, R(1), R($y)), a = Mc(t, n, R(2), R($y)), u = Mc(t, n, R(3), R($y)), f = R(i).toVar(), m = R(Ne(e.w)).toVar(), g = _.greaterThanEqual(R(0)), v = H(g, p, l).toVar(), y = H(g, h, d).toVar(), b = ub({
|
|
31815
31815
|
rayOrigin: v,
|
|
31816
31816
|
invDir: y,
|
|
31817
31817
|
boxMin: r.xyz,
|
|
@@ -31838,14 +31838,14 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31838
31838
|
//#endregion
|
|
31839
31839
|
//#region src/TSL/ShadowTerminator.js
|
|
31840
31840
|
function hb({ V0: e, V1: t, V2: n, N0: r, N1: i, N2: a, hitPoint: o, instanced: s, bvhBuffer: c, instanceLeaf: l, faceN: u }) {
|
|
31841
|
-
let d =
|
|
31841
|
+
let d = I(0).toVar(), f = o.toVar();
|
|
31842
31842
|
N(s, () => {
|
|
31843
31843
|
let e = Wc(c, l);
|
|
31844
31844
|
f.assign(Y(e[0].xyz.dot(o).add(e[0].w), e[1].xyz.dot(o).add(e[1].w), e[2].xyz.dot(o).add(e[2].w)));
|
|
31845
31845
|
});
|
|
31846
|
-
let p = t.sub(e).toVar(), m = n.sub(e).toVar(), h = f.sub(e).toVar(), g =
|
|
31846
|
+
let p = t.sub(e).toVar(), m = n.sub(e).toVar(), h = f.sub(e).toVar(), g = F(p, p), _ = F(p, m), v = F(m, m), y = g.mul(v).sub(_.mul(_)).toVar();
|
|
31847
31847
|
return N(y.greaterThan(g.mul(v).mul(1e-12)), () => {
|
|
31848
|
-
let o =
|
|
31848
|
+
let o = F(h, p), f = F(h, m), b = P(v.mul(o).sub(_.mul(f)).div(y), 0, 1).toVar(), x = P(g.mul(f).sub(_.mul(o)).div(y), 0, I(1).sub(b)).toVar(), S = I(1).sub(b).sub(x).toVar(), C = e.mul(S).add(t.mul(b)).add(n.mul(x)).toVar(), w = r.mul(S).add(i.mul(b)).add(a.mul(x)).toVar(), T = w.toVar();
|
|
31849
31849
|
N(s, () => {
|
|
31850
31850
|
let e = Wc(c, l);
|
|
31851
31851
|
T.assign(qc({
|
|
@@ -31855,31 +31855,31 @@ function hb({ V0: e, V1: t, V2: n, N0: r, N1: i, N2: a, hitPoint: o, instanced:
|
|
|
31855
31855
|
v: w
|
|
31856
31856
|
}));
|
|
31857
31857
|
});
|
|
31858
|
-
let E =
|
|
31859
|
-
N(
|
|
31860
|
-
let o = z(
|
|
31858
|
+
let E = F(a.sub(r), e.sub(n)), D = F(a.sub(i), t.sub(n)), O = F(i.sub(r), t.sub(e)), k = E.mul(S).mul(S.sub(1)).add(E.add(D).add(O).mul(S).mul(b)).add(D.mul(b).mul(b.sub(1))).toVar();
|
|
31859
|
+
N(F(T, u).greaterThan(0), () => {
|
|
31860
|
+
let o = z(F(e.sub(C), r).add(z(z(F(t.sub(e), r), F(n.sub(e), r)), 0)), 0), s = z(F(t.sub(C), i).add(z(z(F(e.sub(t), i), F(n.sub(t), i)), 0)), 0), c = z(F(n.sub(C), a).add(z(z(F(e.sub(n), a), F(t.sub(n), a)), 0)), 0);
|
|
31861
31861
|
k.assign(z(We(We(o, s), c), k.mul(.5)));
|
|
31862
31862
|
}).Else(() => {
|
|
31863
|
-
let o = z(
|
|
31863
|
+
let o = z(F(C.sub(e), r).add(z(z(F(e.sub(t), r), F(e.sub(n), r)), 0)), 0), s = z(F(C.sub(t), i).add(z(z(F(t.sub(e), i), F(t.sub(n), i)), 0)), 0), c = z(F(C.sub(n), a).add(z(z(F(n.sub(e), a), F(n.sub(t), a)), 0)), 0);
|
|
31864
31864
|
k.assign(We(We(We(o, s), c).negate(), k.mul(.5)));
|
|
31865
31865
|
}), d.assign(Re(T).mul(k));
|
|
31866
31866
|
}), d;
|
|
31867
31867
|
}
|
|
31868
31868
|
function gb({ hitPoint: e, offsetNormal: t, lift: n, faceN: r, smoothN: i, L: a, cutoff: o }) {
|
|
31869
|
-
let s =
|
|
31869
|
+
let s = F(i, a), c = F(r, a), l = z(o, 1e-6), u = H(o.greaterThan(0).and(s.greaterThan(0)), H(s.lessThan(o), P(I(2).sub(c.add(s).div(l)), 0, 1), P(I(1).sub(c.div(l)), 0, 1)), I(0));
|
|
31870
31870
|
return ic(e.add(n.mul(u)), t);
|
|
31871
31871
|
}
|
|
31872
31872
|
//#endregion
|
|
31873
31873
|
//#region src/TSL/HitFacet.js
|
|
31874
31874
|
function _b({ triangleBuffer: e, bvhBuffer: t, triIdx: n, instanceLeaf: r, hitPoint: i, smoothNormal: a, viewDir: o, didHit: s, liftEnabled: c }) {
|
|
31875
|
-
let l = Y(0, 0, 1).toVar(), u =
|
|
31875
|
+
let l = Y(0, 0, 1).toVar(), u = I(0).toVar();
|
|
31876
31876
|
return N(s, () => {
|
|
31877
|
-
let s = Nc(e, n, 0).toVar(), d = Nc(e, n, 1).toVar(), f = Nc(e, n, 2).toVar(), p = _t(s.xyz).toVar(), m = _t(d.xyz).toVar(), h = _t(f.xyz).toVar(), g =
|
|
31877
|
+
let s = Nc(e, n, 0).toVar(), d = Nc(e, n, 1).toVar(), f = Nc(e, n, 2).toVar(), p = _t(s.xyz).toVar(), m = _t(d.xyz).toVar(), h = _t(f.xyz).toVar(), g = ke(m.sub(p), h.sub(p)).toVar(), _ = g.toVar(), v = r.greaterThanEqual(R(0));
|
|
31878
31878
|
N(v, () => {
|
|
31879
31879
|
_.assign(Kc(Wc(t, r), g));
|
|
31880
31880
|
});
|
|
31881
|
-
let y = H(
|
|
31882
|
-
l.assign(H(
|
|
31881
|
+
let y = H(F(_, _).greaterThan(0), V(_), a).toVar();
|
|
31882
|
+
l.assign(H(F(y, o).lessThan(0), y.negate(), y)), N(c, () => {
|
|
31883
31883
|
u.assign(hb({
|
|
31884
31884
|
V0: p,
|
|
31885
31885
|
V1: m,
|
|
@@ -31909,7 +31909,7 @@ function yb(e, t) {
|
|
|
31909
31909
|
return G(r.x).bitOr(G(r.y).shiftLeft(G(11))).bitOr(i.shiftLeft(G(22)));
|
|
31910
31910
|
}
|
|
31911
31911
|
function bb(e) {
|
|
31912
|
-
let t = J(
|
|
31912
|
+
let t = J(I(e.bitAnd(G(2047))), I(e.shiftRight(G(11)).bitAnd(G(2047)))).div(2047).mul(2).sub(1).toVar(), n = I(1).sub(ve(t.x)).sub(ve(t.y)).toVar();
|
|
31913
31913
|
N(n.lessThan(0), () => {
|
|
31914
31914
|
t.assign(J(1).sub(ve(t.yx)).mul(vb(t)));
|
|
31915
31915
|
});
|
|
@@ -31959,23 +31959,23 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
31959
31959
|
let s = Sb({
|
|
31960
31960
|
direction: t,
|
|
31961
31961
|
environmentMatrix: n
|
|
31962
|
-
}).toVar(), c = pt(e, s, 0).rgb.toVar(), l = it(s.y.mul(Math.PI)).toVar(), u =
|
|
31962
|
+
}).toVar(), c = pt(e, s, 0).rgb.toVar(), l = it(s.y.mul(Math.PI)).toVar(), u = F(c, pc).mul(l), d = z(I(0), u.sub(i)).div(r), f = l.greaterThan(0).select(I(1).div(I(2 * Math.PI * Math.PI).mul(l)), I(0)), p = I(a.x).mul(I(a.y)).mul(d).mul(f);
|
|
31963
31963
|
o.assign(X(c, p));
|
|
31964
31964
|
}), o;
|
|
31965
31965
|
}), Tb = M(([e, t, n, r, i, a, o, s, c]) => {
|
|
31966
|
-
let l = R(o.x).toVar(), u = o.y, d = P(s.x.mul(u.sub(1)), 0, u.sub(1)), f = R(
|
|
31966
|
+
let l = R(o.x).toVar(), u = o.y, d = P(s.x.mul(u.sub(1)), 0, u.sub(1)), f = R(L(d)), p = We(f.add(1), R(u).sub(1)), m = Pe(d), h = B(t.load(Ie(l, f)).x, t.load(Ie(l, p)).x, m).toVar(), g = o.x, _ = o.y, v = P(s.y.mul(g.sub(1)), 0, g.sub(1)), y = P(h.mul(_.sub(1)), 0, _.sub(1)), b = R(L(v)), x = R(L(y)), S = We(b.add(1), R(g).sub(1)), C = We(x.add(1), R(_).sub(1)), w = Pe(v), T = Pe(y), E = t.load(Ie(b, x)).x, D = t.load(Ie(S, x)).x, O = t.load(Ie(b, C)).x, k = t.load(Ie(S, C)).x, A = J(B(B(E, D, w), B(O, k, w), T).toVar(), h).toVar(), ee = Cb({
|
|
31967
31967
|
uv: A,
|
|
31968
31968
|
environmentMatrix: n
|
|
31969
31969
|
}).toVar(), te = pt(e, A, 0).rgb.mul(r).toVar();
|
|
31970
31970
|
c.assign(te);
|
|
31971
|
-
let j = it(A.y.mul(Math.PI)).toVar(), ne =
|
|
31972
|
-
return X(ee,
|
|
31971
|
+
let j = it(A.y.mul(Math.PI)).toVar(), ne = F(te.div(r), pc).mul(j), re = z(I(0), ne.sub(a)).div(i), ie = j.greaterThan(0).select(I(1).div(I(2 * Math.PI * Math.PI).mul(j)), I(0));
|
|
31972
|
+
return X(ee, I(o.x).mul(I(o.y)).mul(re).mul(ie));
|
|
31973
31973
|
}), Eb = /* @__PURE__ */ wt("\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", [Sb]), Db = M(([e, t, n, r]) => {
|
|
31974
31974
|
let i = t.toConst(), a = e.toVar();
|
|
31975
31975
|
a.y.subAssign(r);
|
|
31976
31976
|
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();
|
|
31977
31977
|
return N(l.greaterThanEqual(0), () => {
|
|
31978
|
-
let t = U(l).sub(s).toVar(), r =
|
|
31978
|
+
let t = U(l).sub(s).toVar(), r = I(1e6).toVar(), c = i.y.toConst();
|
|
31979
31979
|
N(c.lessThanEqual(0), () => {
|
|
31980
31980
|
let t = e.y.negate().div(c).toConst(), n = e.add(i.mul(t)).toConst();
|
|
31981
31981
|
N(n.dot(n).lessThan(o), () => {
|
|
@@ -31994,7 +31994,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
31994
31994
|
}), kb = M(([e, t]) => {
|
|
31995
31995
|
let n = Y(0).toVar();
|
|
31996
31996
|
return N(e.roughness.greaterThan(.98).and(e.metalness.lessThan(.02)).and(e.transmission.equal(0)).and(e.clearcoat.equal(0)).and(e.sheen.equal(0)).and(e.iridescence.equal(0)), () => {
|
|
31997
|
-
n.assign(e.color.rgb.mul(
|
|
31997
|
+
n.assign(e.color.rgb.mul(I(1).sub(e.metalness)).mul(sc));
|
|
31998
31998
|
}).Else(() => {
|
|
31999
31999
|
let r = $s.wrap(pm(e, e.color.rgb)).toVar(), i = r.F0.toVar(), a = Y(0).toVar(), o = e.color.rgb.toVar();
|
|
32000
32000
|
N(e.dispersion.greaterThan(0).and(e.transmission.greaterThan(.5)), () => {
|
|
@@ -32005,7 +32005,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32005
32005
|
});
|
|
32006
32006
|
}), N(e.iridescence.greaterThan(0), () => {
|
|
32007
32007
|
let n = e.iridescenceThicknessRange.y;
|
|
32008
|
-
a.assign(xm(
|
|
32008
|
+
a.assign(xm(I(1), e.iridescenceIOR, t.VoH, n, i)), i.assign(B(i, a, e.iridescence));
|
|
32009
32009
|
});
|
|
32010
32010
|
let s = B(B(B(r.f0, Y(r.f90), Xp(t.VoH, r.eta)), Wp(t.VoH, r.F0m), e.metalness), Wp(t.VoH, a), e.iridescence).toVar(), c = Y(0).toVar();
|
|
32011
32011
|
N(e.anisotropy.greaterThan(0), () => {
|
|
@@ -32015,41 +32015,41 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32015
32015
|
let n = Qp(t.NoH, e.roughness), r = rm(t.NoV, t.NoL, e.roughness);
|
|
32016
32016
|
c.assign(n.mul(r).mul(s));
|
|
32017
32017
|
});
|
|
32018
|
-
let l = Qs.wrap(fm(r.f0, r.f90, r.eta, r.F0m, e.metalness, a, e.iridescence, i, t.NoV, e.roughness)), u = c.mul(l.compensation), d = Y(1).sub(l.E_total).mul(
|
|
32018
|
+
let l = Qs.wrap(fm(r.f0, r.f90, r.eta, r.F0m, e.metalness, a, e.iridescence, i, t.NoV, e.roughness)), u = c.mul(l.compensation), d = Y(1).sub(l.E_total).mul(I(1).sub(e.metalness)).mul(I(1).sub(e.transmission)).mul(o).mul(sc).add(u).toVar();
|
|
32019
32019
|
N(e.sheen.greaterThan(0), () => {
|
|
32020
32020
|
let r = $p(t.NoH, e.sheenRoughness), i = tm(t.NoV, t.NoL), a = e.sheenColor.mul(e.sheen).mul(r).mul(i), o = dm(t.NoV, e.sheenRoughness), s = P(e.sheenColor.mul(e.sheen).mul(o), Y(0), Y(1)), c = Y(1).sub(s);
|
|
32021
32021
|
n.assign(d.mul(c).add(a));
|
|
32022
32022
|
}).Else(() => {
|
|
32023
32023
|
n.assign(d);
|
|
32024
32024
|
}), N(e.clearcoat.greaterThan(0), () => {
|
|
32025
|
-
let r = z(e.clearcoatRoughness, dc), i = Y(.04), a = Qs.wrap(fm(i,
|
|
32025
|
+
let r = z(e.clearcoatRoughness, dc), i = Y(.04), a = Qs.wrap(fm(i, I(1), I(1.5), Y(0), I(0), Y(0), I(0), i, t.NoV, r)), o = Qp(t.NoH, r), s = rm(t.NoV, t.NoL, r), c = Yp(t.VoH, I(1.5)), l = Y(o.mul(s).mul(c)).mul(a.compensation), u = Y(1).sub(a.E_total.mul(e.clearcoat));
|
|
32026
32026
|
n.assign(n.mul(u).add(l.mul(e.clearcoat)));
|
|
32027
32027
|
});
|
|
32028
32028
|
}), n;
|
|
32029
32029
|
}), Ab = M(([e, t, n, r]) => kb(r, Zs.wrap(Dc(n, e, t, r)))), jb = Y(...Eu), Mb = Y(...Eu.map((e) => (e + 2) / 2)), Nb = /* @__PURE__ */ M(([e, t, n, r]) => {
|
|
32030
32030
|
let i = Y(0).toVar();
|
|
32031
|
-
return N(
|
|
32032
|
-
let a =
|
|
32031
|
+
return N(F(e, t).greaterThanEqual(r.x).and(e.y.greaterThanEqual(r.w.negate())), () => {
|
|
32032
|
+
let a = ke(e, t), o = U(z(I(1).sub(F(a, a).mul(r.z)), 1e-8));
|
|
32033
32033
|
i.assign(n.mul(Xe(Y(o), jb)).mul(Mb));
|
|
32034
32034
|
}), i;
|
|
32035
32035
|
}), Pb = /* @__PURE__ */ M(([e, t, n]) => {
|
|
32036
|
-
let r = n.x.mul(t.y.mul(1 / (2 * Math.PI))), i =
|
|
32036
|
+
let r = n.x.mul(t.y.mul(1 / (2 * Math.PI))), i = I(1).sub(r), a = U(z(r.mul(I(2).sub(r)), 0)), o = n.y.mul(2 * Math.PI), s = e, c = V(ke(H(ve(s.x).greaterThan(.9), Y(0, 1, 0), Y(1, 0, 0)), s)), l = ke(s, c);
|
|
32037
32037
|
return V(s.mul(i).add(c.mul(Oe(o)).add(l.mul(it(o))).mul(a)));
|
|
32038
32038
|
}), Fb = 2 * oc, Ib = M(([e, t]) => {
|
|
32039
|
-
let n =
|
|
32040
|
-
return N(t.lessThan(
|
|
32041
|
-
let r = t.mul(.5).toVar(), i = ft(r).toVar(), a = U(z(
|
|
32039
|
+
let n = I(1).toVar();
|
|
32040
|
+
return N(t.lessThan(I(oc).sub(.001)).and(e.greaterThan(0)), () => {
|
|
32041
|
+
let r = t.mul(.5).toVar(), i = ft(r).toVar(), a = U(z(I(1).sub(e.mul(e)), 0)).div(z(e, 1e-4)), o = H(r.greaterThan(.05), I(1).div(z(i.sub(r), 1e-6)), I(3).div(z(r.mul(r).mul(r), 1e-9)));
|
|
32042
32042
|
n.assign(z(i.sub(a).mul(o), 0));
|
|
32043
32043
|
}), n;
|
|
32044
32044
|
}), Lb = M(([e]) => {
|
|
32045
|
-
let t = H(e.normalize.greaterThan(.5),
|
|
32045
|
+
let t = H(e.normalize.greaterThan(.5), I(1).div(z(e.area, 1e-10)), I(1));
|
|
32046
32046
|
return e.color.mul(e.intensity).mul(sc).mul(t);
|
|
32047
32047
|
}), Rb = M(([e, t, n, r]) => {
|
|
32048
|
-
let i = De(!1).toVar(), a = Y(0, 1, 0).toVar(), o = Y(0).toVar(), s =
|
|
32048
|
+
let i = De(!1).toVar(), a = Y(0, 1, 0).toVar(), o = Y(0).toVar(), s = I(0).toVar(), c = I(0).toVar(), l = R(2).toVar();
|
|
32049
32049
|
return N(e.area.greaterThan(0), () => {
|
|
32050
|
-
let u = Y(0).toVar(), d =
|
|
32050
|
+
let u = Y(0).toVar(), d = I(-1).toVar();
|
|
32051
32051
|
N(e.shape.greaterThan(.5), () => {
|
|
32052
|
-
let t = U(n.x).toVar(), r =
|
|
32052
|
+
let t = U(n.x).toVar(), r = I(Fb).mul(n.y).toVar();
|
|
32053
32053
|
u.assign(e.position.add(e.u.mul(t.mul(Oe(r)))).add(e.v.mul(t.mul(it(r)))));
|
|
32054
32054
|
}).Else(() => {
|
|
32055
32055
|
let r = Qh(t, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2), n).toVar();
|
|
@@ -32059,9 +32059,9 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32059
32059
|
u.assign(e.position.add(e.u.mul(n.x.mul(2).sub(1))).add(e.v.mul(n.y.mul(2).sub(1))));
|
|
32060
32060
|
});
|
|
32061
32061
|
});
|
|
32062
|
-
let f = u.sub(t).toVar(), p =
|
|
32062
|
+
let f = u.sub(t).toVar(), p = F(f, f).toVar();
|
|
32063
32063
|
N(p.greaterThanEqual(1e-10), () => {
|
|
32064
|
-
let t = U(p).toVar(), n = f.div(t).toVar(), u =
|
|
32064
|
+
let t = U(p).toVar(), n = f.div(t).toVar(), u = F(n.negate(), e.normal).toVar();
|
|
32065
32065
|
l.assign(R(1)), s.assign(t), a.assign(n), o.assign(Lb(e).mul(Ib(u, e.spread)));
|
|
32066
32066
|
let m = p.div(z(e.area.mul(z(u, .001)), 1e-10)), h = H(d.greaterThan(0), d, m);
|
|
32067
32067
|
c.assign(h.mul(r)), i.assign(u.greaterThan(0));
|
|
@@ -32073,12 +32073,12 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32073
32073
|
distance: s,
|
|
32074
32074
|
pdf: c,
|
|
32075
32075
|
lightType: l,
|
|
32076
|
-
selectionTotalWeight:
|
|
32076
|
+
selectionTotalWeight: I(0)
|
|
32077
32077
|
});
|
|
32078
32078
|
}), zb = M(([e, t, n]) => {
|
|
32079
|
-
let r = De(!1).toVar(), i = Y(0, 1, 0).toVar(), a = Y(0).toVar(), o =
|
|
32079
|
+
let r = De(!1).toVar(), i = Y(0, 1, 0).toVar(), a = Y(0).toVar(), o = I(0).toVar(), s = I(0).toVar(), c = R(3).toVar(), l = e.position.sub(t).toVar(), u = F(l, l).toVar();
|
|
32080
32080
|
return N(u.greaterThanEqual(1e-20), () => {
|
|
32081
|
-
let t = U(u).toVar(), c = l.div(t).toVar(), d =
|
|
32081
|
+
let t = U(u).toVar(), c = l.div(t).toVar(), d = F(c.negate(), e.direction).toVar(), f = Oe(e.angle).toVar();
|
|
32082
32082
|
i.assign(c), o.assign(t), s.assign(n), r.assign(d.greaterThanEqual(f)), N(r, () => {
|
|
32083
32083
|
let n = Vh({
|
|
32084
32084
|
coneCosine: f,
|
|
@@ -32098,10 +32098,10 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32098
32098
|
distance: o,
|
|
32099
32099
|
pdf: s,
|
|
32100
32100
|
lightType: c,
|
|
32101
|
-
selectionTotalWeight:
|
|
32101
|
+
selectionTotalWeight: I(0)
|
|
32102
32102
|
});
|
|
32103
32103
|
}), Bb = M(([e, t, n]) => {
|
|
32104
|
-
let r = De(!1).toVar(), i = Y(0, 1, 0).toVar(), a = Y(0).toVar(), o =
|
|
32104
|
+
let r = De(!1).toVar(), i = Y(0, 1, 0).toVar(), a = Y(0).toVar(), o = I(0).toVar(), s = I(0).toVar(), c = R(2).toVar(), l = e.position.sub(t).toVar(), u = F(l, l).toVar();
|
|
32105
32105
|
return N(u.greaterThanEqual(1e-20), () => {
|
|
32106
32106
|
let t = U(u).toVar(), d = l.div(t), f = Bh({
|
|
32107
32107
|
lightDistance: t,
|
|
@@ -32116,31 +32116,31 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32116
32116
|
distance: o,
|
|
32117
32117
|
pdf: s,
|
|
32118
32118
|
lightType: c,
|
|
32119
|
-
selectionTotalWeight:
|
|
32119
|
+
selectionTotalWeight: I(0)
|
|
32120
32120
|
});
|
|
32121
32121
|
}), Vb = M(([e, t, n, r, i]) => {
|
|
32122
|
-
let a = De(!1).toVar(), o = Y(0, 1, 0).toVar(), s = Y(0).toVar(), c =
|
|
32122
|
+
let a = De(!1).toVar(), o = Y(0, 1, 0).toVar(), s = Y(0).toVar(), c = I(0).toVar();
|
|
32123
32123
|
return N(e.intensity.greaterThan(0), () => {
|
|
32124
32124
|
let l = V(e.direction).toVar(), u = e.color.mul(e.intensity).mul(Gh(e, t)).toVar();
|
|
32125
32125
|
o.assign(l), c.assign(n), N(e.angle.greaterThan(0), () => {
|
|
32126
|
-
let t = Oe(e.angle.mul(.5)).toVar(), a = B(t,
|
|
32126
|
+
let t = Oe(e.angle.mul(.5)).toVar(), a = B(t, I(1), r).toVar(), s = U(z(I(0), I(1).sub(a.mul(a)))).toVar(), d = I(Fb).mul(i).toVar(), f = V(ke(H(ve(l.x).greaterThan(.9), Y(0, 1, 0), Y(1, 0, 0)), l)).toVar(), p = ke(l, f).toVar();
|
|
32127
32127
|
o.assign(V(l.mul(a).add(f.mul(Oe(d)).add(p.mul(it(d))).mul(s))));
|
|
32128
|
-
let m =
|
|
32128
|
+
let m = I(Fb).mul(z(I(1).sub(t), 1e-10)).toVar();
|
|
32129
32129
|
u.assign(u.div(m)), c.assign(n.div(m));
|
|
32130
32130
|
}), s.assign(u), a.assign(De(!0));
|
|
32131
32131
|
}), Nh({
|
|
32132
32132
|
valid: a,
|
|
32133
32133
|
direction: o,
|
|
32134
32134
|
emission: s,
|
|
32135
|
-
distance:
|
|
32135
|
+
distance: I(1e6),
|
|
32136
32136
|
pdf: c,
|
|
32137
32137
|
lightType: R(0),
|
|
32138
|
-
selectionTotalWeight:
|
|
32138
|
+
selectionTotalWeight: I(0)
|
|
32139
32139
|
});
|
|
32140
32140
|
}), Hb = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _]) => {
|
|
32141
|
-
let v = De(!1).toVar(), y = Y(0, 1, 0).toVar(), b = Y(0).toVar(), x =
|
|
32141
|
+
let v = De(!1).toVar(), y = Y(0, 1, 0).toVar(), b = Y(0).toVar(), x = I(0).toVar(), S = I(0).toVar(), C = R(2).toVar(), w = I(0).toVar(), T = d.add(p).add(h).add(_).toVar();
|
|
32142
32142
|
return N(T.greaterThan(R(0)), () => {
|
|
32143
|
-
let E = R(Qr + 64).toVar(), D = E.add(d).toVar(), O = D.add(p).toVar(), k = O.add(h).toVar(), A = R(-1).toVar(), ee = R(-1).toVar(), te =
|
|
32143
|
+
let E = R(Qr + 64).toVar(), D = E.add(d).toVar(), O = D.add(p).toVar(), k = O.add(h).toVar(), A = R(-1).toVar(), ee = R(-1).toVar(), te = I(0).toVar();
|
|
32144
32144
|
N(d.greaterThan(R(0)), () => {
|
|
32145
32145
|
he({
|
|
32146
32146
|
start: R(0),
|
|
@@ -32160,7 +32160,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32160
32160
|
type: "int",
|
|
32161
32161
|
condition: "<"
|
|
32162
32162
|
}, ({ i: r }) => {
|
|
32163
|
-
let i = Ah.wrap(Ih(f, r)), l = H(i.intensity.greaterThan(0), Eh(i, e, t, n),
|
|
32163
|
+
let i = Ah.wrap(Ih(f, r)), l = H(i.intensity.greaterThan(0), Eh(i, e, t, n), I(0)).toVar();
|
|
32164
32164
|
w.addAssign(l), N(l.greaterThan(0).and(li(o, R(0), D.add(r), a, s, c).mul(w).lessThan(l)), () => {
|
|
32165
32165
|
A.assign(1), ee.assign(r), te.assign(l);
|
|
32166
32166
|
});
|
|
@@ -32190,7 +32190,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32190
32190
|
});
|
|
32191
32191
|
});
|
|
32192
32192
|
}), N(w.lessThanEqual(0), () => {
|
|
32193
|
-
let t = R(r.x.mul(
|
|
32193
|
+
let t = R(r.x.mul(I(T))).toVar(), n = I(1).div(z(I(T), 1)).toVar();
|
|
32194
32194
|
S.assign(n);
|
|
32195
32195
|
let i = De(!1).toVar(), w = R(0).toVar();
|
|
32196
32196
|
N(d.greaterThan(R(0)), () => {
|
|
@@ -32260,18 +32260,18 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32260
32260
|
smoothN: n,
|
|
32261
32261
|
L: t,
|
|
32262
32262
|
cutoff: ie
|
|
32263
|
-
}), pe = M(([e, t, n]) => wh(e, t, n, mb, S, C, w)), me = h.add(_).add(y).add(x).toVar(), ge = me.greaterThan(R(0)).toVar(), _e =
|
|
32263
|
+
}), pe = M(([e, t, n]) => wh(e, t, n, mb, S, C, w)), me = h.add(_).add(y).add(x).toVar(), ge = me.greaterThan(R(0)).toVar(), _e = I(0).toVar();
|
|
32264
32264
|
return N(ge, () => {
|
|
32265
32265
|
let a = ci(u, R(0), p.add(R(2)), l, d, f).toVar(), o = Nh.wrap(Hb(e, t, r, a, c, l, u, d, f, p, m, h, g, _, v, y, b, x));
|
|
32266
32266
|
_e.assign(o.selectionTotalWeight), N(o.valid.and(o.pdf.greaterThan(0)), () => {
|
|
32267
|
-
let a = z(
|
|
32267
|
+
let a = z(I(0), F(t, o.direction)).toVar();
|
|
32268
32268
|
N(a.greaterThan(0).and(zh({
|
|
32269
32269
|
direction: o.direction,
|
|
32270
32270
|
surfaceNormal: n
|
|
32271
32271
|
})), () => {
|
|
32272
32272
|
let n = fe(o.direction).toVar(), s = e.add(o.direction.mul(o.distance)).sub(n).toVar(), c = Re(s).toVar(), l = pe(n, s.div(c), c.mul(ac));
|
|
32273
32273
|
N(l.greaterThan(0).or(j), () => {
|
|
32274
|
-
let e = Zs.wrap(Dc(t, i, o.direction, r)), n = kb(r, e), s = Ub(r, e).toVar(), c =
|
|
32274
|
+
let e = Zs.wrap(Dc(t, i, o.direction, r)), n = kb(r, e), s = Ub(r, e).toVar(), c = I(1).toVar();
|
|
32275
32275
|
N(s.greaterThan(0).and(o.lightType.equal(R(1))), () => {
|
|
32276
32276
|
c.assign(Cc({
|
|
32277
32277
|
pdf1: o.pdf,
|
|
@@ -32286,12 +32286,12 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32286
32286
|
});
|
|
32287
32287
|
});
|
|
32288
32288
|
}), N(o.greaterThan(0).and(_.greaterThan(R(0))), () => {
|
|
32289
|
-
let i = z(
|
|
32289
|
+
let i = z(I(0), F(t, a)).toVar();
|
|
32290
32290
|
N(i.greaterThan(0).and(zh({
|
|
32291
32291
|
direction: a,
|
|
32292
32292
|
surfaceNormal: n
|
|
32293
32293
|
})), () => {
|
|
32294
|
-
let n =
|
|
32294
|
+
let n = I(1e30).toVar(), c = R(-1).toVar();
|
|
32295
32295
|
he({
|
|
32296
32296
|
start: R(0),
|
|
32297
32297
|
end: _,
|
|
@@ -32308,9 +32308,9 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32308
32308
|
}), N(c.greaterThanEqual(R(0)), () => {
|
|
32309
32309
|
let l = Ah.wrap(Ih(g, c)), u = e.add(a.mul(n)).sub(de).toVar(), d = Re(u).toVar(), f = pe(de, u.div(d), d.mul(ac));
|
|
32310
32310
|
N(f.greaterThan(0).or(j), () => {
|
|
32311
|
-
let c = z(
|
|
32311
|
+
let c = z(I(0), F(a, l.normal).negate()).toVar();
|
|
32312
32312
|
N(c.greaterThan(0), () => {
|
|
32313
|
-
let a = Zh(e, l.position.sub(l.u).sub(l.v), l.u.mul(2), l.v.mul(2)).toVar(), u = n.mul(n).div(z(l.area.mul(c), lc)), d = H(l.shape.lessThan(.5).and(a.greaterThan(1e-5)),
|
|
32313
|
+
let a = Zh(e, l.position.sub(l.u).sub(l.v), l.u.mul(2), l.v.mul(2)).toVar(), u = n.mul(n).div(z(l.area.mul(c), lc)), d = H(l.shape.lessThan(.5).and(a.greaterThan(1e-5)), I(1).div(z(a, 1e-10)), u).toVar(), p = Eh(l, e, t, r), m = H(_e.greaterThan(0), p.div(z(_e, 1e-10)), I(1).div(z(I(me), 1))), h = Cc({
|
|
32314
32314
|
pdf1: o,
|
|
32315
32315
|
pdf2: d.mul(m).toVar()
|
|
32316
32316
|
}).toVar(), g = Lb(l).mul(Ib(c, l.spread)).mul(s).mul(i).mul(h).div(z(o, 1e-10));
|
|
@@ -32330,20 +32330,20 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32330
32330
|
condition: "<",
|
|
32331
32331
|
name: "envPass"
|
|
32332
32332
|
}, ({ envPass: e }) => {
|
|
32333
|
-
let a = e.equal(R(1)).toVar(), o = Y(0).toVar(), s = Y(0, 1, 0).toVar(), c =
|
|
32333
|
+
let a = e.equal(R(1)).toVar(), o = Y(0).toVar(), s = Y(0, 1, 0).toVar(), c = I(0).toVar();
|
|
32334
32334
|
N(a, () => {
|
|
32335
32335
|
let e = ci(u, R(0), p.add(R(9)), l, d, f);
|
|
32336
|
-
s.assign(Pb(oe, ce, e)), o.assign(Nb(s, oe, se, ce).mul(E)), c.assign(H(o.x.add(o.y).add(o.z).greaterThan(0),
|
|
32336
|
+
s.assign(Pb(oe, ce, e)), o.assign(Nb(s, oe, se, ce).mul(E)), c.assign(H(o.x.add(o.y).add(o.z).greaterThan(0), I(1).div(ce.y), I(0)));
|
|
32337
32337
|
}).Else(() => {
|
|
32338
32338
|
let e = ci(u, R(0), p.add(R(1)), l, d, f).toVar(), t = Y(0).toVar(), n = Tb(T, O, D, E, k, A, ee, e, t).toVar();
|
|
32339
32339
|
s.assign(n.xyz), o.assign(t), c.assign(n.w);
|
|
32340
32340
|
}), N(c.greaterThan(0), () => {
|
|
32341
|
-
let e = z(
|
|
32341
|
+
let e = z(I(0), F(t, s)).toVar();
|
|
32342
32342
|
N(e.greaterThan(0).and(zh({
|
|
32343
32343
|
direction: s,
|
|
32344
32344
|
surfaceNormal: n
|
|
32345
32345
|
})), () => {
|
|
32346
|
-
let n = pe(fe(s), s,
|
|
32346
|
+
let n = pe(fe(s), s, I(0x56bc75e2d63100000));
|
|
32347
32347
|
N(n.greaterThan(0).or(j), () => {
|
|
32348
32348
|
let l = Zs.wrap(Dc(t, i, s, r)), u = kb(r, l), d = Ub(r, l).toVar(), f = H(d.greaterThan(0), H(a, Cc({
|
|
32349
32349
|
pdf1: c,
|
|
@@ -32351,7 +32351,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32351
32351
|
}), wc({
|
|
32352
32352
|
pdf1: c,
|
|
32353
32353
|
pdf2: d
|
|
32354
|
-
})),
|
|
32354
|
+
})), I(1)).toVar(), p = o.mul(u).mul(e).mul(f).div(z(c, 1e-10));
|
|
32355
32355
|
le.addAssign(p.mul(n)), N(j, () => {
|
|
32356
32356
|
ue.addAssign(p);
|
|
32357
32357
|
});
|
|
@@ -32364,12 +32364,12 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32364
32364
|
unoccluded: ue
|
|
32365
32365
|
});
|
|
32366
32366
|
}), Kb = M(([e, t, n, r, i, a, o, s, c, l, u, d]) => {
|
|
32367
|
-
let f = Y(0).toVar(), p = Y(0).toVar(), m =
|
|
32367
|
+
let f = Y(0).toVar(), p = Y(0).toVar(), m = I(0).toVar();
|
|
32368
32368
|
return N(r.greaterThan(0).not(), () => {
|
|
32369
32369
|
let n = ci(c, R(0), d.add(R(8)), s, l, u);
|
|
32370
32370
|
f.assign(Om(e, n)), p.assign(t.color.xyz), m.assign(1);
|
|
32371
32371
|
}).Else(() => {
|
|
32372
|
-
let s = z(
|
|
32372
|
+
let s = z(F(e, n), 0).toVar(), c = z(r, fc).toVar();
|
|
32373
32373
|
f.assign(n), m.assign(c), p.assign(H(a, t.color.xyz.mul(o), i.mul(s).div(c)));
|
|
32374
32374
|
}), Ph({
|
|
32375
32375
|
direction: f,
|
|
@@ -32377,15 +32377,15 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32377
32377
|
combinedPdf: m
|
|
32378
32378
|
});
|
|
32379
32379
|
}), qb = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m]) => {
|
|
32380
|
-
let h = Y(0).toVar(), g = Y(0).toVar(), _ =
|
|
32380
|
+
let h = Y(0).toVar(), g = Y(0).toVar(), _ = I(0).toVar(), v = De(!1).toVar(), y = Y(1).toVar(), b = f.toVar();
|
|
32381
32381
|
N(d.not(), () => {
|
|
32382
32382
|
N(p, () => {
|
|
32383
32383
|
b.assign(Sm(n, u, m));
|
|
32384
32384
|
}).Else(() => {
|
|
32385
32385
|
let e = rc({
|
|
32386
|
-
invRoughness:
|
|
32387
|
-
metalFactor:
|
|
32388
|
-
iorFactor: We(
|
|
32386
|
+
invRoughness: I(1).sub(n.roughness),
|
|
32387
|
+
metalFactor: I(.5).add(I(.5).mul(n.metalness)),
|
|
32388
|
+
iorFactor: We(I(2).div(n.ior), 1),
|
|
32389
32389
|
maxSheenColor: z(n.sheenColor.x, z(n.sheenColor.y, n.sheenColor.z))
|
|
32390
32390
|
}).toVar();
|
|
32391
32391
|
b.assign(Sm(n, u, e));
|
|
@@ -32399,7 +32399,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32399
32399
|
}));
|
|
32400
32400
|
}).ElseIf(x.lessThan(w), () => {
|
|
32401
32401
|
N(n.anisotropy.greaterThan(0), () => {
|
|
32402
|
-
let i = Xs.wrap(Ec(t, n.anisotropyRotation)), a = i.Ta, o = i.Ba, s = Y(
|
|
32402
|
+
let i = Xs.wrap(Ec(t, n.anisotropyRotation)), a = i.Ta, o = i.Ba, s = Y(F(e, a), F(e, o), F(e, t)), c = hm(n.roughness, n.anisotropy), l = Am({
|
|
32403
32403
|
V: s,
|
|
32404
32404
|
alphaX: c.x,
|
|
32405
32405
|
alphaY: c.y,
|
|
@@ -32428,7 +32428,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32428
32428
|
Xi: r
|
|
32429
32429
|
}))), h.assign(Ze(e.negate(), S));
|
|
32430
32430
|
}).Else(() => {
|
|
32431
|
-
let i =
|
|
32431
|
+
let i = F(e, t).greaterThan(0), u = Vm.wrap(qm(e, t, n.ior, n.roughness, i, n.dispersion, r, a, I(0), o, s, c, l));
|
|
32432
32432
|
h.assign(u.direction), _.assign(z(b.transmission.mul(u.pdf), fc)), y.assign(u.colorWeight), v.assign(!0);
|
|
32433
32433
|
}), N(v.not(), () => {
|
|
32434
32434
|
let r = Zs.wrap(Dc(t, e, h, n));
|
|
@@ -32441,12 +32441,12 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32441
32441
|
colorWeight: y
|
|
32442
32442
|
});
|
|
32443
32443
|
}), Jb = /* @__PURE__ */ wt("\n fn regularizePathContribution( contribution: vec3f, pathLength: f32, fireflyThreshold: f32, frame: i32 ) -> vec3f {\n // Indirect-only clamp: pathLength 0 is a direct/primary contribution (bounce-0 hit, direct NEE,\n // or a directly-viewed backdrop/sun) — that is signal, not a firefly, and clamping it darkens\n // legitimately bright pixels. Fireflies arise on indirect bounces, so only suppress pathLength>=1.\n if ( pathLength < 0.5 ) {\n return contribution;\n }\n let threshold = calculateFireflyThreshold( fireflyThreshold, i32( pathLength ), frame );\n return applySoftSuppressionRGB( contribution, threshold, 0.5f );\n }\n", [Oc, Ac]), Yb = /* @__PURE__ */ wt("\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"), Xb = M(([e, t, n, r, i, a, o, s, c, l]) => {
|
|
32444
|
-
let u =
|
|
32444
|
+
let u = I(1).toVar();
|
|
32445
32445
|
return N(e.greaterThanEqual(R(3)), () => {
|
|
32446
32446
|
let d = z(z(z(t.x, t.y), t.z), 0).toVar();
|
|
32447
32447
|
N(d.lessThan(8e-4).and(e.greaterThan(R(4))), () => {
|
|
32448
32448
|
let e = z(d.mul(125), .01), t = li(a, R(0), c.add(R(3)), i, o, s);
|
|
32449
|
-
u.assign(H(t.lessThan(e), e,
|
|
32449
|
+
u.assign(H(t.lessThan(e), e, I(0)));
|
|
32450
32450
|
}).Else(() => {
|
|
32451
32451
|
let t = n.complexityScore.toVar();
|
|
32452
32452
|
N(n.isMetallic.and(n.isSmooth).and(e.lessThan(R(7))), () => {
|
|
@@ -32472,22 +32472,22 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32472
32472
|
}), N(n.isEmissive, () => {
|
|
32473
32473
|
p.addAssign(.1);
|
|
32474
32474
|
}), p.assign(P(p, 0, 1));
|
|
32475
|
-
let m =
|
|
32475
|
+
let m = I(.5).toVar();
|
|
32476
32476
|
N(l.and(d.greaterThan(.01)), () => {
|
|
32477
32477
|
let e = P(r.y, 0, 1);
|
|
32478
|
-
m.assign(B(
|
|
32478
|
+
m.assign(B(I(.3), I(.8), e.mul(e)));
|
|
32479
32479
|
});
|
|
32480
|
-
let h = at(
|
|
32480
|
+
let h = at(I(.001), I(.1), d), g = d.mul(B(p.mul(.7), m, .3)).mul(h).toVar(), _ = B(P(t.mul(.4).add(d.mul(.6)).mul(1.2), .15, .95), P(d.mul(.4).add(t.mul(.1)), .03, .6), P(I(e.sub(f)).div(10), 0, 1)).toVar();
|
|
32481
32481
|
_.assign(B(_, z(_, g), .4)), N(t.greaterThan(.5), () => {
|
|
32482
32482
|
let e = t.sub(.5).mul(.6);
|
|
32483
|
-
_.assign(B(_,
|
|
32483
|
+
_.assign(B(_, I(1), e));
|
|
32484
32484
|
});
|
|
32485
|
-
let v =
|
|
32485
|
+
let v = I(.12).add(t.mul(.08)), y = je(I(e.sub(f)).negate().mul(v));
|
|
32486
32486
|
_.mulAssign(y);
|
|
32487
|
-
let b = H(n.isEmissive,
|
|
32487
|
+
let b = H(n.isEmissive, I(.04), I(.02));
|
|
32488
32488
|
_.assign(P(_, b, 1));
|
|
32489
32489
|
let x = li(a, R(0), c.add(R(3)), i, o, s);
|
|
32490
|
-
u.assign(H(x.lessThan(_), _,
|
|
32490
|
+
u.assign(H(x.lessThan(_), _, I(0)));
|
|
32491
32491
|
});
|
|
32492
32492
|
});
|
|
32493
32493
|
}), u;
|
|
@@ -32506,7 +32506,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32506
32506
|
}))), _.assign(Ze(u.negate(), v));
|
|
32507
32507
|
}).ElseIf(g.lessThan(m.add(h)), () => {
|
|
32508
32508
|
N(n.anisotropy.greaterThan(0), () => {
|
|
32509
|
-
let e = Xs.wrap(Ec(l, n.anisotropyRotation)), t = Y(
|
|
32509
|
+
let e = Xs.wrap(Ec(l, n.anisotropyRotation)), t = Y(F(u, e.Ta), F(u, e.Ba), F(u, l)), i = hm(n.roughness, n.anisotropy), a = Am({
|
|
32510
32510
|
V: t,
|
|
32511
32511
|
alphaX: i.x,
|
|
32512
32512
|
alphaY: i.y,
|
|
@@ -32539,7 +32539,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32539
32539
|
normal: "vec3",
|
|
32540
32540
|
height: "float"
|
|
32541
32541
|
}), rx = M(([e, t, n, r, i, a, o]) => {
|
|
32542
|
-
let s = t.hitPoint.toVar(), c = t.uv.toVar(), l = t.normal.toVar(), u =
|
|
32542
|
+
let s = t.hitPoint.toVar(), c = t.uv.toVar(), l = t.normal.toVar(), u = I(0).toVar(), d = t.triangleIndex, f = _t(Nc(n, d, 0).xyz).toVar(), p = _t(Nc(n, d, 1).xyz), m = _t(Nc(n, d, 2).xyz), h = _t(Nc(n, d, 3)).toVar(), g = _t(Nc(n, d, 4).xy), _ = h.xy.toVar(), v = h.zw, y = g, b = p.sub(f).toVar(), x = m.sub(f).toVar();
|
|
32543
32543
|
N(o.greaterThanEqual(R(0)), () => {
|
|
32544
32544
|
let e = Wc(a, o), t = {
|
|
32545
32545
|
r0: e[0].xyz,
|
|
@@ -32556,9 +32556,9 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32556
32556
|
});
|
|
32557
32557
|
let S = v.sub(_).toVar(), C = y.sub(_).toVar(), w = S.x.mul(C.y).sub(C.x.mul(S.y)).toVar();
|
|
32558
32558
|
return N(ve(w).greaterThan(1e-8), () => {
|
|
32559
|
-
let n =
|
|
32559
|
+
let n = I(1).div(w), a = b.mul(C.y).sub(x.mul(S.y)).mul(n).toVar(), o = x.mul(S.x).sub(b.mul(C.x)).mul(n).toVar(), d = t.normal.toVar(), f = r.displacementScale.div(I(10)), p = e.direction, m = F(p, d).toVar(), h = p.sub(d.mul(m)).toVar(), g = F(a, a), _ = F(a, o), v = F(o, o), y = g.mul(v).sub(_.mul(_)).toVar();
|
|
32560
32560
|
N(ve(y).greaterThan(1e-10), () => {
|
|
32561
|
-
let e =
|
|
32561
|
+
let e = I(1).div(y), n = F(h, a), b = F(h, o), x = J(v.mul(n).sub(_.mul(b)).mul(e), g.mul(b).sub(_.mul(n)).mul(e)).toVar(), S = m.toVar(), C = z(ve(S), .001), w = f.div(C).toVar(), T = R(i.equal(R(0)).select(R($b), R(ex))).toVar(), E = w.negate().toVar(), D = w.sub(E).div(I(T)).toVar(), O = E.toVar(), k = E.toVar(), A = R(0).toVar();
|
|
32562
32562
|
he({
|
|
32563
32563
|
start: R(0),
|
|
32564
32564
|
end: T,
|
|
@@ -32566,7 +32566,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32566
32566
|
condition: "<"
|
|
32567
32567
|
}, ({ i: e }) => {
|
|
32568
32568
|
N(A.equal(R(0)), () => {
|
|
32569
|
-
let n = E.add(D.mul(
|
|
32569
|
+
let n = E.add(D.mul(I(e))).toVar(), i = t.uv.add(x.mul(n)), a = n.mul(S), o = xh(r.displacementMapIndex, i, r.displacementTransform).sub(.5).mul(f);
|
|
32570
32570
|
N(a.lessThanEqual(o).and(e.greaterThan(R(0))), () => {
|
|
32571
32571
|
A.assign(1), k.assign(n);
|
|
32572
32572
|
}).Else(() => {
|
|
@@ -32614,15 +32614,15 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32614
32614
|
emissionOnly: "vec3",
|
|
32615
32615
|
distance: "float"
|
|
32616
32616
|
}), ox = M(([e, t, n, r]) => {
|
|
32617
|
-
let i = U(r.x), a =
|
|
32617
|
+
let i = U(r.x), a = I(1).sub(i), o = r.y.mul(i), s = I(1).sub(a).sub(o);
|
|
32618
32618
|
return e.mul(a).add(t.mul(o)).add(n.mul(s));
|
|
32619
|
-
}), sx = M(([e, t, n]) => Re(
|
|
32620
|
-
let i = V(e.sub(r)), a = V(t.sub(r)), o = V(n.sub(r)), s = ve(
|
|
32621
|
-
return z(
|
|
32619
|
+
}), sx = M(([e, t, n]) => Re(ke(t.sub(e), n.sub(e))).mul(.5)), cx = M(([e, t, n, r]) => {
|
|
32620
|
+
let i = V(e.sub(r)), a = V(t.sub(r)), o = V(n.sub(r)), s = ve(F(i, ke(a, o))), c = I(1).add(F(a, o)).add(F(i, o)).add(F(i, a));
|
|
32621
|
+
return z(I(2).mul(Se(s, z(c, I(1e-10)))), I(0));
|
|
32622
32622
|
}), lx = M(([e, t, n, r]) => {
|
|
32623
|
-
let i = t.sub(e), a = n.sub(e), o = n.sub(t), s = z(
|
|
32623
|
+
let i = t.sub(e), a = n.sub(e), o = n.sub(t), s = z(F(i, i), z(F(a, a), F(o, o))), c = ke(i, a), l = F(c, c), u = De(!1).toVar();
|
|
32624
32624
|
return N(l.greaterThan(1e-20), () => {
|
|
32625
|
-
let t =
|
|
32625
|
+
let t = F(c, r.sub(e)), n = t.mul(t).div(l), i = s.mul(s).lessThan(l.mul(64));
|
|
32626
32626
|
u.assign(s.greaterThan(n).and(i));
|
|
32627
32627
|
}), u;
|
|
32628
32628
|
}), ux = Lr({
|
|
@@ -32637,23 +32637,23 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32637
32637
|
let a = ux({
|
|
32638
32638
|
direction: Y(0),
|
|
32639
32639
|
position: Y(0),
|
|
32640
|
-
solidAngle:
|
|
32640
|
+
solidAngle: I(0),
|
|
32641
32641
|
valid: !1
|
|
32642
32642
|
}).toVar(), o = V(e.sub(r)), s = V(t.sub(r)), c = V(n.sub(r)), l = cx(e, t, n, r);
|
|
32643
32643
|
return a.solidAngle.assign(l), N(l.greaterThan(1e-7), () => {
|
|
32644
|
-
let u = P(
|
|
32644
|
+
let u = P(F(dx(ke(o, s)), dx(ke(o, c))), -1, 1), d = U(z(I(1).sub(u.mul(u)), 0)), f = ye(u), p = i.x.mul(l).sub(f), m = it(p), h = Oe(p), g = P(F(o, s), -1, 1), _ = h.sub(u), v = m.add(d.mul(g)), y = v.mul(h).sub(_.mul(m)).mul(u).sub(v), b = v.mul(m).add(_.mul(h)).mul(d), x = P(H(ve(b).greaterThan(1e-10), y.div(b), I(1)), -1, 1), S = F(c, o), C = dx(c.sub(o.mul(S))), w = U(z(I(1).sub(x.mul(x)), 0)), T = V(o.mul(x).add(C.mul(w))), E = F(T, s), D = I(1).sub(i.y.mul(I(1).sub(E))), O = U(z(I(1).sub(D.mul(D)), 0)), k = dx(T.sub(s.mul(E))), A = V(s.mul(D).add(k.mul(O))), ee = V(ke(t.sub(e), n.sub(e))), te = F(ee, A);
|
|
32645
32645
|
N(ve(te).greaterThan(1e-10), () => {
|
|
32646
|
-
let t =
|
|
32646
|
+
let t = F(ee, e.sub(r)).div(te);
|
|
32647
32647
|
N(t.greaterThan(0), () => {
|
|
32648
32648
|
a.direction.assign(A), a.position.assign(r.add(A.mul(t))), a.valid.assign(!0);
|
|
32649
32649
|
});
|
|
32650
32650
|
});
|
|
32651
32651
|
}), a;
|
|
32652
32652
|
}), px = M(([e, t, n, r]) => {
|
|
32653
|
-
let i = n.sub(t), a = r.sub(t), o = e.sub(t), s =
|
|
32654
|
-
return Y(
|
|
32653
|
+
let i = n.sub(t), a = r.sub(t), o = e.sub(t), s = F(i, i), c = F(i, a), l = F(a, a), u = F(o, i), d = F(o, a), f = I(1).div(z(s.mul(l).sub(c.mul(c)), I(1e-10))), p = l.mul(u).sub(c.mul(d)).mul(f), m = s.mul(d).sub(c.mul(u)).mul(f);
|
|
32654
|
+
return Y(I(1).sub(p).sub(m), p, m);
|
|
32655
32655
|
}), mx = M(([e, t, n, r]) => {
|
|
32656
|
-
let i = U(r.x), a =
|
|
32656
|
+
let i = U(r.x), a = I(1).sub(i), o = r.y.mul(i), s = I(1).sub(a).sub(o);
|
|
32657
32657
|
return V(e.mul(a).add(t.mul(o)).add(n.mul(s)));
|
|
32658
32658
|
});
|
|
32659
32659
|
M(([e]) => e.emissiveIntensity.greaterThan(0).and(Re(e.emissive).greaterThan(0)));
|
|
@@ -32680,12 +32680,12 @@ var hx = 2, gx = Lr({
|
|
|
32680
32680
|
materialIndex: R(s.z.bitAnd(G(ra)))
|
|
32681
32681
|
});
|
|
32682
32682
|
}), vx = M(([e, t, n, r, i, a, o, s, c]) => {
|
|
32683
|
-
let l = gx.wrap(_x(e, i, s, c)), u = sx(l.v0, l.v1, l.v2), d = Mc(a, l.materialIndex, R(vc.EMISSIVE_ROUGHNESS), _c), f = Mc(a, l.materialIndex, R(vc.IOR_TRANSMISSION), _c), p = z(d.x.mul(.2126).add(d.y.mul(.7152)).add(d.z.mul(.0722)).mul(f.a).mul(u),
|
|
32683
|
+
let l = gx.wrap(_x(e, i, s, c)), u = sx(l.v0, l.v1, l.v2), d = Mc(a, l.materialIndex, R(vc.EMISSIVE_ROUGHNESS), _c), f = Mc(a, l.materialIndex, R(vc.IOR_TRANSMISSION), _c), p = z(d.x.mul(.2126).add(d.y.mul(.7152)).add(d.z.mul(.0722)).mul(f.a).mul(u), I(1e-10)).div(z(o, I(1e-10))), m = I(0).toVar();
|
|
32684
32684
|
return N(lx(l.v0, l.v1, l.v2, r), () => {
|
|
32685
32685
|
let e = cx(l.v0, l.v1, l.v2, r);
|
|
32686
|
-
m.assign(p.div(z(e,
|
|
32686
|
+
m.assign(p.div(z(e, I(1e-10))));
|
|
32687
32687
|
}).Else(() => {
|
|
32688
|
-
let e = V(
|
|
32688
|
+
let e = V(ke(l.v1.sub(l.v0), l.v2.sub(l.v0))), r = z(F(n.negate(), e), .001), i = t.mul(t), a = p.div(u);
|
|
32689
32689
|
m.assign(a.mul(i).div(r));
|
|
32690
32690
|
}), z(m, fc);
|
|
32691
32691
|
}), yx = M(([e, t, n, r]) => {
|
|
@@ -32704,27 +32704,27 @@ var hx = 2, gx = Lr({
|
|
|
32704
32704
|
normal: Y(0),
|
|
32705
32705
|
emission: Y(0),
|
|
32706
32706
|
direction: Y(0),
|
|
32707
|
-
distance:
|
|
32708
|
-
pdf:
|
|
32709
|
-
area:
|
|
32710
|
-
cosThetaLight:
|
|
32707
|
+
distance: I(0),
|
|
32708
|
+
pdf: I(0),
|
|
32709
|
+
area: I(0),
|
|
32710
|
+
cosThetaLight: I(0),
|
|
32711
32711
|
valid: !1
|
|
32712
32712
|
}).toVar();
|
|
32713
32713
|
return N(l.greaterThan(R(0)), () => {
|
|
32714
|
-
let m = yx(s, c, l, li(r, R(0), o.add(R(1)), n, i, a)).toVar(), h = c.add(m.mul(R(hx))), g = s.element(h), _ = s.element(h.add(1)), v = R(g.r), y = z(g.g,
|
|
32714
|
+
let m = yx(s, c, l, li(r, R(0), o.add(R(1)), n, i, a)).toVar(), h = c.add(m.mul(R(hx))), g = s.element(h), _ = s.element(h.add(1)), v = R(g.r), y = z(g.g, I(1e-10)), b = _.xyz, x = _.w, S = R(g.a), C = gx.wrap(_x(v, d, f, S)), w = ci(r, R(0), o.add(R(3)), n, i, a).toVar(), T = V(ke(C.v1.sub(C.v0), C.v2.sub(C.v0)));
|
|
32715
32715
|
N(lx(C.v0, C.v1, C.v2, e), () => {
|
|
32716
32716
|
let n = ux.wrap(fx(C.v0, C.v1, C.v2, e, w));
|
|
32717
32717
|
N(n.valid.and(n.solidAngle.greaterThan(1e-7)), () => {
|
|
32718
|
-
let r = n.direction, i = n.position, a =
|
|
32718
|
+
let r = n.direction, i = n.position, a = F(r, t), o = F(r, T.negate());
|
|
32719
32719
|
N(a.greaterThan(0).and(o.greaterThan(0)), () => {
|
|
32720
|
-
let t = px(i, C.v0, C.v1, C.v2), a = V(C.n0.mul(t.x).add(C.n1.mul(t.y)).add(C.n2.mul(t.z))), s = Re(i.sub(e)), c = y.div(z(u,
|
|
32720
|
+
let t = px(i, C.v0, C.v1, C.v2), a = V(C.n0.mul(t.x).add(C.n1.mul(t.y)).add(C.n2.mul(t.z))), s = Re(i.sub(e)), c = y.div(z(u, I(1e-10))).div(n.solidAngle);
|
|
32721
32721
|
p.position.assign(i), p.normal.assign(a), p.emission.assign(b), p.direction.assign(r), p.distance.assign(s), p.pdf.assign(z(c, fc)), p.area.assign(x), p.cosThetaLight.assign(o), p.valid.assign(!0);
|
|
32722
32722
|
});
|
|
32723
32723
|
});
|
|
32724
32724
|
}).Else(() => {
|
|
32725
|
-
let n = ox(C.v0, C.v1, C.v2, w), r = mx(C.n0, C.n1, C.n2, w), i = n.sub(e), a =
|
|
32725
|
+
let n = ox(C.v0, C.v1, C.v2, w), r = mx(C.n0, C.n1, C.n2, w), i = n.sub(e), a = F(i, i), o = U(a), s = i.div(o), c = F(s, t), l = F(s, r.negate());
|
|
32726
32726
|
N(c.greaterThan(0).and(l.greaterThan(0)), () => {
|
|
32727
|
-
let e = y.div(z(u,
|
|
32727
|
+
let e = y.div(z(u, I(1e-10)).mul(x)).mul(a).div(l);
|
|
32728
32728
|
p.position.assign(n), p.normal.assign(r), p.emission.assign(b), p.direction.assign(s), p.distance.assign(o), p.pdf.assign(z(e, fc)), p.area.assign(x), p.cosThetaLight.assign(l), p.valid.assign(!0);
|
|
32729
32729
|
});
|
|
32730
32730
|
});
|
|
@@ -32734,131 +32734,131 @@ var hx = 2, gx = Lr({
|
|
|
32734
32734
|
contribution: Y(0),
|
|
32735
32735
|
hasEmissive: !1,
|
|
32736
32736
|
emissionOnly: Y(0),
|
|
32737
|
-
distance:
|
|
32737
|
+
distance: I(0)
|
|
32738
32738
|
}).toVar(), x = ix.wrap(bx(e, t, o, s, c, l, u, f, p, m, h, g, _));
|
|
32739
32739
|
return N(x.valid.and(x.pdf.greaterThan(0)), () => {
|
|
32740
32740
|
b.hasEmissive.assign(!0), b.emissionOnly.assign(x.emission), b.distance.assign(x.distance);
|
|
32741
|
-
let a = z(
|
|
32742
|
-
N(a.greaterThan(0).and(
|
|
32741
|
+
let a = z(I(0), F(t, x.direction));
|
|
32742
|
+
N(a.greaterThan(0).and(F(x.direction, n).greaterThan(0)), () => {
|
|
32743
32743
|
let o = e.add(y(e, n, x.direction)), s = x.position.sub(o).toVar(), c = Re(s).toVar(), l = v(o, s.div(c), c.mul(ac));
|
|
32744
32744
|
N(l.greaterThan(0), () => {
|
|
32745
32745
|
let e = Zs.wrap(Dc(t, r, x.direction, i)), n = kb(i, e), o = Ub(i, e), s = H(o.greaterThan(0), Cc({
|
|
32746
32746
|
pdf1: x.pdf,
|
|
32747
32747
|
pdf2: o
|
|
32748
|
-
}),
|
|
32748
|
+
}), I(1));
|
|
32749
32749
|
b.contribution.assign(x.emission.mul(n).mul(a).div(x.pdf).mul(l).mul(d).mul(s));
|
|
32750
32750
|
});
|
|
32751
32751
|
});
|
|
32752
32752
|
}), b;
|
|
32753
|
-
}), Sx = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y]) => ax.wrap(xx(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y)).contribution), Cx = 4, wx = 2, Tx = 32, Ex = M(([e, t, n, r]) => H(t.greaterThan(r),
|
|
32754
|
-
let o = e.add(n).mul(.5), s = Re(n.sub(e)), c = a.sub(o), l = z(
|
|
32755
|
-
return z(H(y.greaterThan(
|
|
32753
|
+
}), Sx = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y]) => ax.wrap(xx(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y)).contribution), Cx = 4, wx = 2, Tx = 32, Ex = M(([e, t, n, r]) => H(t.greaterThan(r), I(1), t.mul(r).add(e.mul(n)))), Dx = M(([e, t, n, r]) => H(t.greaterThan(r), I(0), e.mul(r).sub(t.mul(n)))), Ox = M(([e, t, n, r, i, a]) => {
|
|
32754
|
+
let o = e.add(n).mul(.5), s = Re(n.sub(e)), c = a.sub(o), l = z(F(c, c), I(1e-12)), u = z(l, s.mul(.5)), d = F(r, c.div(U(l))), f = U(z(I(1).sub(d.mul(d)), I(0))), p = s.mul(s).mul(.25), m = P(p.div(l), I(0), I(1)), h = H(l.lessThan(p), I(-1), U(z(I(1).sub(m), I(0)))), g = U(z(I(1).sub(h.mul(h)), I(0))), _ = U(z(I(1).sub(i.mul(i)), I(0))), v = Ex(f, d, _, i), y = Ex(Dx(f, d, _, i), v, g, h);
|
|
32755
|
+
return z(H(y.greaterThan(I(0)), t.mul(y).div(u), I(0)), I(0));
|
|
32756
32756
|
}), kx = M(([e, t, n, r, i, a, o, s, c, l, u, d]) => {
|
|
32757
32757
|
let f = ix({
|
|
32758
32758
|
position: Y(0),
|
|
32759
32759
|
normal: Y(0),
|
|
32760
32760
|
emission: Y(0),
|
|
32761
32761
|
direction: Y(0),
|
|
32762
|
-
distance:
|
|
32763
|
-
pdf:
|
|
32764
|
-
area:
|
|
32765
|
-
cosThetaLight:
|
|
32762
|
+
distance: I(0),
|
|
32763
|
+
pdf: I(0),
|
|
32764
|
+
area: I(0),
|
|
32765
|
+
cosThetaLight: I(0),
|
|
32766
32766
|
valid: !1
|
|
32767
|
-
}).toVar(), p =
|
|
32767
|
+
}).toVar(), p = I(1).toVar(), m = R(0).toVar(), h = De(!1).toVar(), g = li(r, R(0), o.add(R(1)), n, i, a).toVar();
|
|
32768
32768
|
return he(Tx, () => {
|
|
32769
32769
|
let t = m.mul(R(Cx)), n = s.element(t.add(R(1))), r = s.element(t.add(R(2)));
|
|
32770
32770
|
N(n.w.greaterThan(.5), () => {
|
|
32771
32771
|
h.assign(De(!0)), me();
|
|
32772
32772
|
});
|
|
32773
32773
|
let i = R(r.x), a = R(r.y), o = i.mul(R(Cx)), c = s.element(o), l = s.element(o.add(R(1))), u = a.mul(R(Cx)), d = s.element(u), f = s.element(u.add(R(1))), _ = s.element(o.add(R(3))), v = s.element(u.add(R(3))), y = Ox(c.xyz, c.w, l.xyz, _.xyz, _.w, e), b = Ox(d.xyz, d.w, f.xyz, v.xyz, v.w, e), x = y.add(b);
|
|
32774
|
-
N(x.lessThanEqual(
|
|
32774
|
+
N(x.lessThanEqual(I(0)), () => {
|
|
32775
32775
|
m.assign(i);
|
|
32776
32776
|
}).Else(() => {
|
|
32777
32777
|
let e = y.div(x);
|
|
32778
32778
|
N(g.lessThan(e), () => {
|
|
32779
|
-
g.assign(P(g.div(z(e,
|
|
32779
|
+
g.assign(P(g.div(z(e, I(1e-6))), 0, .999999)), p.mulAssign(e), m.assign(i);
|
|
32780
32780
|
}).Else(() => {
|
|
32781
|
-
let t =
|
|
32782
|
-
g.assign(P(g.sub(e).div(z(t,
|
|
32781
|
+
let t = I(1).sub(e).toVar();
|
|
32782
|
+
g.assign(P(g.sub(e).div(z(t, I(1e-6))), 0, .999999)), p.mulAssign(t), m.assign(a);
|
|
32783
32783
|
});
|
|
32784
32784
|
});
|
|
32785
32785
|
}), N(h, () => {
|
|
32786
|
-
let h = m.mul(R(Cx)), _ = s.element(h), v = s.element(h.add(R(2))), y = R(v.x), b = R(v.y), x = z(_.w,
|
|
32786
|
+
let h = m.mul(R(Cx)), _ = s.element(h), v = s.element(h.add(R(2))), y = R(v.x), b = R(v.y), x = z(_.w, I(1e-10)), S = g.mul(x), C = I(0).toVar(), w = y.add(b.sub(R(1))).toVar(), T = I(1e-10).toVar();
|
|
32787
32787
|
he({
|
|
32788
32788
|
start: R(0),
|
|
32789
32789
|
end: b
|
|
32790
32790
|
}, ({ i: e }) => {
|
|
32791
|
-
let t = y.add(e), n = l.add(t.mul(R(wx))), r = z(c.element(n).g,
|
|
32792
|
-
C.addAssign(r), N(C.greaterThanEqual(S).and(r.greaterThan(
|
|
32791
|
+
let t = y.add(e), n = l.add(t.mul(R(wx))), r = z(c.element(n).g, I(0));
|
|
32792
|
+
C.addAssign(r), N(C.greaterThanEqual(S).and(r.greaterThan(I(0))), () => {
|
|
32793
32793
|
w.assign(t), T.assign(r), me();
|
|
32794
32794
|
});
|
|
32795
32795
|
}), p.mulAssign(T.div(x));
|
|
32796
|
-
let E = l.add(w.mul(R(wx))), D = c.element(E), O = c.element(E.add(R(1))), k = R(D.r), A = O.xyz, ee = O.w, te = R(D.a), j = gx.wrap(_x(k, u, d, te)), ne = ci(r, R(0), o.add(R(3)), n, i, a).toVar(), re = V(
|
|
32796
|
+
let E = l.add(w.mul(R(wx))), D = c.element(E), O = c.element(E.add(R(1))), k = R(D.r), A = O.xyz, ee = O.w, te = R(D.a), j = gx.wrap(_x(k, u, d, te)), ne = ci(r, R(0), o.add(R(3)), n, i, a).toVar(), re = V(ke(j.v1.sub(j.v0), j.v2.sub(j.v0)));
|
|
32797
32797
|
N(lx(j.v0, j.v1, j.v2, e), () => {
|
|
32798
32798
|
let n = ux.wrap(fx(j.v0, j.v1, j.v2, e, ne));
|
|
32799
|
-
N(n.valid.and(n.solidAngle.greaterThan(
|
|
32800
|
-
let r = n.direction, i = n.position, a =
|
|
32801
|
-
N(a.greaterThan(
|
|
32802
|
-
let t = px(i, j.v0, j.v1, j.v2), a = V(j.n0.mul(t.x).add(j.n1.mul(t.y)).add(j.n2.mul(t.z))), s = Re(i.sub(e)), c = p.div(z(n.solidAngle,
|
|
32799
|
+
N(n.valid.and(n.solidAngle.greaterThan(I(1e-7))), () => {
|
|
32800
|
+
let r = n.direction, i = n.position, a = F(r, t), o = F(r, re.negate());
|
|
32801
|
+
N(a.greaterThan(I(0)).and(o.greaterThan(I(0))), () => {
|
|
32802
|
+
let t = px(i, j.v0, j.v1, j.v2), a = V(j.n0.mul(t.x).add(j.n1.mul(t.y)).add(j.n2.mul(t.z))), s = Re(i.sub(e)), c = p.div(z(n.solidAngle, I(1e-10)));
|
|
32803
32803
|
f.position.assign(i), f.normal.assign(a), f.emission.assign(A), f.direction.assign(r), f.distance.assign(s), f.pdf.assign(z(c, fc)), f.area.assign(ee), f.cosThetaLight.assign(o), f.valid.assign(!0);
|
|
32804
32804
|
});
|
|
32805
32805
|
});
|
|
32806
32806
|
}).Else(() => {
|
|
32807
|
-
let n = ox(j.v0, j.v1, j.v2, ne), r = mx(j.n0, j.n1, j.n2, ne), i = n.sub(e), a =
|
|
32808
|
-
N(c.greaterThan(
|
|
32809
|
-
let e = p.div(z(ee,
|
|
32807
|
+
let n = ox(j.v0, j.v1, j.v2, ne), r = mx(j.n0, j.n1, j.n2, ne), i = n.sub(e), a = F(i, i), o = U(a), s = i.div(o), c = F(s, t), l = F(s, r.negate());
|
|
32808
|
+
N(c.greaterThan(I(0)).and(l.greaterThan(I(0))), () => {
|
|
32809
|
+
let e = p.div(z(ee, I(1e-10))).mul(a).div(l);
|
|
32810
32810
|
f.position.assign(n), f.normal.assign(r), f.emission.assign(A), f.direction.assign(s), f.distance.assign(o), f.pdf.assign(z(e, fc)), f.area.assign(ee), f.cosThetaLight.assign(l), f.valid.assign(!0);
|
|
32811
32811
|
});
|
|
32812
32812
|
});
|
|
32813
32813
|
}), f;
|
|
32814
32814
|
}), Ax = M(([e, t, n, r, i, a, o, s, c]) => {
|
|
32815
|
-
let l =
|
|
32816
|
-
return N(p.greaterThanEqual(
|
|
32817
|
-
let e = R(p).toVar(), o =
|
|
32815
|
+
let l = I(0).toVar(), u = R(e).toVar(), d = i.element(o.add(u.shiftRight(R(2)))), f = u.bitAnd(R(3)), p = H(f.equal(R(0)), d.x, H(f.equal(R(1)), d.y, H(f.equal(R(2)), d.z, d.w))).toVar();
|
|
32816
|
+
return N(p.greaterThanEqual(I(0)), () => {
|
|
32817
|
+
let e = R(p).toVar(), o = I(1).toVar(), d = R(0).toVar(), f = R(0).toVar(), m = De(!1).toVar();
|
|
32818
32818
|
he(Tx, () => {
|
|
32819
32819
|
let t = d.mul(R(Cx));
|
|
32820
32820
|
N(i.element(t.add(R(1))).w.greaterThan(.5), () => {
|
|
32821
32821
|
m.assign(De(!0)), me();
|
|
32822
32822
|
});
|
|
32823
32823
|
let n = i.element(t.add(R(2))), a = R(n.x), s = R(n.y), c = a.mul(R(Cx)), l = i.element(c), u = i.element(c.add(R(1))), p = i.element(c.add(R(3))), h = s.mul(R(Cx)), g = i.element(h), _ = i.element(h.add(R(1))), v = i.element(h.add(R(3))), y = Ox(l.xyz, l.w, u.xyz, p.xyz, p.w, r), b = Ox(g.xyz, g.w, _.xyz, v.xyz, v.w, r), x = y.add(b), S = e.shiftRight(f).bitAnd(R(1)).equal(R(1));
|
|
32824
|
-
N(x.lessThanEqual(
|
|
32824
|
+
N(x.lessThanEqual(I(0)), () => {
|
|
32825
32825
|
N(S, () => {
|
|
32826
|
-
o.assign(
|
|
32826
|
+
o.assign(I(0)), d.assign(s);
|
|
32827
32827
|
}).Else(() => {
|
|
32828
32828
|
d.assign(a);
|
|
32829
32829
|
});
|
|
32830
32830
|
}).Else(() => {
|
|
32831
32831
|
let e = y.div(x);
|
|
32832
32832
|
N(S, () => {
|
|
32833
|
-
o.mulAssign(
|
|
32833
|
+
o.mulAssign(I(1).sub(e)), d.assign(s);
|
|
32834
32834
|
}).Else(() => {
|
|
32835
32835
|
o.mulAssign(e), d.assign(a);
|
|
32836
32836
|
});
|
|
32837
32837
|
}), f.addAssign(R(1));
|
|
32838
|
-
}), N(m.and(o.greaterThan(
|
|
32839
|
-
let e = d.mul(R(Cx)), f = i.element(e), p = i.element(e.add(R(2))), m = R(p.x), h = R(p.y), g = z(f.w,
|
|
32838
|
+
}), N(m.and(o.greaterThan(I(0))), () => {
|
|
32839
|
+
let e = d.mul(R(Cx)), f = i.element(e), p = i.element(e.add(R(2))), m = R(p.x), h = R(p.y), g = z(f.w, I(1e-10)), _ = I(0).toVar(), v = R(-1).toVar();
|
|
32840
32840
|
he({
|
|
32841
32841
|
start: R(0),
|
|
32842
32842
|
end: h
|
|
32843
32843
|
}, ({ i: e }) => {
|
|
32844
32844
|
let t = m.add(e), n = i.element(a.add(t.mul(R(wx))));
|
|
32845
32845
|
N(R(n.r).equal(u), () => {
|
|
32846
|
-
_.assign(z(n.g,
|
|
32846
|
+
_.assign(z(n.g, I(0))), v.assign(R(n.a)), me();
|
|
32847
32847
|
});
|
|
32848
32848
|
}), o.mulAssign(_.div(g));
|
|
32849
32849
|
let y = gx.wrap(_x(u, s, c, v));
|
|
32850
32850
|
N(lx(y.v0, y.v1, y.v2, r), () => {
|
|
32851
32851
|
let e = cx(y.v0, y.v1, y.v2, r);
|
|
32852
|
-
l.assign(o.div(z(e,
|
|
32852
|
+
l.assign(o.div(z(e, I(1e-10))));
|
|
32853
32853
|
}).Else(() => {
|
|
32854
|
-
let e = V(
|
|
32854
|
+
let e = V(ke(y.v1.sub(y.v0), y.v2.sub(y.v0))), r = z(F(n.negate(), e), I(.001)), i = sx(y.v0, y.v1, y.v2), a = t.mul(t), s = o.div(z(i, I(1e-10)));
|
|
32855
32855
|
l.assign(s.mul(a).div(r));
|
|
32856
32856
|
});
|
|
32857
32857
|
});
|
|
32858
32858
|
}), z(l, fc);
|
|
32859
32859
|
}), jx = 0x8ac7230489e80000, Mx = 1e-4, Nx = 1e-4, Px = .001;
|
|
32860
32860
|
function Fx(e) {
|
|
32861
|
-
let { bvhBuffer: t, triangleBuffer: n, materialBuffer: r, envCDFTexture: i, lightBuffer: a, rayBufferRW: o, hitBufferRW: s, gBufferRW: c, counters: l, activeIndicesRO: u, envTexture: d, environmentIntensity: f, envMatrix: p, enableEnvironmentLight: m, groundProjectionEnabled: h, groundProjectionRadius: g, groundProjectionHeight: _, groundProjectionLevel: v, enableGroundCatcher: y, groundCatcherHeight: b, envTotalSum: x, envCompensationDelta: S, envResolution: C, directionalLightsBuffer: w, numDirectionalLights: T, areaLightsBuffer: E, numAreaLights: D, pointLightsBuffer: O, numPointLights: k, spotLightsBuffer: A, numSpotLights: ee, maxBounceCount: te, maxSubsurfaceSteps: j, maxTransparentBounces: ne, currentBounce: re, transparentBackground: ie, backgroundIntensity: ae, backgroundColor: oe, backgroundBlurriness: se, backgroundBlurSamples: ce, showBackground: le, globalIlluminationIntensity: ue, cameraProjectionMatrix: de, cameraViewMatrix: fe, fireflyThreshold: pe, frame: me, resolution: _e, shadowTerminatorOffset: ve, accumFrame: be, chunkRowBase: xe, emissiveTriangleCount: Se, emissiveVec4Offset: Ce, emissiveTotalPower: Ee, emissiveBoost: Oe,
|
|
32861
|
+
let { bvhBuffer: t, triangleBuffer: n, materialBuffer: r, envCDFTexture: i, lightBuffer: a, rayBufferRW: o, hitBufferRW: s, gBufferRW: c, counters: l, activeIndicesRO: u, envTexture: d, environmentIntensity: f, envMatrix: p, enableEnvironmentLight: m, groundProjectionEnabled: h, groundProjectionRadius: g, groundProjectionHeight: _, groundProjectionLevel: v, enableGroundCatcher: y, groundCatcherHeight: b, envTotalSum: x, envCompensationDelta: S, envResolution: C, directionalLightsBuffer: w, numDirectionalLights: T, areaLightsBuffer: E, numAreaLights: D, pointLightsBuffer: O, numPointLights: k, spotLightsBuffer: A, numSpotLights: ee, maxBounceCount: te, maxSubsurfaceSteps: j, maxTransparentBounces: ne, currentBounce: re, transparentBackground: ie, backgroundIntensity: ae, backgroundColor: oe, backgroundBlurriness: se, backgroundBlurSamples: ce, showBackground: le, globalIlluminationIntensity: ue, cameraProjectionMatrix: de, cameraViewMatrix: fe, fireflyThreshold: pe, frame: me, resolution: _e, shadowTerminatorOffset: ve, accumFrame: be, chunkRowBase: xe, emissiveTriangleCount: Se, emissiveVec4Offset: Ce, emissiveTotalPower: Ee, emissiveBoost: Oe, enableEmissiveTriangleSampling: ke, lightBVHNodeCount: Ae, reverseMapVec4Offset: Me, maxRayCount: Ne, auxGBufferEnabled: L, hasSun: Pe, sunDirection: Ie, sunRadiance: Le, sunParams: ze } = e, Be = L.greaterThan(G(0)), He = a !== void 0, Ue = (e, t, n, r, i) => {
|
|
32862
32862
|
let a = V(e).toVar(), o = z(n, R(1)).toVar(), s = Y(0).toVar();
|
|
32863
32863
|
return he({
|
|
32864
32864
|
start: R(0),
|
|
@@ -32873,9 +32873,9 @@ function Fx(e) {
|
|
|
32873
32873
|
direction: n,
|
|
32874
32874
|
environmentMatrix: p,
|
|
32875
32875
|
environmentIntensity: f,
|
|
32876
|
-
enableEnvironmentLight:
|
|
32876
|
+
enableEnvironmentLight: I(1)
|
|
32877
32877
|
}).xyz);
|
|
32878
|
-
}), s.div(
|
|
32878
|
+
}), s.div(I(o));
|
|
32879
32879
|
};
|
|
32880
32880
|
return M(() => {
|
|
32881
32881
|
let e = Fe;
|
|
@@ -32886,27 +32886,27 @@ function Fx(e) {
|
|
|
32886
32886
|
N(e.greaterThanEqual(he), () => {
|
|
32887
32887
|
ge();
|
|
32888
32888
|
});
|
|
32889
|
-
let
|
|
32890
|
-
N(
|
|
32889
|
+
let L = u.element(e), B = il(o, L).toVar();
|
|
32890
|
+
N(B.bitAnd(G(jy.ACTIVE)).equal(G(0)), () => {
|
|
32891
32891
|
ge();
|
|
32892
32892
|
});
|
|
32893
|
-
let Ge =
|
|
32894
|
-
N(
|
|
32893
|
+
let Ge = B.bitAnd(G(jy.REDIRECTED)).equal(G(0)).toVar(), Ke = nl(o, L).toVar(), qe = rl(o, L).toVar(), Je = al(o, L).toVar(), Ye = sl(o, L).toVar(), Xe = L, Ze = Ol(s, L).toVar(), Qe = R(_e.x).toVar(), $e = R(Xe).add(xe.mul(Qe)), tt = J(I($e.mod(Qe)).add(.5), I($e.div(Qe)).add(.5)), nt = R(re).mul(R(32)), rt = Ll(o, L).toVar(), it = xl(s, L).toVar(), U = wl(s, L).toVar(), ot = Cl(s, L).toVar(), st = Tl(s, L).toVar(), ct = Sl(s, L).toVar(), lt = El(s, L).toVar(), ut = zl(o, L).toVar(), dt = R(re).toVar(), ft = Bl(o, L).toVar(), pt = Vl(o, L).toVar();
|
|
32894
|
+
N(Be.and(ut.equal(1)), () => {
|
|
32895
32895
|
let e = fe.mul(X(Ke, 1)).z.abs().mul(Hi).add(3);
|
|
32896
|
-
ul(c, Xe, gl(o,
|
|
32896
|
+
ul(c, Xe, gl(o, L).add(We(it, I(1e6))).div(z(e, I(1e-4))).clamp(0, 1));
|
|
32897
32897
|
}), N(y.and(dt.equal(0)), () => {
|
|
32898
32898
|
let e = qe.y.toVar();
|
|
32899
|
-
N(e.abs().greaterThan(
|
|
32899
|
+
N(e.abs().greaterThan(I(lc)), () => {
|
|
32900
32900
|
let a = b.sub(Ke.y).div(e).toVar();
|
|
32901
|
-
N(a.greaterThan(
|
|
32902
|
-
let e = Ke.add(qe.mul(a)).toVar(), l = Y(0, 1, 0), u = qe.negate().toVar(), y = Us.wrap(Rc()).toVar(), b = Om(l, ci(tt, R(0), nt.add(R(7)), Ze, _e, me).toVar()).toVar(), te = b.y.mul(sc).toVar(), j = Y(sc), ne = Ks.wrap(Gb(e, l, l, y, u, b, te, j, dt, Ze, tt, _e, me, nt, w, T, E, D, O, k, A, ee, t, n, r, d, f, p, i, x, S, C, m, De(!0), Y(0), l,
|
|
32903
|
-
N(ue.lessThan(
|
|
32901
|
+
N(a.greaterThan(I(Mx)).and(a.lessThan(it)), () => {
|
|
32902
|
+
let e = Ke.add(qe.mul(a)).toVar(), l = Y(0, 1, 0), u = qe.negate().toVar(), y = Us.wrap(Rc()).toVar(), b = Om(l, ci(tt, R(0), nt.add(R(7)), Ze, _e, me).toVar()).toVar(), te = b.y.mul(sc).toVar(), j = Y(sc), ne = Ks.wrap(Gb(e, l, l, y, u, b, te, j, dt, Ze, tt, _e, me, nt, w, T, E, D, O, k, A, ee, t, n, r, d, f, p, i, x, S, C, m, De(!0), Y(0), l, I(0), Pe, Ie, Le, ze)).toVar(), re = z(F(ne.shadowed, pc), I(0)), ue = z(F(ne.unoccluded, pc), I(0)).toVar(), pe = P(re.div(z(ue, I(Nx))), 0, 1).toVar();
|
|
32903
|
+
N(ue.lessThan(I(Px)), () => {
|
|
32904
32904
|
pe.assign(1);
|
|
32905
32905
|
});
|
|
32906
32906
|
let M = Ob(Ke, qe, h, g, _, v).toVar(), he = Y(0).toVar();
|
|
32907
32907
|
N(le, () => {
|
|
32908
32908
|
N(se.greaterThan(0), () => {
|
|
32909
|
-
he.assign(
|
|
32909
|
+
he.assign(Ue(M, se.mul(1.3), ce, Ze, tt));
|
|
32910
32910
|
}).Else(() => {
|
|
32911
32911
|
he.assign(Eb({
|
|
32912
32912
|
tex: d,
|
|
@@ -32914,18 +32914,18 @@ function Fx(e) {
|
|
|
32914
32914
|
direction: M,
|
|
32915
32915
|
environmentMatrix: p,
|
|
32916
32916
|
environmentIntensity: f,
|
|
32917
|
-
enableEnvironmentLight:
|
|
32917
|
+
enableEnvironmentLight: I(1)
|
|
32918
32918
|
}).xyz);
|
|
32919
32919
|
});
|
|
32920
32920
|
});
|
|
32921
|
-
let ve = H(le, he.mul(ae), oe), ye = H(ie, Y(0), ve.mul(pe)), be = H(ie,
|
|
32922
|
-
N(
|
|
32921
|
+
let ve = H(le, he.mul(ae), oe), ye = H(ie, Y(0), ve.mul(pe)), be = H(ie, I(1).sub(pe), I(1));
|
|
32922
|
+
N(Be, () => {
|
|
32923
32923
|
ll(c, Xe, l, Yb({
|
|
32924
32924
|
worldPos: e,
|
|
32925
32925
|
cameraProjectionMatrix: de,
|
|
32926
32926
|
cameraViewMatrix: fe
|
|
32927
32927
|
}), Y(1));
|
|
32928
|
-
}), bl(o,
|
|
32928
|
+
}), bl(o, L, X(ye, be)), vl(o, L, qe, B.bitOr(G(jy.AUX_LOCKED)).bitAnd(G(~jy.ACTIVE))), kl(s, L, Ze), ge();
|
|
32929
32929
|
});
|
|
32930
32930
|
});
|
|
32931
32931
|
}), N(it.greaterThan(jx), () => {
|
|
@@ -32937,7 +32937,7 @@ function Fx(e) {
|
|
|
32937
32937
|
});
|
|
32938
32938
|
let t = Y(0).toVar();
|
|
32939
32939
|
N(Ge.and(se.greaterThan(0)), () => {
|
|
32940
|
-
t.assign(
|
|
32940
|
+
t.assign(Ue(e, se.mul(1.3), ce, Ze, tt));
|
|
32941
32941
|
}).Else(() => {
|
|
32942
32942
|
t.assign(Eb({
|
|
32943
32943
|
tex: d,
|
|
@@ -32945,12 +32945,12 @@ function Fx(e) {
|
|
|
32945
32945
|
direction: e,
|
|
32946
32946
|
environmentMatrix: p,
|
|
32947
32947
|
environmentIntensity: f,
|
|
32948
|
-
enableEnvironmentLight:
|
|
32948
|
+
enableEnvironmentLight: I(1)
|
|
32949
32949
|
}).xyz);
|
|
32950
32950
|
}), n.assign(P(t, Y(0), Y(1)));
|
|
32951
|
-
let r =
|
|
32951
|
+
let r = I(1).toVar();
|
|
32952
32952
|
N(Ge.not(), () => {
|
|
32953
|
-
let e = ol(o,
|
|
32953
|
+
let e = ol(o, L);
|
|
32954
32954
|
N(e.greaterThan(0), () => {
|
|
32955
32955
|
let t = wb(d, qe, p, x, S, C).w;
|
|
32956
32956
|
N(t.greaterThan(0), () => {
|
|
@@ -32961,44 +32961,44 @@ function Fx(e) {
|
|
|
32961
32961
|
});
|
|
32962
32962
|
});
|
|
32963
32963
|
});
|
|
32964
|
-
let i = H(Ge.not(), ue,
|
|
32965
|
-
Ye.assign(X(Ye.xyz.add(Jb(Je.mul(t).mul(a), s, pe, R(be))), Ye.w)), N(
|
|
32964
|
+
let i = H(Ge.not(), ue, I(1)), a = H(Ge, ae, r.mul(i)), s = H(Ge, I(0), I(dt));
|
|
32965
|
+
Ye.assign(X(Ye.xyz.add(Jb(Je.mul(t).mul(a), s, pe, R(be))), Ye.w)), N(Pe, () => {
|
|
32966
32966
|
let t = Y(0).toVar();
|
|
32967
32967
|
N(Ge.and(se.greaterThan(0)), () => {
|
|
32968
|
-
let n = se.mul(1.3).toVar(), r = ye(P(
|
|
32968
|
+
let n = se.mul(1.3).toVar(), r = ye(P(F(V(e), Ie), -1, 1));
|
|
32969
32969
|
N(r.lessThan(n), () => {
|
|
32970
|
-
let e =
|
|
32971
|
-
t.assign(
|
|
32970
|
+
let e = I(1).sub(r.div(n).pow(2)).pow(2);
|
|
32971
|
+
t.assign(Le.mul(f).mul(ze.y).mul(e).mul(3 / Math.PI).div(n.mul(n)));
|
|
32972
32972
|
});
|
|
32973
32973
|
}).Else(() => {
|
|
32974
|
-
t.assign(Nb(V(e), Le, ze
|
|
32974
|
+
t.assign(Nb(V(e), Ie, Le, ze).mul(f));
|
|
32975
32975
|
}), N(t.x.add(t.y).add(t.z).greaterThan(0), () => {
|
|
32976
|
-
let e =
|
|
32977
|
-
N(Ge.not().and(
|
|
32976
|
+
let e = I(1).toVar();
|
|
32977
|
+
N(Ge.not().and(B.bitAnd(G(jy.SUN_NEE)).notEqual(G(0))), () => {
|
|
32978
32978
|
e.assign(Cc({
|
|
32979
|
-
pdf1: ol(o,
|
|
32980
|
-
pdf2:
|
|
32979
|
+
pdf1: ol(o, L),
|
|
32980
|
+
pdf2: I(1).div(ze.y)
|
|
32981
32981
|
}));
|
|
32982
32982
|
});
|
|
32983
|
-
let n = z(dt.sub(1), R(0)), r = H(Ge, ae, e.mul(H(n.greaterThan(R(0)), ue,
|
|
32984
|
-
Ye.assign(X(Ye.xyz.add(Jb(Je.mul(t).mul(r), H(Ge,
|
|
32983
|
+
let n = z(dt.sub(1), R(0)), r = H(Ge, ae, e.mul(H(n.greaterThan(R(0)), ue, I(1))));
|
|
32984
|
+
Ye.assign(X(Ye.xyz.add(Jb(Je.mul(t).mul(r), H(Ge, I(0), I(n)), pe, R(be))), Ye.w));
|
|
32985
32985
|
});
|
|
32986
32986
|
});
|
|
32987
32987
|
}), N(Ge.and(le.not()).and(ie.not()), () => {
|
|
32988
32988
|
Ye.assign(X(Ye.xyz.add(Je.mul(oe)), Ye.w));
|
|
32989
|
-
}), N(
|
|
32989
|
+
}), N(B.bitAnd(G(jy.HAS_HIT_OPAQUE)).equal(G(0)), () => {
|
|
32990
32990
|
Ye.w.assign(0);
|
|
32991
|
-
}), N(
|
|
32991
|
+
}), N(Be.and(B.bitAnd(G(jy.AUX_LOCKED)).equal(G(0))).and(B.bitAnd(G(jy.REDIRECTED)).notEqual(G(0))), () => {
|
|
32992
32992
|
let e = dl(c, Xe);
|
|
32993
32993
|
ll(c, Xe, V(qe), pl(e).w, P(n.mul(rt), Y(0), Y(1)));
|
|
32994
|
-
}), bl(o,
|
|
32994
|
+
}), bl(o, L, Ye), vl(o, L, qe, B.bitAnd(G(~jy.ACTIVE))), ge();
|
|
32995
32995
|
});
|
|
32996
|
-
let mt = Ke.add(qe.mul(it)).toVar(), W = V(U).toVar(), ht = jl(o,
|
|
32996
|
+
let mt = Ke.add(qe.mul(it)).toVar(), W = V(U).toVar(), ht = jl(o, L), gt = R(ht.stackDepth).toVar(), _t = ht.ior1.toVar(), K = ht.ior2.toVar(), vt = ht.ior3.toVar(), yt = R(ht.transTraversals).toVar(), bt = I(ht.wavelength).toVar();
|
|
32997
32997
|
N(gt.greaterThan(0), () => {
|
|
32998
|
-
let e = Nl(o,
|
|
32998
|
+
let e = Nl(o, L).toVar(), t = Hl(o, L), n = t.sigmaS.toVar(), r = t.g.toVar();
|
|
32999
32999
|
N(z(z(n.x, n.y), n.z).lessThanEqual(0), () => {
|
|
33000
|
-
let t =
|
|
33001
|
-
Je.mulAssign(t), N(
|
|
33000
|
+
let t = je(e.mul(it).negate()).toVar();
|
|
33001
|
+
Je.mulAssign(t), N(Be.and(B.bitAnd(G(jy.AUX_LOCKED)).equal(G(0))), () => {
|
|
33002
33002
|
rt.mulAssign(t);
|
|
33003
33003
|
});
|
|
33004
33004
|
}).Else(() => {
|
|
@@ -33008,8 +33008,8 @@ function Fx(e) {
|
|
|
33008
33008
|
ft.addAssign(1);
|
|
33009
33009
|
let a = P(z(z(Je.x, Je.y), Je.z), .02, 1).toVar();
|
|
33010
33010
|
N(ft.greaterThanEqual(j).or(li(tt, R(0), nt.add(R(12)), Ze, _e, me).greaterThan(a)).toVar(), () => {
|
|
33011
|
-
bl(o,
|
|
33012
|
-
}), Je.divAssign(a),
|
|
33011
|
+
bl(o, L, Ye), vl(o, L, qe, B.bitAnd(G(~jy.ACTIVE))), kl(s, L, Ze), ge();
|
|
33012
|
+
}), Je.divAssign(a), B.assign(B.bitOr(G(jy.REDIRECTED))), _l(o, L, t, ut, ft, pt), vl(o, L, n, B), yl(o, L, Je, ol(o, L)), bl(o, L, Ye), kl(s, L, Ze), ge();
|
|
33013
33013
|
});
|
|
33014
33014
|
});
|
|
33015
33015
|
});
|
|
@@ -33054,15 +33054,15 @@ function Fx(e) {
|
|
|
33054
33054
|
}).Else(() => {
|
|
33055
33055
|
W.assign(wt.normal);
|
|
33056
33056
|
});
|
|
33057
|
-
let kt = q.metalness.toVar(), At = q.transmission.toVar(), jt = at(
|
|
33058
|
-
N(
|
|
33057
|
+
let kt = q.metalness.toVar(), At = q.transmission.toVar(), jt = at(I(0), I(.15), Tt).toVar(), Mt = P(I(1).sub(kt).mul(I(1).sub(At)).add(jt.mul(kt.mul(I(1).sub(At)).add(At))), 0, 1).greaterThanEqual(I(.25)).toVar(), Nt = rt.toVar(), Pt = (e) => {
|
|
33058
|
+
N(Be.and(B.bitAnd(G(jy.AUX_LOCKED)).equal(G(0))), () => {
|
|
33059
33059
|
let t = pl(dl(c, Xe)).w;
|
|
33060
33060
|
ll(c, Xe, e, t, P(Ot.mul(Nt), Y(0), Y(1)));
|
|
33061
33061
|
});
|
|
33062
33062
|
}, Ft = () => {
|
|
33063
|
-
bl(o,
|
|
33063
|
+
bl(o, L, Ye), vl(o, L, qe, B.bitAnd(G(~jy.ACTIVE))), kl(s, L, Ze);
|
|
33064
33064
|
};
|
|
33065
|
-
N(dt.equal(0).and(
|
|
33065
|
+
N(dt.equal(0).and(Be), () => {
|
|
33066
33066
|
let e = Yb({
|
|
33067
33067
|
worldPos: mt,
|
|
33068
33068
|
cameraProjectionMatrix: de,
|
|
@@ -33070,7 +33070,7 @@ function Fx(e) {
|
|
|
33070
33070
|
});
|
|
33071
33071
|
ll(c, Xe, Y(0, 0, 1), e, Y(0));
|
|
33072
33072
|
});
|
|
33073
|
-
let It =
|
|
33073
|
+
let It = I(1).toVar(), Lt = I(1).toVar();
|
|
33074
33074
|
N(gt.equal(1), () => {
|
|
33075
33075
|
It.assign(_t);
|
|
33076
33076
|
}).ElseIf(gt.equal(2), () => {
|
|
@@ -33082,15 +33082,15 @@ function Fx(e) {
|
|
|
33082
33082
|
origin: Ke,
|
|
33083
33083
|
direction: qe
|
|
33084
33084
|
}), zt = zm.wrap(Ym(Rt, W, q, Ze, tt, _e, me, nt, R(yt), It, Lt, bt)).toVar();
|
|
33085
|
-
bt.assign(zt.pathWavelength), N(
|
|
33086
|
-
let e = pl(dl(c, Xe)).w, t = H(
|
|
33085
|
+
bt.assign(zt.pathWavelength), N(Be.and(B.bitAnd(G(jy.AUX_LOCKED)).equal(G(0))), () => {
|
|
33086
|
+
let e = pl(dl(c, Xe)).w, t = H(F(W, qe.negate()).lessThan(0), W.negate(), W).toVar(), n = P(Ot.mul(Nt), Y(0), Y(1)).toVar();
|
|
33087
33087
|
N(q.alphaMode.equal(R(2)), () => {
|
|
33088
|
-
ll(c, Xe, t, e, n),
|
|
33088
|
+
ll(c, Xe, t, e, n), B.assign(B.bitOr(G(jy.AUX_LOCKED)));
|
|
33089
33089
|
}).ElseIf(zt.isAlphaSkip, () => {}).ElseIf(zt.isSubsurface, () => {
|
|
33090
|
-
ll(c, Xe, t, e, n),
|
|
33090
|
+
ll(c, Xe, t, e, n), B.assign(B.bitOr(G(jy.AUX_LOCKED)));
|
|
33091
33091
|
}).ElseIf(zt.isTransmissive, () => {
|
|
33092
33092
|
N(Mt.or(q.dispersion.greaterThan(0)), () => {
|
|
33093
|
-
ll(c, Xe, t, e, n),
|
|
33093
|
+
ll(c, Xe, t, e, n), B.assign(B.bitOr(G(jy.AUX_LOCKED)));
|
|
33094
33094
|
}).Else(() => {
|
|
33095
33095
|
rt.mulAssign(P(Ot, Y(0), Y(1)));
|
|
33096
33096
|
});
|
|
@@ -33105,7 +33105,7 @@ function Fx(e) {
|
|
|
33105
33105
|
K.assign(q.ior);
|
|
33106
33106
|
}), N(gt.equal(3), () => {
|
|
33107
33107
|
vt.assign(q.ior);
|
|
33108
|
-
}), Pl(o,
|
|
33108
|
+
}), Pl(o, L, H(q.attenuationDistance.greaterThan(0), Ve(z(q.attenuationColor, Y(.001))).negate().div(q.attenuationDistance), Y(0))), Ul(o, L, Y(0), I(0));
|
|
33109
33109
|
});
|
|
33110
33110
|
}).Else(() => {
|
|
33111
33111
|
N(gt.greaterThan(0), () => {
|
|
@@ -33123,7 +33123,7 @@ function Fx(e) {
|
|
|
33123
33123
|
vt.assign(q.ior);
|
|
33124
33124
|
});
|
|
33125
33125
|
let e = Mm.wrap(Im(q.subsurfaceColor, q.subsurfaceRadius, q.subsurfaceRadiusScale)).toVar();
|
|
33126
|
-
Pl(o,
|
|
33126
|
+
Pl(o, L, e.sigmaT.sub(e.sigmaS)), Ul(o, L, e.sigmaS, P(q.subsurfaceAnisotropy, -.99, .99));
|
|
33127
33127
|
});
|
|
33128
33128
|
}).Else(() => {
|
|
33129
33129
|
N(gt.greaterThan(0), () => {
|
|
@@ -33133,25 +33133,25 @@ function Fx(e) {
|
|
|
33133
33133
|
}), N(zt.isTransmissive.and(yt.greaterThan(0)), () => {
|
|
33134
33134
|
yt.subAssign(1);
|
|
33135
33135
|
}), Je.mulAssign(zt.throughput);
|
|
33136
|
-
let e = bb(Dl(s,
|
|
33136
|
+
let e = bb(Dl(s, L)).faceN, t = ic(mt, H(F(e, zt.direction).lessThan(0), e.negate(), e));
|
|
33137
33137
|
N(zt.isAlphaSkip.not(), () => {
|
|
33138
|
-
|
|
33138
|
+
B.assign(B.bitOr(G(jy.REDIRECTED)));
|
|
33139
33139
|
}).Else(() => {
|
|
33140
33140
|
pt.addAssign(1), N(pt.greaterThan(ne), () => {
|
|
33141
|
-
Pt(H(
|
|
33141
|
+
Pt(H(F(W, qe.negate()).lessThan(0), W.negate(), W)), Ft(), ge();
|
|
33142
33142
|
});
|
|
33143
|
-
}), _l(o,
|
|
33144
|
-
Rl(o,
|
|
33145
|
-
}), kl(s,
|
|
33146
|
-
}),
|
|
33143
|
+
}), _l(o, L, t, ut, ft, pt, H(zt.isAlphaSkip, gl(o, L).add(it), I(0))), vl(o, L, zt.direction, B), yl(o, L, Je, ol(o, L)), bl(o, L, Ye), Ml(o, L, G(gt), G(yt), _t, K, vt, G(bt.add(.5))), N(Be.and(B.bitAnd(G(jy.AUX_LOCKED)).equal(G(0))), () => {
|
|
33144
|
+
Rl(o, L, rt);
|
|
33145
|
+
}), kl(s, L, Ze), ge();
|
|
33146
|
+
}), B.assign(B.bitOr(G(jy.HAS_HIT_OPAQUE | jy.REDIRECTED)));
|
|
33147
33147
|
let Bt = wt.emissive.toVar();
|
|
33148
33148
|
N(Re(Bt).greaterThan(0), () => {
|
|
33149
|
-
let e = H(Ge.not(), ue,
|
|
33150
|
-
|
|
33151
|
-
let e = ol(o,
|
|
33149
|
+
let e = H(Ge.not(), ue, I(1)), i = I(1).toVar();
|
|
33150
|
+
He && N(ke.equal(R(1)).and(Se.greaterThan(R(0))).and(dt.greaterThan(0)), () => {
|
|
33151
|
+
let e = ol(o, L);
|
|
33152
33152
|
N(e.greaterThan(0), () => {
|
|
33153
|
-
let s = gl(o,
|
|
33154
|
-
N(
|
|
33153
|
+
let s = gl(o, L).toVar(), c = Ke.sub(qe.mul(s)).toVar(), l = it.add(s).toVar(), u = I(0).toVar();
|
|
33154
|
+
N(Ae.greaterThan(R(0)), () => {
|
|
33155
33155
|
u.assign(Ax(R(ct), l, qe, c, a, Ce, Me, n, t));
|
|
33156
33156
|
}).Else(() => {
|
|
33157
33157
|
u.assign(vx(R(ct), l, qe, c, n, r, Ee, t, lt));
|
|
@@ -33160,9 +33160,9 @@ function Fx(e) {
|
|
|
33160
33160
|
pdf2: u
|
|
33161
33161
|
}));
|
|
33162
33162
|
});
|
|
33163
|
-
}), Ye.assign(X(Ye.xyz.add(Jb(Bt.mul(Je).mul(e).mul(i),
|
|
33163
|
+
}), Ye.assign(X(Ye.xyz.add(Jb(Bt.mul(Je).mul(e).mul(i), I(dt), pe, R(be))), Ye.w));
|
|
33164
33164
|
});
|
|
33165
|
-
let Vt = qe.negate().toVar(), Ht = V(U), Ut = H(
|
|
33165
|
+
let Vt = qe.negate().toVar(), Ht = V(U), Ut = H(F(Ht, Vt).lessThan(0), Ht.negate(), Ht).toVar(), Wt = bb(Dl(s, L)), Gt = Wt.faceN.toVar(), Kt = Ht.mul(Wt.liftScale), qt = (e) => gb({
|
|
33166
33166
|
hitPoint: mt,
|
|
33167
33167
|
offsetNormal: Gt,
|
|
33168
33168
|
lift: Kt,
|
|
@@ -33171,30 +33171,30 @@ function Fx(e) {
|
|
|
33171
33171
|
L: e,
|
|
33172
33172
|
cutoff: ve
|
|
33173
33173
|
});
|
|
33174
|
-
N(
|
|
33174
|
+
N(F(Ht, Vt).lessThan(0), () => {
|
|
33175
33175
|
W.assign(W.negate());
|
|
33176
|
-
}), N(
|
|
33176
|
+
}), N(Be.and(B.bitAnd(G(jy.AUX_LOCKED)).equal(G(0))), () => {
|
|
33177
33177
|
let e = pl(dl(c, Xe)).w;
|
|
33178
33178
|
N(Mt, () => {
|
|
33179
|
-
ll(c, Xe, W, e, P(Ot.mul(Nt), Y(0), Y(1))),
|
|
33179
|
+
ll(c, Xe, W, e, P(Ot.mul(Nt), Y(0), Y(1))), B.assign(B.bitOr(G(jy.AUX_LOCKED)));
|
|
33180
33180
|
}).Else(() => {
|
|
33181
|
-
let e = z(
|
|
33182
|
-
rt.mulAssign(Qs.wrap(fm(t.f0, t.f90, t.eta, t.F0m, q.metalness, Y(0),
|
|
33181
|
+
let e = z(F(W, Vt), I(.001)), t = $s.wrap(pm(q, Ot));
|
|
33182
|
+
rt.mulAssign(Qs.wrap(fm(t.f0, t.f90, t.eta, t.F0m, q.metalness, Y(0), I(0), t.F0, e, z(Tt, I(.02)))).E_total);
|
|
33183
33183
|
});
|
|
33184
33184
|
});
|
|
33185
33185
|
let Jt = tc.wrap(jc(q.metalness, q.roughness, q.transmission, q.clearcoat, q.emissive, q.subsurface)).toVar(), Yt = si(tt, R(0), dt, Ze, R(-1), _e, me).toVar(), Xt = li(tt, R(0), nt.add(R(2)), Ze, _e, me).toVar(), Zt = Ys({
|
|
33186
|
-
specular:
|
|
33187
|
-
diffuse:
|
|
33188
|
-
sheen:
|
|
33189
|
-
clearcoat:
|
|
33190
|
-
transmission:
|
|
33191
|
-
iridescence:
|
|
33186
|
+
specular: I(0),
|
|
33187
|
+
diffuse: I(0),
|
|
33188
|
+
sheen: I(0),
|
|
33189
|
+
clearcoat: I(0),
|
|
33190
|
+
transmission: I(0),
|
|
33191
|
+
iridescence: I(0)
|
|
33192
33192
|
}), Qt = rc({
|
|
33193
|
-
invRoughness:
|
|
33194
|
-
metalFactor:
|
|
33195
|
-
iorFactor:
|
|
33196
|
-
maxSheenColor:
|
|
33197
|
-
}), $t = Y(0).toVar(), en = Y(0).toVar(), tn =
|
|
33193
|
+
invRoughness: I(0),
|
|
33194
|
+
metalFactor: I(.5),
|
|
33195
|
+
iorFactor: I(.67),
|
|
33196
|
+
maxSheenColor: I(0)
|
|
33197
|
+
}), $t = Y(0).toVar(), en = Y(0).toVar(), tn = I(0).toVar(), nn = De(!1).toVar(), rn = Y(1).toVar();
|
|
33198
33198
|
N(q.clearcoat.greaterThan(0), () => {
|
|
33199
33199
|
let e = Hs({
|
|
33200
33200
|
origin: Ke,
|
|
@@ -33216,31 +33216,31 @@ function Fx(e) {
|
|
|
33216
33216
|
let e = Js.wrap(qb(Vt, W, q, Yt, Xt, Ze, tt, _e, me, nt, Jt, !1, Zt, !1, Qt));
|
|
33217
33217
|
$t.assign(e.direction), en.assign(e.value), tn.assign(e.pdf), nn.assign(e.isTransmission), rn.assign(e.colorWeight);
|
|
33218
33218
|
});
|
|
33219
|
-
let an = Ks.wrap(Gb(mt, W, Ut, q, Vt, $t, tn, en, dt, Ze, tt, _e, me, nt, w, T, E, D, O, k, A, ee, t, n, r, d, f, p, i, x, S, C, m, De(!1), Kt, Gt, ve, Ie, Le, ze
|
|
33220
|
-
Ye.assign(X(Ye.xyz.add(Jb(Je.mul(an).mul(on),
|
|
33219
|
+
let an = Ks.wrap(Gb(mt, W, Ut, q, Vt, $t, tn, en, dt, Ze, tt, _e, me, nt, w, T, E, D, O, k, A, ee, t, n, r, d, f, p, i, x, S, C, m, De(!1), Kt, Gt, ve, Pe, Ie, Le, ze)).shadowed.toVar(), on = H(dt.greaterThan(0), ue, I(1));
|
|
33220
|
+
Ye.assign(X(Ye.xyz.add(Jb(Je.mul(an).mul(on), I(dt), pe, R(be))), Ye.w)), He && N(ke.equal(R(1)).and(Se.greaterThan(R(0))), () => {
|
|
33221
33221
|
let e = M(([e, i, a]) => wh(e, i, a, mb, t, n, r));
|
|
33222
|
-
N(
|
|
33222
|
+
N(Ae.greaterThan(R(0)), () => {
|
|
33223
33223
|
let r = ix.wrap(kx(mt, W, Ze, tt, _e, me, nt, a, a, Ce, n, t));
|
|
33224
33224
|
N(r.valid.and(r.pdf.greaterThan(0)), () => {
|
|
33225
|
-
let t = z(
|
|
33226
|
-
N(t.greaterThan(0).and(
|
|
33225
|
+
let t = z(I(0), F(W, r.direction));
|
|
33226
|
+
N(t.greaterThan(0).and(F(r.direction, Ut).greaterThan(0)), () => {
|
|
33227
33227
|
let n = qt(r.direction).toVar(), i = r.position.sub(n).toVar(), a = Re(i).toVar(), o = e(n, i.div(a), a.mul(ac));
|
|
33228
33228
|
N(o.greaterThan(0), () => {
|
|
33229
33229
|
let e = Ab(Vt, r.direction, W, q), n = Wb(Vt, r.direction, W, q), i = H(n.greaterThan(0), Cc({
|
|
33230
33230
|
pdf1: r.pdf,
|
|
33231
33231
|
pdf2: n
|
|
33232
|
-
}),
|
|
33233
|
-
Ye.assign(X(Ye.xyz.add(Jb(a.mul(Je).mul(on),
|
|
33232
|
+
}), I(1)), a = r.emission.mul(e).mul(t).div(r.pdf).mul(o).mul(Oe).mul(i);
|
|
33233
|
+
Ye.assign(X(Ye.xyz.add(Jb(a.mul(Je).mul(on), I(dt), pe, R(be))), Ye.w));
|
|
33234
33234
|
});
|
|
33235
33235
|
});
|
|
33236
33236
|
});
|
|
33237
33237
|
}).Else(() => {
|
|
33238
33238
|
let r = Sx(mt, W, Ut, Vt, q, dt, Ze, tt, _e, me, nt, Oe, a, Ce, Se, Ee, n, t, e, M(([e, , t]) => qt(t).sub(e)));
|
|
33239
|
-
Ye.assign(X(Ye.xyz.add(Jb(r.mul(Je).mul(on),
|
|
33239
|
+
Ye.assign(X(Ye.xyz.add(Jb(r.mul(Je).mul(on), I(dt), pe, R(be))), Ye.w));
|
|
33240
33240
|
});
|
|
33241
33241
|
});
|
|
33242
33242
|
let sn = Ph.wrap(Kb(W, q, $t, tn, en, nn, rn, Ze, tt, _e, me, nt)).toVar(), cn = sn.direction.toVar();
|
|
33243
|
-
N(nn.not().and(
|
|
33243
|
+
N(nn.not().and(F(cn, Ut).lessThanEqual(0)), () => {
|
|
33244
33244
|
Pt(W), Ft(), ge();
|
|
33245
33245
|
});
|
|
33246
33246
|
let Z = z(sn.combinedPdf, .001).toVar();
|
|
@@ -33251,10 +33251,10 @@ function Fx(e) {
|
|
|
33251
33251
|
}), Je.divAssign(ln), N(ut.greaterThanEqual(te), () => {
|
|
33252
33252
|
Pt(W), Ft(), ge();
|
|
33253
33253
|
});
|
|
33254
|
-
let un = ic(mt, H(
|
|
33255
|
-
|
|
33256
|
-
Rl(o,
|
|
33257
|
-
}), kl(s,
|
|
33254
|
+
let un = ic(mt, H(F(Gt, cn).lessThan(0), Gt.negate(), Gt)), dn = nn.not().and(F(W, cn).greaterThan(0));
|
|
33255
|
+
B.assign(B.sub(B.bitAnd(G(jy.SUN_NEE))).bitOr(H(dn, G(jy.SUN_NEE), G(0)))), _l(o, L, un, ut.add(1), ft, pt), vl(o, L, cn, B), yl(o, L, Je, Z), bl(o, L, Ye), Ml(o, L, G(gt), G(yt), _t, K, vt, G(bt.add(.5))), N(Be.and(B.bitAnd(G(jy.AUX_LOCKED)).equal(G(0))), () => {
|
|
33256
|
+
Rl(o, L, rt);
|
|
33257
|
+
}), kl(s, L, Ze);
|
|
33258
33258
|
});
|
|
33259
33259
|
}
|
|
33260
33260
|
//#endregion
|
|
@@ -33296,12 +33296,12 @@ function Bx(e) {
|
|
|
33296
33296
|
return M(() => {
|
|
33297
33297
|
let e = R(Dt.x).mul(16).add(R(Be.x)), S = R(Dt.y).mul(16).add(R(Be.y));
|
|
33298
33298
|
N(e.lessThan(v).and(S.lessThan(b)), () => {
|
|
33299
|
-
let b = S.add(y), C = G(S.mul(v).add(e)), T = G(b.mul(v).add(e)), O = sl(t, C), te = O.xyz.toVar(), oe = H(m, O.w,
|
|
33299
|
+
let b = S.add(y), C = G(S.mul(v).add(e)), T = G(b.mul(v).add(e)), O = sl(t, C), te = O.xyz.toVar(), oe = H(m, O.w, I(1)).toVar(), se = ie.and(s.greaterThan(G(0))).and(ee.element(T).equal(G(1))).toVar(), ce = X(0).toVar(), le = X(0).xyz.toVar(), ue = I(0).toVar();
|
|
33300
33300
|
N(j, () => {
|
|
33301
33301
|
let e = dl(n, C);
|
|
33302
33302
|
ce.assign(pl(e)), le.assign(X(ml(e), 0).xyz), ue.assign(fl(e));
|
|
33303
33303
|
});
|
|
33304
|
-
let de = J(
|
|
33304
|
+
let de = J(I(e).add(.5), I(b).add(.5)).div(o);
|
|
33305
33305
|
N(c.and(d.not()).and(s.greaterThan(G(0))).and(l).and(x.notEqual(R(11))), () => {
|
|
33306
33306
|
let e = pt(h, de, 0).toVar();
|
|
33307
33307
|
te.assign(H(se, e.xyz, B(e.xyz, O.xyz, u))), N(j.and(f), () => {
|
|
@@ -33316,14 +33316,14 @@ function Bx(e) {
|
|
|
33316
33316
|
}), N(ae, () => {
|
|
33317
33317
|
let e = Sc(O.xyz), t = w.element(T).toVar(), n = H(se, t, B(t, e.mul(e), u)).toVar();
|
|
33318
33318
|
w.element(T).assign(n);
|
|
33319
|
-
let r = Sc(te).toVar(), i = n.sub(r.mul(r)).max(
|
|
33319
|
+
let r = Sc(te).toVar(), i = n.sub(r.mul(r)).max(I(0)).div(I(s).add(1)).sqrt().toVar(), a = i.div(r.add(I(1e-4))), o = H(r.lessThan(I(1)), r.sqrt(), r), c = i.div(o.add(I(1e-4))).lessThan(E);
|
|
33320
33320
|
N(re.or(ie), () => {
|
|
33321
|
-
let e = re.and(s.greaterThanEqual(G(D))).and(c), t = A.element(T).toVar(), n = t.bitAnd(G(1073741823)).toVar(), i = n.toVar(), o = O.w.greaterThan(
|
|
33321
|
+
let e = re.and(s.greaterThanEqual(G(D))).and(c), t = A.element(T).toVar(), n = t.bitAnd(G(1073741823)).toVar(), i = n.toVar(), o = O.w.greaterThan(I(.5)), l = t.bitAnd(G(1073741824)).notEqual(G(0)), u = H(s.equal(G(0)), H(o, G(1073741824), G(0)), H(o.or(l), G(1073741824), G(0))).toVar();
|
|
33322
33322
|
N(ie, () => {
|
|
33323
33323
|
N(s.equal(G(0)), () => {
|
|
33324
33324
|
i.assign(G(0));
|
|
33325
33325
|
}), N(se.not().and(s.greaterThan(G(0))), () => {
|
|
33326
|
-
let e = s.greaterThanEqual(G(D)).and(a.lessThan(k)).and(r.greaterThan(
|
|
33326
|
+
let e = s.greaterThanEqual(G(D)).and(a.lessThan(k)).and(r.greaterThan(I(0)));
|
|
33327
33327
|
i.assign(H(e, n.add(G(1)), G(0)));
|
|
33328
33328
|
});
|
|
33329
33329
|
}), A.element(T).assign(i.bitOr(H(e, G(2147483648), G(0))).bitOr(u));
|
|
@@ -33346,10 +33346,10 @@ var Vx = /* @__PURE__ */ wt("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n re
|
|
|
33346
33346
|
direction: t
|
|
33347
33347
|
}), v = qs.wrap(pb(_, n, r).toVar());
|
|
33348
33348
|
return N(l.equal(R(7)), () => {
|
|
33349
|
-
let e =
|
|
33349
|
+
let e = I(v.triTests).div(u);
|
|
33350
33350
|
g.assign(H(e.lessThan(1), X(Y(e), 1), X(1, 0, 0, 1)));
|
|
33351
33351
|
}), N(l.equal(R(8)), () => {
|
|
33352
|
-
let e =
|
|
33352
|
+
let e = I(v.boxTests).div(u);
|
|
33353
33353
|
g.assign(H(e.lessThan(1), X(Y(e), 1), X(1, 0, 0, 1)));
|
|
33354
33354
|
}), N(l.equal(R(10)), () => {
|
|
33355
33355
|
N(c, () => {
|
|
@@ -33360,7 +33360,7 @@ var Vx = /* @__PURE__ */ wt("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n re
|
|
|
33360
33360
|
environmentMatrix: o,
|
|
33361
33361
|
environmentIntensity: s,
|
|
33362
33362
|
enableEnvironmentLight: c
|
|
33363
|
-
}).toVar(), n =
|
|
33363
|
+
}).toVar(), n = F(e.xyz, pc).toVar(), r = n, i = z(u.mul(.1), .001), l = n.div(i), p = Ve(n.add(1e-6)).add(10).div(10), m = H(u.greaterThan(1), l, p).toVar(), h = Y(0).toVar();
|
|
33364
33364
|
N(m.lessThan(.2), () => {
|
|
33365
33365
|
h.assign(B(Y(0, 0, 0), Y(0, 0, .5), m.mul(5)));
|
|
33366
33366
|
}).ElseIf(m.lessThan(.4), () => {
|
|
@@ -33390,7 +33390,7 @@ var Vx = /* @__PURE__ */ wt("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n re
|
|
|
33390
33390
|
}).Else(() => {
|
|
33391
33391
|
let t = Us.wrap(Lc(v.materialIndex, i)).toVar(), n = ec.wrap(bh(t, v.uv, v.normal, X(0))).toVar().emissive.toVar(), r = Re(n).toVar();
|
|
33392
33392
|
N(r.greaterThan(0), () => {
|
|
33393
|
-
let t = n.div(z(r.mul(.1), .001)).toVar(), i = Re(e.sub(v.hitPoint)), a = P(
|
|
33393
|
+
let t = n.div(z(r.mul(.1), .001)).toVar(), i = Re(e.sub(v.hitPoint)), a = P(I(1).sub(i.div(10)), 0, 1), o = B(t, t.mul(Y(1, .8, .6)), a.mul(.3));
|
|
33394
33394
|
g.assign(X(o, 1));
|
|
33395
33395
|
}).Else(() => {
|
|
33396
33396
|
g.assign(X(0, 0, .1, 1));
|
|
@@ -33462,7 +33462,7 @@ var Vx = /* @__PURE__ */ wt("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n re
|
|
|
33462
33462
|
});
|
|
33463
33463
|
}), N(l.equal(R(6)), () => {
|
|
33464
33464
|
N(v.didHit, () => {
|
|
33465
|
-
let e = v.normal.toVar(), n = V(t.sub(e.mul(
|
|
33465
|
+
let e = v.normal.toVar(), n = V(t.sub(e.mul(F(t, e).mul(2)))).toVar(), r = Eb({
|
|
33466
33466
|
tex: a,
|
|
33467
33467
|
samp: et(a),
|
|
33468
33468
|
direction: n,
|
|
@@ -33489,7 +33489,7 @@ function Gx(e) {
|
|
|
33489
33489
|
return M(() => {
|
|
33490
33490
|
let e = R(Dt.x).mul(16).add(R(Be.x)), ne = R(Dt.y).mul(16).add(R(Be.y));
|
|
33491
33491
|
N(e.lessThan(a).and(ne.lessThan(o)), () => {
|
|
33492
|
-
let a = J(
|
|
33492
|
+
let a = J(I(e).add(.5), I(ne).add(.5)), o = qr({ state: G(ne.mul(R(i.x)).add(e)).add(G(1)) }).toVar(), re = Hs.wrap(Yy(a.div(i), o, s, c, d, f, p, m, h, g, _, v, y, b, x, S, C)), ie = X(1, 0, 1, 1).toVar();
|
|
33493
33493
|
N(ee.equal(R(9)), () => {
|
|
33494
33494
|
let e = ui(a, R(0), R(1), o, i, j);
|
|
33495
33495
|
ie.assign(X(e, 1, 1));
|
|
@@ -33631,7 +33631,7 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
33631
33631
|
}
|
|
33632
33632
|
this.performanceMonitor?.start();
|
|
33633
33633
|
let t = this.frameCount, n = this.renderMode.value, r = null;
|
|
33634
|
-
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._convergedFraction = 0, this._convergedGeometryFraction = 0, this._lastActivePixelCount = 0), this._updateAccumulationUniforms(t
|
|
33634
|
+
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._convergedFraction = 0, this._convergedGeometryFraction = 0, this._lastActivePixelCount = 0), this._updateAccumulationUniforms(t);
|
|
33635
33635
|
let i = this._updateAuxAccumulationUniforms(t);
|
|
33636
33636
|
this.frame.value = t, this.seedFrame.value = this._seedTick++, this.tracedFrames++, this._setWfDispatch();
|
|
33637
33637
|
let a = this.storageTextures.getReadTextures();
|
|
@@ -34429,9 +34429,9 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34429
34429
|
this._computeNode = M(([r, i]) => {
|
|
34430
34430
|
let u = R(Dt.x).mul(8).add(R(Be.x)), d = R(Dt.y).mul(8).add(R(Be.y));
|
|
34431
34431
|
N(u.lessThan(R(a)).and(d.lessThan(R(o))), () => {
|
|
34432
|
-
let f = Hs(Gy(J(
|
|
34432
|
+
let f = Hs(Gy(J(I(u).add(.5).div(a), I(d).add(.5).div(o)), r, i, this.cameraRay)), p = qs.wrap(fb(f, t, e)), m = p.normal.mul(.5).add(.5), h = We(p.dst, I(65504)), g = p.didHit.select(X(m, h), X(0, 0, 0, I(65504)));
|
|
34433
34433
|
gt(s, St(G(u), G(d)), g).toWriteOnly(), l && gt(l, St(G(u), G(d)), Ct(G(p.instanceLeaf.add(1)), 0, 0, 0)).toWriteOnly();
|
|
34434
|
-
let _ = p.normal.toVar(), v =
|
|
34434
|
+
let _ = p.normal.toVar(), v = I(1).toVar();
|
|
34435
34435
|
N(p.didHit, () => {
|
|
34436
34436
|
let r = Us.wrap(Lc(p.materialIndex, n)).toVar(), i = nc.wrap(uh(p.uv, r)).toVar(), a = X(0).toVar();
|
|
34437
34437
|
N(r.normalMapIndex.greaterThanEqual(R(0)), () => {
|
|
@@ -34535,10 +34535,10 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34535
34535
|
this._screenSpaceComputeNode = M(([t, n]) => {
|
|
34536
34536
|
let s = R(Dt.x).mul(16).add(R(Be.x)), c = R(Dt.y).mul(16).add(R(Be.y));
|
|
34537
34537
|
N(s.lessThan(R(i)).and(c.lessThan(R(a))), () => {
|
|
34538
|
-
let l = W(e, Ie(s, c)).w, u = J(
|
|
34539
|
-
N(l.lessThan(
|
|
34538
|
+
let l = W(e, Ie(s, c)).w, u = J(I(s).add(.5).div(i), I(c).add(.5).div(a)), d = X(0, 0, l, 1).toVar();
|
|
34539
|
+
N(l.lessThan(I(6e4)), () => {
|
|
34540
34540
|
let e = Ky(u, l, t, n, this.cameraRay), i = r.mul(X(e, 1)), a = i.xy.div(i.w), o = J(a.x.mul(.5).add(.5), a.y.mul(-.5).add(.5)), s = u.sub(o), c = o.x.greaterThanEqual(0).and(o.x.lessThanEqual(1)).and(o.y.greaterThanEqual(0)).and(o.y.lessThanEqual(1));
|
|
34541
|
-
d.assign(c.select(X(s, l, 1), X(
|
|
34541
|
+
d.assign(c.select(X(s, l, 1), X(I(1e3), I(1e3), l, 0)));
|
|
34542
34542
|
}), gt(o, St(G(s), G(c)), d).toWriteOnly();
|
|
34543
34543
|
});
|
|
34544
34544
|
})(t, n).compute([
|
|
@@ -34557,8 +34557,8 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34557
34557
|
let u = R(Dt.x).mul(16).add(R(Be.x)), d = R(Dt.y).mul(16).add(R(Be.y));
|
|
34558
34558
|
N(u.lessThan(R(s)).and(d.lessThan(R(c))), () => {
|
|
34559
34559
|
let f = W(e, Ie(u, d)).w, p = X(0, 0, 0, 0).toVar();
|
|
34560
|
-
N(i.lessThan(.5).and(f.lessThan(
|
|
34561
|
-
let e = J(
|
|
34560
|
+
N(i.lessThan(.5).and(f.lessThan(I(6e4))), () => {
|
|
34561
|
+
let e = J(I(u).add(.5).div(s), I(d).add(.5).div(c)), i = Ky(e, f, t, n, this.cameraRay), l = r.mul(X(i, 1)), m = l.xy.div(l.w), h = J(m.x.mul(.5).add(.5), m.y.mul(-.5).add(.5)), g = h.x.greaterThanEqual(0).and(h.x.lessThanEqual(1)).and(h.y.greaterThanEqual(0)).and(h.y.lessThanEqual(1)), _ = e.sub(h), v = Y(_.x.div(a).mul(o), _.y.div(a).mul(o), 0);
|
|
34562
34562
|
p.assign(g.select(X(v, 1), X(0, 0, 0, .5)));
|
|
34563
34563
|
}), gt(l, St(G(u), G(d)), p).toWriteOnly();
|
|
34564
34564
|
});
|
|
@@ -34632,7 +34632,7 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34632
34632
|
dispose() {
|
|
34633
34633
|
this._screenSpaceComputeNode?.dispose(), this._worldSpaceComputeNode?.dispose(), this._screenSpaceStorageTex?.dispose(), this._worldSpaceStorageTex?.dispose(), this.screenSpaceTarget?.dispose(), this.worldSpaceTarget?.dispose(), this._normalDepthTexNode?.dispose();
|
|
34634
34634
|
}
|
|
34635
|
-
}, nS = (e) => H(e.equal(e), e,
|
|
34635
|
+
}, nS = (e) => H(e.equal(e), e, I(0)).clamp(0, 1e7), rS = (e) => Y(nS(e.x), nS(e.y), nS(e.z)), iS = class extends pi {
|
|
34636
34636
|
constructor(e, t = {}) {
|
|
34637
34637
|
super("ASVGF", {
|
|
34638
34638
|
...t,
|
|
@@ -34675,7 +34675,7 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34675
34675
|
let d = Be.x, f = Be.y, p = f.mul(8).add(d), m = R(Dt.x).mul(8).sub(2).toVar(), h = R(Dt.y).mul(8).sub(2).toVar(), g = (i) => {
|
|
34676
34676
|
let a = i.mod(G(12)), o = i.div(G(12)), d = m.add(R(a)).clamp(R(0), R(s).sub(1)), f = h.add(R(o)).clamp(R(0), R(c).sub(1)), p = W(e, Ie(d, f)).xyz, g = W(t, Ie(d, f)).xyz, _ = Sc(rS(p.div(z(g, Y(Ui))))).toVar();
|
|
34677
34677
|
l.element(i).assign(_);
|
|
34678
|
-
let v = W(n, Ie(d, f)), y =
|
|
34678
|
+
let v = W(n, Ie(d, f)), y = I(d).sub(v.x.mul(s)), b = I(f).sub(v.y.mul(c)), x = R(y.add(.5)).clamp(R(0), R(s).sub(1)), S = R(b.add(.5)).clamp(R(0), R(c).sub(1)), C = v.w.greaterThan(.5), w = W(r, Ie(x, S)).xyz, T = C.select(Sc(w), _);
|
|
34679
34679
|
u.element(i).assign(T);
|
|
34680
34680
|
};
|
|
34681
34681
|
g(p);
|
|
@@ -34689,17 +34689,17 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34689
34689
|
}), Et();
|
|
34690
34690
|
let y = R(Dt.x).mul(8).add(R(d)), b = R(Dt.y).mul(8).add(R(f));
|
|
34691
34691
|
N(y.lessThan(R(s)).and(b.lessThan(R(c))), () => {
|
|
34692
|
-
let e =
|
|
34692
|
+
let e = I(0).toVar(), t = I(0).toVar();
|
|
34693
34693
|
for (let n = -2; n <= 2; n++) for (let r = -2; r <= 2; r++) {
|
|
34694
34694
|
let i = f.add(G(2 + n)).mul(G(12)).add(d.add(G(2 + r))), a = l.element(i);
|
|
34695
34695
|
e.addAssign(a), t.addAssign(a.mul(a));
|
|
34696
34696
|
}
|
|
34697
|
-
let p = e.div(25), m = U(z(t.div(25).sub(p.mul(p)),
|
|
34697
|
+
let p = e.div(25), m = U(z(t.div(25).sub(p.mul(p)), I(0))).mul(a).toVar(), h = I(0).toVar();
|
|
34698
34698
|
for (let e = -2; e <= 2; e++) for (let t = -2; t <= 2; t++) {
|
|
34699
|
-
let n = f.add(G(2 + e)).mul(G(12)).add(d.add(G(2 + t))), r = l.element(n), a = u.element(n), o = z(z(ve(r.sub(a)).sub(m),
|
|
34699
|
+
let n = f.add(G(2 + e)).mul(G(12)).add(d.add(G(2 + t))), r = l.element(n), a = u.element(n), o = z(z(ve(r.sub(a)).sub(m), I(0)).div(z(z(r, a), I(.001))).sub(i), I(0)).div(z(I(1).sub(i), I(1e-4)));
|
|
34700
34700
|
h.addAssign(o.mul(o));
|
|
34701
34701
|
}
|
|
34702
|
-
let g = h.div(25).clamp(0, 1).toVar(), _ = W(n, Ie(y, b)), v = R(
|
|
34702
|
+
let g = h.div(25).clamp(0, 1).toVar(), _ = W(n, Ie(y, b)), v = R(I(y).sub(_.x.mul(s)).add(.5)).clamp(R(0), R(s).sub(1)), x = R(I(b).sub(_.y.mul(c)).add(.5)).clamp(R(0), R(c).sub(1)), S = _.w.greaterThan(.5).select(W(r, Ie(v, x)).w, I(0)).div(4).clamp(0, 1), C = g.mul(S);
|
|
34703
34703
|
gt(o, St(G(y), G(b)), X(C, g, m, 1)).toWriteOnly();
|
|
34704
34704
|
});
|
|
34705
34705
|
})().compute([
|
|
@@ -34722,14 +34722,14 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34722
34722
|
N(g.lessThan(R(m)).and(_.lessThan(R(h))), () => {
|
|
34723
34723
|
let v = Ie(g, _), y = W(t, v), b = y.xyz, x = y.w, S = W(n, v).xyz, C = z(S, Y(Ui)), w = rS(b.div(C)), T = X(w, 1).toVar(), E = X(b, x).toVar();
|
|
34724
34724
|
N(f.greaterThan(.5).and(p.lessThan(.5)), () => {
|
|
34725
|
-
let e = W(r, v), t = e.w.greaterThan(.5), n =
|
|
34725
|
+
let e = W(r, v), t = e.w.greaterThan(.5), n = I(g).sub(e.x.mul(m)), c = I(_).sub(e.y.mul(h)), f = n.greaterThanEqual(0).and(n.lessThan(I(m))).and(c.greaterThanEqual(0)).and(c.lessThan(I(h)));
|
|
34726
34726
|
N(t.and(f), () => {
|
|
34727
|
-
let e = W(i, v), t = e.xyz.mul(2).sub(1), r = e.w, f = R(n), p = R(c), g = f.add(R(1)), _ = p.add(R(1)), y = n.sub(
|
|
34728
|
-
let o = W(a, Ie(e, n)), s = o.xyz.mul(2).sub(1), c = o.w, l = Xe(
|
|
34727
|
+
let e = W(i, v), t = e.xyz.mul(2).sub(1), r = e.w, f = R(n), p = R(c), g = f.add(R(1)), _ = p.add(R(1)), y = n.sub(I(f)), b = c.sub(I(p)), S = f.clamp(R(0), R(m).sub(1)), D = g.clamp(R(0), R(m).sub(1)), O = p.clamp(R(0), R(h).sub(1)), k = _.clamp(R(0), R(h).sub(1)), A = I(1).sub(y).mul(I(1).sub(b)), ee = y.mul(I(1).sub(b)), te = I(1).sub(y).mul(b), j = y.mul(b), ne = (e, n, i) => {
|
|
34728
|
+
let o = W(a, Ie(e, n)), s = o.xyz.mul(2).sub(1), c = o.w, l = Xe(F(t, s).clamp(0, 1), I(16)), u = je(ve(r.sub(c)).div(z(r, I(.001))).div(I(.05)).negate());
|
|
34729
34729
|
return i.mul(l).mul(u);
|
|
34730
34730
|
}, re = ne(S, O, A), ie = ne(D, O, ee), ae = ne(S, k, te), oe = ne(D, k, j), se = re.add(ie).add(ae).add(oe);
|
|
34731
|
-
N(se.greaterThan(
|
|
34732
|
-
let e = W(o, Ie(S, O)), t = W(o, Ie(D, O)), n = W(o, Ie(S, k)), r = W(o, Ie(D, k)), i =
|
|
34731
|
+
N(se.greaterThan(I(.01)), () => {
|
|
34732
|
+
let e = W(o, Ie(S, O)), t = W(o, Ie(D, O)), n = W(o, Ie(S, k)), r = W(o, Ie(D, k)), i = I(1).div(se), a = e.xyz.mul(re).add(t.xyz.mul(ie)).add(n.xyz.mul(ae)).add(r.xyz.mul(oe)).mul(i), c = e.w.mul(re).add(t.w.mul(ie)).add(n.w.mul(ae)).add(r.w.mul(oe)).mul(i), f = W(s, v).x.mul(d).clamp(0, 1), p = rS(B(a, w, B(z(I(1).div(c.add(1)), u), I(1), f))), m = We(c.add(1), l);
|
|
34733
34733
|
T.assign(X(p, m)), E.assign(X(p.mul(C), x));
|
|
34734
34734
|
});
|
|
34735
34735
|
});
|
|
@@ -34755,17 +34755,17 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34755
34755
|
let e = W(t, f).xyz;
|
|
34756
34756
|
p.assign(X(e, 1));
|
|
34757
34757
|
}).ElseIf(s.equal(R(1)), () => {
|
|
34758
|
-
let t =
|
|
34758
|
+
let t = I(0).toVar(), n = I(0).toVar();
|
|
34759
34759
|
for (let r = -1; r <= 1; r++) for (let i = -1; i <= 1; i++) {
|
|
34760
34760
|
let a = W(e, Ie(u.add(i).clamp(R(0), R(c).sub(1)), d.add(r).clamp(R(0), R(l).sub(1)))).xyz, o = Sc(a);
|
|
34761
34761
|
t.addAssign(o), n.addAssign(o.mul(o));
|
|
34762
34762
|
}
|
|
34763
34763
|
t.divAssign(9), n.divAssign(9);
|
|
34764
|
-
let r = z(n.sub(t.mul(t)),
|
|
34764
|
+
let r = z(n.sub(t.mul(t)), I(0)).div(z(t.mul(t), I(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 = I(1).sub(r.sub(.25).mul(4).clamp(0, 1));
|
|
34765
34765
|
p.assign(X(i, a, o, 1));
|
|
34766
34766
|
}).ElseIf(s.equal(R(2)), () => {
|
|
34767
34767
|
let e = W(n, f).w.div(32).clamp(0, 1);
|
|
34768
|
-
p.assign(X(
|
|
34768
|
+
p.assign(X(I(1).sub(e), e, I(.2), 1));
|
|
34769
34769
|
}).ElseIf(s.equal(R(3)), () => {
|
|
34770
34770
|
let e = W(i, f), t = ve(e.x).mul(100).clamp(0, 1), n = ve(e.y).mul(100).clamp(0, 1), r = t.add(n).clamp(0, 1);
|
|
34771
34771
|
p.assign(X(t, n, r.mul(.3), 1));
|
|
@@ -34774,7 +34774,7 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34774
34774
|
p.assign(X(e.xyz, 1));
|
|
34775
34775
|
}).Else(() => {
|
|
34776
34776
|
let e = W(a, f).x.mul(5).clamp(0, 1);
|
|
34777
|
-
p.assign(X(e, e.mul(.5),
|
|
34777
|
+
p.assign(X(e, e.mul(.5), I(1).sub(e), 1));
|
|
34778
34778
|
}), gt(o, St(G(u), G(d)), p).toWriteOnly();
|
|
34779
34779
|
});
|
|
34780
34780
|
})().compute([
|
|
@@ -34901,25 +34901,25 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34901
34901
|
-bS,
|
|
34902
34902
|
.5
|
|
34903
34903
|
]
|
|
34904
|
-
], SS = (e, t, n) => at(0, 1,
|
|
34904
|
+
], SS = (e, t, n) => at(0, 1, I(1).sub(e.mul(t).add(n).abs())), CS = (e, t, n) => {
|
|
34905
34905
|
let r = e.mul(t).add(n).abs().mul(-cS);
|
|
34906
|
-
return
|
|
34907
|
-
}, wS = (e) => B(
|
|
34908
|
-
let i = z(Se(ES(n, r.mul(B(tt(t),
|
|
34909
|
-
return
|
|
34906
|
+
return I(1).div(r.mul(r).sub(r).add(1));
|
|
34907
|
+
}, wS = (e) => B(I(1.570796), I(1.395402), tt(e)).mul(U(tt(I(1).sub(e)))), TS = (e, t) => I(1).sub(Me(e.mul(e).mul(-200))).mul(Xe(tt(e), t)), ES = (e, t) => tt(e).mul(U(t.div(I(1).sub(t).add(aS)))), DS = (e, t, n, r) => {
|
|
34908
|
+
let i = z(Se(ES(n, r.mul(B(tt(t), I(1), e)))), I(oS));
|
|
34909
|
+
return I(1).div(i);
|
|
34910
34910
|
}, OS = (e, t) => {
|
|
34911
|
-
let n =
|
|
34911
|
+
let n = I(1).div(B(I(sS), I(1), tt(e.mul(t))));
|
|
34912
34912
|
return J(n, e.mul(n).negate());
|
|
34913
34913
|
}, kS = (e, t, n) => {
|
|
34914
|
-
let r =
|
|
34914
|
+
let r = I(1).div(B(I(n), I(1), B(e.mul(e), e, tt(t))));
|
|
34915
34915
|
return J(r, e.mul(r).negate());
|
|
34916
34916
|
}, AS = (e, t) => {
|
|
34917
|
-
let n =
|
|
34917
|
+
let n = I(1).div(t);
|
|
34918
34918
|
return J(n, e.mul(n).negate());
|
|
34919
34919
|
}, jS = (e, t, n, r) => {
|
|
34920
|
-
let i =
|
|
34921
|
-
return J(i,
|
|
34922
|
-
}, MS = (e) => J(1).sub(J(1).sub(Pe(e.mul(.5)).mul(2)).abs()).min(.99999), NS = (e) => Y(
|
|
34920
|
+
let i = I(1).div(e.mul(t));
|
|
34921
|
+
return J(i, F(r, n).mul(i).negate());
|
|
34922
|
+
}, MS = (e) => J(1).sub(J(1).sub(Pe(e.mul(.5)).mul(2)).abs()).min(.99999), NS = (e) => Y(F(e, Y(.25, .5, .25)), F(e, Y(.5, 0, -.5)), F(e, Y(-.25, .5, -.25))), PS = (e) => {
|
|
34923
34923
|
let t = e.x.sub(e.z);
|
|
34924
34924
|
return z(Y(t.add(e.y), e.x.add(e.z), t.sub(e.y)), Y(0));
|
|
34925
34925
|
}, FS = (e, t) => t.add(aS).div(e.add(aS)), IS = (e, t) => X(e.xyz.mul(FS(e.x, t)), e.w), LS = (e) => X(NS(PS(e.xyz)), tt(e.w)), RS = (e, t) => U(t.sub(e.mul(e)).abs()), zS = (e, t) => J(e.x.mul(t.x).add(e.y.mul(t.y)), e.z.mul(t.x).add(e.w.mul(t.y))), BS = (e, t) => H(e.equal(0), X(0), t);
|
|
@@ -35013,10 +35013,10 @@ var HS = class extends pi {
|
|
|
35013
35013
|
return H(Uy(this.cameraRay.cameraProjection), n, V(t.sub(e)));
|
|
35014
35014
|
}
|
|
35015
35015
|
_frustumSize(e) {
|
|
35016
|
-
return this.minRectDimMulUnproject.mul(H(Uy(this.cameraRay.cameraProjection),
|
|
35016
|
+
return this.minRectDimMulUnproject.mul(H(Uy(this.cameraRay.cameraProjection), I(1), e));
|
|
35017
35017
|
}
|
|
35018
35018
|
_pixelUv(e, t) {
|
|
35019
|
-
return J(
|
|
35019
|
+
return J(I(e).add(.5).div(this.resW), I(t).add(.5).div(this.resH));
|
|
35020
35020
|
}
|
|
35021
35021
|
_clampCoord(e, t) {
|
|
35022
35022
|
return Ie(e.clamp(R(0), R(this.resW).sub(1)), t.clamp(R(0), R(this.resH).sub(1)));
|
|
@@ -35025,14 +35025,14 @@ var HS = class extends pi {
|
|
|
35025
35025
|
return this._clampCoord(R(e.x.mul(this.resW)), R(e.y.mul(this.resH)));
|
|
35026
35026
|
}
|
|
35027
35027
|
_advancedNonLinear(e) {
|
|
35028
|
-
let t = this.u.convergence, n = tt(e.div(
|
|
35029
|
-
return
|
|
35028
|
+
let t = this.u.convergence, n = tt(e.div(I(1).add(this.u.maxAccum.mul(t.z)))), r = t.x.mul(B(t.y, I(1), n));
|
|
35029
|
+
return I(1).div(I(1).add(r.mul(e)));
|
|
35030
35030
|
}
|
|
35031
35031
|
_handover(e) {
|
|
35032
35032
|
return tt(e.div(z(this.u.handoverFrames, 1)));
|
|
35033
35033
|
}
|
|
35034
35034
|
_bilinear(e) {
|
|
35035
|
-
let t = e.mul(J(this.resW, this.resH)).sub(.5), n =
|
|
35035
|
+
let t = e.mul(J(this.resW, this.resH)).sub(.5), n = L(t), r = tt(t.sub(n)), i = R(n.x), a = R(n.y), o = (e, t) => H(e.greaterThanEqual(R(0)).and(t.greaterThanEqual(R(0))).and(e.lessThan(R(this.resW))).and(t.lessThan(R(this.resH))), I(1), I(0));
|
|
35036
35036
|
return {
|
|
35037
35037
|
f: r,
|
|
35038
35038
|
taps: [
|
|
@@ -35048,9 +35048,9 @@ var HS = class extends pi {
|
|
|
35048
35048
|
o(i.add(1), a.add(1))
|
|
35049
35049
|
],
|
|
35050
35050
|
customWeights: (e) => [
|
|
35051
|
-
e[0].mul(
|
|
35052
|
-
e[1].mul(r.x).mul(
|
|
35053
|
-
e[2].mul(
|
|
35051
|
+
e[0].mul(I(1).sub(r.x)).mul(I(1).sub(r.y)),
|
|
35052
|
+
e[1].mul(r.x).mul(I(1).sub(r.y)),
|
|
35053
|
+
e[2].mul(I(1).sub(r.x)).mul(r.y),
|
|
35054
35054
|
e[3].mul(r.x).mul(r.y)
|
|
35055
35055
|
],
|
|
35056
35056
|
filter: (e) => B(B(e[0], e[1], r.x), B(e[2], e[3], r.x), r.y)
|
|
@@ -35063,7 +35063,7 @@ var HS = class extends pi {
|
|
|
35063
35063
|
_sampleHistory(e, t, n, r, i) {
|
|
35064
35064
|
let a = X(0).toVar();
|
|
35065
35065
|
return N(i, () => {
|
|
35066
|
-
let n = tt(t).mul(J(this.resW, this.resH)), r =
|
|
35066
|
+
let n = tt(t).mul(J(this.resW, this.resH)), r = L(n.sub(.5)).add(.5), i = tt(n.sub(r)), o = _S, s = i.mul(i.mul(i.mul(-o).add(2 * o)).sub(o)), c = i.mul(i.mul(i.mul(2 - o).sub(3 - o))).add(1), l = i.mul(i.mul(i.mul(-(2 - o)).add(3 - 2 * o)).add(o)), u = i.mul(i.mul(i.mul(o).sub(o))), d = [
|
|
35067
35067
|
s.x,
|
|
35068
35068
|
c.x,
|
|
35069
35069
|
l.x,
|
|
@@ -35073,7 +35073,7 @@ var HS = class extends pi {
|
|
|
35073
35073
|
c.y,
|
|
35074
35074
|
l.y,
|
|
35075
35075
|
u.y
|
|
35076
|
-
], p = R(r.x).sub(1), m = R(r.y).sub(1), h = X(0).toVar(), g =
|
|
35076
|
+
], p = R(r.x).sub(1), m = R(r.y).sub(1), h = X(0).toVar(), g = I(0).toVar();
|
|
35077
35077
|
for (let t = 0; t < 4; t++) for (let n = 0; n < 4; n++) {
|
|
35078
35078
|
if ((n === 0 || n === 3) && (t === 0 || t === 3)) continue;
|
|
35079
35079
|
let r = d[n].mul(f[t]);
|
|
@@ -35113,21 +35113,21 @@ var HS = class extends pi {
|
|
|
35113
35113
|
} : (e) => W(u, e), x = M(([a, o]) => {
|
|
35114
35114
|
let u = R(Dt.x).mul(vS).add(R(Be.x)), x = R(Dt.y).mul(vS).add(R(Be.y));
|
|
35115
35115
|
N(u.lessThan(R(_)).and(x.lessThan(R(v))), () => {
|
|
35116
|
-
let S = Ie(u, x), C = St(G(u), G(x)), w = W(s, S).w.toVar(), T = w.greaterThanEqual(Bi), E = W(c, S).toVar(), D = V(E.xyz.mul(2).sub(1)).toVar(), O = E.w.clamp(.05, 1).toVar(), k =
|
|
35116
|
+
let S = Ie(u, x), C = St(G(u), G(x)), w = W(s, S).w.toVar(), T = w.greaterThanEqual(Bi), E = W(c, S).toVar(), D = V(E.xyz.mul(2).sub(1)).toVar(), O = E.w.clamp(.05, 1).toVar(), k = I(Bi).toVar(), A = b(S).toVar();
|
|
35117
35117
|
N(T.not(), () => {
|
|
35118
35118
|
let e = this._pixelUv(u, x), d = this._worldPosAt(e, w, a, o).toVar();
|
|
35119
35119
|
k.assign(h.mul(X(d, 1)).z.abs()), N(m.greaterThan(0), () => {
|
|
35120
|
-
let u =
|
|
35120
|
+
let u = F(D, this._viewVector(d, g, this.viewVector)).abs().toVar(), f = this._frustumSize(k).toVar(), x = y.add(1), C = t ? z(y, I(10)) : W(l, S).y.add(y), w = (t ? I(1).div(C.add(1)) : this._advancedNonLinear(C)).toVar(), T = TS(O, .5).toVar(), E = k.mul(Hi).add(3), ee = A.w.toVar(), te = tt(ee.mul(E).div(f)), j = I(1).sub(this._handover(x)), ne = (t ? te.div(x) : te.mul(w)).mul(j), re = i.minBlurRadius.mul(tt(I(2).sub(C.div(z(i.maxAccum, 1))))), ie = z(tt(U(tt(ne)).mul(n)).mul(m).mul(T), re.mul(T)).toVar(), ae = jS(i.planeDistSensitivity, f, d, D).toVar(), oe = DS(w, i.lobeAngleFraction, O, i.lobeVolumePercent).div(r).toVar(), se = OS(O, i.roughnessFraction.mul(r)).toVar(), ce = AS(ee, w).toVar(), le = i.minHitDistanceWeight.mul(r).mul(T);
|
|
35121
35121
|
t || (le = le.mul(w)), le = le.toVar();
|
|
35122
35122
|
let ue = J(1);
|
|
35123
35123
|
if (!t) {
|
|
35124
35124
|
let e = h.mul(X(D, 0)).xy;
|
|
35125
35125
|
ue = B(J(1).sub(e.abs()), J(1), u), ue = ue.div(z(ue.x, ue.y));
|
|
35126
35126
|
}
|
|
35127
|
-
let de = ue.mul(J(
|
|
35127
|
+
let de = ue.mul(J(I(1).div(_), I(1).div(v))).mul(ie).toVar(), fe = I(1).toVar();
|
|
35128
35128
|
for (let t = 0; t < xS.length; t++) {
|
|
35129
|
-
let n = xS[t], r = e.add(zS(p, J(n[0], n[1])).mul(de)), i = MS(r), l = H(i.x.notEqual(r.x).or(i.y.notEqual(r.y)),
|
|
35130
|
-
l.mulAssign(SS(h, oe,
|
|
35129
|
+
let n = xS[t], r = e.add(zS(p, J(n[0], n[1])).mul(de)), i = MS(r), l = H(i.x.notEqual(r.x).or(i.y.notEqual(r.y)), I(1), I(Math.exp(-.66 * n[2] * n[2]))).toVar(), u = this._uvToCoord(i), d = W(s, u).w, f = this._worldPosAt(i, d, a, o), m = W(c, u), h = wS(F(D, V(m.xyz.mul(2).sub(1))));
|
|
35130
|
+
l.mulAssign(SS(h, oe, I(0))), l.mulAssign(SS(m.w, se.x, se.y)), l.mulAssign(SS(F(D, f), ae.x, ae.y)), l.assign(H(d.greaterThanEqual(Bi), I(0), l));
|
|
35131
35131
|
let g = BS(l, b(u));
|
|
35132
35132
|
l.mulAssign(le.add(CS(g.w, ce.x, ce.y))), fe.addAssign(l), A.addAssign(g.mul(l));
|
|
35133
35133
|
}
|
|
@@ -35146,30 +35146,30 @@ var HS = class extends pi {
|
|
|
35146
35146
|
N(C.greaterThanEqual(Bi), () => {
|
|
35147
35147
|
gt(l, g, w).toWriteOnly(), gt(u, g, X(0)).toWriteOnly(), ge();
|
|
35148
35148
|
});
|
|
35149
|
-
let T = e.maxAccum.mul(
|
|
35149
|
+
let T = e.maxAccum.mul(I(1).sub(v)).toVar(), E = e.maxFast.mul(I(1).sub(v)).toVar(), D = W(n, h), O = V(D.xyz.mul(2).sub(1)).toVar(), k = D.w.clamp(.05, 1).toVar(), A = this._pixelUv(x, S), ee = this._worldPosAt(A, C, y, b).toVar(), te = d.mul(X(ee, 1)).z.abs().toVar(), j = F(O, this._viewVector(ee, p, this.viewVector)).abs().toVar(), ne = this._frustumSize(te).toVar(), re = Y(0).toVar();
|
|
35150
35150
|
re.addAssign(O.mul(.25));
|
|
35151
35151
|
for (let e = -1; e <= 0; e++) for (let r = -1; r <= 0; r++) {
|
|
35152
35152
|
if (r === 0 && e === 0) continue;
|
|
35153
35153
|
let i = this._clampCoord(x.add(r), S.add(e)), a = V(W(n, i).xyz.mul(2).sub(1)), o = W(t, i).w.lessThan(Bi);
|
|
35154
35154
|
re.addAssign(H(o, a, O).mul(.25));
|
|
35155
35155
|
}
|
|
35156
|
-
let ie = W(r, h), ae = A.sub(ie.xy).toVar(), oe = f.mul(X(ee, 1)).z.abs().toVar(), se = this._bilinear(ae), ce = ne.mul(tt(e.disocclusionThreshold.div(z(j, .05)))).sub(aS).toVar(), le =
|
|
35156
|
+
let ie = W(r, h), ae = A.sub(ie.xy).toVar(), oe = f.mul(X(ee, 1)).z.abs().toVar(), se = this._bilinear(ae), ce = ne.mul(tt(e.disocclusionThreshold.div(z(j, .05)))).sub(aS).toVar(), le = I(1).sub(v), ue = [], de = [];
|
|
35157
35157
|
for (let e = 0; e < 4; e++) {
|
|
35158
|
-
let t = W(c, se.taps[e]), n = H(
|
|
35158
|
+
let t = W(c, se.taps[e]), n = H(F(t.xyz, re).greaterThan(gS), I(1), I(0)), r = H(t.w.sub(oe).abs().lessThanEqual(ce), I(1), I(0)), i = H(t.w.lessThan(Bi), I(1), I(0));
|
|
35159
35159
|
ue.push(n.mul(r).mul(i).mul(se.inScreen[e]).mul(le).toVar()), de.push(W(s, se.taps[e]).x);
|
|
35160
35160
|
}
|
|
35161
|
-
let fe = se.customWeights(ue).map((e) => e.toVar()), pe = ue[0].add(ue[1]).add(ue[2]).add(ue[3]).greaterThan(3.5).toVar(), me = ue[0].add(ue[1].mul(2)).add(ue[2].mul(4)).add(ue[3].mul(8)), M = this._applyCustomWeights(de, fe,
|
|
35162
|
-
he.assign(B(
|
|
35161
|
+
let fe = se.customWeights(ue).map((e) => e.toVar()), pe = ue[0].add(ue[1]).add(ue[2]).add(ue[3]).greaterThan(3.5).toVar(), me = ue[0].add(ue[1].mul(2)).add(ue[2].mul(4)).add(ue[3].mul(8)), M = this._applyCustomWeights(de, fe, I(0)).toVar(), he = F(O, this._viewVector(ee, m, this.prevViewVector)).abs().add(.001).div(j.add(.001)).toVar();
|
|
35162
|
+
he.assign(B(I(.1), I(1), tt(he.mul(he))));
|
|
35163
35163
|
let _e = U(tt(se.filter(ue))).mul(he).toVar();
|
|
35164
|
-
M.assign(M.mul(B(_e,
|
|
35165
|
-
let ve = LS(this._sampleHistory((e) => W(a, e), ae, se, fe, pe)).toVar(), ye = z(this._applyCustomWeights(se.taps.map((e) => W(o, e).x), fe,
|
|
35166
|
-
De.assign(De.div(De.add(1)).mul(
|
|
35164
|
+
M.assign(M.mul(B(_e, I(1), I(1).div(M.add(1))))), M.assign(We(M, T));
|
|
35165
|
+
let ve = LS(this._sampleHistory((e) => W(a, e), ae, se, fe, pe)).toVar(), ye = z(this._applyCustomWeights(se.taps.map((e) => W(o, e).x), fe, I(0)), 0).toVar(), be = _.add(1), xe = this._handover(be).toVar(), Se = M.mul(I(1).sub(xe)), Ce = be.div(be.add(Se)).toVar(), we = I(1).div(I(1).add(TS(k, .25).mul(.5).mul(T))), Te = X(B(ve.xyz, w.xyz, Ce), B(ve.w, w.w, z(Ce, we))).toVar(), Ee = e.fireflyMinRelativeScale.add(I(pS).div(M.add(1))).toVar(), De = M.mul(e.maxBlurRadius).mul(mS).toVar();
|
|
35166
|
+
De.assign(De.div(De.add(1)).mul(I(1).sub(xe)));
|
|
35167
35167
|
let P = B(Te.x, We(Te.x, ve.x.mul(Ee)), De);
|
|
35168
35168
|
Te.assign(IS(Te, P));
|
|
35169
|
-
let Oe =
|
|
35169
|
+
let Oe = I(1.2).add(I(1).div(M.add(1)));
|
|
35170
35170
|
Te.assign(X(Te.xyz, B(Te.w, We(Te.w, ve.w.mul(Oe)), De))), gt(l, g, Te).toWriteOnly();
|
|
35171
|
-
let
|
|
35172
|
-
|
|
35171
|
+
let ke = We(M, E).mul(I(1).sub(xe)), Ae = be.div(be.add(ke)), je = B(ye, w.x, Ae).toVar(), Me = We(je, ve.x.mul(Ee).mul(hS));
|
|
35172
|
+
je.assign(B(je, Me, De)), gt(u, g, X(je, M, me, H(pe, I(1), I(0)))).toWriteOnly();
|
|
35173
35173
|
});
|
|
35174
35174
|
});
|
|
35175
35175
|
return this._dispatchOf(y);
|
|
@@ -35183,14 +35183,14 @@ var HS = class extends pi {
|
|
|
35183
35183
|
let e = W(r, h);
|
|
35184
35184
|
gt(a, g, e).toWriteOnly(), gt(o, g, X(e.x, 0, 0, 0)).toWriteOnly(), ge();
|
|
35185
35185
|
});
|
|
35186
|
-
let v = W(i, h).toVar(), y = v.y.toVar(), b = y.add(u), x = this._handover(u.add(1)).toVar(), S = W(n, h), C = V(S.xyz.mul(2).sub(1)).toVar(), w = S.w.clamp(.05, 1).toVar(), T = this._pixelUv(p, m), E = this._worldPosAt(T, _, d, f).toVar(), D = s.mul(X(E, 1)).z.abs(), O = this._frustumSize(D).toVar(), k = W(r, h).toVar(), A =
|
|
35186
|
+
let v = W(i, h).toVar(), y = v.y.toVar(), b = y.add(u), x = this._handover(u.add(1)).toVar(), S = W(n, h), C = V(S.xyz.mul(2).sub(1)).toVar(), w = S.w.clamp(.05, 1).toVar(), T = this._pixelUv(p, m), E = this._worldPosAt(T, _, d, f).toVar(), D = s.mul(X(E, 1)).z.abs(), O = this._frustumSize(D).toVar(), k = W(r, h).toVar(), A = I(1).div(b.add(1)).toVar(), ee = D.mul(Hi).add(3), te = tt(k.w.mul(ee).div(O)), j = k.w.toVar(), ne = $e(H(b.lessThan(e.historyFixFrameNum), I(1), I(0)).mul(.5).mul(2 / lS).mul(e.historyFixStride).mul(B(I(.25).add(U(te).mul(.75)), I(1), A))).toVar();
|
|
35187
35187
|
N(ne.notEqual(0), () => {
|
|
35188
|
-
let a = DS(A, e.lobeAngleFraction, w, e.lobeVolumePercent).toVar(), o = jS(e.planeDistSensitivity, O, E, C).toVar(), s = AS(j, A).toVar(), u = kS(w.mul(w), U(e.roughnessFraction), sS).toVar(), p =
|
|
35188
|
+
let a = DS(A, e.lobeAngleFraction, w, e.lobeVolumePercent).toVar(), o = jS(e.planeDistSensitivity, O, E, C).toVar(), s = AS(j, A).toVar(), u = kS(w.mul(w), U(e.roughnessFraction), sS).toVar(), p = I(1).add(y).toVar();
|
|
35189
35189
|
k.mulAssign(p);
|
|
35190
35190
|
for (let e = -lS; e <= lS; e++) for (let m = -lS; m <= lS; m++) {
|
|
35191
35191
|
if (m === 0 && e === 0 || Math.abs(m) + Math.abs(e) === lS * 2) continue;
|
|
35192
|
-
let h = MS(T.add(J(m, e).mul(ne).mul(J(
|
|
35193
|
-
b.mulAssign(CS(y.w.mul(y.w), u.x, u.y)), b.mulAssign(
|
|
35192
|
+
let h = MS(T.add(J(m, e).mul(ne).mul(J(I(1).div(c), I(1).div(l))))), g = this._uvToCoord(h), _ = W(t, g).w, v = this._worldPosAt(h, _, d, f), y = W(n, g), b = CS(wS(F(V(y.xyz.mul(2).sub(1)), C)), a, I(0)).toVar();
|
|
35193
|
+
b.mulAssign(CS(y.w.mul(y.w), u.x, u.y)), b.mulAssign(I(1).add(W(i, g).y)), b.mulAssign(SS(F(C, v), o.x, o.y)), b.assign(H(_.greaterThanEqual(Bi), I(0), b));
|
|
35194
35194
|
let x = BS(b, W(r, g));
|
|
35195
35195
|
b.mulAssign(CS(x.w, s.x, s.y)), p.addAssign(b), k.addAssign(x.mul(b));
|
|
35196
35196
|
}
|
|
@@ -35198,7 +35198,7 @@ var HS = class extends pi {
|
|
|
35198
35198
|
});
|
|
35199
35199
|
let re = k.x.toVar(), ie = tt(y.div(z(e.historyFixFrameNum, aS))), ae = B(re, v.x, ie).toVar();
|
|
35200
35200
|
gt(o, g, X(ae, 0, 0, 0)).toWriteOnly();
|
|
35201
|
-
let oe = ae.toVar(), se = ae.mul(ae).toVar(), ce =
|
|
35201
|
+
let oe = ae.toVar(), se = ae.mul(ae).toVar(), ce = I(0).toVar(), le = I(0).toVar(), ue = (e, n, r) => {
|
|
35202
35202
|
let a = this._clampCoord(p.add(e), m.add(n)), o = W(t, a).w, s = H(o.greaterThanEqual(Bi), ae, W(i, a).x);
|
|
35203
35203
|
Math.abs(e) <= uS && Math.abs(n) <= uS && (oe.addAssign(s), se.addAssign(s.mul(s))), r && (ce.addAssign(s), le.addAssign(s.mul(s)));
|
|
35204
35204
|
}, de = e.antiFirefly.greaterThan(.5);
|
|
@@ -35210,7 +35210,7 @@ var HS = class extends pi {
|
|
|
35210
35210
|
re.assign(B(re.clamp(t.sub(n), t.add(n)), re, x));
|
|
35211
35211
|
});
|
|
35212
35212
|
{
|
|
35213
|
-
let t = 1 / (uS * 2 + 1) ** 2, n = oe.mul(t), r = RS(n, se.mul(t)).mul(e.fastClampSigmaScale), i = re.clamp(n.sub(r), n.add(r)), a = H(e.maxFast.lessThan(e.maxAccum),
|
|
35213
|
+
let t = 1 / (uS * 2 + 1) ** 2, n = oe.mul(t), r = RS(n, se.mul(t)).mul(e.fastClampSigmaScale), i = re.clamp(n.sub(r), n.add(r)), a = H(e.maxFast.lessThan(e.maxAccum), I(1), I(0)), o = B(I(1).div(I(1).add(a.mul(y).mul(2))), I(1), x);
|
|
35214
35214
|
re.assign(B(i, re, o));
|
|
35215
35215
|
}
|
|
35216
35216
|
gt(a, g, IS(k, re)).toWriteOnly();
|
|
@@ -35232,7 +35232,7 @@ var HS = class extends pi {
|
|
|
35232
35232
|
2,
|
|
35233
35233
|
4,
|
|
35234
35234
|
8
|
|
35235
|
-
].map((e) => H(D.bitAnd(G(e)).notEqual(G(0)),
|
|
35235
|
+
].map((e) => H(D.bitAnd(G(e)).notEqual(G(0)), I(1), I(0))), ee = k.customWeights(A).map((e) => e.toVar()), te = U(tt(k.filter(A))).toVar(), j = W(s, f).toVar(), ne = j.x.toVar(), re = ne.toVar(), ie = ne.mul(ne).toVar();
|
|
35236
35236
|
for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) {
|
|
35237
35237
|
if (t === 0 && e === 0) continue;
|
|
35238
35238
|
let n = this._clampCoord(_.add(t), v.add(e)), r = W(i, n).w, a = H(r.greaterThanEqual(Bi), ne, W(s, n).x);
|
|
@@ -35241,18 +35241,18 @@ var HS = class extends pi {
|
|
|
35241
35241
|
re.divAssign(9), ie.divAssign(9);
|
|
35242
35242
|
let ae = RS(re, ie).toVar();
|
|
35243
35243
|
N(E.lessThan(t.historyFixFrameNum), () => {
|
|
35244
|
-
ne.assign(We(ne, re.mul(
|
|
35244
|
+
ne.assign(We(ne, re.mul(I(1.2).add(I(1).div(E.add(1))))));
|
|
35245
35245
|
});
|
|
35246
|
-
let oe = z(this._sampleHistory((e) => W(l, e), w, k, ee, O).x, 0).toVar(), se = ae.mul(t.antilag.x), ce = t.antilag.y.mul(4), le = oe.clamp(re.sub(se), re.add(se)), ue = oe.sub(le).abs().div(z(oe, le).add(aS)), de =
|
|
35246
|
+
let oe = z(this._sampleHistory((e) => W(l, e), w, k, ee, O).x, 0).toVar(), se = ae.mul(t.antilag.x), ce = t.antilag.y.mul(4), le = oe.clamp(re.sub(se), re.add(se)), ue = oe.sub(le).abs().div(z(oe, le).add(aS)), de = I(1).div(I(1).add(ue.mul(E.mul(te)).div(ce))).toVar(), fe = We(E, t.historyFixFrameNum);
|
|
35247
35247
|
E.assign(B(fe, E, de));
|
|
35248
|
-
let pe = m.add(1), me = this._handover(pe), M = te.mul(
|
|
35248
|
+
let pe = m.add(1), me = this._handover(pe), M = te.mul(I(1).sub(this._advancedNonLinear(E.mul(I(1).sub(me)).div(pe)))).mul(de).toVar(), he = I(1).add(M.mul(6)), _e = t.stabilizationStrength.mul(I(1).sub(h)), ve = B(ne, oe.clamp(re.sub(ae.mul(he)), re.add(ae.mul(he))), We(M, _e)).toVar();
|
|
35249
35249
|
j.assign(IS(j, ve)), gt(e, p, X(ve, 0, 0, 0)).toWriteOnly();
|
|
35250
|
-
let ye = t.maxAccum.mul(
|
|
35250
|
+
let ye = t.maxAccum.mul(I(1).sub(h));
|
|
35251
35251
|
gt(u, p, X(We(E.add(1), ye), x, 0, 0)).toWriteOnly();
|
|
35252
35252
|
let be = W(r, f), xe = X(PS(j.xyz).mul(z(be.xyz, Y(Ui))), b.w).toVar();
|
|
35253
35253
|
N(g.equal(R(1)), () => {
|
|
35254
35254
|
let e = tt(E.div(z(t.maxAccum, 1)));
|
|
35255
|
-
xe.assign(X(
|
|
35255
|
+
xe.assign(X(I(1).sub(e), e, .2, 1));
|
|
35256
35256
|
}).ElseIf(g.equal(R(2)), () => {
|
|
35257
35257
|
xe.assign(X(Y(j.w), 1));
|
|
35258
35258
|
}).ElseIf(g.equal(R(3)), () => {
|
|
@@ -35346,7 +35346,7 @@ var HS = class extends pi {
|
|
|
35346
35346
|
for (let [e, t] of this._placeholders) e.dispose(), t.dispose();
|
|
35347
35347
|
this._placeholders.clear();
|
|
35348
35348
|
}
|
|
35349
|
-
}, US = (e) => H(e.equal(e), e,
|
|
35349
|
+
}, US = (e) => H(e.equal(e), e, I(0)).clamp(0, 1e7), WS = /* @__PURE__ */ wt("\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"), GS = class extends pi {
|
|
35350
35350
|
constructor(e, t = {}) {
|
|
35351
35351
|
super("VarianceEstimation", {
|
|
35352
35352
|
...t,
|
|
@@ -35378,13 +35378,13 @@ var HS = class extends pi {
|
|
|
35378
35378
|
}), Et();
|
|
35379
35379
|
let g = R(Dt.x).mul(8).add(R(c)), _ = R(Dt.y).mul(8).add(R(l));
|
|
35380
35380
|
N(g.lessThan(R(a)).and(_.lessThan(R(o))), () => {
|
|
35381
|
-
let n =
|
|
35381
|
+
let n = I(0).toVar(), a = I(0).toVar();
|
|
35382
35382
|
for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) {
|
|
35383
35383
|
let r = s.element(l.add(1 + e).mul(10).add(c.add(1 + t)));
|
|
35384
35384
|
n.addAssign(r), a.addAssign(r.mul(r));
|
|
35385
35385
|
}
|
|
35386
35386
|
n.divAssign(9), a.divAssign(9);
|
|
35387
|
-
let o = z(a.sub(n.mul(n)),
|
|
35387
|
+
let o = z(a.sub(n.mul(n)), I(0)), u = s.element(l.add(1).mul(10).add(c.add(1))), d = W(t, Ie(g, _));
|
|
35388
35388
|
gt(e, St(G(g), G(_)), WS(u, d.x, d.y, r, o, i)).toWriteOnly();
|
|
35389
35389
|
});
|
|
35390
35390
|
})().compute([
|
|
@@ -35489,15 +35489,15 @@ var HS = class extends pi {
|
|
|
35489
35489
|
return M(() => {
|
|
35490
35490
|
let v = R(Dt.x).mul(8).add(R(Be.x)), y = R(Dt.y).mul(8).add(R(Be.y));
|
|
35491
35491
|
N(v.lessThan(R(h)).and(y.lessThan(R(g))), () => {
|
|
35492
|
-
let b = Ie(v, y), x = W(t, b), S = x.xyz, C = W(n, b), w = W(r, b).xyz.mul(2).sub(1), T = C.w, E = Sc(S), D = z(W(i, b).xyz, Y(Ui)), O = z(Sc(D),
|
|
35492
|
+
let b = Ie(v, y), x = W(t, b), S = x.xyz, C = W(n, b), w = W(r, b).xyz.mul(2).sub(1), T = C.w, E = Sc(S), D = z(W(i, b).xyz, Y(Ui)), O = z(Sc(D), I(Ui)).toVar(), k = m.equal(R(1)), A = (e) => {
|
|
35493
35493
|
let t = W(a, e);
|
|
35494
35494
|
return B(t.z, z(t.z, t.w), d);
|
|
35495
|
-
}, ee = k.select(A(b), x.w.mul(x.w)).toVar(), te = u.mul(U(z(ee,
|
|
35495
|
+
}, ee = k.select(A(b), x.w.mul(x.w)).toVar(), te = u.mul(U(z(ee, I(0)))).div(O).add(I(1e-4)), j = Y(0).toVar(), ne = I(0).toVar(), re = I(0).toVar();
|
|
35496
35496
|
for (let e = 0; e < 5; e++) for (let i = 0; i < 5; i++) {
|
|
35497
|
-
let a = i - 2, o = e - 2, u = _[e * 5 + i], d = v.add(f.mul(a)).clamp(R(0), R(h).sub(1)), p = y.add(f.mul(o)).clamp(R(0), R(g).sub(1)), m = W(t, Ie(d, p)), b = m.xyz, x = W(n, Ie(d, p)), C = W(r, Ie(d, p)).xyz.mul(2).sub(1), D = x.w, O = KS(E, Sc(b), w, C, T, D, S, b,
|
|
35498
|
-
j.addAssign(b.mul(O)), ne.addAssign(O), re.addAssign(O.mul(O).mul(z(ee,
|
|
35497
|
+
let a = i - 2, o = e - 2, u = _[e * 5 + i], d = v.add(f.mul(a)).clamp(R(0), R(h).sub(1)), p = y.add(f.mul(o)).clamp(R(0), R(g).sub(1)), m = W(t, Ie(d, p)), b = m.xyz, x = W(n, Ie(d, p)), C = W(r, Ie(d, p)).xyz.mul(2).sub(1), D = x.w, O = KS(E, Sc(b), w, C, T, D, S, b, I(u), te, c, l, s), ee = k.select(A(Ie(d, p)), m.w.mul(m.w));
|
|
35498
|
+
j.addAssign(b.mul(O)), ne.addAssign(O), re.addAssign(O.mul(O).mul(z(ee, I(0))));
|
|
35499
35499
|
}
|
|
35500
|
-
let ie = j.div(z(ne,
|
|
35500
|
+
let ie = j.div(z(ne, I(1e-4))), ae = re.div(z(ne.mul(ne), I(1e-8))), oe = p.equal(R(1)), se = oe.select(ie.mul(D), ie), ce = oe.select(W(o, b).w, U(z(ae, I(0))));
|
|
35501
35501
|
gt(e, St(G(v), G(y)), X(se, ce)).toWriteOnly();
|
|
35502
35502
|
});
|
|
35503
35503
|
})().compute([
|
|
@@ -35553,7 +35553,7 @@ var HS = class extends pi {
|
|
|
35553
35553
|
dispose() {
|
|
35554
35554
|
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(), this._srcAlphaTexNode?.dispose();
|
|
35555
35555
|
}
|
|
35556
|
-
}, JS = 6e4, YS = (e) => H(e.equal(e), e,
|
|
35556
|
+
}, JS = 6e4, YS = (e) => H(e.equal(e), e, I(0)).clamp(0, 1e7), XS = (e) => Y(YS(e.x), YS(e.y), YS(e.z)), ZS = 4, QS = [
|
|
35557
35557
|
1 / 256,
|
|
35558
35558
|
4 / 256,
|
|
35559
35559
|
6 / 256,
|
|
@@ -35607,7 +35607,7 @@ var HS = class extends pi {
|
|
|
35607
35607
|
return M(() => {
|
|
35608
35608
|
let o = R(Dt.x).mul(16).add(R(Be.x)), s = R(Dt.y).mul(16).add(R(Be.y));
|
|
35609
35609
|
N(o.lessThan(R(i)).and(s.lessThan(R(a))), () => {
|
|
35610
|
-
let i = Ie(o, s), a = W(e, i).xyz, c = W(t, i).w.lessThan(
|
|
35610
|
+
let i = Ie(o, s), a = W(e, i).xyz, c = W(t, i).w.lessThan(I(JS)), l = W(n, i).xyz, u = H(c, z(l, Y(Ui)), Y(1)), d = XS(a.div(u));
|
|
35611
35611
|
gt(r, St(G(o), G(s)), X(d, 1)).toWriteOnly();
|
|
35612
35612
|
});
|
|
35613
35613
|
})().compute([
|
|
@@ -35625,15 +35625,15 @@ var HS = class extends pi {
|
|
|
35625
35625
|
return M(() => {
|
|
35626
35626
|
let _ = R(Dt.x).mul(16).add(R(Be.x)), v = R(Dt.y).mul(16).add(R(Be.y));
|
|
35627
35627
|
N(_.lessThan(R(h)).and(v.lessThan(R(g))), () => {
|
|
35628
|
-
let y = Ie(_, v), b = W(t, y), x = b.xyz, S = Sc(x), C = W(r, y).w, w = W(i, y).xyz.mul(2).sub(1), T = C.lessThan(
|
|
35628
|
+
let y = Ie(_, v), b = W(t, y), x = b.xyz, S = Sc(x), C = W(r, y).w, w = W(i, y).xyz.mul(2).sub(1), T = C.lessThan(I(JS)), E = H(T, I(1), I(0)), D = W(a, y).xyz, O = H(T, z(D, Y(Ui)), Y(1)), k = z(Sc(O), I(Ui)), A = p.equal(R(1)), ee = m.lessThan(R(ZS)), te = (e) => {
|
|
35629
35629
|
let t = W(o, e);
|
|
35630
35630
|
return H(ee, z(t.z, t.w), t.z);
|
|
35631
|
-
}, j = A.select(te(y), b.w.mul(b.w)).toVar(), ne = c.mul(U(z(j,
|
|
35631
|
+
}, j = A.select(te(y), b.w.mul(b.w)).toVar(), ne = c.mul(U(z(j, I(0)))).div(k).add(I(1e-4)), re = Y(0).toVar(), ie = I(0).toVar(), ae = I(0).toVar();
|
|
35632
35632
|
for (let e = 0; e < 5; e++) for (let n = 0; n < 5; n++) {
|
|
35633
|
-
let a = n - 2, o = e - 2, s = QS[e * 5 + n], c = Ie(_.add(d.mul(a)).clamp(R(0), R(h).sub(1)), v.add(d.mul(o)).clamp(R(0), R(g).sub(1))), f = W(t, c), p = f.xyz, m = Sc(p), y = W(r, c).w, b = W(i, c).xyz.mul(2).sub(1), x = H(y.lessThan(
|
|
35634
|
-
re.addAssign(p.mul(se)), ie.addAssign(se), ae.addAssign(se.mul(se).mul(z(ce,
|
|
35633
|
+
let a = n - 2, o = e - 2, s = QS[e * 5 + n], c = Ie(_.add(d.mul(a)).clamp(R(0), R(h).sub(1)), v.add(d.mul(o)).clamp(R(0), R(g).sub(1))), f = W(t, c), p = f.xyz, m = Sc(p), y = W(r, c).w, b = W(i, c).xyz.mul(2).sub(1), x = H(y.lessThan(I(JS)), I(1), I(0)), T = S.sub(m).abs().div(ne).negate().exp(), D = Xe(F(w, b).clamp(0, 1), l), O = C.sub(y).abs().div(z(C.mul(u), I(.001))).negate().exp(), k = E.mul(x), ee = E.oneMinus().mul(x.oneMinus()), j = k.add(ee), oe = B(I(1), D.mul(O), k), se = I(s).mul(T).mul(oe).mul(j), ce = A.select(te(c), f.w.mul(f.w));
|
|
35634
|
+
re.addAssign(p.mul(se)), ie.addAssign(se), ae.addAssign(se.mul(se).mul(z(ce, I(0))));
|
|
35635
35635
|
}
|
|
35636
|
-
let oe = re.div(z(ie,
|
|
35636
|
+
let oe = re.div(z(ie, I(1e-4))), se = ae.div(z(ie.mul(ie), I(1e-8))), ce = f.equal(R(1)), le = W(n, y).xyz, ue = B(le, oe.mul(O), s), de = ce.select(ue, oe), fe = ce.select(W(n, y).w, U(z(se, I(0))));
|
|
35637
35637
|
gt(e, St(G(_), G(v)), X(de, fe)).toWriteOnly();
|
|
35638
35638
|
});
|
|
35639
35639
|
})().compute([
|
|
@@ -35716,9 +35716,9 @@ var HS = class extends pi {
|
|
|
35716
35716
|
_buildDownsampleCompute() {
|
|
35717
35717
|
let e = this._inputTexNode, t = this._downsampleStorageTex, n = this.epsilonU, r = this.inputResW, i = this.inputResH;
|
|
35718
35718
|
this._downsampleComputeNode = M(() => {
|
|
35719
|
-
let a = R(Dt.x).mul(8).add(R(Be.x)), o = R(Dt.y).mul(8).add(R(Be.y)), s = r.div(
|
|
35719
|
+
let a = R(Dt.x).mul(8).add(R(Be.x)), o = R(Dt.y).mul(8).add(R(Be.y)), s = r.div(I(64)), c = i.div(I(64)), l = I(a).mul(s), u = I(o).mul(c), d = I(0).toVar(), f = I(0).toVar();
|
|
35720
35720
|
for (let t = 0; t < 4; t++) for (let r = 0; r < 4; r++) {
|
|
35721
|
-
let i = Sc(W(e, Ie(R(l.add(
|
|
35721
|
+
let i = Sc(W(e, Ie(R(l.add(I((r + .5) / 4).mul(s))), R(u.add(I((t + .5) / 4).mul(c))))).xyz);
|
|
35722
35722
|
N(i.greaterThan(n), () => {
|
|
35723
35723
|
d.addAssign(i.add(n).log()), f.addAssign(1);
|
|
35724
35724
|
});
|
|
@@ -35742,7 +35742,7 @@ var HS = class extends pi {
|
|
|
35742
35742
|
for (let i = 0; i < 16; i++) {
|
|
35743
35743
|
let a = r.mul(16).add(i), o = a.mod(64), s = a.div(64), c = W(e, Ie(R(o), R(s))), l = c.x, u = c.y;
|
|
35744
35744
|
N(u.greaterThan(0), () => {
|
|
35745
|
-
let e = G(l.div(u).sub(
|
|
35745
|
+
let e = G(l.div(u).sub(I(tC)).div(I(nC)).mul(I(eC)).floor().clamp(0, I(eC - 1))), r = I(o).add(.5).div(I(64)), i = I(s).add(.5).div(I(64)), a = r.sub(.5), c = i.sub(.5), d = G(a.mul(a).add(c.mul(c)).mul(n).negate().exp().mul(I(iC)));
|
|
35746
35746
|
Ce(t.element(e), d);
|
|
35747
35747
|
});
|
|
35748
35748
|
}
|
|
@@ -35759,19 +35759,19 @@ var HS = class extends pi {
|
|
|
35759
35759
|
_buildHistogramAnalyzeCompute() {
|
|
35760
35760
|
let e = this._histogramBuffer, t = this._reductionStorageTex, n = this.lowPercentileU, r = this.highPercentileU;
|
|
35761
35761
|
this._histogramAnalyzeNode = M(() => {
|
|
35762
|
-
let i =
|
|
35762
|
+
let i = I(0).toVar();
|
|
35763
35763
|
he(eC, ({ i: t }) => {
|
|
35764
|
-
i.addAssign(
|
|
35764
|
+
i.addAssign(I(we(e.element(t))));
|
|
35765
35765
|
});
|
|
35766
|
-
let a = i.mul(n), o = i.mul(r), s =
|
|
35766
|
+
let a = i.mul(n), o = i.mul(r), s = I(0).toVar(), c = I(0).toVar(), l = I(0).toVar(), u = I(0).toVar();
|
|
35767
35767
|
he(eC, ({ i: t }) => {
|
|
35768
|
-
let n =
|
|
35768
|
+
let n = I(we(e.element(t)));
|
|
35769
35769
|
u.assign(s), s.addAssign(n), N(u.lessThan(o).and(s.greaterThan(a)), () => {
|
|
35770
|
-
let e =
|
|
35770
|
+
let e = I(tC).add(I(t).add(.5).mul(I(rC)));
|
|
35771
35771
|
c.addAssign(e.mul(n)), l.addAssign(n);
|
|
35772
35772
|
});
|
|
35773
35773
|
});
|
|
35774
|
-
let d = z(l,
|
|
35774
|
+
let d = z(l, I(1)), f = c.div(d), p = f.exp();
|
|
35775
35775
|
gt(t, St(G(0), G(0)), X(p, i, f, 1)).toWriteOnly();
|
|
35776
35776
|
})().compute(1, [
|
|
35777
35777
|
1,
|
|
@@ -35852,7 +35852,7 @@ var HS = class extends pi {
|
|
|
35852
35852
|
...t,
|
|
35853
35853
|
executionMode: fi.ALWAYS
|
|
35854
35854
|
}), this.renderer = e, this.saturation = K(t.saturation ?? 1), this._transparentBackground = K(0, "int"), this._pathTracer = t.pathTracer ?? null, this._convergenceOverlay = !1, this._debugMaterial = null, this._debugQuad = null, this._debugTexNode = null, this._debugM2Attr = null, this._debugMaskAttr = null, this._debugExposureComp = K(1), this._sourceTexNode = new de();
|
|
35855
|
-
let n = this._sourceTexNode.sample(xt()), r = B(Y(
|
|
35855
|
+
let n = this._sourceTexNode.sample(xt()), r = B(Y(F(n.xyz, pc)), n.xyz, this.saturation), i = H(this._transparentBackground, n.w, 1);
|
|
35856
35856
|
this.compositorMaterial = new ne(), this.compositorMaterial.colorNode = X(r, i), this.compositorMaterial.blending = Cn, this.compositorQuad = new ie(this.compositorMaterial);
|
|
35857
35857
|
}
|
|
35858
35858
|
_resolveSourceTexture(e) {
|
|
@@ -35867,8 +35867,8 @@ var HS = class extends pi {
|
|
|
35867
35867
|
if (this._debugMaterial && this._debugM2Attr === e.m2 && this._debugMaskAttr === e.frozenMask) return !0;
|
|
35868
35868
|
this._debugMaterial?.dispose(), this._debugTexNode?.dispose(), this._debugM2Attr = e.m2, this._debugMaskAttr = e.frozenMask, this._debugTexNode = new de();
|
|
35869
35869
|
let t = M(() => {
|
|
35870
|
-
let t =
|
|
35871
|
-
return N(p.greaterThanEqual(
|
|
35870
|
+
let t = F(this._debugTexNode.sample(xt()).toVar().xyz, pc).toVar(), n = e.renderWidth, r = e.renderHeight, i = R(xt().x.mul(I(n))).min(n.sub(R(1))).max(R(0)), a = G(R(xt().y.mul(I(r))).min(r.sub(R(1))).max(R(0)).mul(n).add(i)).toVar(), o = st(e.m2, "float").toReadOnly().element(a).toVar(), s = st(e.frozenMask, "uint").toReadOnly().element(a).toVar(), c = o.sub(t.mul(t)).max(I(0)).div(I(e.frame).add(1)).sqrt().toVar(), l = e.usePixelFreeze.greaterThan(R(0)), u = H(t.lessThan(I(1)), t.sqrt(), t).toVar(), d = H(l, c.div(t.add(I(1e-4))), c.div(u.add(I(1e-4)))).toVar(), f = H(l, e.pixelFreezeThreshold, e.noiseThreshold).toVar(), p = d.div(f.max(I(1e-6))).toVar(), m = Y(t.div(t.add(I(1))).sqrt().mul(.55)).toVar(), h = m.toVar(), g = I(e.frame).greaterThanEqual(I(e.adaptiveMinSamples));
|
|
35871
|
+
return N(p.greaterThanEqual(I(1)).or(g.not()), () => {
|
|
35872
35872
|
let e = B(Y(1, .8, .1), Y(1, .1, .05), p.sub(1).div(3).clamp(0, 1));
|
|
35873
35873
|
h.assign(B(m, e, .85));
|
|
35874
35874
|
}), N(s.equal(G(1)).and(l), () => {
|
|
@@ -44704,30 +44704,30 @@ var yk = {
|
|
|
44704
44704
|
}
|
|
44705
44705
|
}
|
|
44706
44706
|
}
|
|
44707
|
-
onRenderComplete({ isStillComplete: e
|
|
44707
|
+
onRenderComplete({ isStillComplete: e }) {
|
|
44708
44708
|
this._cleanupCompletionListener();
|
|
44709
|
-
let
|
|
44710
|
-
if (this.denoiser?.removeEventListener("end",
|
|
44711
|
-
if (
|
|
44709
|
+
let t = this.finalDenoise ? "final" : this.continuousDenoise ? "refresh" : null, n = () => {
|
|
44710
|
+
if (this.denoiser?.removeEventListener("end", n), this._pendingStartUpscaler = null, e()) {
|
|
44711
|
+
if (t && this._onDisplayRefresh?.(), this.neuralRendering || this.upscaler?.enabled && this.upscalerBackend === "neural") {
|
|
44712
44712
|
this._runNeuralPost(e);
|
|
44713
44713
|
return;
|
|
44714
44714
|
}
|
|
44715
44715
|
this.upscaler?.enabled && this.upscaler.start();
|
|
44716
44716
|
}
|
|
44717
44717
|
};
|
|
44718
|
-
if (!
|
|
44719
|
-
|
|
44718
|
+
if (!t) {
|
|
44719
|
+
n();
|
|
44720
44720
|
return;
|
|
44721
44721
|
}
|
|
44722
|
-
let
|
|
44723
|
-
e() && (this._pendingStartUpscaler =
|
|
44722
|
+
let r = () => {
|
|
44723
|
+
e() && (this._pendingStartUpscaler = n, this.denoiser.addEventListener("end", n), t === "final" ? (this._useFinalQuality(), this.denoiser.start()) : this.denoiser.start({ continuous: !0 }));
|
|
44724
44724
|
};
|
|
44725
44725
|
if (this._resetCadence(), this.denoiser.state.isDenoising) {
|
|
44726
44726
|
let e = () => {
|
|
44727
|
-
this.denoiser?.removeEventListener("end", e), this._pendingCloseDenoise === e && (this._pendingCloseDenoise = null),
|
|
44727
|
+
this.denoiser?.removeEventListener("end", e), this._pendingCloseDenoise === e && (this._pendingCloseDenoise = null), r();
|
|
44728
44728
|
};
|
|
44729
44729
|
this._pendingCloseDenoise = e, this.denoiser.addEventListener("end", e);
|
|
44730
|
-
} else
|
|
44730
|
+
} else r();
|
|
44731
44731
|
}
|
|
44732
44732
|
abort(e, { keepDisplay: t = !1 } = {}) {
|
|
44733
44733
|
this._cleanupCompletionListener(), this._restoreRenderDisplay(), e && e !== this.mainCanvas && (e.style.opacity = "1"), this.upscaler && this.upscaler.abort();
|
|
@@ -45749,7 +45749,7 @@ var dA = class extends Qt {
|
|
|
45749
45749
|
}
|
|
45750
45750
|
this._sceneHelpers?.clear(), this._sceneHelpers = null, this.scene?.clear(), this.scene = null;
|
|
45751
45751
|
try {
|
|
45752
|
-
let e = pt().value, t =
|
|
45752
|
+
let e = pt().value, t = Ae().value;
|
|
45753
45753
|
e?._listeners?.dispose && (e._listeners.dispose.length = 0), t?._listeners?.dispose && (t._listeners.dispose.length = 0);
|
|
45754
45754
|
} catch (e) {
|
|
45755
45755
|
sA.warn("failed to clear TSL texture singleton listeners", e);
|