rayzee 9.1.0 → 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 +646 -640
- package/dist/rayzee.umd.js +21 -21
- package/package.json +1 -1
- package/src/Processor/IESParser.js +1 -2
- package/src/Processor/KernelManager.js +4 -1
- 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);
|
|
@@ -31502,11 +31502,17 @@ var Ry = class {
|
|
|
31502
31502
|
}
|
|
31503
31503
|
setDispatchForCount(e, t) {
|
|
31504
31504
|
let n = this.kernels.get(e);
|
|
31505
|
-
|
|
31506
|
-
|
|
31505
|
+
if (!n) return;
|
|
31506
|
+
let r = Math.ceil(t / n.workgroupSize[0]), i = this.renderer?.backend?.device?.limits.maxComputeWorkgroupsPerDimension ?? 65535;
|
|
31507
|
+
n.dispatchSize = r > i ? [
|
|
31508
|
+
i,
|
|
31509
|
+
Math.ceil(r / i),
|
|
31510
|
+
1
|
|
31511
|
+
] : [
|
|
31512
|
+
r,
|
|
31507
31513
|
1,
|
|
31508
31514
|
1
|
|
31509
|
-
]
|
|
31515
|
+
];
|
|
31510
31516
|
}
|
|
31511
31517
|
setDispatchForGrid(e, t, n) {
|
|
31512
31518
|
let r = this.kernels.get(e);
|
|
@@ -31572,7 +31578,7 @@ var Gy = (e, t, n, r) => ({
|
|
|
31572
31578
|
}, qy = M(([e, t, n, r]) => {
|
|
31573
31579
|
let i = Y(t[3]).toVar();
|
|
31574
31580
|
return N(Uy(r), () => {
|
|
31575
|
-
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));
|
|
31576
31582
|
i.assign(t.mul(X(r.xy, 0, 1)).xyz);
|
|
31577
31583
|
}), i;
|
|
31578
31584
|
}), Jy = M(([e, t, n, r, i, a, o]) => {
|
|
@@ -31581,27 +31587,27 @@ var Gy = (e, t, n, r) => ({
|
|
|
31581
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();
|
|
31582
31588
|
N(o.equal(R(1)), () => {
|
|
31583
31589
|
let e = Y(t[2].x, 0, t[2].z).toVar();
|
|
31584
|
-
N(
|
|
31590
|
+
N(F(e, e).lessThan(I(1e-8)), () => {
|
|
31585
31591
|
e.assign(Y(t[1].x, 0, t[1].z));
|
|
31586
|
-
}), 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));
|
|
31587
31593
|
}).Else(() => {
|
|
31588
31594
|
l.assign(V(Y(t[0]))), u.assign(V(Y(t[1]))), d.assign(V(Y(t[2])));
|
|
31589
31595
|
}), s.assign(V(l.mul(it(n).mul(c)).add(u.mul(it(r))).sub(d.mul(Oe(n).mul(c)))));
|
|
31590
31596
|
}).ElseIf(Uy(r), () => {
|
|
31591
31597
|
s.assign(V(Y(t[2])).negate());
|
|
31592
31598
|
}).Else(() => {
|
|
31593
|
-
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));
|
|
31594
31600
|
s.assign(V(Ue(t[0].xyz, t[1].xyz, t[2].xyz).mul(i.xyz.div(i.w))));
|
|
31595
31601
|
}), s;
|
|
31596
31602
|
}), Yy = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g]) => {
|
|
31597
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)));
|
|
31598
31604
|
return N(c.and(S).and(d.greaterThan(.001)), () => {
|
|
31599
|
-
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();
|
|
31600
31606
|
N(i.equal(Vy), () => {
|
|
31601
31607
|
S.assign(Tc({ N: v }).mul(Y(c, h, 0)));
|
|
31602
31608
|
}).Else(() => {
|
|
31603
31609
|
let e = V(Y(n[0])), t = V(Y(n[1]));
|
|
31604
|
-
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()));
|
|
31605
31611
|
}), y.assign(_.add(S.mul(a))), b.assign(V(_.add(v.mul(C)).sub(y)));
|
|
31606
31612
|
}), Hs({
|
|
31607
31613
|
origin: y,
|
|
@@ -31609,27 +31615,27 @@ var Gy = (e, t, n, r) => ({
|
|
|
31609
31615
|
});
|
|
31610
31616
|
});
|
|
31611
31617
|
function Xy(e) {
|
|
31612
|
-
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,
|
|
31613
|
-
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({
|
|
31614
31620
|
pixelCoord: C,
|
|
31615
31621
|
rayIndex: R(0),
|
|
31616
31622
|
frame: a
|
|
31617
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));
|
|
31618
|
-
_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,
|
|
31619
|
-
ll(r, S, Y(0, 0, 1),
|
|
31620
|
-
}), 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);
|
|
31621
31627
|
};
|
|
31622
31628
|
return M(() => {
|
|
31623
|
-
if (
|
|
31629
|
+
if (E) {
|
|
31624
31630
|
let e = Fe;
|
|
31625
|
-
N(e.lessThan(we(
|
|
31626
|
-
let t = R(
|
|
31627
|
-
|
|
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));
|
|
31628
31634
|
});
|
|
31629
31635
|
} else {
|
|
31630
31636
|
let e = R(Dt.x).mul(16).add(R(Be.x)), t = R(Dt.y).mul(16).add(R(Be.y));
|
|
31631
31637
|
N(e.lessThan(x).and(t.lessThan(C)), () => {
|
|
31632
|
-
|
|
31638
|
+
A(e, t.add(S), G(t.mul(x).add(e)));
|
|
31633
31639
|
});
|
|
31634
31640
|
}
|
|
31635
31641
|
});
|
|
@@ -31642,7 +31648,7 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31642
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]) => {
|
|
31643
31649
|
let a = i ?? De(!1), o = n.value?.foldedLeaves === !0, s = ib(o), c = qs({
|
|
31644
31650
|
didHit: !1,
|
|
31645
|
-
dst:
|
|
31651
|
+
dst: I(0x56bc75e2d63100000),
|
|
31646
31652
|
hitPoint: Y(0),
|
|
31647
31653
|
normal: Y(0),
|
|
31648
31654
|
uv: J(0),
|
|
@@ -31651,7 +31657,7 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31651
31657
|
instanceLeaf: R(-1),
|
|
31652
31658
|
boxTests: R(0),
|
|
31653
31659
|
triTests: R(0)
|
|
31654
|
-
}).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();
|
|
31655
31661
|
f.element(R(0)).assign(R(0));
|
|
31656
31662
|
let m = Y(t.origin).toVar(), h = Y(t.direction).toVar(), g = ab(h).toVar(), _ = lb({
|
|
31657
31663
|
rayDir: h,
|
|
@@ -31673,7 +31679,7 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31673
31679
|
woopParams: x
|
|
31674
31680
|
});
|
|
31675
31681
|
N(p.w.greaterThan(.5), () => {
|
|
31676
|
-
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))));
|
|
31677
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))), () => {
|
|
31678
31684
|
c.didHit.assign(!0), c.dst.assign(e), l.assign(n), u.assign(t), d.assign(i), w.assign(S);
|
|
31679
31685
|
});
|
|
@@ -31689,13 +31695,13 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31689
31695
|
let r = () => {
|
|
31690
31696
|
let r = t, i = Mc(n, r, R(0), R($y));
|
|
31691
31697
|
e && c.boxTests.addAssign(1);
|
|
31692
|
-
let a =
|
|
31698
|
+
let a = Ne(i.w).toVar();
|
|
31693
31699
|
N(s(a), () => {
|
|
31694
31700
|
N(a.equal(G(pa.TRIANGLE_LEAF)), () => {
|
|
31695
|
-
T(
|
|
31701
|
+
T(Ne(i.x), Ne(i.y));
|
|
31696
31702
|
}).Else(() => {
|
|
31697
31703
|
N(i.z.greaterThan(.5).and(p.lessThan(R(Zy))), () => {
|
|
31698
|
-
N(
|
|
31704
|
+
N(Ne(i.y).bitAnd(G(da)).equal(G(0)), () => {
|
|
31699
31705
|
let e = Wc(n, r), t = sb(e, h).toVar();
|
|
31700
31706
|
v.assign(ob(e, m)), y.assign(t);
|
|
31701
31707
|
let i = ab(t).toVar();
|
|
@@ -31705,11 +31711,11 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31705
31711
|
})), S.assign(r), C.assign(p);
|
|
31706
31712
|
}).Else(() => {
|
|
31707
31713
|
v.assign(m), y.assign(h), b.assign(g), x.assign(_), S.assign(R(-1));
|
|
31708
|
-
}), f.element(p).assign(R(
|
|
31714
|
+
}), f.element(p).assign(R(Ne(i.x))), p.addAssign(1);
|
|
31709
31715
|
});
|
|
31710
31716
|
});
|
|
31711
31717
|
}).Else(() => {
|
|
31712
|
-
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({
|
|
31713
31719
|
rayOrigin: d,
|
|
31714
31720
|
invDir: h,
|
|
31715
31721
|
boxMin: i.xyz,
|
|
@@ -31733,7 +31739,7 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31733
31739
|
o ? N(t.lessThan(R(0)), () => T(nb(t), rb(t))).Else(r) : r();
|
|
31734
31740
|
}), N(c.didHit, () => {
|
|
31735
31741
|
c.hitPoint.assign(t.origin.add(t.direction.mul(c.dst)));
|
|
31736
|
-
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();
|
|
31737
31743
|
N(w.greaterThanEqual(R(0)), () => {
|
|
31738
31744
|
s.assign(V(Gc(Wc(n, w), s)));
|
|
31739
31745
|
}), c.normal.assign(s);
|
|
@@ -31785,13 +31791,13 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31785
31791
|
let e = s.element(c).toVar();
|
|
31786
31792
|
_.assign(H(c.lessThan(v), R(-1), _));
|
|
31787
31793
|
let n = () => {
|
|
31788
|
-
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();
|
|
31789
31795
|
N(a(i), () => {
|
|
31790
31796
|
N(i.equal(G(pa.TRIANGLE_LEAF)), () => {
|
|
31791
|
-
b(
|
|
31797
|
+
b(Ne(r.x), Ne(r.y));
|
|
31792
31798
|
}).Else(() => {
|
|
31793
31799
|
N(r.z.greaterThan(.5).and(c.lessThan(R(Zy))), () => {
|
|
31794
|
-
N(
|
|
31800
|
+
N(Ne(r.y).bitAnd(G(da)).equal(G(0)), () => {
|
|
31795
31801
|
let e = Wc(t, n), r = sb(e, u).toVar();
|
|
31796
31802
|
p.assign(ob(e, l)), m.assign(r);
|
|
31797
31803
|
let i = ab(r).toVar();
|
|
@@ -31801,11 +31807,11 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31801
31807
|
})), _.assign(n), v.assign(c);
|
|
31802
31808
|
}).Else(() => {
|
|
31803
31809
|
p.assign(l), m.assign(u), h.assign(d), g.assign(f), _.assign(R(-1));
|
|
31804
|
-
}), s.element(c).assign(R(
|
|
31810
|
+
}), s.element(c).assign(R(Ne(r.x))), c.addAssign(1);
|
|
31805
31811
|
});
|
|
31806
31812
|
});
|
|
31807
31813
|
}).Else(() => {
|
|
31808
|
-
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({
|
|
31809
31815
|
rayOrigin: v,
|
|
31810
31816
|
invDir: y,
|
|
31811
31817
|
boxMin: r.xyz,
|
|
@@ -31832,14 +31838,14 @@ var Zy = 32, Qy = 4096, $y = 4, eb = 1e8, tb = () => be("int", Zy).toVar(), nb =
|
|
|
31832
31838
|
//#endregion
|
|
31833
31839
|
//#region src/TSL/ShadowTerminator.js
|
|
31834
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 }) {
|
|
31835
|
-
let d =
|
|
31841
|
+
let d = I(0).toVar(), f = o.toVar();
|
|
31836
31842
|
N(s, () => {
|
|
31837
31843
|
let e = Wc(c, l);
|
|
31838
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)));
|
|
31839
31845
|
});
|
|
31840
|
-
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();
|
|
31841
31847
|
return N(y.greaterThan(g.mul(v).mul(1e-12)), () => {
|
|
31842
|
-
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();
|
|
31843
31849
|
N(s, () => {
|
|
31844
31850
|
let e = Wc(c, l);
|
|
31845
31851
|
T.assign(qc({
|
|
@@ -31849,31 +31855,31 @@ function hb({ V0: e, V1: t, V2: n, N0: r, N1: i, N2: a, hitPoint: o, instanced:
|
|
|
31849
31855
|
v: w
|
|
31850
31856
|
}));
|
|
31851
31857
|
});
|
|
31852
|
-
let E =
|
|
31853
|
-
N(
|
|
31854
|
-
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);
|
|
31855
31861
|
k.assign(z(We(We(o, s), c), k.mul(.5)));
|
|
31856
31862
|
}).Else(() => {
|
|
31857
|
-
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);
|
|
31858
31864
|
k.assign(We(We(We(o, s), c).negate(), k.mul(.5)));
|
|
31859
31865
|
}), d.assign(Re(T).mul(k));
|
|
31860
31866
|
}), d;
|
|
31861
31867
|
}
|
|
31862
31868
|
function gb({ hitPoint: e, offsetNormal: t, lift: n, faceN: r, smoothN: i, L: a, cutoff: o }) {
|
|
31863
|
-
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));
|
|
31864
31870
|
return ic(e.add(n.mul(u)), t);
|
|
31865
31871
|
}
|
|
31866
31872
|
//#endregion
|
|
31867
31873
|
//#region src/TSL/HitFacet.js
|
|
31868
31874
|
function _b({ triangleBuffer: e, bvhBuffer: t, triIdx: n, instanceLeaf: r, hitPoint: i, smoothNormal: a, viewDir: o, didHit: s, liftEnabled: c }) {
|
|
31869
|
-
let l = Y(0, 0, 1).toVar(), u =
|
|
31875
|
+
let l = Y(0, 0, 1).toVar(), u = I(0).toVar();
|
|
31870
31876
|
return N(s, () => {
|
|
31871
|
-
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));
|
|
31872
31878
|
N(v, () => {
|
|
31873
31879
|
_.assign(Kc(Wc(t, r), g));
|
|
31874
31880
|
});
|
|
31875
|
-
let y = H(
|
|
31876
|
-
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, () => {
|
|
31877
31883
|
u.assign(hb({
|
|
31878
31884
|
V0: p,
|
|
31879
31885
|
V1: m,
|
|
@@ -31903,7 +31909,7 @@ function yb(e, t) {
|
|
|
31903
31909
|
return G(r.x).bitOr(G(r.y).shiftLeft(G(11))).bitOr(i.shiftLeft(G(22)));
|
|
31904
31910
|
}
|
|
31905
31911
|
function bb(e) {
|
|
31906
|
-
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();
|
|
31907
31913
|
N(n.lessThan(0), () => {
|
|
31908
31914
|
t.assign(J(1).sub(ve(t.yx)).mul(vb(t)));
|
|
31909
31915
|
});
|
|
@@ -31953,23 +31959,23 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
31953
31959
|
let s = Sb({
|
|
31954
31960
|
direction: t,
|
|
31955
31961
|
environmentMatrix: n
|
|
31956
|
-
}).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);
|
|
31957
31963
|
o.assign(X(c, p));
|
|
31958
31964
|
}), o;
|
|
31959
31965
|
}), Tb = M(([e, t, n, r, i, a, o, s, c]) => {
|
|
31960
|
-
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({
|
|
31961
31967
|
uv: A,
|
|
31962
31968
|
environmentMatrix: n
|
|
31963
31969
|
}).toVar(), te = pt(e, A, 0).rgb.mul(r).toVar();
|
|
31964
31970
|
c.assign(te);
|
|
31965
|
-
let j = it(A.y.mul(Math.PI)).toVar(), ne =
|
|
31966
|
-
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));
|
|
31967
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]) => {
|
|
31968
31974
|
let i = t.toConst(), a = e.toVar();
|
|
31969
31975
|
a.y.subAssign(r);
|
|
31970
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();
|
|
31971
31977
|
return N(l.greaterThanEqual(0), () => {
|
|
31972
|
-
let t = U(l).sub(s).toVar(), r =
|
|
31978
|
+
let t = U(l).sub(s).toVar(), r = I(1e6).toVar(), c = i.y.toConst();
|
|
31973
31979
|
N(c.lessThanEqual(0), () => {
|
|
31974
31980
|
let t = e.y.negate().div(c).toConst(), n = e.add(i.mul(t)).toConst();
|
|
31975
31981
|
N(n.dot(n).lessThan(o), () => {
|
|
@@ -31988,7 +31994,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
31988
31994
|
}), kb = M(([e, t]) => {
|
|
31989
31995
|
let n = Y(0).toVar();
|
|
31990
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)), () => {
|
|
31991
|
-
n.assign(e.color.rgb.mul(
|
|
31997
|
+
n.assign(e.color.rgb.mul(I(1).sub(e.metalness)).mul(sc));
|
|
31992
31998
|
}).Else(() => {
|
|
31993
31999
|
let r = $s.wrap(pm(e, e.color.rgb)).toVar(), i = r.F0.toVar(), a = Y(0).toVar(), o = e.color.rgb.toVar();
|
|
31994
32000
|
N(e.dispersion.greaterThan(0).and(e.transmission.greaterThan(.5)), () => {
|
|
@@ -31999,7 +32005,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
31999
32005
|
});
|
|
32000
32006
|
}), N(e.iridescence.greaterThan(0), () => {
|
|
32001
32007
|
let n = e.iridescenceThicknessRange.y;
|
|
32002
|
-
a.assign(xm(
|
|
32008
|
+
a.assign(xm(I(1), e.iridescenceIOR, t.VoH, n, i)), i.assign(B(i, a, e.iridescence));
|
|
32003
32009
|
});
|
|
32004
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();
|
|
32005
32011
|
N(e.anisotropy.greaterThan(0), () => {
|
|
@@ -32009,41 +32015,41 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32009
32015
|
let n = Qp(t.NoH, e.roughness), r = rm(t.NoV, t.NoL, e.roughness);
|
|
32010
32016
|
c.assign(n.mul(r).mul(s));
|
|
32011
32017
|
});
|
|
32012
|
-
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();
|
|
32013
32019
|
N(e.sheen.greaterThan(0), () => {
|
|
32014
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);
|
|
32015
32021
|
n.assign(d.mul(c).add(a));
|
|
32016
32022
|
}).Else(() => {
|
|
32017
32023
|
n.assign(d);
|
|
32018
32024
|
}), N(e.clearcoat.greaterThan(0), () => {
|
|
32019
|
-
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));
|
|
32020
32026
|
n.assign(n.mul(u).add(l.mul(e.clearcoat)));
|
|
32021
32027
|
});
|
|
32022
32028
|
}), n;
|
|
32023
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]) => {
|
|
32024
32030
|
let i = Y(0).toVar();
|
|
32025
|
-
return N(
|
|
32026
|
-
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));
|
|
32027
32033
|
i.assign(n.mul(Xe(Y(o), jb)).mul(Mb));
|
|
32028
32034
|
}), i;
|
|
32029
32035
|
}), Pb = /* @__PURE__ */ M(([e, t, n]) => {
|
|
32030
|
-
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);
|
|
32031
32037
|
return V(s.mul(i).add(c.mul(Oe(o)).add(l.mul(it(o))).mul(a)));
|
|
32032
32038
|
}), Fb = 2 * oc, Ib = M(([e, t]) => {
|
|
32033
|
-
let n =
|
|
32034
|
-
return N(t.lessThan(
|
|
32035
|
-
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)));
|
|
32036
32042
|
n.assign(z(i.sub(a).mul(o), 0));
|
|
32037
32043
|
}), n;
|
|
32038
32044
|
}), Lb = M(([e]) => {
|
|
32039
|
-
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));
|
|
32040
32046
|
return e.color.mul(e.intensity).mul(sc).mul(t);
|
|
32041
32047
|
}), Rb = M(([e, t, n, r]) => {
|
|
32042
|
-
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();
|
|
32043
32049
|
return N(e.area.greaterThan(0), () => {
|
|
32044
|
-
let u = Y(0).toVar(), d =
|
|
32050
|
+
let u = Y(0).toVar(), d = I(-1).toVar();
|
|
32045
32051
|
N(e.shape.greaterThan(.5), () => {
|
|
32046
|
-
let t = U(n.x).toVar(), r =
|
|
32052
|
+
let t = U(n.x).toVar(), r = I(Fb).mul(n.y).toVar();
|
|
32047
32053
|
u.assign(e.position.add(e.u.mul(t.mul(Oe(r)))).add(e.v.mul(t.mul(it(r)))));
|
|
32048
32054
|
}).Else(() => {
|
|
32049
32055
|
let r = Qh(t, e.position.sub(e.u).sub(e.v), e.u.mul(2), e.v.mul(2), n).toVar();
|
|
@@ -32053,9 +32059,9 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32053
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))));
|
|
32054
32060
|
});
|
|
32055
32061
|
});
|
|
32056
|
-
let f = u.sub(t).toVar(), p =
|
|
32062
|
+
let f = u.sub(t).toVar(), p = F(f, f).toVar();
|
|
32057
32063
|
N(p.greaterThanEqual(1e-10), () => {
|
|
32058
|
-
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();
|
|
32059
32065
|
l.assign(R(1)), s.assign(t), a.assign(n), o.assign(Lb(e).mul(Ib(u, e.spread)));
|
|
32060
32066
|
let m = p.div(z(e.area.mul(z(u, .001)), 1e-10)), h = H(d.greaterThan(0), d, m);
|
|
32061
32067
|
c.assign(h.mul(r)), i.assign(u.greaterThan(0));
|
|
@@ -32067,12 +32073,12 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32067
32073
|
distance: s,
|
|
32068
32074
|
pdf: c,
|
|
32069
32075
|
lightType: l,
|
|
32070
|
-
selectionTotalWeight:
|
|
32076
|
+
selectionTotalWeight: I(0)
|
|
32071
32077
|
});
|
|
32072
32078
|
}), zb = M(([e, t, n]) => {
|
|
32073
|
-
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();
|
|
32074
32080
|
return N(u.greaterThanEqual(1e-20), () => {
|
|
32075
|
-
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();
|
|
32076
32082
|
i.assign(c), o.assign(t), s.assign(n), r.assign(d.greaterThanEqual(f)), N(r, () => {
|
|
32077
32083
|
let n = Vh({
|
|
32078
32084
|
coneCosine: f,
|
|
@@ -32092,10 +32098,10 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32092
32098
|
distance: o,
|
|
32093
32099
|
pdf: s,
|
|
32094
32100
|
lightType: c,
|
|
32095
|
-
selectionTotalWeight:
|
|
32101
|
+
selectionTotalWeight: I(0)
|
|
32096
32102
|
});
|
|
32097
32103
|
}), Bb = M(([e, t, n]) => {
|
|
32098
|
-
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();
|
|
32099
32105
|
return N(u.greaterThanEqual(1e-20), () => {
|
|
32100
32106
|
let t = U(u).toVar(), d = l.div(t), f = Bh({
|
|
32101
32107
|
lightDistance: t,
|
|
@@ -32110,31 +32116,31 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32110
32116
|
distance: o,
|
|
32111
32117
|
pdf: s,
|
|
32112
32118
|
lightType: c,
|
|
32113
|
-
selectionTotalWeight:
|
|
32119
|
+
selectionTotalWeight: I(0)
|
|
32114
32120
|
});
|
|
32115
32121
|
}), Vb = M(([e, t, n, r, i]) => {
|
|
32116
|
-
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();
|
|
32117
32123
|
return N(e.intensity.greaterThan(0), () => {
|
|
32118
32124
|
let l = V(e.direction).toVar(), u = e.color.mul(e.intensity).mul(Gh(e, t)).toVar();
|
|
32119
32125
|
o.assign(l), c.assign(n), N(e.angle.greaterThan(0), () => {
|
|
32120
|
-
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();
|
|
32121
32127
|
o.assign(V(l.mul(a).add(f.mul(Oe(d)).add(p.mul(it(d))).mul(s))));
|
|
32122
|
-
let m =
|
|
32128
|
+
let m = I(Fb).mul(z(I(1).sub(t), 1e-10)).toVar();
|
|
32123
32129
|
u.assign(u.div(m)), c.assign(n.div(m));
|
|
32124
32130
|
}), s.assign(u), a.assign(De(!0));
|
|
32125
32131
|
}), Nh({
|
|
32126
32132
|
valid: a,
|
|
32127
32133
|
direction: o,
|
|
32128
32134
|
emission: s,
|
|
32129
|
-
distance:
|
|
32135
|
+
distance: I(1e6),
|
|
32130
32136
|
pdf: c,
|
|
32131
32137
|
lightType: R(0),
|
|
32132
|
-
selectionTotalWeight:
|
|
32138
|
+
selectionTotalWeight: I(0)
|
|
32133
32139
|
});
|
|
32134
32140
|
}), Hb = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _]) => {
|
|
32135
|
-
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();
|
|
32136
32142
|
return N(T.greaterThan(R(0)), () => {
|
|
32137
|
-
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();
|
|
32138
32144
|
N(d.greaterThan(R(0)), () => {
|
|
32139
32145
|
he({
|
|
32140
32146
|
start: R(0),
|
|
@@ -32154,7 +32160,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32154
32160
|
type: "int",
|
|
32155
32161
|
condition: "<"
|
|
32156
32162
|
}, ({ i: r }) => {
|
|
32157
|
-
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();
|
|
32158
32164
|
w.addAssign(l), N(l.greaterThan(0).and(li(o, R(0), D.add(r), a, s, c).mul(w).lessThan(l)), () => {
|
|
32159
32165
|
A.assign(1), ee.assign(r), te.assign(l);
|
|
32160
32166
|
});
|
|
@@ -32184,7 +32190,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32184
32190
|
});
|
|
32185
32191
|
});
|
|
32186
32192
|
}), N(w.lessThanEqual(0), () => {
|
|
32187
|
-
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();
|
|
32188
32194
|
S.assign(n);
|
|
32189
32195
|
let i = De(!1).toVar(), w = R(0).toVar();
|
|
32190
32196
|
N(d.greaterThan(R(0)), () => {
|
|
@@ -32254,18 +32260,18 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32254
32260
|
smoothN: n,
|
|
32255
32261
|
L: t,
|
|
32256
32262
|
cutoff: ie
|
|
32257
|
-
}), 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();
|
|
32258
32264
|
return N(ge, () => {
|
|
32259
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));
|
|
32260
32266
|
_e.assign(o.selectionTotalWeight), N(o.valid.and(o.pdf.greaterThan(0)), () => {
|
|
32261
|
-
let a = z(
|
|
32267
|
+
let a = z(I(0), F(t, o.direction)).toVar();
|
|
32262
32268
|
N(a.greaterThan(0).and(zh({
|
|
32263
32269
|
direction: o.direction,
|
|
32264
32270
|
surfaceNormal: n
|
|
32265
32271
|
})), () => {
|
|
32266
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));
|
|
32267
32273
|
N(l.greaterThan(0).or(j), () => {
|
|
32268
|
-
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();
|
|
32269
32275
|
N(s.greaterThan(0).and(o.lightType.equal(R(1))), () => {
|
|
32270
32276
|
c.assign(Cc({
|
|
32271
32277
|
pdf1: o.pdf,
|
|
@@ -32280,12 +32286,12 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32280
32286
|
});
|
|
32281
32287
|
});
|
|
32282
32288
|
}), N(o.greaterThan(0).and(_.greaterThan(R(0))), () => {
|
|
32283
|
-
let i = z(
|
|
32289
|
+
let i = z(I(0), F(t, a)).toVar();
|
|
32284
32290
|
N(i.greaterThan(0).and(zh({
|
|
32285
32291
|
direction: a,
|
|
32286
32292
|
surfaceNormal: n
|
|
32287
32293
|
})), () => {
|
|
32288
|
-
let n =
|
|
32294
|
+
let n = I(1e30).toVar(), c = R(-1).toVar();
|
|
32289
32295
|
he({
|
|
32290
32296
|
start: R(0),
|
|
32291
32297
|
end: _,
|
|
@@ -32302,9 +32308,9 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32302
32308
|
}), N(c.greaterThanEqual(R(0)), () => {
|
|
32303
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));
|
|
32304
32310
|
N(f.greaterThan(0).or(j), () => {
|
|
32305
|
-
let c = z(
|
|
32311
|
+
let c = z(I(0), F(a, l.normal).negate()).toVar();
|
|
32306
32312
|
N(c.greaterThan(0), () => {
|
|
32307
|
-
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({
|
|
32308
32314
|
pdf1: o,
|
|
32309
32315
|
pdf2: d.mul(m).toVar()
|
|
32310
32316
|
}).toVar(), g = Lb(l).mul(Ib(c, l.spread)).mul(s).mul(i).mul(h).div(z(o, 1e-10));
|
|
@@ -32324,20 +32330,20 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32324
32330
|
condition: "<",
|
|
32325
32331
|
name: "envPass"
|
|
32326
32332
|
}, ({ envPass: e }) => {
|
|
32327
|
-
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();
|
|
32328
32334
|
N(a, () => {
|
|
32329
32335
|
let e = ci(u, R(0), p.add(R(9)), l, d, f);
|
|
32330
|
-
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)));
|
|
32331
32337
|
}).Else(() => {
|
|
32332
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();
|
|
32333
32339
|
s.assign(n.xyz), o.assign(t), c.assign(n.w);
|
|
32334
32340
|
}), N(c.greaterThan(0), () => {
|
|
32335
|
-
let e = z(
|
|
32341
|
+
let e = z(I(0), F(t, s)).toVar();
|
|
32336
32342
|
N(e.greaterThan(0).and(zh({
|
|
32337
32343
|
direction: s,
|
|
32338
32344
|
surfaceNormal: n
|
|
32339
32345
|
})), () => {
|
|
32340
|
-
let n = pe(fe(s), s,
|
|
32346
|
+
let n = pe(fe(s), s, I(0x56bc75e2d63100000));
|
|
32341
32347
|
N(n.greaterThan(0).or(j), () => {
|
|
32342
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({
|
|
32343
32349
|
pdf1: c,
|
|
@@ -32345,7 +32351,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32345
32351
|
}), wc({
|
|
32346
32352
|
pdf1: c,
|
|
32347
32353
|
pdf2: d
|
|
32348
|
-
})),
|
|
32354
|
+
})), I(1)).toVar(), p = o.mul(u).mul(e).mul(f).div(z(c, 1e-10));
|
|
32349
32355
|
le.addAssign(p.mul(n)), N(j, () => {
|
|
32350
32356
|
ue.addAssign(p);
|
|
32351
32357
|
});
|
|
@@ -32358,12 +32364,12 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32358
32364
|
unoccluded: ue
|
|
32359
32365
|
});
|
|
32360
32366
|
}), Kb = M(([e, t, n, r, i, a, o, s, c, l, u, d]) => {
|
|
32361
|
-
let f = Y(0).toVar(), p = Y(0).toVar(), m =
|
|
32367
|
+
let f = Y(0).toVar(), p = Y(0).toVar(), m = I(0).toVar();
|
|
32362
32368
|
return N(r.greaterThan(0).not(), () => {
|
|
32363
32369
|
let n = ci(c, R(0), d.add(R(8)), s, l, u);
|
|
32364
32370
|
f.assign(Om(e, n)), p.assign(t.color.xyz), m.assign(1);
|
|
32365
32371
|
}).Else(() => {
|
|
32366
|
-
let s = z(
|
|
32372
|
+
let s = z(F(e, n), 0).toVar(), c = z(r, fc).toVar();
|
|
32367
32373
|
f.assign(n), m.assign(c), p.assign(H(a, t.color.xyz.mul(o), i.mul(s).div(c)));
|
|
32368
32374
|
}), Ph({
|
|
32369
32375
|
direction: f,
|
|
@@ -32371,15 +32377,15 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32371
32377
|
combinedPdf: m
|
|
32372
32378
|
});
|
|
32373
32379
|
}), qb = M(([e, t, n, r, i, a, o, s, c, l, u, d, f, p, m]) => {
|
|
32374
|
-
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();
|
|
32375
32381
|
N(d.not(), () => {
|
|
32376
32382
|
N(p, () => {
|
|
32377
32383
|
b.assign(Sm(n, u, m));
|
|
32378
32384
|
}).Else(() => {
|
|
32379
32385
|
let e = rc({
|
|
32380
|
-
invRoughness:
|
|
32381
|
-
metalFactor:
|
|
32382
|
-
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),
|
|
32383
32389
|
maxSheenColor: z(n.sheenColor.x, z(n.sheenColor.y, n.sheenColor.z))
|
|
32384
32390
|
}).toVar();
|
|
32385
32391
|
b.assign(Sm(n, u, e));
|
|
@@ -32393,7 +32399,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32393
32399
|
}));
|
|
32394
32400
|
}).ElseIf(x.lessThan(w), () => {
|
|
32395
32401
|
N(n.anisotropy.greaterThan(0), () => {
|
|
32396
|
-
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({
|
|
32397
32403
|
V: s,
|
|
32398
32404
|
alphaX: c.x,
|
|
32399
32405
|
alphaY: c.y,
|
|
@@ -32422,7 +32428,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32422
32428
|
Xi: r
|
|
32423
32429
|
}))), h.assign(Ze(e.negate(), S));
|
|
32424
32430
|
}).Else(() => {
|
|
32425
|
-
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));
|
|
32426
32432
|
h.assign(u.direction), _.assign(z(b.transmission.mul(u.pdf), fc)), y.assign(u.colorWeight), v.assign(!0);
|
|
32427
32433
|
}), N(v.not(), () => {
|
|
32428
32434
|
let r = Zs.wrap(Dc(t, e, h, n));
|
|
@@ -32435,12 +32441,12 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32435
32441
|
colorWeight: y
|
|
32436
32442
|
});
|
|
32437
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]) => {
|
|
32438
|
-
let u =
|
|
32444
|
+
let u = I(1).toVar();
|
|
32439
32445
|
return N(e.greaterThanEqual(R(3)), () => {
|
|
32440
32446
|
let d = z(z(z(t.x, t.y), t.z), 0).toVar();
|
|
32441
32447
|
N(d.lessThan(8e-4).and(e.greaterThan(R(4))), () => {
|
|
32442
32448
|
let e = z(d.mul(125), .01), t = li(a, R(0), c.add(R(3)), i, o, s);
|
|
32443
|
-
u.assign(H(t.lessThan(e), e,
|
|
32449
|
+
u.assign(H(t.lessThan(e), e, I(0)));
|
|
32444
32450
|
}).Else(() => {
|
|
32445
32451
|
let t = n.complexityScore.toVar();
|
|
32446
32452
|
N(n.isMetallic.and(n.isSmooth).and(e.lessThan(R(7))), () => {
|
|
@@ -32466,22 +32472,22 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32466
32472
|
}), N(n.isEmissive, () => {
|
|
32467
32473
|
p.addAssign(.1);
|
|
32468
32474
|
}), p.assign(P(p, 0, 1));
|
|
32469
|
-
let m =
|
|
32475
|
+
let m = I(.5).toVar();
|
|
32470
32476
|
N(l.and(d.greaterThan(.01)), () => {
|
|
32471
32477
|
let e = P(r.y, 0, 1);
|
|
32472
|
-
m.assign(B(
|
|
32478
|
+
m.assign(B(I(.3), I(.8), e.mul(e)));
|
|
32473
32479
|
});
|
|
32474
|
-
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();
|
|
32475
32481
|
_.assign(B(_, z(_, g), .4)), N(t.greaterThan(.5), () => {
|
|
32476
32482
|
let e = t.sub(.5).mul(.6);
|
|
32477
|
-
_.assign(B(_,
|
|
32483
|
+
_.assign(B(_, I(1), e));
|
|
32478
32484
|
});
|
|
32479
|
-
let v =
|
|
32485
|
+
let v = I(.12).add(t.mul(.08)), y = je(I(e.sub(f)).negate().mul(v));
|
|
32480
32486
|
_.mulAssign(y);
|
|
32481
|
-
let b = H(n.isEmissive,
|
|
32487
|
+
let b = H(n.isEmissive, I(.04), I(.02));
|
|
32482
32488
|
_.assign(P(_, b, 1));
|
|
32483
32489
|
let x = li(a, R(0), c.add(R(3)), i, o, s);
|
|
32484
|
-
u.assign(H(x.lessThan(_), _,
|
|
32490
|
+
u.assign(H(x.lessThan(_), _, I(0)));
|
|
32485
32491
|
});
|
|
32486
32492
|
});
|
|
32487
32493
|
}), u;
|
|
@@ -32500,7 +32506,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32500
32506
|
}))), _.assign(Ze(u.negate(), v));
|
|
32501
32507
|
}).ElseIf(g.lessThan(m.add(h)), () => {
|
|
32502
32508
|
N(n.anisotropy.greaterThan(0), () => {
|
|
32503
|
-
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({
|
|
32504
32510
|
V: t,
|
|
32505
32511
|
alphaX: i.x,
|
|
32506
32512
|
alphaY: i.y,
|
|
@@ -32533,7 +32539,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32533
32539
|
normal: "vec3",
|
|
32534
32540
|
height: "float"
|
|
32535
32541
|
}), rx = M(([e, t, n, r, i, a, o]) => {
|
|
32536
|
-
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();
|
|
32537
32543
|
N(o.greaterThanEqual(R(0)), () => {
|
|
32538
32544
|
let e = Wc(a, o), t = {
|
|
32539
32545
|
r0: e[0].xyz,
|
|
@@ -32550,9 +32556,9 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32550
32556
|
});
|
|
32551
32557
|
let S = v.sub(_).toVar(), C = y.sub(_).toVar(), w = S.x.mul(C.y).sub(C.x.mul(S.y)).toVar();
|
|
32552
32558
|
return N(ve(w).greaterThan(1e-8), () => {
|
|
32553
|
-
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();
|
|
32554
32560
|
N(ve(y).greaterThan(1e-10), () => {
|
|
32555
|
-
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();
|
|
32556
32562
|
he({
|
|
32557
32563
|
start: R(0),
|
|
32558
32564
|
end: T,
|
|
@@ -32560,7 +32566,7 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32560
32566
|
condition: "<"
|
|
32561
32567
|
}, ({ i: e }) => {
|
|
32562
32568
|
N(A.equal(R(0)), () => {
|
|
32563
|
-
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);
|
|
32564
32570
|
N(a.lessThanEqual(o).and(e.greaterThan(R(0))), () => {
|
|
32565
32571
|
A.assign(1), k.assign(n);
|
|
32566
32572
|
}).Else(() => {
|
|
@@ -32608,15 +32614,15 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32608
32614
|
emissionOnly: "vec3",
|
|
32609
32615
|
distance: "float"
|
|
32610
32616
|
}), ox = M(([e, t, n, r]) => {
|
|
32611
|
-
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);
|
|
32612
32618
|
return e.mul(a).add(t.mul(o)).add(n.mul(s));
|
|
32613
|
-
}), sx = M(([e, t, n]) => Re(
|
|
32614
|
-
let i = V(e.sub(r)), a = V(t.sub(r)), o = V(n.sub(r)), s = ve(
|
|
32615
|
-
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));
|
|
32616
32622
|
}), lx = M(([e, t, n, r]) => {
|
|
32617
|
-
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();
|
|
32618
32624
|
return N(l.greaterThan(1e-20), () => {
|
|
32619
|
-
let t =
|
|
32625
|
+
let t = F(c, r.sub(e)), n = t.mul(t).div(l), i = s.mul(s).lessThan(l.mul(64));
|
|
32620
32626
|
u.assign(s.greaterThan(n).and(i));
|
|
32621
32627
|
}), u;
|
|
32622
32628
|
}), ux = Lr({
|
|
@@ -32631,23 +32637,23 @@ var Sb = /* @__PURE__ */ wt("\n fn equirectDirectionToUv( direction: vec3f, envi
|
|
|
32631
32637
|
let a = ux({
|
|
32632
32638
|
direction: Y(0),
|
|
32633
32639
|
position: Y(0),
|
|
32634
|
-
solidAngle:
|
|
32640
|
+
solidAngle: I(0),
|
|
32635
32641
|
valid: !1
|
|
32636
32642
|
}).toVar(), o = V(e.sub(r)), s = V(t.sub(r)), c = V(n.sub(r)), l = cx(e, t, n, r);
|
|
32637
32643
|
return a.solidAngle.assign(l), N(l.greaterThan(1e-7), () => {
|
|
32638
|
-
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);
|
|
32639
32645
|
N(ve(te).greaterThan(1e-10), () => {
|
|
32640
|
-
let t =
|
|
32646
|
+
let t = F(ee, e.sub(r)).div(te);
|
|
32641
32647
|
N(t.greaterThan(0), () => {
|
|
32642
32648
|
a.direction.assign(A), a.position.assign(r.add(A.mul(t))), a.valid.assign(!0);
|
|
32643
32649
|
});
|
|
32644
32650
|
});
|
|
32645
32651
|
}), a;
|
|
32646
32652
|
}), px = M(([e, t, n, r]) => {
|
|
32647
|
-
let i = n.sub(t), a = r.sub(t), o = e.sub(t), s =
|
|
32648
|
-
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);
|
|
32649
32655
|
}), mx = M(([e, t, n, r]) => {
|
|
32650
|
-
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);
|
|
32651
32657
|
return V(e.mul(a).add(t.mul(o)).add(n.mul(s)));
|
|
32652
32658
|
});
|
|
32653
32659
|
M(([e]) => e.emissiveIntensity.greaterThan(0).and(Re(e.emissive).greaterThan(0)));
|
|
@@ -32674,12 +32680,12 @@ var hx = 2, gx = Lr({
|
|
|
32674
32680
|
materialIndex: R(s.z.bitAnd(G(ra)))
|
|
32675
32681
|
});
|
|
32676
32682
|
}), vx = M(([e, t, n, r, i, a, o, s, c]) => {
|
|
32677
|
-
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();
|
|
32678
32684
|
return N(lx(l.v0, l.v1, l.v2, r), () => {
|
|
32679
32685
|
let e = cx(l.v0, l.v1, l.v2, r);
|
|
32680
|
-
m.assign(p.div(z(e,
|
|
32686
|
+
m.assign(p.div(z(e, I(1e-10))));
|
|
32681
32687
|
}).Else(() => {
|
|
32682
|
-
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);
|
|
32683
32689
|
m.assign(a.mul(i).div(r));
|
|
32684
32690
|
}), z(m, fc);
|
|
32685
32691
|
}), yx = M(([e, t, n, r]) => {
|
|
@@ -32698,27 +32704,27 @@ var hx = 2, gx = Lr({
|
|
|
32698
32704
|
normal: Y(0),
|
|
32699
32705
|
emission: Y(0),
|
|
32700
32706
|
direction: Y(0),
|
|
32701
|
-
distance:
|
|
32702
|
-
pdf:
|
|
32703
|
-
area:
|
|
32704
|
-
cosThetaLight:
|
|
32707
|
+
distance: I(0),
|
|
32708
|
+
pdf: I(0),
|
|
32709
|
+
area: I(0),
|
|
32710
|
+
cosThetaLight: I(0),
|
|
32705
32711
|
valid: !1
|
|
32706
32712
|
}).toVar();
|
|
32707
32713
|
return N(l.greaterThan(R(0)), () => {
|
|
32708
|
-
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)));
|
|
32709
32715
|
N(lx(C.v0, C.v1, C.v2, e), () => {
|
|
32710
32716
|
let n = ux.wrap(fx(C.v0, C.v1, C.v2, e, w));
|
|
32711
32717
|
N(n.valid.and(n.solidAngle.greaterThan(1e-7)), () => {
|
|
32712
|
-
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());
|
|
32713
32719
|
N(a.greaterThan(0).and(o.greaterThan(0)), () => {
|
|
32714
|
-
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);
|
|
32715
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);
|
|
32716
32722
|
});
|
|
32717
32723
|
});
|
|
32718
32724
|
}).Else(() => {
|
|
32719
|
-
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());
|
|
32720
32726
|
N(c.greaterThan(0).and(l.greaterThan(0)), () => {
|
|
32721
|
-
let e = y.div(z(u,
|
|
32727
|
+
let e = y.div(z(u, I(1e-10)).mul(x)).mul(a).div(l);
|
|
32722
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);
|
|
32723
32729
|
});
|
|
32724
32730
|
});
|
|
@@ -32728,131 +32734,131 @@ var hx = 2, gx = Lr({
|
|
|
32728
32734
|
contribution: Y(0),
|
|
32729
32735
|
hasEmissive: !1,
|
|
32730
32736
|
emissionOnly: Y(0),
|
|
32731
|
-
distance:
|
|
32737
|
+
distance: I(0)
|
|
32732
32738
|
}).toVar(), x = ix.wrap(bx(e, t, o, s, c, l, u, f, p, m, h, g, _));
|
|
32733
32739
|
return N(x.valid.and(x.pdf.greaterThan(0)), () => {
|
|
32734
32740
|
b.hasEmissive.assign(!0), b.emissionOnly.assign(x.emission), b.distance.assign(x.distance);
|
|
32735
|
-
let a = z(
|
|
32736
|
-
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)), () => {
|
|
32737
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));
|
|
32738
32744
|
N(l.greaterThan(0), () => {
|
|
32739
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({
|
|
32740
32746
|
pdf1: x.pdf,
|
|
32741
32747
|
pdf2: o
|
|
32742
|
-
}),
|
|
32748
|
+
}), I(1));
|
|
32743
32749
|
b.contribution.assign(x.emission.mul(n).mul(a).div(x.pdf).mul(l).mul(d).mul(s));
|
|
32744
32750
|
});
|
|
32745
32751
|
});
|
|
32746
32752
|
}), b;
|
|
32747
|
-
}), 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),
|
|
32748
|
-
let o = e.add(n).mul(.5), s = Re(n.sub(e)), c = a.sub(o), l = z(
|
|
32749
|
-
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));
|
|
32750
32756
|
}), kx = M(([e, t, n, r, i, a, o, s, c, l, u, d]) => {
|
|
32751
32757
|
let f = ix({
|
|
32752
32758
|
position: Y(0),
|
|
32753
32759
|
normal: Y(0),
|
|
32754
32760
|
emission: Y(0),
|
|
32755
32761
|
direction: Y(0),
|
|
32756
|
-
distance:
|
|
32757
|
-
pdf:
|
|
32758
|
-
area:
|
|
32759
|
-
cosThetaLight:
|
|
32762
|
+
distance: I(0),
|
|
32763
|
+
pdf: I(0),
|
|
32764
|
+
area: I(0),
|
|
32765
|
+
cosThetaLight: I(0),
|
|
32760
32766
|
valid: !1
|
|
32761
|
-
}).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();
|
|
32762
32768
|
return he(Tx, () => {
|
|
32763
32769
|
let t = m.mul(R(Cx)), n = s.element(t.add(R(1))), r = s.element(t.add(R(2)));
|
|
32764
32770
|
N(n.w.greaterThan(.5), () => {
|
|
32765
32771
|
h.assign(De(!0)), me();
|
|
32766
32772
|
});
|
|
32767
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);
|
|
32768
|
-
N(x.lessThanEqual(
|
|
32774
|
+
N(x.lessThanEqual(I(0)), () => {
|
|
32769
32775
|
m.assign(i);
|
|
32770
32776
|
}).Else(() => {
|
|
32771
32777
|
let e = y.div(x);
|
|
32772
32778
|
N(g.lessThan(e), () => {
|
|
32773
|
-
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);
|
|
32774
32780
|
}).Else(() => {
|
|
32775
|
-
let t =
|
|
32776
|
-
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);
|
|
32777
32783
|
});
|
|
32778
32784
|
});
|
|
32779
32785
|
}), N(h, () => {
|
|
32780
|
-
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();
|
|
32781
32787
|
he({
|
|
32782
32788
|
start: R(0),
|
|
32783
32789
|
end: b
|
|
32784
32790
|
}, ({ i: e }) => {
|
|
32785
|
-
let t = y.add(e), n = l.add(t.mul(R(wx))), r = z(c.element(n).g,
|
|
32786
|
-
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))), () => {
|
|
32787
32793
|
w.assign(t), T.assign(r), me();
|
|
32788
32794
|
});
|
|
32789
32795
|
}), p.mulAssign(T.div(x));
|
|
32790
|
-
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)));
|
|
32791
32797
|
N(lx(j.v0, j.v1, j.v2, e), () => {
|
|
32792
32798
|
let n = ux.wrap(fx(j.v0, j.v1, j.v2, e, ne));
|
|
32793
|
-
N(n.valid.and(n.solidAngle.greaterThan(
|
|
32794
|
-
let r = n.direction, i = n.position, a =
|
|
32795
|
-
N(a.greaterThan(
|
|
32796
|
-
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)));
|
|
32797
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);
|
|
32798
32804
|
});
|
|
32799
32805
|
});
|
|
32800
32806
|
}).Else(() => {
|
|
32801
|
-
let n = ox(j.v0, j.v1, j.v2, ne), r = mx(j.n0, j.n1, j.n2, ne), i = n.sub(e), a =
|
|
32802
|
-
N(c.greaterThan(
|
|
32803
|
-
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);
|
|
32804
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);
|
|
32805
32811
|
});
|
|
32806
32812
|
});
|
|
32807
32813
|
}), f;
|
|
32808
32814
|
}), Ax = M(([e, t, n, r, i, a, o, s, c]) => {
|
|
32809
|
-
let l =
|
|
32810
|
-
return N(p.greaterThanEqual(
|
|
32811
|
-
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();
|
|
32812
32818
|
he(Tx, () => {
|
|
32813
32819
|
let t = d.mul(R(Cx));
|
|
32814
32820
|
N(i.element(t.add(R(1))).w.greaterThan(.5), () => {
|
|
32815
32821
|
m.assign(De(!0)), me();
|
|
32816
32822
|
});
|
|
32817
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));
|
|
32818
|
-
N(x.lessThanEqual(
|
|
32824
|
+
N(x.lessThanEqual(I(0)), () => {
|
|
32819
32825
|
N(S, () => {
|
|
32820
|
-
o.assign(
|
|
32826
|
+
o.assign(I(0)), d.assign(s);
|
|
32821
32827
|
}).Else(() => {
|
|
32822
32828
|
d.assign(a);
|
|
32823
32829
|
});
|
|
32824
32830
|
}).Else(() => {
|
|
32825
32831
|
let e = y.div(x);
|
|
32826
32832
|
N(S, () => {
|
|
32827
|
-
o.mulAssign(
|
|
32833
|
+
o.mulAssign(I(1).sub(e)), d.assign(s);
|
|
32828
32834
|
}).Else(() => {
|
|
32829
32835
|
o.mulAssign(e), d.assign(a);
|
|
32830
32836
|
});
|
|
32831
32837
|
}), f.addAssign(R(1));
|
|
32832
|
-
}), N(m.and(o.greaterThan(
|
|
32833
|
-
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();
|
|
32834
32840
|
he({
|
|
32835
32841
|
start: R(0),
|
|
32836
32842
|
end: h
|
|
32837
32843
|
}, ({ i: e }) => {
|
|
32838
32844
|
let t = m.add(e), n = i.element(a.add(t.mul(R(wx))));
|
|
32839
32845
|
N(R(n.r).equal(u), () => {
|
|
32840
|
-
_.assign(z(n.g,
|
|
32846
|
+
_.assign(z(n.g, I(0))), v.assign(R(n.a)), me();
|
|
32841
32847
|
});
|
|
32842
32848
|
}), o.mulAssign(_.div(g));
|
|
32843
32849
|
let y = gx.wrap(_x(u, s, c, v));
|
|
32844
32850
|
N(lx(y.v0, y.v1, y.v2, r), () => {
|
|
32845
32851
|
let e = cx(y.v0, y.v1, y.v2, r);
|
|
32846
|
-
l.assign(o.div(z(e,
|
|
32852
|
+
l.assign(o.div(z(e, I(1e-10))));
|
|
32847
32853
|
}).Else(() => {
|
|
32848
|
-
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)));
|
|
32849
32855
|
l.assign(s.mul(a).div(r));
|
|
32850
32856
|
});
|
|
32851
32857
|
});
|
|
32852
32858
|
}), z(l, fc);
|
|
32853
32859
|
}), jx = 0x8ac7230489e80000, Mx = 1e-4, Nx = 1e-4, Px = .001;
|
|
32854
32860
|
function Fx(e) {
|
|
32855
|
-
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) => {
|
|
32856
32862
|
let a = V(e).toVar(), o = z(n, R(1)).toVar(), s = Y(0).toVar();
|
|
32857
32863
|
return he({
|
|
32858
32864
|
start: R(0),
|
|
@@ -32867,9 +32873,9 @@ function Fx(e) {
|
|
|
32867
32873
|
direction: n,
|
|
32868
32874
|
environmentMatrix: p,
|
|
32869
32875
|
environmentIntensity: f,
|
|
32870
|
-
enableEnvironmentLight:
|
|
32876
|
+
enableEnvironmentLight: I(1)
|
|
32871
32877
|
}).xyz);
|
|
32872
|
-
}), s.div(
|
|
32878
|
+
}), s.div(I(o));
|
|
32873
32879
|
};
|
|
32874
32880
|
return M(() => {
|
|
32875
32881
|
let e = Fe;
|
|
@@ -32880,27 +32886,27 @@ function Fx(e) {
|
|
|
32880
32886
|
N(e.greaterThanEqual(he), () => {
|
|
32881
32887
|
ge();
|
|
32882
32888
|
});
|
|
32883
|
-
let
|
|
32884
|
-
N(
|
|
32889
|
+
let L = u.element(e), B = il(o, L).toVar();
|
|
32890
|
+
N(B.bitAnd(G(jy.ACTIVE)).equal(G(0)), () => {
|
|
32885
32891
|
ge();
|
|
32886
32892
|
});
|
|
32887
|
-
let Ge =
|
|
32888
|
-
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)), () => {
|
|
32889
32895
|
let e = fe.mul(X(Ke, 1)).z.abs().mul(Hi).add(3);
|
|
32890
|
-
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));
|
|
32891
32897
|
}), N(y.and(dt.equal(0)), () => {
|
|
32892
32898
|
let e = qe.y.toVar();
|
|
32893
|
-
N(e.abs().greaterThan(
|
|
32899
|
+
N(e.abs().greaterThan(I(lc)), () => {
|
|
32894
32900
|
let a = b.sub(Ke.y).div(e).toVar();
|
|
32895
|
-
N(a.greaterThan(
|
|
32896
|
-
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,
|
|
32897
|
-
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)), () => {
|
|
32898
32904
|
pe.assign(1);
|
|
32899
32905
|
});
|
|
32900
32906
|
let M = Ob(Ke, qe, h, g, _, v).toVar(), he = Y(0).toVar();
|
|
32901
32907
|
N(le, () => {
|
|
32902
32908
|
N(se.greaterThan(0), () => {
|
|
32903
|
-
he.assign(
|
|
32909
|
+
he.assign(Ue(M, se.mul(1.3), ce, Ze, tt));
|
|
32904
32910
|
}).Else(() => {
|
|
32905
32911
|
he.assign(Eb({
|
|
32906
32912
|
tex: d,
|
|
@@ -32908,18 +32914,18 @@ function Fx(e) {
|
|
|
32908
32914
|
direction: M,
|
|
32909
32915
|
environmentMatrix: p,
|
|
32910
32916
|
environmentIntensity: f,
|
|
32911
|
-
enableEnvironmentLight:
|
|
32917
|
+
enableEnvironmentLight: I(1)
|
|
32912
32918
|
}).xyz);
|
|
32913
32919
|
});
|
|
32914
32920
|
});
|
|
32915
|
-
let ve = H(le, he.mul(ae), oe), ye = H(ie, Y(0), ve.mul(pe)), be = H(ie,
|
|
32916
|
-
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, () => {
|
|
32917
32923
|
ll(c, Xe, l, Yb({
|
|
32918
32924
|
worldPos: e,
|
|
32919
32925
|
cameraProjectionMatrix: de,
|
|
32920
32926
|
cameraViewMatrix: fe
|
|
32921
32927
|
}), Y(1));
|
|
32922
|
-
}), 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();
|
|
32923
32929
|
});
|
|
32924
32930
|
});
|
|
32925
32931
|
}), N(it.greaterThan(jx), () => {
|
|
@@ -32931,7 +32937,7 @@ function Fx(e) {
|
|
|
32931
32937
|
});
|
|
32932
32938
|
let t = Y(0).toVar();
|
|
32933
32939
|
N(Ge.and(se.greaterThan(0)), () => {
|
|
32934
|
-
t.assign(
|
|
32940
|
+
t.assign(Ue(e, se.mul(1.3), ce, Ze, tt));
|
|
32935
32941
|
}).Else(() => {
|
|
32936
32942
|
t.assign(Eb({
|
|
32937
32943
|
tex: d,
|
|
@@ -32939,12 +32945,12 @@ function Fx(e) {
|
|
|
32939
32945
|
direction: e,
|
|
32940
32946
|
environmentMatrix: p,
|
|
32941
32947
|
environmentIntensity: f,
|
|
32942
|
-
enableEnvironmentLight:
|
|
32948
|
+
enableEnvironmentLight: I(1)
|
|
32943
32949
|
}).xyz);
|
|
32944
32950
|
}), n.assign(P(t, Y(0), Y(1)));
|
|
32945
|
-
let r =
|
|
32951
|
+
let r = I(1).toVar();
|
|
32946
32952
|
N(Ge.not(), () => {
|
|
32947
|
-
let e = ol(o,
|
|
32953
|
+
let e = ol(o, L);
|
|
32948
32954
|
N(e.greaterThan(0), () => {
|
|
32949
32955
|
let t = wb(d, qe, p, x, S, C).w;
|
|
32950
32956
|
N(t.greaterThan(0), () => {
|
|
@@ -32955,44 +32961,44 @@ function Fx(e) {
|
|
|
32955
32961
|
});
|
|
32956
32962
|
});
|
|
32957
32963
|
});
|
|
32958
|
-
let i = H(Ge.not(), ue,
|
|
32959
|
-
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, () => {
|
|
32960
32966
|
let t = Y(0).toVar();
|
|
32961
32967
|
N(Ge.and(se.greaterThan(0)), () => {
|
|
32962
|
-
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));
|
|
32963
32969
|
N(r.lessThan(n), () => {
|
|
32964
|
-
let e =
|
|
32965
|
-
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)));
|
|
32966
32972
|
});
|
|
32967
32973
|
}).Else(() => {
|
|
32968
|
-
t.assign(Nb(V(e), Le, ze
|
|
32974
|
+
t.assign(Nb(V(e), Ie, Le, ze).mul(f));
|
|
32969
32975
|
}), N(t.x.add(t.y).add(t.z).greaterThan(0), () => {
|
|
32970
|
-
let e =
|
|
32971
|
-
N(Ge.not().and(
|
|
32976
|
+
let e = I(1).toVar();
|
|
32977
|
+
N(Ge.not().and(B.bitAnd(G(jy.SUN_NEE)).notEqual(G(0))), () => {
|
|
32972
32978
|
e.assign(Cc({
|
|
32973
|
-
pdf1: ol(o,
|
|
32974
|
-
pdf2:
|
|
32979
|
+
pdf1: ol(o, L),
|
|
32980
|
+
pdf2: I(1).div(ze.y)
|
|
32975
32981
|
}));
|
|
32976
32982
|
});
|
|
32977
|
-
let n = z(dt.sub(1), R(0)), r = H(Ge, ae, e.mul(H(n.greaterThan(R(0)), ue,
|
|
32978
|
-
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));
|
|
32979
32985
|
});
|
|
32980
32986
|
});
|
|
32981
32987
|
}), N(Ge.and(le.not()).and(ie.not()), () => {
|
|
32982
32988
|
Ye.assign(X(Ye.xyz.add(Je.mul(oe)), Ye.w));
|
|
32983
|
-
}), N(
|
|
32989
|
+
}), N(B.bitAnd(G(jy.HAS_HIT_OPAQUE)).equal(G(0)), () => {
|
|
32984
32990
|
Ye.w.assign(0);
|
|
32985
|
-
}), N(
|
|
32991
|
+
}), N(Be.and(B.bitAnd(G(jy.AUX_LOCKED)).equal(G(0))).and(B.bitAnd(G(jy.REDIRECTED)).notEqual(G(0))), () => {
|
|
32986
32992
|
let e = dl(c, Xe);
|
|
32987
32993
|
ll(c, Xe, V(qe), pl(e).w, P(n.mul(rt), Y(0), Y(1)));
|
|
32988
|
-
}), bl(o,
|
|
32994
|
+
}), bl(o, L, Ye), vl(o, L, qe, B.bitAnd(G(~jy.ACTIVE))), ge();
|
|
32989
32995
|
});
|
|
32990
|
-
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();
|
|
32991
32997
|
N(gt.greaterThan(0), () => {
|
|
32992
|
-
let e = Nl(o,
|
|
32998
|
+
let e = Nl(o, L).toVar(), t = Hl(o, L), n = t.sigmaS.toVar(), r = t.g.toVar();
|
|
32993
32999
|
N(z(z(n.x, n.y), n.z).lessThanEqual(0), () => {
|
|
32994
|
-
let t =
|
|
32995
|
-
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))), () => {
|
|
32996
33002
|
rt.mulAssign(t);
|
|
32997
33003
|
});
|
|
32998
33004
|
}).Else(() => {
|
|
@@ -33002,8 +33008,8 @@ function Fx(e) {
|
|
|
33002
33008
|
ft.addAssign(1);
|
|
33003
33009
|
let a = P(z(z(Je.x, Je.y), Je.z), .02, 1).toVar();
|
|
33004
33010
|
N(ft.greaterThanEqual(j).or(li(tt, R(0), nt.add(R(12)), Ze, _e, me).greaterThan(a)).toVar(), () => {
|
|
33005
|
-
bl(o,
|
|
33006
|
-
}), 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();
|
|
33007
33013
|
});
|
|
33008
33014
|
});
|
|
33009
33015
|
});
|
|
@@ -33048,15 +33054,15 @@ function Fx(e) {
|
|
|
33048
33054
|
}).Else(() => {
|
|
33049
33055
|
W.assign(wt.normal);
|
|
33050
33056
|
});
|
|
33051
|
-
let kt = q.metalness.toVar(), At = q.transmission.toVar(), jt = at(
|
|
33052
|
-
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))), () => {
|
|
33053
33059
|
let t = pl(dl(c, Xe)).w;
|
|
33054
33060
|
ll(c, Xe, e, t, P(Ot.mul(Nt), Y(0), Y(1)));
|
|
33055
33061
|
});
|
|
33056
33062
|
}, Ft = () => {
|
|
33057
|
-
bl(o,
|
|
33063
|
+
bl(o, L, Ye), vl(o, L, qe, B.bitAnd(G(~jy.ACTIVE))), kl(s, L, Ze);
|
|
33058
33064
|
};
|
|
33059
|
-
N(dt.equal(0).and(
|
|
33065
|
+
N(dt.equal(0).and(Be), () => {
|
|
33060
33066
|
let e = Yb({
|
|
33061
33067
|
worldPos: mt,
|
|
33062
33068
|
cameraProjectionMatrix: de,
|
|
@@ -33064,7 +33070,7 @@ function Fx(e) {
|
|
|
33064
33070
|
});
|
|
33065
33071
|
ll(c, Xe, Y(0, 0, 1), e, Y(0));
|
|
33066
33072
|
});
|
|
33067
|
-
let It =
|
|
33073
|
+
let It = I(1).toVar(), Lt = I(1).toVar();
|
|
33068
33074
|
N(gt.equal(1), () => {
|
|
33069
33075
|
It.assign(_t);
|
|
33070
33076
|
}).ElseIf(gt.equal(2), () => {
|
|
@@ -33076,15 +33082,15 @@ function Fx(e) {
|
|
|
33076
33082
|
origin: Ke,
|
|
33077
33083
|
direction: qe
|
|
33078
33084
|
}), zt = zm.wrap(Ym(Rt, W, q, Ze, tt, _e, me, nt, R(yt), It, Lt, bt)).toVar();
|
|
33079
|
-
bt.assign(zt.pathWavelength), N(
|
|
33080
|
-
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();
|
|
33081
33087
|
N(q.alphaMode.equal(R(2)), () => {
|
|
33082
|
-
ll(c, Xe, t, e, n),
|
|
33088
|
+
ll(c, Xe, t, e, n), B.assign(B.bitOr(G(jy.AUX_LOCKED)));
|
|
33083
33089
|
}).ElseIf(zt.isAlphaSkip, () => {}).ElseIf(zt.isSubsurface, () => {
|
|
33084
|
-
ll(c, Xe, t, e, n),
|
|
33090
|
+
ll(c, Xe, t, e, n), B.assign(B.bitOr(G(jy.AUX_LOCKED)));
|
|
33085
33091
|
}).ElseIf(zt.isTransmissive, () => {
|
|
33086
33092
|
N(Mt.or(q.dispersion.greaterThan(0)), () => {
|
|
33087
|
-
ll(c, Xe, t, e, n),
|
|
33093
|
+
ll(c, Xe, t, e, n), B.assign(B.bitOr(G(jy.AUX_LOCKED)));
|
|
33088
33094
|
}).Else(() => {
|
|
33089
33095
|
rt.mulAssign(P(Ot, Y(0), Y(1)));
|
|
33090
33096
|
});
|
|
@@ -33099,7 +33105,7 @@ function Fx(e) {
|
|
|
33099
33105
|
K.assign(q.ior);
|
|
33100
33106
|
}), N(gt.equal(3), () => {
|
|
33101
33107
|
vt.assign(q.ior);
|
|
33102
|
-
}), 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));
|
|
33103
33109
|
});
|
|
33104
33110
|
}).Else(() => {
|
|
33105
33111
|
N(gt.greaterThan(0), () => {
|
|
@@ -33117,7 +33123,7 @@ function Fx(e) {
|
|
|
33117
33123
|
vt.assign(q.ior);
|
|
33118
33124
|
});
|
|
33119
33125
|
let e = Mm.wrap(Im(q.subsurfaceColor, q.subsurfaceRadius, q.subsurfaceRadiusScale)).toVar();
|
|
33120
|
-
Pl(o,
|
|
33126
|
+
Pl(o, L, e.sigmaT.sub(e.sigmaS)), Ul(o, L, e.sigmaS, P(q.subsurfaceAnisotropy, -.99, .99));
|
|
33121
33127
|
});
|
|
33122
33128
|
}).Else(() => {
|
|
33123
33129
|
N(gt.greaterThan(0), () => {
|
|
@@ -33127,25 +33133,25 @@ function Fx(e) {
|
|
|
33127
33133
|
}), N(zt.isTransmissive.and(yt.greaterThan(0)), () => {
|
|
33128
33134
|
yt.subAssign(1);
|
|
33129
33135
|
}), Je.mulAssign(zt.throughput);
|
|
33130
|
-
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));
|
|
33131
33137
|
N(zt.isAlphaSkip.not(), () => {
|
|
33132
|
-
|
|
33138
|
+
B.assign(B.bitOr(G(jy.REDIRECTED)));
|
|
33133
33139
|
}).Else(() => {
|
|
33134
33140
|
pt.addAssign(1), N(pt.greaterThan(ne), () => {
|
|
33135
|
-
Pt(H(
|
|
33141
|
+
Pt(H(F(W, qe.negate()).lessThan(0), W.negate(), W)), Ft(), ge();
|
|
33136
33142
|
});
|
|
33137
|
-
}), _l(o,
|
|
33138
|
-
Rl(o,
|
|
33139
|
-
}), kl(s,
|
|
33140
|
-
}),
|
|
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)));
|
|
33141
33147
|
let Bt = wt.emissive.toVar();
|
|
33142
33148
|
N(Re(Bt).greaterThan(0), () => {
|
|
33143
|
-
let e = H(Ge.not(), ue,
|
|
33144
|
-
|
|
33145
|
-
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);
|
|
33146
33152
|
N(e.greaterThan(0), () => {
|
|
33147
|
-
let s = gl(o,
|
|
33148
|
-
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)), () => {
|
|
33149
33155
|
u.assign(Ax(R(ct), l, qe, c, a, Ce, Me, n, t));
|
|
33150
33156
|
}).Else(() => {
|
|
33151
33157
|
u.assign(vx(R(ct), l, qe, c, n, r, Ee, t, lt));
|
|
@@ -33154,9 +33160,9 @@ function Fx(e) {
|
|
|
33154
33160
|
pdf2: u
|
|
33155
33161
|
}));
|
|
33156
33162
|
});
|
|
33157
|
-
}), 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));
|
|
33158
33164
|
});
|
|
33159
|
-
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({
|
|
33160
33166
|
hitPoint: mt,
|
|
33161
33167
|
offsetNormal: Gt,
|
|
33162
33168
|
lift: Kt,
|
|
@@ -33165,30 +33171,30 @@ function Fx(e) {
|
|
|
33165
33171
|
L: e,
|
|
33166
33172
|
cutoff: ve
|
|
33167
33173
|
});
|
|
33168
|
-
N(
|
|
33174
|
+
N(F(Ht, Vt).lessThan(0), () => {
|
|
33169
33175
|
W.assign(W.negate());
|
|
33170
|
-
}), N(
|
|
33176
|
+
}), N(Be.and(B.bitAnd(G(jy.AUX_LOCKED)).equal(G(0))), () => {
|
|
33171
33177
|
let e = pl(dl(c, Xe)).w;
|
|
33172
33178
|
N(Mt, () => {
|
|
33173
|
-
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)));
|
|
33174
33180
|
}).Else(() => {
|
|
33175
|
-
let e = z(
|
|
33176
|
-
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);
|
|
33177
33183
|
});
|
|
33178
33184
|
});
|
|
33179
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({
|
|
33180
|
-
specular:
|
|
33181
|
-
diffuse:
|
|
33182
|
-
sheen:
|
|
33183
|
-
clearcoat:
|
|
33184
|
-
transmission:
|
|
33185
|
-
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)
|
|
33186
33192
|
}), Qt = rc({
|
|
33187
|
-
invRoughness:
|
|
33188
|
-
metalFactor:
|
|
33189
|
-
iorFactor:
|
|
33190
|
-
maxSheenColor:
|
|
33191
|
-
}), $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();
|
|
33192
33198
|
N(q.clearcoat.greaterThan(0), () => {
|
|
33193
33199
|
let e = Hs({
|
|
33194
33200
|
origin: Ke,
|
|
@@ -33210,31 +33216,31 @@ function Fx(e) {
|
|
|
33210
33216
|
let e = Js.wrap(qb(Vt, W, q, Yt, Xt, Ze, tt, _e, me, nt, Jt, !1, Zt, !1, Qt));
|
|
33211
33217
|
$t.assign(e.direction), en.assign(e.value), tn.assign(e.pdf), nn.assign(e.isTransmission), rn.assign(e.colorWeight);
|
|
33212
33218
|
});
|
|
33213
|
-
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
|
|
33214
|
-
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))), () => {
|
|
33215
33221
|
let e = M(([e, i, a]) => wh(e, i, a, mb, t, n, r));
|
|
33216
|
-
N(
|
|
33222
|
+
N(Ae.greaterThan(R(0)), () => {
|
|
33217
33223
|
let r = ix.wrap(kx(mt, W, Ze, tt, _e, me, nt, a, a, Ce, n, t));
|
|
33218
33224
|
N(r.valid.and(r.pdf.greaterThan(0)), () => {
|
|
33219
|
-
let t = z(
|
|
33220
|
-
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)), () => {
|
|
33221
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));
|
|
33222
33228
|
N(o.greaterThan(0), () => {
|
|
33223
33229
|
let e = Ab(Vt, r.direction, W, q), n = Wb(Vt, r.direction, W, q), i = H(n.greaterThan(0), Cc({
|
|
33224
33230
|
pdf1: r.pdf,
|
|
33225
33231
|
pdf2: n
|
|
33226
|
-
}),
|
|
33227
|
-
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));
|
|
33228
33234
|
});
|
|
33229
33235
|
});
|
|
33230
33236
|
});
|
|
33231
33237
|
}).Else(() => {
|
|
33232
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)));
|
|
33233
|
-
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));
|
|
33234
33240
|
});
|
|
33235
33241
|
});
|
|
33236
33242
|
let sn = Ph.wrap(Kb(W, q, $t, tn, en, nn, rn, Ze, tt, _e, me, nt)).toVar(), cn = sn.direction.toVar();
|
|
33237
|
-
N(nn.not().and(
|
|
33243
|
+
N(nn.not().and(F(cn, Ut).lessThanEqual(0)), () => {
|
|
33238
33244
|
Pt(W), Ft(), ge();
|
|
33239
33245
|
});
|
|
33240
33246
|
let Z = z(sn.combinedPdf, .001).toVar();
|
|
@@ -33245,10 +33251,10 @@ function Fx(e) {
|
|
|
33245
33251
|
}), Je.divAssign(ln), N(ut.greaterThanEqual(te), () => {
|
|
33246
33252
|
Pt(W), Ft(), ge();
|
|
33247
33253
|
});
|
|
33248
|
-
let un = ic(mt, H(
|
|
33249
|
-
|
|
33250
|
-
Rl(o,
|
|
33251
|
-
}), 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);
|
|
33252
33258
|
});
|
|
33253
33259
|
}
|
|
33254
33260
|
//#endregion
|
|
@@ -33290,12 +33296,12 @@ function Bx(e) {
|
|
|
33290
33296
|
return M(() => {
|
|
33291
33297
|
let e = R(Dt.x).mul(16).add(R(Be.x)), S = R(Dt.y).mul(16).add(R(Be.y));
|
|
33292
33298
|
N(e.lessThan(v).and(S.lessThan(b)), () => {
|
|
33293
|
-
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();
|
|
33294
33300
|
N(j, () => {
|
|
33295
33301
|
let e = dl(n, C);
|
|
33296
33302
|
ce.assign(pl(e)), le.assign(X(ml(e), 0).xyz), ue.assign(fl(e));
|
|
33297
33303
|
});
|
|
33298
|
-
let de = J(
|
|
33304
|
+
let de = J(I(e).add(.5), I(b).add(.5)).div(o);
|
|
33299
33305
|
N(c.and(d.not()).and(s.greaterThan(G(0))).and(l).and(x.notEqual(R(11))), () => {
|
|
33300
33306
|
let e = pt(h, de, 0).toVar();
|
|
33301
33307
|
te.assign(H(se, e.xyz, B(e.xyz, O.xyz, u))), N(j.and(f), () => {
|
|
@@ -33310,14 +33316,14 @@ function Bx(e) {
|
|
|
33310
33316
|
}), N(ae, () => {
|
|
33311
33317
|
let e = Sc(O.xyz), t = w.element(T).toVar(), n = H(se, t, B(t, e.mul(e), u)).toVar();
|
|
33312
33318
|
w.element(T).assign(n);
|
|
33313
|
-
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);
|
|
33314
33320
|
N(re.or(ie), () => {
|
|
33315
|
-
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();
|
|
33316
33322
|
N(ie, () => {
|
|
33317
33323
|
N(s.equal(G(0)), () => {
|
|
33318
33324
|
i.assign(G(0));
|
|
33319
33325
|
}), N(se.not().and(s.greaterThan(G(0))), () => {
|
|
33320
|
-
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)));
|
|
33321
33327
|
i.assign(H(e, n.add(G(1)), G(0)));
|
|
33322
33328
|
});
|
|
33323
33329
|
}), A.element(T).assign(i.bitOr(H(e, G(2147483648), G(0))).bitOr(u));
|
|
@@ -33340,10 +33346,10 @@ var Vx = /* @__PURE__ */ wt("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n re
|
|
|
33340
33346
|
direction: t
|
|
33341
33347
|
}), v = qs.wrap(pb(_, n, r).toVar());
|
|
33342
33348
|
return N(l.equal(R(7)), () => {
|
|
33343
|
-
let e =
|
|
33349
|
+
let e = I(v.triTests).div(u);
|
|
33344
33350
|
g.assign(H(e.lessThan(1), X(Y(e), 1), X(1, 0, 0, 1)));
|
|
33345
33351
|
}), N(l.equal(R(8)), () => {
|
|
33346
|
-
let e =
|
|
33352
|
+
let e = I(v.boxTests).div(u);
|
|
33347
33353
|
g.assign(H(e.lessThan(1), X(Y(e), 1), X(1, 0, 0, 1)));
|
|
33348
33354
|
}), N(l.equal(R(10)), () => {
|
|
33349
33355
|
N(c, () => {
|
|
@@ -33354,7 +33360,7 @@ var Vx = /* @__PURE__ */ wt("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n re
|
|
|
33354
33360
|
environmentMatrix: o,
|
|
33355
33361
|
environmentIntensity: s,
|
|
33356
33362
|
enableEnvironmentLight: c
|
|
33357
|
-
}).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();
|
|
33358
33364
|
N(m.lessThan(.2), () => {
|
|
33359
33365
|
h.assign(B(Y(0, 0, 0), Y(0, 0, .5), m.mul(5)));
|
|
33360
33366
|
}).ElseIf(m.lessThan(.4), () => {
|
|
@@ -33384,7 +33390,7 @@ var Vx = /* @__PURE__ */ wt("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n re
|
|
|
33384
33390
|
}).Else(() => {
|
|
33385
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();
|
|
33386
33392
|
N(r.greaterThan(0), () => {
|
|
33387
|
-
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));
|
|
33388
33394
|
g.assign(X(o, 1));
|
|
33389
33395
|
}).Else(() => {
|
|
33390
33396
|
g.assign(X(0, 0, .1, 1));
|
|
@@ -33456,7 +33462,7 @@ var Vx = /* @__PURE__ */ wt("\n fn visualizeDepth( depth: f32 ) -> vec3f {\n re
|
|
|
33456
33462
|
});
|
|
33457
33463
|
}), N(l.equal(R(6)), () => {
|
|
33458
33464
|
N(v.didHit, () => {
|
|
33459
|
-
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({
|
|
33460
33466
|
tex: a,
|
|
33461
33467
|
samp: et(a),
|
|
33462
33468
|
direction: n,
|
|
@@ -33483,7 +33489,7 @@ function Gx(e) {
|
|
|
33483
33489
|
return M(() => {
|
|
33484
33490
|
let e = R(Dt.x).mul(16).add(R(Be.x)), ne = R(Dt.y).mul(16).add(R(Be.y));
|
|
33485
33491
|
N(e.lessThan(a).and(ne.lessThan(o)), () => {
|
|
33486
|
-
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();
|
|
33487
33493
|
N(ee.equal(R(9)), () => {
|
|
33488
33494
|
let e = ui(a, R(0), R(1), o, i, j);
|
|
33489
33495
|
ie.assign(X(e, 1, 1));
|
|
@@ -33625,7 +33631,7 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
33625
33631
|
}
|
|
33626
33632
|
this.performanceMonitor?.start();
|
|
33627
33633
|
let t = this.frameCount, n = this.renderMode.value, r = null;
|
|
33628
|
-
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);
|
|
33629
33635
|
let i = this._updateAuxAccumulationUniforms(t);
|
|
33630
33636
|
this.frame.value = t, this.seedFrame.value = this._seedTick++, this.tracedFrames++, this._setWfDispatch();
|
|
33631
33637
|
let a = this.storageTextures.getReadTextures();
|
|
@@ -34423,9 +34429,9 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34423
34429
|
this._computeNode = M(([r, i]) => {
|
|
34424
34430
|
let u = R(Dt.x).mul(8).add(R(Be.x)), d = R(Dt.y).mul(8).add(R(Be.y));
|
|
34425
34431
|
N(u.lessThan(R(a)).and(d.lessThan(R(o))), () => {
|
|
34426
|
-
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)));
|
|
34427
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();
|
|
34428
|
-
let _ = p.normal.toVar(), v =
|
|
34434
|
+
let _ = p.normal.toVar(), v = I(1).toVar();
|
|
34429
34435
|
N(p.didHit, () => {
|
|
34430
34436
|
let r = Us.wrap(Lc(p.materialIndex, n)).toVar(), i = nc.wrap(uh(p.uv, r)).toVar(), a = X(0).toVar();
|
|
34431
34437
|
N(r.normalMapIndex.greaterThanEqual(R(0)), () => {
|
|
@@ -34529,10 +34535,10 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34529
34535
|
this._screenSpaceComputeNode = M(([t, n]) => {
|
|
34530
34536
|
let s = R(Dt.x).mul(16).add(R(Be.x)), c = R(Dt.y).mul(16).add(R(Be.y));
|
|
34531
34537
|
N(s.lessThan(R(i)).and(c.lessThan(R(a))), () => {
|
|
34532
|
-
let l = W(e, Ie(s, c)).w, u = J(
|
|
34533
|
-
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)), () => {
|
|
34534
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));
|
|
34535
|
-
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)));
|
|
34536
34542
|
}), gt(o, St(G(s), G(c)), d).toWriteOnly();
|
|
34537
34543
|
});
|
|
34538
34544
|
})(t, n).compute([
|
|
@@ -34551,8 +34557,8 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34551
34557
|
let u = R(Dt.x).mul(16).add(R(Be.x)), d = R(Dt.y).mul(16).add(R(Be.y));
|
|
34552
34558
|
N(u.lessThan(R(s)).and(d.lessThan(R(c))), () => {
|
|
34553
34559
|
let f = W(e, Ie(u, d)).w, p = X(0, 0, 0, 0).toVar();
|
|
34554
|
-
N(i.lessThan(.5).and(f.lessThan(
|
|
34555
|
-
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);
|
|
34556
34562
|
p.assign(g.select(X(v, 1), X(0, 0, 0, .5)));
|
|
34557
34563
|
}), gt(l, St(G(u), G(d)), p).toWriteOnly();
|
|
34558
34564
|
});
|
|
@@ -34626,7 +34632,7 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34626
34632
|
dispose() {
|
|
34627
34633
|
this._screenSpaceComputeNode?.dispose(), this._worldSpaceComputeNode?.dispose(), this._screenSpaceStorageTex?.dispose(), this._worldSpaceStorageTex?.dispose(), this.screenSpaceTarget?.dispose(), this.worldSpaceTarget?.dispose(), this._normalDepthTexNode?.dispose();
|
|
34628
34634
|
}
|
|
34629
|
-
}, 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 {
|
|
34630
34636
|
constructor(e, t = {}) {
|
|
34631
34637
|
super("ASVGF", {
|
|
34632
34638
|
...t,
|
|
@@ -34669,7 +34675,7 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34669
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) => {
|
|
34670
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();
|
|
34671
34677
|
l.element(i).assign(_);
|
|
34672
|
-
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), _);
|
|
34673
34679
|
u.element(i).assign(T);
|
|
34674
34680
|
};
|
|
34675
34681
|
g(p);
|
|
@@ -34683,17 +34689,17 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34683
34689
|
}), Et();
|
|
34684
34690
|
let y = R(Dt.x).mul(8).add(R(d)), b = R(Dt.y).mul(8).add(R(f));
|
|
34685
34691
|
N(y.lessThan(R(s)).and(b.lessThan(R(c))), () => {
|
|
34686
|
-
let e =
|
|
34692
|
+
let e = I(0).toVar(), t = I(0).toVar();
|
|
34687
34693
|
for (let n = -2; n <= 2; n++) for (let r = -2; r <= 2; r++) {
|
|
34688
34694
|
let i = f.add(G(2 + n)).mul(G(12)).add(d.add(G(2 + r))), a = l.element(i);
|
|
34689
34695
|
e.addAssign(a), t.addAssign(a.mul(a));
|
|
34690
34696
|
}
|
|
34691
|
-
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();
|
|
34692
34698
|
for (let e = -2; e <= 2; e++) for (let t = -2; t <= 2; t++) {
|
|
34693
|
-
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)));
|
|
34694
34700
|
h.addAssign(o.mul(o));
|
|
34695
34701
|
}
|
|
34696
|
-
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);
|
|
34697
34703
|
gt(o, St(G(y), G(b)), X(C, g, m, 1)).toWriteOnly();
|
|
34698
34704
|
});
|
|
34699
34705
|
})().compute([
|
|
@@ -34716,14 +34722,14 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34716
34722
|
N(g.lessThan(R(m)).and(_.lessThan(R(h))), () => {
|
|
34717
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();
|
|
34718
34724
|
N(f.greaterThan(.5).and(p.lessThan(.5)), () => {
|
|
34719
|
-
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)));
|
|
34720
34726
|
N(t.and(f), () => {
|
|
34721
|
-
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(
|
|
34722
|
-
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());
|
|
34723
34729
|
return i.mul(l).mul(u);
|
|
34724
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);
|
|
34725
|
-
N(se.greaterThan(
|
|
34726
|
-
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);
|
|
34727
34733
|
T.assign(X(p, m)), E.assign(X(p.mul(C), x));
|
|
34728
34734
|
});
|
|
34729
34735
|
});
|
|
@@ -34749,17 +34755,17 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34749
34755
|
let e = W(t, f).xyz;
|
|
34750
34756
|
p.assign(X(e, 1));
|
|
34751
34757
|
}).ElseIf(s.equal(R(1)), () => {
|
|
34752
|
-
let t =
|
|
34758
|
+
let t = I(0).toVar(), n = I(0).toVar();
|
|
34753
34759
|
for (let r = -1; r <= 1; r++) for (let i = -1; i <= 1; i++) {
|
|
34754
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);
|
|
34755
34761
|
t.addAssign(o), n.addAssign(o.mul(o));
|
|
34756
34762
|
}
|
|
34757
34763
|
t.divAssign(9), n.divAssign(9);
|
|
34758
|
-
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));
|
|
34759
34765
|
p.assign(X(i, a, o, 1));
|
|
34760
34766
|
}).ElseIf(s.equal(R(2)), () => {
|
|
34761
34767
|
let e = W(n, f).w.div(32).clamp(0, 1);
|
|
34762
|
-
p.assign(X(
|
|
34768
|
+
p.assign(X(I(1).sub(e), e, I(.2), 1));
|
|
34763
34769
|
}).ElseIf(s.equal(R(3)), () => {
|
|
34764
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);
|
|
34765
34771
|
p.assign(X(t, n, r.mul(.3), 1));
|
|
@@ -34768,7 +34774,7 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34768
34774
|
p.assign(X(e.xyz, 1));
|
|
34769
34775
|
}).Else(() => {
|
|
34770
34776
|
let e = W(a, f).x.mul(5).clamp(0, 1);
|
|
34771
|
-
p.assign(X(e, e.mul(.5),
|
|
34777
|
+
p.assign(X(e, e.mul(.5), I(1).sub(e), 1));
|
|
34772
34778
|
}), gt(o, St(G(u), G(d)), p).toWriteOnly();
|
|
34773
34779
|
});
|
|
34774
34780
|
})().compute([
|
|
@@ -34895,25 +34901,25 @@ var Xx = a("wavefront"), Zx = 256, Qx = [
|
|
|
34895
34901
|
-bS,
|
|
34896
34902
|
.5
|
|
34897
34903
|
]
|
|
34898
|
-
], 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) => {
|
|
34899
34905
|
let r = e.mul(t).add(n).abs().mul(-cS);
|
|
34900
|
-
return
|
|
34901
|
-
}, wS = (e) => B(
|
|
34902
|
-
let i = z(Se(ES(n, r.mul(B(tt(t),
|
|
34903
|
-
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);
|
|
34904
34910
|
}, OS = (e, t) => {
|
|
34905
|
-
let n =
|
|
34911
|
+
let n = I(1).div(B(I(sS), I(1), tt(e.mul(t))));
|
|
34906
34912
|
return J(n, e.mul(n).negate());
|
|
34907
34913
|
}, kS = (e, t, n) => {
|
|
34908
|
-
let r =
|
|
34914
|
+
let r = I(1).div(B(I(n), I(1), B(e.mul(e), e, tt(t))));
|
|
34909
34915
|
return J(r, e.mul(r).negate());
|
|
34910
34916
|
}, AS = (e, t) => {
|
|
34911
|
-
let n =
|
|
34917
|
+
let n = I(1).div(t);
|
|
34912
34918
|
return J(n, e.mul(n).negate());
|
|
34913
34919
|
}, jS = (e, t, n, r) => {
|
|
34914
|
-
let i =
|
|
34915
|
-
return J(i,
|
|
34916
|
-
}, 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) => {
|
|
34917
34923
|
let t = e.x.sub(e.z);
|
|
34918
34924
|
return z(Y(t.add(e.y), e.x.add(e.z), t.sub(e.y)), Y(0));
|
|
34919
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);
|
|
@@ -35007,10 +35013,10 @@ var HS = class extends pi {
|
|
|
35007
35013
|
return H(Uy(this.cameraRay.cameraProjection), n, V(t.sub(e)));
|
|
35008
35014
|
}
|
|
35009
35015
|
_frustumSize(e) {
|
|
35010
|
-
return this.minRectDimMulUnproject.mul(H(Uy(this.cameraRay.cameraProjection),
|
|
35016
|
+
return this.minRectDimMulUnproject.mul(H(Uy(this.cameraRay.cameraProjection), I(1), e));
|
|
35011
35017
|
}
|
|
35012
35018
|
_pixelUv(e, t) {
|
|
35013
|
-
return J(
|
|
35019
|
+
return J(I(e).add(.5).div(this.resW), I(t).add(.5).div(this.resH));
|
|
35014
35020
|
}
|
|
35015
35021
|
_clampCoord(e, t) {
|
|
35016
35022
|
return Ie(e.clamp(R(0), R(this.resW).sub(1)), t.clamp(R(0), R(this.resH).sub(1)));
|
|
@@ -35019,14 +35025,14 @@ var HS = class extends pi {
|
|
|
35019
35025
|
return this._clampCoord(R(e.x.mul(this.resW)), R(e.y.mul(this.resH)));
|
|
35020
35026
|
}
|
|
35021
35027
|
_advancedNonLinear(e) {
|
|
35022
|
-
let t = this.u.convergence, n = tt(e.div(
|
|
35023
|
-
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)));
|
|
35024
35030
|
}
|
|
35025
35031
|
_handover(e) {
|
|
35026
35032
|
return tt(e.div(z(this.u.handoverFrames, 1)));
|
|
35027
35033
|
}
|
|
35028
35034
|
_bilinear(e) {
|
|
35029
|
-
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));
|
|
35030
35036
|
return {
|
|
35031
35037
|
f: r,
|
|
35032
35038
|
taps: [
|
|
@@ -35042,9 +35048,9 @@ var HS = class extends pi {
|
|
|
35042
35048
|
o(i.add(1), a.add(1))
|
|
35043
35049
|
],
|
|
35044
35050
|
customWeights: (e) => [
|
|
35045
|
-
e[0].mul(
|
|
35046
|
-
e[1].mul(r.x).mul(
|
|
35047
|
-
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),
|
|
35048
35054
|
e[3].mul(r.x).mul(r.y)
|
|
35049
35055
|
],
|
|
35050
35056
|
filter: (e) => B(B(e[0], e[1], r.x), B(e[2], e[3], r.x), r.y)
|
|
@@ -35057,7 +35063,7 @@ var HS = class extends pi {
|
|
|
35057
35063
|
_sampleHistory(e, t, n, r, i) {
|
|
35058
35064
|
let a = X(0).toVar();
|
|
35059
35065
|
return N(i, () => {
|
|
35060
|
-
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 = [
|
|
35061
35067
|
s.x,
|
|
35062
35068
|
c.x,
|
|
35063
35069
|
l.x,
|
|
@@ -35067,7 +35073,7 @@ var HS = class extends pi {
|
|
|
35067
35073
|
c.y,
|
|
35068
35074
|
l.y,
|
|
35069
35075
|
u.y
|
|
35070
|
-
], 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();
|
|
35071
35077
|
for (let t = 0; t < 4; t++) for (let n = 0; n < 4; n++) {
|
|
35072
35078
|
if ((n === 0 || n === 3) && (t === 0 || t === 3)) continue;
|
|
35073
35079
|
let r = d[n].mul(f[t]);
|
|
@@ -35107,21 +35113,21 @@ var HS = class extends pi {
|
|
|
35107
35113
|
} : (e) => W(u, e), x = M(([a, o]) => {
|
|
35108
35114
|
let u = R(Dt.x).mul(vS).add(R(Be.x)), x = R(Dt.y).mul(vS).add(R(Be.y));
|
|
35109
35115
|
N(u.lessThan(R(_)).and(x.lessThan(R(v))), () => {
|
|
35110
|
-
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();
|
|
35111
35117
|
N(T.not(), () => {
|
|
35112
35118
|
let e = this._pixelUv(u, x), d = this._worldPosAt(e, w, a, o).toVar();
|
|
35113
35119
|
k.assign(h.mul(X(d, 1)).z.abs()), N(m.greaterThan(0), () => {
|
|
35114
|
-
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);
|
|
35115
35121
|
t || (le = le.mul(w)), le = le.toVar();
|
|
35116
35122
|
let ue = J(1);
|
|
35117
35123
|
if (!t) {
|
|
35118
35124
|
let e = h.mul(X(D, 0)).xy;
|
|
35119
35125
|
ue = B(J(1).sub(e.abs()), J(1), u), ue = ue.div(z(ue.x, ue.y));
|
|
35120
35126
|
}
|
|
35121
|
-
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();
|
|
35122
35128
|
for (let t = 0; t < xS.length; t++) {
|
|
35123
|
-
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)),
|
|
35124
|
-
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));
|
|
35125
35131
|
let g = BS(l, b(u));
|
|
35126
35132
|
l.mulAssign(le.add(CS(g.w, ce.x, ce.y))), fe.addAssign(l), A.addAssign(g.mul(l));
|
|
35127
35133
|
}
|
|
@@ -35140,30 +35146,30 @@ var HS = class extends pi {
|
|
|
35140
35146
|
N(C.greaterThanEqual(Bi), () => {
|
|
35141
35147
|
gt(l, g, w).toWriteOnly(), gt(u, g, X(0)).toWriteOnly(), ge();
|
|
35142
35148
|
});
|
|
35143
|
-
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();
|
|
35144
35150
|
re.addAssign(O.mul(.25));
|
|
35145
35151
|
for (let e = -1; e <= 0; e++) for (let r = -1; r <= 0; r++) {
|
|
35146
35152
|
if (r === 0 && e === 0) continue;
|
|
35147
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);
|
|
35148
35154
|
re.addAssign(H(o, a, O).mul(.25));
|
|
35149
35155
|
}
|
|
35150
|
-
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 = [];
|
|
35151
35157
|
for (let e = 0; e < 4; e++) {
|
|
35152
|
-
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));
|
|
35153
35159
|
ue.push(n.mul(r).mul(i).mul(se.inScreen[e]).mul(le).toVar()), de.push(W(s, se.taps[e]).x);
|
|
35154
35160
|
}
|
|
35155
|
-
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,
|
|
35156
|
-
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))));
|
|
35157
35163
|
let _e = U(tt(se.filter(ue))).mul(he).toVar();
|
|
35158
|
-
M.assign(M.mul(B(_e,
|
|
35159
|
-
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,
|
|
35160
|
-
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)));
|
|
35161
35167
|
let P = B(Te.x, We(Te.x, ve.x.mul(Ee)), De);
|
|
35162
35168
|
Te.assign(IS(Te, P));
|
|
35163
|
-
let Oe =
|
|
35169
|
+
let Oe = I(1.2).add(I(1).div(M.add(1)));
|
|
35164
35170
|
Te.assign(X(Te.xyz, B(Te.w, We(Te.w, ve.w.mul(Oe)), De))), gt(l, g, Te).toWriteOnly();
|
|
35165
|
-
let
|
|
35166
|
-
|
|
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();
|
|
35167
35173
|
});
|
|
35168
35174
|
});
|
|
35169
35175
|
return this._dispatchOf(y);
|
|
@@ -35177,14 +35183,14 @@ var HS = class extends pi {
|
|
|
35177
35183
|
let e = W(r, h);
|
|
35178
35184
|
gt(a, g, e).toWriteOnly(), gt(o, g, X(e.x, 0, 0, 0)).toWriteOnly(), ge();
|
|
35179
35185
|
});
|
|
35180
|
-
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();
|
|
35181
35187
|
N(ne.notEqual(0), () => {
|
|
35182
|
-
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();
|
|
35183
35189
|
k.mulAssign(p);
|
|
35184
35190
|
for (let e = -lS; e <= lS; e++) for (let m = -lS; m <= lS; m++) {
|
|
35185
35191
|
if (m === 0 && e === 0 || Math.abs(m) + Math.abs(e) === lS * 2) continue;
|
|
35186
|
-
let h = MS(T.add(J(m, e).mul(ne).mul(J(
|
|
35187
|
-
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));
|
|
35188
35194
|
let x = BS(b, W(r, g));
|
|
35189
35195
|
b.mulAssign(CS(x.w, s.x, s.y)), p.addAssign(b), k.addAssign(x.mul(b));
|
|
35190
35196
|
}
|
|
@@ -35192,7 +35198,7 @@ var HS = class extends pi {
|
|
|
35192
35198
|
});
|
|
35193
35199
|
let re = k.x.toVar(), ie = tt(y.div(z(e.historyFixFrameNum, aS))), ae = B(re, v.x, ie).toVar();
|
|
35194
35200
|
gt(o, g, X(ae, 0, 0, 0)).toWriteOnly();
|
|
35195
|
-
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) => {
|
|
35196
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);
|
|
35197
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)));
|
|
35198
35204
|
}, de = e.antiFirefly.greaterThan(.5);
|
|
@@ -35204,7 +35210,7 @@ var HS = class extends pi {
|
|
|
35204
35210
|
re.assign(B(re.clamp(t.sub(n), t.add(n)), re, x));
|
|
35205
35211
|
});
|
|
35206
35212
|
{
|
|
35207
|
-
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);
|
|
35208
35214
|
re.assign(B(i, re, o));
|
|
35209
35215
|
}
|
|
35210
35216
|
gt(a, g, IS(k, re)).toWriteOnly();
|
|
@@ -35226,7 +35232,7 @@ var HS = class extends pi {
|
|
|
35226
35232
|
2,
|
|
35227
35233
|
4,
|
|
35228
35234
|
8
|
|
35229
|
-
].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();
|
|
35230
35236
|
for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) {
|
|
35231
35237
|
if (t === 0 && e === 0) continue;
|
|
35232
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);
|
|
@@ -35235,18 +35241,18 @@ var HS = class extends pi {
|
|
|
35235
35241
|
re.divAssign(9), ie.divAssign(9);
|
|
35236
35242
|
let ae = RS(re, ie).toVar();
|
|
35237
35243
|
N(E.lessThan(t.historyFixFrameNum), () => {
|
|
35238
|
-
ne.assign(We(ne, re.mul(
|
|
35244
|
+
ne.assign(We(ne, re.mul(I(1.2).add(I(1).div(E.add(1))))));
|
|
35239
35245
|
});
|
|
35240
|
-
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);
|
|
35241
35247
|
E.assign(B(fe, E, de));
|
|
35242
|
-
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();
|
|
35243
35249
|
j.assign(IS(j, ve)), gt(e, p, X(ve, 0, 0, 0)).toWriteOnly();
|
|
35244
|
-
let ye = t.maxAccum.mul(
|
|
35250
|
+
let ye = t.maxAccum.mul(I(1).sub(h));
|
|
35245
35251
|
gt(u, p, X(We(E.add(1), ye), x, 0, 0)).toWriteOnly();
|
|
35246
35252
|
let be = W(r, f), xe = X(PS(j.xyz).mul(z(be.xyz, Y(Ui))), b.w).toVar();
|
|
35247
35253
|
N(g.equal(R(1)), () => {
|
|
35248
35254
|
let e = tt(E.div(z(t.maxAccum, 1)));
|
|
35249
|
-
xe.assign(X(
|
|
35255
|
+
xe.assign(X(I(1).sub(e), e, .2, 1));
|
|
35250
35256
|
}).ElseIf(g.equal(R(2)), () => {
|
|
35251
35257
|
xe.assign(X(Y(j.w), 1));
|
|
35252
35258
|
}).ElseIf(g.equal(R(3)), () => {
|
|
@@ -35340,7 +35346,7 @@ var HS = class extends pi {
|
|
|
35340
35346
|
for (let [e, t] of this._placeholders) e.dispose(), t.dispose();
|
|
35341
35347
|
this._placeholders.clear();
|
|
35342
35348
|
}
|
|
35343
|
-
}, 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 {
|
|
35344
35350
|
constructor(e, t = {}) {
|
|
35345
35351
|
super("VarianceEstimation", {
|
|
35346
35352
|
...t,
|
|
@@ -35372,13 +35378,13 @@ var HS = class extends pi {
|
|
|
35372
35378
|
}), Et();
|
|
35373
35379
|
let g = R(Dt.x).mul(8).add(R(c)), _ = R(Dt.y).mul(8).add(R(l));
|
|
35374
35380
|
N(g.lessThan(R(a)).and(_.lessThan(R(o))), () => {
|
|
35375
|
-
let n =
|
|
35381
|
+
let n = I(0).toVar(), a = I(0).toVar();
|
|
35376
35382
|
for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) {
|
|
35377
35383
|
let r = s.element(l.add(1 + e).mul(10).add(c.add(1 + t)));
|
|
35378
35384
|
n.addAssign(r), a.addAssign(r.mul(r));
|
|
35379
35385
|
}
|
|
35380
35386
|
n.divAssign(9), a.divAssign(9);
|
|
35381
|
-
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, _));
|
|
35382
35388
|
gt(e, St(G(g), G(_)), WS(u, d.x, d.y, r, o, i)).toWriteOnly();
|
|
35383
35389
|
});
|
|
35384
35390
|
})().compute([
|
|
@@ -35483,15 +35489,15 @@ var HS = class extends pi {
|
|
|
35483
35489
|
return M(() => {
|
|
35484
35490
|
let v = R(Dt.x).mul(8).add(R(Be.x)), y = R(Dt.y).mul(8).add(R(Be.y));
|
|
35485
35491
|
N(v.lessThan(R(h)).and(y.lessThan(R(g))), () => {
|
|
35486
|
-
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) => {
|
|
35487
35493
|
let t = W(a, e);
|
|
35488
35494
|
return B(t.z, z(t.z, t.w), d);
|
|
35489
|
-
}, 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();
|
|
35490
35496
|
for (let e = 0; e < 5; e++) for (let i = 0; i < 5; i++) {
|
|
35491
|
-
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,
|
|
35492
|
-
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))));
|
|
35493
35499
|
}
|
|
35494
|
-
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))));
|
|
35495
35501
|
gt(e, St(G(v), G(y)), X(se, ce)).toWriteOnly();
|
|
35496
35502
|
});
|
|
35497
35503
|
})().compute([
|
|
@@ -35547,7 +35553,7 @@ var HS = class extends pi {
|
|
|
35547
35553
|
dispose() {
|
|
35548
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();
|
|
35549
35555
|
}
|
|
35550
|
-
}, 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 = [
|
|
35551
35557
|
1 / 256,
|
|
35552
35558
|
4 / 256,
|
|
35553
35559
|
6 / 256,
|
|
@@ -35601,7 +35607,7 @@ var HS = class extends pi {
|
|
|
35601
35607
|
return M(() => {
|
|
35602
35608
|
let o = R(Dt.x).mul(16).add(R(Be.x)), s = R(Dt.y).mul(16).add(R(Be.y));
|
|
35603
35609
|
N(o.lessThan(R(i)).and(s.lessThan(R(a))), () => {
|
|
35604
|
-
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));
|
|
35605
35611
|
gt(r, St(G(o), G(s)), X(d, 1)).toWriteOnly();
|
|
35606
35612
|
});
|
|
35607
35613
|
})().compute([
|
|
@@ -35619,15 +35625,15 @@ var HS = class extends pi {
|
|
|
35619
35625
|
return M(() => {
|
|
35620
35626
|
let _ = R(Dt.x).mul(16).add(R(Be.x)), v = R(Dt.y).mul(16).add(R(Be.y));
|
|
35621
35627
|
N(_.lessThan(R(h)).and(v.lessThan(R(g))), () => {
|
|
35622
|
-
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) => {
|
|
35623
35629
|
let t = W(o, e);
|
|
35624
35630
|
return H(ee, z(t.z, t.w), t.z);
|
|
35625
|
-
}, 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();
|
|
35626
35632
|
for (let e = 0; e < 5; e++) for (let n = 0; n < 5; n++) {
|
|
35627
|
-
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(
|
|
35628
|
-
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))));
|
|
35629
35635
|
}
|
|
35630
|
-
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))));
|
|
35631
35637
|
gt(e, St(G(_), G(v)), X(de, fe)).toWriteOnly();
|
|
35632
35638
|
});
|
|
35633
35639
|
})().compute([
|
|
@@ -35710,9 +35716,9 @@ var HS = class extends pi {
|
|
|
35710
35716
|
_buildDownsampleCompute() {
|
|
35711
35717
|
let e = this._inputTexNode, t = this._downsampleStorageTex, n = this.epsilonU, r = this.inputResW, i = this.inputResH;
|
|
35712
35718
|
this._downsampleComputeNode = M(() => {
|
|
35713
|
-
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();
|
|
35714
35720
|
for (let t = 0; t < 4; t++) for (let r = 0; r < 4; r++) {
|
|
35715
|
-
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);
|
|
35716
35722
|
N(i.greaterThan(n), () => {
|
|
35717
35723
|
d.addAssign(i.add(n).log()), f.addAssign(1);
|
|
35718
35724
|
});
|
|
@@ -35736,7 +35742,7 @@ var HS = class extends pi {
|
|
|
35736
35742
|
for (let i = 0; i < 16; i++) {
|
|
35737
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;
|
|
35738
35744
|
N(u.greaterThan(0), () => {
|
|
35739
|
-
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)));
|
|
35740
35746
|
Ce(t.element(e), d);
|
|
35741
35747
|
});
|
|
35742
35748
|
}
|
|
@@ -35753,19 +35759,19 @@ var HS = class extends pi {
|
|
|
35753
35759
|
_buildHistogramAnalyzeCompute() {
|
|
35754
35760
|
let e = this._histogramBuffer, t = this._reductionStorageTex, n = this.lowPercentileU, r = this.highPercentileU;
|
|
35755
35761
|
this._histogramAnalyzeNode = M(() => {
|
|
35756
|
-
let i =
|
|
35762
|
+
let i = I(0).toVar();
|
|
35757
35763
|
he(eC, ({ i: t }) => {
|
|
35758
|
-
i.addAssign(
|
|
35764
|
+
i.addAssign(I(we(e.element(t))));
|
|
35759
35765
|
});
|
|
35760
|
-
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();
|
|
35761
35767
|
he(eC, ({ i: t }) => {
|
|
35762
|
-
let n =
|
|
35768
|
+
let n = I(we(e.element(t)));
|
|
35763
35769
|
u.assign(s), s.addAssign(n), N(u.lessThan(o).and(s.greaterThan(a)), () => {
|
|
35764
|
-
let e =
|
|
35770
|
+
let e = I(tC).add(I(t).add(.5).mul(I(rC)));
|
|
35765
35771
|
c.addAssign(e.mul(n)), l.addAssign(n);
|
|
35766
35772
|
});
|
|
35767
35773
|
});
|
|
35768
|
-
let d = z(l,
|
|
35774
|
+
let d = z(l, I(1)), f = c.div(d), p = f.exp();
|
|
35769
35775
|
gt(t, St(G(0), G(0)), X(p, i, f, 1)).toWriteOnly();
|
|
35770
35776
|
})().compute(1, [
|
|
35771
35777
|
1,
|
|
@@ -35846,7 +35852,7 @@ var HS = class extends pi {
|
|
|
35846
35852
|
...t,
|
|
35847
35853
|
executionMode: fi.ALWAYS
|
|
35848
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();
|
|
35849
|
-
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);
|
|
35850
35856
|
this.compositorMaterial = new ne(), this.compositorMaterial.colorNode = X(r, i), this.compositorMaterial.blending = Cn, this.compositorQuad = new ie(this.compositorMaterial);
|
|
35851
35857
|
}
|
|
35852
35858
|
_resolveSourceTexture(e) {
|
|
@@ -35861,8 +35867,8 @@ var HS = class extends pi {
|
|
|
35861
35867
|
if (this._debugMaterial && this._debugM2Attr === e.m2 && this._debugMaskAttr === e.frozenMask) return !0;
|
|
35862
35868
|
this._debugMaterial?.dispose(), this._debugTexNode?.dispose(), this._debugM2Attr = e.m2, this._debugMaskAttr = e.frozenMask, this._debugTexNode = new de();
|
|
35863
35869
|
let t = M(() => {
|
|
35864
|
-
let t =
|
|
35865
|
-
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()), () => {
|
|
35866
35872
|
let e = B(Y(1, .8, .1), Y(1, .1, .05), p.sub(1).div(3).clamp(0, 1));
|
|
35867
35873
|
h.assign(B(m, e, .85));
|
|
35868
35874
|
}), N(s.equal(G(1)).and(l), () => {
|
|
@@ -44698,30 +44704,30 @@ var yk = {
|
|
|
44698
44704
|
}
|
|
44699
44705
|
}
|
|
44700
44706
|
}
|
|
44701
|
-
onRenderComplete({ isStillComplete: e
|
|
44707
|
+
onRenderComplete({ isStillComplete: e }) {
|
|
44702
44708
|
this._cleanupCompletionListener();
|
|
44703
|
-
let
|
|
44704
|
-
if (this.denoiser?.removeEventListener("end",
|
|
44705
|
-
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") {
|
|
44706
44712
|
this._runNeuralPost(e);
|
|
44707
44713
|
return;
|
|
44708
44714
|
}
|
|
44709
44715
|
this.upscaler?.enabled && this.upscaler.start();
|
|
44710
44716
|
}
|
|
44711
44717
|
};
|
|
44712
|
-
if (!
|
|
44713
|
-
|
|
44718
|
+
if (!t) {
|
|
44719
|
+
n();
|
|
44714
44720
|
return;
|
|
44715
44721
|
}
|
|
44716
|
-
let
|
|
44717
|
-
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 }));
|
|
44718
44724
|
};
|
|
44719
44725
|
if (this._resetCadence(), this.denoiser.state.isDenoising) {
|
|
44720
44726
|
let e = () => {
|
|
44721
|
-
this.denoiser?.removeEventListener("end", e), this._pendingCloseDenoise === e && (this._pendingCloseDenoise = null),
|
|
44727
|
+
this.denoiser?.removeEventListener("end", e), this._pendingCloseDenoise === e && (this._pendingCloseDenoise = null), r();
|
|
44722
44728
|
};
|
|
44723
44729
|
this._pendingCloseDenoise = e, this.denoiser.addEventListener("end", e);
|
|
44724
|
-
} else
|
|
44730
|
+
} else r();
|
|
44725
44731
|
}
|
|
44726
44732
|
abort(e, { keepDisplay: t = !1 } = {}) {
|
|
44727
44733
|
this._cleanupCompletionListener(), this._restoreRenderDisplay(), e && e !== this.mainCanvas && (e.style.opacity = "1"), this.upscaler && this.upscaler.abort();
|
|
@@ -45743,7 +45749,7 @@ var dA = class extends Qt {
|
|
|
45743
45749
|
}
|
|
45744
45750
|
this._sceneHelpers?.clear(), this._sceneHelpers = null, this.scene?.clear(), this.scene = null;
|
|
45745
45751
|
try {
|
|
45746
|
-
let e = pt().value, t =
|
|
45752
|
+
let e = pt().value, t = Ae().value;
|
|
45747
45753
|
e?._listeners?.dispose && (e._listeners.dispose.length = 0), t?._listeners?.dispose && (t._listeners.dispose.length = 0);
|
|
45748
45754
|
} catch (e) {
|
|
45749
45755
|
sA.warn("failed to clear TSL texture singleton listeners", e);
|