@takram/three-geospatial 0.7.1 → 0.9.0
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/CHANGELOG.md +41 -0
- package/README.md +1 -1
- package/build/index.cjs +1 -1
- package/build/index.cjs.map +1 -1
- package/build/index.js +580 -598
- package/build/index.js.map +1 -1
- package/build/r3f.cjs +1 -1
- package/build/r3f.js +1 -1
- package/build/shared2.cjs +1 -1
- package/build/shared2.cjs.map +1 -1
- package/build/shared2.js +27 -212
- package/build/shared2.js.map +1 -1
- package/build/shared3.cjs +1 -1
- package/build/shared3.cjs.map +1 -1
- package/build/shared3.js +213 -8
- package/build/shared3.js.map +1 -1
- package/build/webgpu.cjs +6 -1
- package/build/webgpu.cjs.map +1 -1
- package/build/webgpu.js +1111 -768
- package/build/webgpu.js.map +1 -1
- package/package.json +1 -1
- package/src/EllipsoidGeometry.ts +1 -1
- package/src/PointOfView.ts +12 -5
- package/src/STBNLoader.ts +41 -19
- package/src/unrollLoops.ts +1 -1
- package/src/webgpu/CascadedShadowMapsNode.ts +48 -0
- package/src/webgpu/DualMipmapFilterNode.ts +8 -4
- package/src/webgpu/FilterNode.ts +5 -3
- package/src/webgpu/FnLayout.ts +17 -16
- package/src/webgpu/HighpVelocityNode.ts +9 -4
- package/src/webgpu/LensFlareNode.ts +12 -16
- package/src/webgpu/LensGlareNode.ts +28 -32
- package/src/webgpu/LensHaloNode.ts +2 -1
- package/src/webgpu/OutputTexture3DNode.ts +10 -0
- package/src/webgpu/OutputTextureNode.ts +10 -0
- package/src/webgpu/STBNTextureNode.ts +58 -0
- package/src/webgpu/ScreenSpaceShadowNode.ts +685 -0
- package/src/webgpu/SeparableFilterNode.ts +8 -5
- package/src/webgpu/SingleFilterNode.ts +5 -2
- package/src/webgpu/StorageTexture3DNode.ts +30 -0
- package/src/webgpu/TemporalAntialiasNode.ts +178 -137
- package/src/webgpu/accessors.ts +75 -36
- package/src/webgpu/debug.ts +38 -47
- package/src/webgpu/events.ts +18 -0
- package/src/webgpu/index.ts +5 -1
- package/src/webgpu/math.ts +116 -15
- package/src/webgpu/sampling.ts +39 -5
- package/src/webgpu/transformations.ts +71 -44
- package/types/PointOfView.d.ts +1 -1
- package/types/STBNLoader.d.ts +3 -4
- package/types/webgpu/CascadedShadowMapsNode.d.ts +13 -0
- package/types/webgpu/DualMipmapFilterNode.d.ts +1 -2
- package/types/webgpu/FnLayout.d.ts +4 -4
- package/types/webgpu/HighpVelocityNode.d.ts +1 -0
- package/types/webgpu/LensFlareNode.d.ts +2 -3
- package/types/webgpu/LensGlareNode.d.ts +1 -1
- package/types/webgpu/STBNTextureNode.d.ts +9 -0
- package/types/webgpu/ScreenSpaceShadowNode.d.ts +33 -0
- package/types/webgpu/SeparableFilterNode.d.ts +2 -3
- package/types/webgpu/SingleFilterNode.d.ts +1 -2
- package/types/webgpu/StorageTexture3DNode.d.ts +9 -0
- package/types/webgpu/TemporalAntialiasNode.d.ts +9 -10
- package/types/webgpu/accessors.d.ts +9 -8
- package/types/webgpu/debug.d.ts +4 -3
- package/types/webgpu/events.d.ts +3 -0
- package/types/webgpu/index.d.ts +5 -1
- package/types/webgpu/math.d.ts +3 -0
- package/types/webgpu/sampling.d.ts +2 -1
- package/types/webgpu/transformations.d.ts +7 -10
- package/src/webgpu/RTTextureNode.ts +0 -130
- package/types/webgpu/RTTextureNode.d.ts +0 -22
package/build/shared2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared2.js","sources":["../src/helpers/projectOnEllipsoidSurface.ts","../src/Ellipsoid.ts","../src/EllipsoidGeometry.ts","../src/Geodetic.ts"],"names":["vectorScratch","Vector3","projectOnEllipsoidSurface","position","reciprocalRadiiSquared","result","options","x","y","z","rx","ry","rz","x2","y2","z2","normSquared","ratio","intersection","gradient","lambda","correction","sx","sy","sz","error","sx2","sy2","sz2","sx3","sy3","sz3","vectorScratch1","vectorScratch2","vectorScratch3","_Ellipsoid","a2","b2","east","north","up","Matrix4","ray","reciprocalRadii","p","d","p2","d2","pd","discriminant","Q","t1","t2","t","surfacePosition","radius","invariant","normal","direction","v","q","Ellipsoid","EllipsoidGeometry","BufferGeometry","radii","longitudeSegments","latitudeSegments","elementCount","vertex","vertices","normals","uvs","grid","indices","vertexIndex","uvIndex","rowIndex","rowIndices","phi","uOffset","u","theta","a","b","c","BufferAttribute","source","_Geodetic","longitude","latitude","height","other","value","projection","ellipsoid","radiiSquared","cosLatitude","array","offset","Geodetic"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared2.js","sources":["../src/constants.ts","../src/QuadGeometry.ts","../src/STBNLoader.ts"],"names":["STBN_TEXTURE_WIDTH","STBN_TEXTURE_HEIGHT","STBN_TEXTURE_DEPTH","ref","DEFAULT_STBN_URL","QuadGeometry","BufferGeometry","Sphere","Vector3","Float32BufferAttribute","STBNLoader","Loader","url","onLoad","onProgress","onError","texture","Data3DTexture","loader","FileLoader","arrayBuffer","invariant","UnsignedByteType","RedFormat","NearestFilter","RepeatWrapping"],"mappings":";;AAAO,MAAMA,IAAqB,KACrBC,IAAsB,KACtBC,IAAqB,IAG5BC,IAAM,4CACCC,IAAmB,wFAAwFD,CAAG;ACJpH,MAAME,UAAqBC,EAAe;AAAA,EAC/C,cAAc;AACZ,UAAA,GACA,KAAK,iBAAiB,IAAIC,EAAA,GAC1B,KAAK,eAAe,IAAI,IAAIC,EAAA,GAAW,KAAQ,GAC/C,KAAK;AAAA,MACH;AAAA,MACA,IAAIC,EAAuB,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAAA,IAAA,GAE/D,KAAK,aAAa,MAAM,IAAIA,EAAuB,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAAA,EAC5E;AACF;ACIO,MAAMC,UAAmBC,EAAsB;AAAA,EAC3C,KACPC,GACAC,GACAC,GACAC,GACe;AACf,UAAMC,IAAU,IAAIC,EAAA,GAEdC,IAAS,IAAIC,EAAW,KAAK,OAAO;AAC1C,WAAAD,EAAO,QAAQ,KAAK,IAAI,GACxBA,EAAO,iBAAiB,KAAK,aAAa,GAC1CA,EAAO,mBAAmB,KAAK,eAAe,GAC9CA,EAAO,gBAAgB,aAAa,GACpCA,EAAO;AAAA,MACLN;AAAA,MACA,CAAAQ,MAAe;AACb,QAAAC,EAAUD,aAAuB,WAAW,GAC5CJ,EAAQ,MAAM,OAAO,IAAI,WAAWI,CAAW,GAC/CJ,EAAQ,MAAM,QAAQhB,GACtBgB,EAAQ,MAAM,SAASf,GACvBe,EAAQ,MAAM,QAAQd,GAEtBc,EAAQ,OAAOM,GACfN,EAAQ,SAASO,GACjBP,EAAQ,YAAYQ,GACpBR,EAAQ,YAAYQ,GACpBR,EAAQ,QAAQS,GAChBT,EAAQ,QAAQS,GAChBT,EAAQ,QAAQS,GAEhBT,EAAQ,cAAc,IACtBH,IAASG,CAAO;AAAA,MAClB;AAAA,MACAF;AAAA,MACAC;AAAA,IAAA,GAGKC;AAAA,EACT;AACF;"}
|
package/build/shared3.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const
|
|
1
|
+
"use strict";const o=require("three"),T=require("./shared.cjs"),D=new o.Vector3;function B(q,t,i=new o.Vector3,r){const{x:e,y:s,z:n}=q,c=t.x,h=t.y,u=t.z,d=e*e*c,y=s*s*h,a=n*n*u,l=d+y+a,p=Math.sqrt(1/l);if(!Number.isFinite(p))return;const w=D.copy(q).multiplyScalar(p);if(l<(r?.centerTolerance??.1))return i.copy(w);const V=w.multiply(t).multiplyScalar(2);let m=(1-p)*q.length()/(V.length()/2),f=0,x,M,g,I;do{m-=f,x=1/(1+m*c),M=1/(1+m*h),g=1/(1+m*u);const U=x*x,F=M*M,L=g*g,G=U*x,P=F*M,C=L*g;I=d*U+y*F+a*L-1,f=I/((d*G*c+y*P*h+a*C*u)*-2)}while(Math.abs(I)>1e-12);return i.set(e*x,s*M,n*g)}const v=new o.Vector3,N=new o.Vector3,S=new o.Vector3,b=class b{constructor(t,i,r){this.radii=new o.Vector3(t,i,r)}get minimumRadius(){return Math.min(this.radii.x,this.radii.y,this.radii.z)}get maximumRadius(){return Math.max(this.radii.x,this.radii.y,this.radii.z)}get flattening(){return 1-this.minimumRadius/this.maximumRadius}get eccentricity(){return Math.sqrt(this.eccentricitySquared)}get eccentricitySquared(){const t=this.maximumRadius**2,i=this.minimumRadius**2;return(t-i)/t}reciprocalRadii(t=new o.Vector3){const{x:i,y:r,z:e}=this.radii;return t.set(1/i,1/r,1/e)}reciprocalRadiiSquared(t=new o.Vector3){const{x:i,y:r,z:e}=this.radii;return t.set(1/i**2,1/r**2,1/e**2)}projectOnSurface(t,i=new o.Vector3,r){return B(t,this.reciprocalRadiiSquared(),i,r)}getSurfaceNormal(t,i=new o.Vector3){return i.multiplyVectors(this.reciprocalRadiiSquared(v),t).normalize()}getEastNorthUpVectors(t,i=new o.Vector3,r=new o.Vector3,e=new o.Vector3){this.getSurfaceNormal(t,e),i.set(-t.y,t.x,0).normalize(),r.crossVectors(e,i).normalize()}getEastNorthUpFrame(t,i=new o.Matrix4){const r=v,e=N,s=S;return this.getEastNorthUpVectors(t,r,e,s),i.makeBasis(r,e,s).setPosition(t)}getNorthUpEastFrame(t,i=new o.Matrix4){const r=v,e=N,s=S;return this.getEastNorthUpVectors(t,r,e,s),i.makeBasis(e,s,r).setPosition(t)}getIntersection(t,i=new o.Vector3){const r=this.reciprocalRadii(v),e=N.copy(r).multiply(t.origin),s=S.copy(r).multiply(t.direction),n=e.lengthSq(),c=s.lengthSq(),h=e.dot(s),u=h**2-c*(n-1);if(n===1)return i.copy(t.origin);if(n>1){if(h>=0||u<0)return;const d=Math.sqrt(u),y=(-h-d)/c,a=(-h+d)/c;return t.at(Math.min(y,a),i)}if(n<1){const d=h**2-c*(n-1),y=Math.sqrt(d),a=(-h+y)/c;return t.at(a,i)}if(h<0)return t.at(-h/c,i)}getOsculatingSphereCenter(t,i,r=new o.Vector3){T.invariant(this.radii.x===this.radii.y);const e=this.radii.x**2,s=this.radii.z**2,n=v.set(t.x/e,t.y/e,t.z/s).normalize();return r.copy(n.multiplyScalar(-i).add(t))}getNormalAtHorizon(t,i,r=new o.Vector3){T.invariant(this.radii.x===this.radii.y);const e=this.radii.x**2,s=this.radii.z**2,n=t,c=i;let h=(n.x*c.x+n.y*c.y)/e+n.z*c.z/s;h/=(n.x**2+n.y**2)/e+n.z**2/s;const u=v.copy(c).multiplyScalar(-h).add(t);return r.set(u.x/e,u.y/e,u.z/s).normalize()}};b.WGS84=new b(6378137,6378137,6356752314245179e-9);let E=b;class j extends o.BufferGeometry{constructor(t=new o.Vector3(1,1,1),i=32,r=16){super(),this.type="EllipsoidGeometry",this.parameters={radii:t,longitudeSegments:i,latitudeSegments:r},i=Math.max(3,Math.floor(i)),r=Math.max(2,Math.floor(r));const e=(i+1)*(r+1),s=new o.Vector3,n=new o.Vector3,c=new Float32Array(e*3),h=new Float32Array(e*3),u=new Float32Array(e*2),d=[],y=[];for(let a=0,l=0,p=0,w=0;a<=r;++a){const V=[],m=a/r,f=m*Math.PI;let x=0;a===0?x=.5/i:a===r&&(x=-.5/i);for(let M=0;M<=i;++M,l+=3,p+=2,++w){const g=M/i,I=(g-.5)*Math.PI*2;s.x=t.x*Math.cos(I)*Math.sin(f),s.y=t.y*Math.sin(I)*Math.sin(f),s.z=t.z*Math.cos(f),c[l]=s.x,c[l+1]=s.y,c[l+2]=s.z,n.copy(s).normalize(),h[l]=n.x,h[l+1]=n.y,h[l+2]=n.z,u[p]=g+x,u[p+1]=1-m,V.push(w)}d.push(V)}for(let a=0;a<r;++a)for(let l=0;l<i;++l){const p=d[a][l+1],w=d[a][l],V=d[a+1][l],m=d[a+1][l+1];a!==0&&y.push(p,w,m),a!==r-1&&y.push(w,V,m)}this.setIndex(y),this.setAttribute("position",new o.BufferAttribute(c,3)),this.setAttribute("normal",new o.BufferAttribute(h,3)),this.setAttribute("uv",new o.BufferAttribute(u,2))}copy(t){return super.copy(t),this.parameters={...t.parameters},this}}const A=new o.Vector3,O=new o.Vector3,z=class z{constructor(t=0,i=0,r=0){this.longitude=t,this.latitude=i,this.height=r}set(t,i,r){return this.longitude=t,this.latitude=i,r!=null&&(this.height=r),this}clone(){return new z(this.longitude,this.latitude,this.height)}copy(t){return this.longitude=t.longitude,this.latitude=t.latitude,this.height=t.height,this}equals(t){return t.longitude===this.longitude&&t.latitude===this.latitude&&t.height===this.height}setLongitude(t){return this.longitude=t,this}setLatitude(t){return this.latitude=t,this}setHeight(t){return this.height=t,this}normalize(){return this.longitude<z.MIN_LONGITUDE&&(this.longitude+=Math.PI*2),this}setFromECEF(t,i){const e=(i?.ellipsoid??E.WGS84).reciprocalRadiiSquared(A),s=B(t,e,O,i);if(s==null)throw new Error(`Could not project position to ellipsoid surface: ${t.toArray()}`);const n=A.multiplyVectors(s,e).normalize();this.longitude=Math.atan2(n.y,n.x),this.latitude=Math.asin(n.z);const c=A.subVectors(t,s);return this.height=Math.sign(c.dot(t))*c.length(),this}toECEF(t=new o.Vector3,i){const r=i?.ellipsoid??E.WGS84,e=A.multiplyVectors(r.radii,r.radii),s=Math.cos(this.latitude),n=O.set(s*Math.cos(this.longitude),s*Math.sin(this.longitude),Math.sin(this.latitude)).normalize();return t.multiplyVectors(e,n),t.divideScalar(Math.sqrt(n.dot(t))).add(n.multiplyScalar(this.height))}fromArray(t,i=0){return this.longitude=t[i],this.latitude=t[i+1],this.height=t[i+2],this}toArray(t=[],i=0){return t[i]=this.longitude,t[i+1]=this.latitude,t[i+2]=this.height,t}*[Symbol.iterator](){yield this.longitude,yield this.latitude,yield this.height}};z.MIN_LONGITUDE=-Math.PI,z.MAX_LONGITUDE=Math.PI,z.MIN_LATITUDE=-Math.PI/2,z.MAX_LATITUDE=Math.PI/2;let R=z;exports.Ellipsoid=E;exports.EllipsoidGeometry=j;exports.Geodetic=R;
|
|
2
2
|
//# sourceMappingURL=shared3.cjs.map
|
package/build/shared3.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared3.cjs","sources":["../src/
|
|
1
|
+
{"version":3,"file":"shared3.cjs","sources":["../src/helpers/projectOnEllipsoidSurface.ts","../src/Ellipsoid.ts","../src/EllipsoidGeometry.ts","../src/Geodetic.ts"],"names":["vectorScratch","Vector3","projectOnEllipsoidSurface","position","reciprocalRadiiSquared","result","options","x","y","z","rx","ry","rz","x2","y2","z2","normSquared","ratio","intersection","gradient","lambda","correction","sx","sy","sz","error","sx2","sy2","sz2","sx3","sy3","sz3","vectorScratch1","vectorScratch2","vectorScratch3","_Ellipsoid","a2","b2","east","north","up","Matrix4","ray","reciprocalRadii","p","d","p2","d2","pd","discriminant","Q","t1","t2","t","surfacePosition","radius","invariant","normal","direction","v","q","Ellipsoid","EllipsoidGeometry","BufferGeometry","radii","longitudeSegments","latitudeSegments","elementCount","vertex","vertices","normals","uvs","grid","indices","vertexIndex","uvIndex","rowIndex","rowIndices","phi","uOffset","u","theta","a","b","c","BufferAttribute","source","_Geodetic","longitude","latitude","height","other","value","projection","ellipsoid","radiiSquared","cosLatitude","array","offset","Geodetic"],"mappings":"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"}
|
package/build/shared3.js
CHANGED
|
@@ -1,13 +1,218 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { Vector3 as a, Matrix4 as T, BufferGeometry as W, BufferAttribute as S } from "three";
|
|
2
|
+
import { i as O } from "./shared.js";
|
|
3
|
+
const $ = /* @__PURE__ */ new a();
|
|
4
|
+
function D(q, t, i = new a(), s) {
|
|
5
|
+
const { x: r, y: e, z: n } = q, o = t.x, h = t.y, u = t.z, d = r * r * o, m = e * e * h, c = n * n * u, l = d + m + c, p = Math.sqrt(1 / l);
|
|
6
|
+
if (!Number.isFinite(p))
|
|
7
|
+
return;
|
|
8
|
+
const w = $.copy(q).multiplyScalar(p);
|
|
9
|
+
if (l < (s?.centerTolerance ?? 0.1))
|
|
10
|
+
return i.copy(w);
|
|
11
|
+
const f = w.multiply(t).multiplyScalar(2);
|
|
12
|
+
let y = (1 - p) * q.length() / (f.length() / 2), I = 0, x, M, g, v;
|
|
13
|
+
do {
|
|
14
|
+
y -= I, x = 1 / (1 + y * o), M = 1 / (1 + y * h), g = 1 / (1 + y * u);
|
|
15
|
+
const V = x * x, F = M * M, L = g * g, G = V * x, j = F * M, B = L * g;
|
|
16
|
+
v = d * V + m * F + c * L - 1, I = v / ((d * G * o + m * j * h + c * B * u) * -2);
|
|
17
|
+
} while (Math.abs(v) > 1e-12);
|
|
18
|
+
return i.set(r * x, e * M, n * g);
|
|
19
|
+
}
|
|
20
|
+
const E = /* @__PURE__ */ new a(), R = /* @__PURE__ */ new a(), U = /* @__PURE__ */ new a(), b = class b {
|
|
21
|
+
constructor(t, i, s) {
|
|
22
|
+
this.radii = new a(t, i, s);
|
|
23
|
+
}
|
|
24
|
+
// TODO: Rename to semiMinorAxis
|
|
25
|
+
get minimumRadius() {
|
|
26
|
+
return Math.min(this.radii.x, this.radii.y, this.radii.z);
|
|
27
|
+
}
|
|
28
|
+
// TODO: Rename to semiMajorAxis
|
|
29
|
+
get maximumRadius() {
|
|
30
|
+
return Math.max(this.radii.x, this.radii.y, this.radii.z);
|
|
31
|
+
}
|
|
32
|
+
get flattening() {
|
|
33
|
+
return 1 - this.minimumRadius / this.maximumRadius;
|
|
34
|
+
}
|
|
35
|
+
get eccentricity() {
|
|
36
|
+
return Math.sqrt(this.eccentricitySquared);
|
|
37
|
+
}
|
|
38
|
+
get eccentricitySquared() {
|
|
39
|
+
const t = this.maximumRadius ** 2, i = this.minimumRadius ** 2;
|
|
40
|
+
return (t - i) / t;
|
|
41
|
+
}
|
|
42
|
+
reciprocalRadii(t = new a()) {
|
|
43
|
+
const { x: i, y: s, z: r } = this.radii;
|
|
44
|
+
return t.set(1 / i, 1 / s, 1 / r);
|
|
45
|
+
}
|
|
46
|
+
reciprocalRadiiSquared(t = new a()) {
|
|
47
|
+
const { x: i, y: s, z: r } = this.radii;
|
|
48
|
+
return t.set(1 / i ** 2, 1 / s ** 2, 1 / r ** 2);
|
|
49
|
+
}
|
|
50
|
+
projectOnSurface(t, i = new a(), s) {
|
|
51
|
+
return D(
|
|
52
|
+
t,
|
|
53
|
+
this.reciprocalRadiiSquared(),
|
|
54
|
+
i,
|
|
55
|
+
s
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
getSurfaceNormal(t, i = new a()) {
|
|
59
|
+
return i.multiplyVectors(this.reciprocalRadiiSquared(E), t).normalize();
|
|
60
|
+
}
|
|
61
|
+
getEastNorthUpVectors(t, i = new a(), s = new a(), r = new a()) {
|
|
62
|
+
this.getSurfaceNormal(t, r), i.set(-t.y, t.x, 0).normalize(), s.crossVectors(r, i).normalize();
|
|
63
|
+
}
|
|
64
|
+
getEastNorthUpFrame(t, i = new T()) {
|
|
65
|
+
const s = E, r = R, e = U;
|
|
66
|
+
return this.getEastNorthUpVectors(t, s, r, e), i.makeBasis(s, r, e).setPosition(t);
|
|
67
|
+
}
|
|
68
|
+
getNorthUpEastFrame(t, i = new T()) {
|
|
69
|
+
const s = E, r = R, e = U;
|
|
70
|
+
return this.getEastNorthUpVectors(t, s, r, e), i.makeBasis(r, e, s).setPosition(t);
|
|
71
|
+
}
|
|
72
|
+
getIntersection(t, i = new a()) {
|
|
73
|
+
const s = this.reciprocalRadii(E), r = R.copy(s).multiply(t.origin), e = U.copy(s).multiply(t.direction), n = r.lengthSq(), o = e.lengthSq(), h = r.dot(e), u = h ** 2 - o * (n - 1);
|
|
74
|
+
if (n === 1)
|
|
75
|
+
return i.copy(t.origin);
|
|
76
|
+
if (n > 1) {
|
|
77
|
+
if (h >= 0 || u < 0)
|
|
78
|
+
return;
|
|
79
|
+
const d = Math.sqrt(u), m = (-h - d) / o, c = (-h + d) / o;
|
|
80
|
+
return t.at(Math.min(m, c), i);
|
|
81
|
+
}
|
|
82
|
+
if (n < 1) {
|
|
83
|
+
const d = h ** 2 - o * (n - 1), m = Math.sqrt(d), c = (-h + m) / o;
|
|
84
|
+
return t.at(c, i);
|
|
85
|
+
}
|
|
86
|
+
if (h < 0)
|
|
87
|
+
return t.at(-h / o, i);
|
|
88
|
+
}
|
|
89
|
+
getOsculatingSphereCenter(t, i, s = new a()) {
|
|
90
|
+
O(this.radii.x === this.radii.y);
|
|
91
|
+
const r = this.radii.x ** 2, e = this.radii.z ** 2, n = E.set(
|
|
92
|
+
t.x / r,
|
|
93
|
+
t.y / r,
|
|
94
|
+
t.z / e
|
|
95
|
+
).normalize();
|
|
96
|
+
return s.copy(n.multiplyScalar(-i).add(t));
|
|
97
|
+
}
|
|
98
|
+
getNormalAtHorizon(t, i, s = new a()) {
|
|
99
|
+
O(this.radii.x === this.radii.y);
|
|
100
|
+
const r = this.radii.x ** 2, e = this.radii.z ** 2, n = t, o = i;
|
|
101
|
+
let h = (n.x * o.x + n.y * o.y) / r + n.z * o.z / e;
|
|
102
|
+
h /= (n.x ** 2 + n.y ** 2) / r + n.z ** 2 / e;
|
|
103
|
+
const u = E.copy(o).multiplyScalar(-h).add(t);
|
|
104
|
+
return s.set(u.x / r, u.y / r, u.z / e).normalize();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
b.WGS84 = /* @__PURE__ */ new b(
|
|
108
|
+
6378137,
|
|
109
|
+
6378137,
|
|
110
|
+
6356752314245179e-9
|
|
111
|
+
);
|
|
112
|
+
let N = b;
|
|
113
|
+
class Q extends W {
|
|
114
|
+
constructor(t = new a(1, 1, 1), i = 32, s = 16) {
|
|
115
|
+
super(), this.type = "EllipsoidGeometry", this.parameters = {
|
|
116
|
+
radii: t,
|
|
117
|
+
longitudeSegments: i,
|
|
118
|
+
latitudeSegments: s
|
|
119
|
+
}, i = Math.max(3, Math.floor(i)), s = Math.max(2, Math.floor(s));
|
|
120
|
+
const r = (i + 1) * (s + 1), e = new a(), n = new a(), o = new Float32Array(r * 3), h = new Float32Array(r * 3), u = new Float32Array(r * 2), d = [], m = [];
|
|
121
|
+
for (let c = 0, l = 0, p = 0, w = 0; c <= s; ++c) {
|
|
122
|
+
const f = [], y = c / s, I = y * Math.PI;
|
|
123
|
+
let x = 0;
|
|
124
|
+
c === 0 ? x = 0.5 / i : c === s && (x = -0.5 / i);
|
|
125
|
+
for (let M = 0; M <= i; ++M, l += 3, p += 2, ++w) {
|
|
126
|
+
const g = M / i, v = (g - 0.5) * Math.PI * 2;
|
|
127
|
+
e.x = t.x * Math.cos(v) * Math.sin(I), e.y = t.y * Math.sin(v) * Math.sin(I), e.z = t.z * Math.cos(I), o[l] = e.x, o[l + 1] = e.y, o[l + 2] = e.z, n.copy(e).normalize(), h[l] = n.x, h[l + 1] = n.y, h[l + 2] = n.z, u[p] = g + x, u[p + 1] = 1 - y, f.push(w);
|
|
128
|
+
}
|
|
129
|
+
d.push(f);
|
|
130
|
+
}
|
|
131
|
+
for (let c = 0; c < s; ++c)
|
|
132
|
+
for (let l = 0; l < i; ++l) {
|
|
133
|
+
const p = d[c][l + 1], w = d[c][l], f = d[c + 1][l], y = d[c + 1][l + 1];
|
|
134
|
+
c !== 0 && m.push(p, w, y), c !== s - 1 && m.push(w, f, y);
|
|
135
|
+
}
|
|
136
|
+
this.setIndex(m), this.setAttribute("position", new S(o, 3)), this.setAttribute("normal", new S(h, 3)), this.setAttribute("uv", new S(u, 2));
|
|
137
|
+
}
|
|
138
|
+
copy(t) {
|
|
139
|
+
return super.copy(t), this.parameters = { ...t.parameters }, this;
|
|
8
140
|
}
|
|
9
141
|
}
|
|
142
|
+
const A = /* @__PURE__ */ new a(), P = /* @__PURE__ */ new a(), z = class z {
|
|
143
|
+
constructor(t = 0, i = 0, s = 0) {
|
|
144
|
+
this.longitude = t, this.latitude = i, this.height = s;
|
|
145
|
+
}
|
|
146
|
+
set(t, i, s) {
|
|
147
|
+
return this.longitude = t, this.latitude = i, s != null && (this.height = s), this;
|
|
148
|
+
}
|
|
149
|
+
clone() {
|
|
150
|
+
return new z(this.longitude, this.latitude, this.height);
|
|
151
|
+
}
|
|
152
|
+
copy(t) {
|
|
153
|
+
return this.longitude = t.longitude, this.latitude = t.latitude, this.height = t.height, this;
|
|
154
|
+
}
|
|
155
|
+
equals(t) {
|
|
156
|
+
return t.longitude === this.longitude && t.latitude === this.latitude && t.height === this.height;
|
|
157
|
+
}
|
|
158
|
+
setLongitude(t) {
|
|
159
|
+
return this.longitude = t, this;
|
|
160
|
+
}
|
|
161
|
+
setLatitude(t) {
|
|
162
|
+
return this.latitude = t, this;
|
|
163
|
+
}
|
|
164
|
+
setHeight(t) {
|
|
165
|
+
return this.height = t, this;
|
|
166
|
+
}
|
|
167
|
+
normalize() {
|
|
168
|
+
return this.longitude < z.MIN_LONGITUDE && (this.longitude += Math.PI * 2), this;
|
|
169
|
+
}
|
|
170
|
+
// See: https://en.wikipedia.org/wiki/Geographic_coordinate_conversion
|
|
171
|
+
// Reference: https://github.com/CesiumGS/cesium/blob/1.122/packages/engine/Source/Core/Geodetic.js#L119
|
|
172
|
+
setFromECEF(t, i) {
|
|
173
|
+
const r = (i?.ellipsoid ?? N.WGS84).reciprocalRadiiSquared(A), e = D(
|
|
174
|
+
t,
|
|
175
|
+
r,
|
|
176
|
+
P,
|
|
177
|
+
i
|
|
178
|
+
);
|
|
179
|
+
if (e == null)
|
|
180
|
+
throw new Error(
|
|
181
|
+
`Could not project position to ellipsoid surface: ${t.toArray()}`
|
|
182
|
+
);
|
|
183
|
+
const n = A.multiplyVectors(e, r).normalize();
|
|
184
|
+
this.longitude = Math.atan2(n.y, n.x), this.latitude = Math.asin(n.z);
|
|
185
|
+
const o = A.subVectors(t, e);
|
|
186
|
+
return this.height = Math.sign(o.dot(t)) * o.length(), this;
|
|
187
|
+
}
|
|
188
|
+
// See: https://en.wikipedia.org/wiki/Geographic_coordinate_conversion
|
|
189
|
+
// Reference: https://github.com/CesiumGS/cesium/blob/1.122/packages/engine/Source/Core/Cartesian3.js#L916
|
|
190
|
+
toECEF(t = new a(), i) {
|
|
191
|
+
const s = i?.ellipsoid ?? N.WGS84, r = A.multiplyVectors(
|
|
192
|
+
s.radii,
|
|
193
|
+
s.radii
|
|
194
|
+
), e = Math.cos(this.latitude), n = P.set(
|
|
195
|
+
e * Math.cos(this.longitude),
|
|
196
|
+
e * Math.sin(this.longitude),
|
|
197
|
+
Math.sin(this.latitude)
|
|
198
|
+
).normalize();
|
|
199
|
+
return t.multiplyVectors(r, n), t.divideScalar(Math.sqrt(n.dot(t))).add(n.multiplyScalar(this.height));
|
|
200
|
+
}
|
|
201
|
+
fromArray(t, i = 0) {
|
|
202
|
+
return this.longitude = t[i], this.latitude = t[i + 1], this.height = t[i + 2], this;
|
|
203
|
+
}
|
|
204
|
+
toArray(t = [], i = 0) {
|
|
205
|
+
return t[i] = this.longitude, t[i + 1] = this.latitude, t[i + 2] = this.height, t;
|
|
206
|
+
}
|
|
207
|
+
*[Symbol.iterator]() {
|
|
208
|
+
yield this.longitude, yield this.latitude, yield this.height;
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
z.MIN_LONGITUDE = -Math.PI, z.MAX_LONGITUDE = Math.PI, z.MIN_LATITUDE = -Math.PI / 2, z.MAX_LATITUDE = Math.PI / 2;
|
|
212
|
+
let C = z;
|
|
10
213
|
export {
|
|
11
|
-
|
|
214
|
+
N as E,
|
|
215
|
+
C as G,
|
|
216
|
+
Q as a
|
|
12
217
|
};
|
|
13
218
|
//# sourceMappingURL=shared3.js.map
|
package/build/shared3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared3.js","sources":["../src/QuadGeometry.ts"],"names":["QuadGeometry","BufferGeometry","Sphere","Vector3","Float32BufferAttribute"],"mappings":";AAEO,MAAMA,UAAqBC,EAAe;AAAA,EAC/C,cAAc;AACZ,UAAA,GACA,KAAK,iBAAiB,IAAIC,EAAA,GAC1B,KAAK,eAAe,IAAI,IAAIC,EAAA,GAAW,KAAQ,GAC/C,KAAK;AAAA,MACH;AAAA,MACA,IAAIC,EAAuB,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAAA,IAAA,GAE/D,KAAK,aAAa,MAAM,IAAIA,EAAuB,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAAA,EAC5E;AACF;"}
|
|
1
|
+
{"version":3,"file":"shared3.js","sources":["../src/helpers/projectOnEllipsoidSurface.ts","../src/Ellipsoid.ts","../src/EllipsoidGeometry.ts","../src/Geodetic.ts"],"names":["vectorScratch","Vector3","projectOnEllipsoidSurface","position","reciprocalRadiiSquared","result","options","x","y","z","rx","ry","rz","x2","y2","z2","normSquared","ratio","intersection","gradient","lambda","correction","sx","sy","sz","error","sx2","sy2","sz2","sx3","sy3","sz3","vectorScratch1","vectorScratch2","vectorScratch3","_Ellipsoid","a2","b2","east","north","up","Matrix4","ray","reciprocalRadii","p","d","p2","d2","pd","discriminant","Q","t1","t2","t","surfacePosition","radius","invariant","normal","direction","v","q","Ellipsoid","EllipsoidGeometry","BufferGeometry","radii","longitudeSegments","latitudeSegments","elementCount","vertex","vertices","normals","uvs","grid","indices","vertexIndex","uvIndex","rowIndex","rowIndices","phi","uOffset","u","theta","a","b","c","BufferAttribute","source","_Geodetic","longitude","latitude","height","other","value","projection","ellipsoid","radiiSquared","cosLatitude","array","offset","Geodetic"],"mappings":"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"}
|
package/build/webgpu.cjs
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("three"),e=require("three/tsl"),m=require("three/webgpu"),I=require("./shared3.cjs"),y=require("./shared.cjs"),te=require("three/src/nodes/core/NodeUtils.js");let C;function b(r,t,s){C??=new WeakMap;let o=C.get(r);return o==null&&(o={},C.set(r,o)),o[t]??=s()}const ve=r=>b(r,"projectionMatrix",()=>e.reference("projectionMatrix","mat4",r).setName("projectionMatrix")),fe=r=>b(r,"viewMatrix",()=>e.reference("matrixWorldInverse","mat4",r).setName("viewMatrix")),xe=r=>b(r,"inverseProjectionMatrix",()=>e.reference("projectionMatrixInverse","mat4",r).setName("inverseProjectionMatrix")),ge=r=>b(r,"inverseViewMatrix",()=>e.reference("matrixWorld","mat4",r).setName("inverseViewMatrix")),ye=r=>b(r,"cameraPositionWorld",()=>e.uniform(new f.Vector3).setName("cameraPositionWorld").onRenderUpdate((t,{value:s})=>{s.setFromMatrixPosition(r.matrixWorld)})),A=r=>b(r,"cameraNear",()=>e.reference("near","float",r).setName("cameraNear")),D=r=>b(r,"cameraFar",()=>e.reference("far","float",r).setName("cameraFar"));async function j(r,t){return await r.debug.getShaderAsync(new f.Scene,new f.Camera,t).then(s=>s).catch(s=>(console.error(s),{fragmentShader:null,vertexShader:null}))}function we(r,t){const s=new f.Mesh(new I.QuadGeometry,t);j(r,s).then(o=>{console.log(o.fragmentShader)}).finally(()=>{s.geometry.dispose()})}function Te(r,t){const s=new f.Mesh(new I.QuadGeometry,t);j(r,s).then(o=>{console.log(o.vertexShader)}).finally(()=>{s.geometry.dispose()})}function Ne(r,t){const s=new m.NodeMaterial;s.vertexNode=e.vec4(e.positionGeometry.xy,0,1),s.fragmentNode=t;const o=new f.Mesh(new I.QuadGeometry,s);j(r,o).then(i=>{console.log(i.fragmentShader)}).finally(()=>{s.dispose(),o.geometry.dispose()})}function Se(r,t,s){const o=r[t];return r[t]=((...i)=>(s(...i),o.apply(r,i))),r}class se extends m.TextureNode{static get type(){return"OutputTextureNode"}constructor(t,s){super(s),this.owner=t,this.setUpdateMatrix(!1)}setup(t){return this.owner.build(t),super.setup(t)}clone(){return new this.constructor(this.owner,this.value)}}const G=(...r)=>new se(...r);class P extends m.TempNode{constructor(t){super("vec4"),this.resolutionScale=1,this.renderTargets=[],this.inputNode=t,this.updateBeforeType=m.NodeUpdateType.FRAME}static get type(){return"FilterNode"}createRenderTarget(t){const s=new f.RenderTarget(1,1,{depthBuffer:!1,type:f.HalfFloatType,format:f.RGBAFormat}),o=s.texture;o.minFilter=f.LinearFilter,o.magFilter=f.LinearFilter,o.generateMipmaps=!1;const i=this.constructor.type;return o.name=t!=null?`${i}.${t}`:i,this.renderTargets.push(s),s}getTextureNode(){return y.invariant(this.textureNode!=null,"outputTexture must be specified before getTextureNode() is called."),this.textureNode}get outputTexture(){return this.textureNode?.value??null}set outputTexture(t){this.textureNode=t!=null?G(this,t):void 0}setup(t){const{inputNode:s,textureNode:o}=this;return y.invariant(s!=null,"inputNode must be specified before being setup."),y.invariant(o!=null,"outputTexture must be specified before being setup."),o.uvNode=s.uvNode,o}dispose(){for(const t of this.renderTargets)t.dispose();super.dispose()}}const{resetRendererState:Me,restoreRendererState:be}=m.RendererUtils;class L extends P{constructor(t,s){super(t),this.downsampleRTs=[],this.upsampleRTs=[],this.downsampleMaterial=new m.NodeMaterial,this.upsampleMaterial=new m.NodeMaterial,this.mesh=new m.QuadMesh,this.inputTexelSize=e.uniform(new f.Vector2),this.downsampleNode=e.texture();for(let o=0;o<s;++o)this.downsampleRTs[o]=this.createRenderTarget(`Downsample${o}`),o<s-1&&(this.upsampleRTs[o]=this.createRenderTarget(`Upsample${o}`));this.outputTexture=this.upsampleRTs[0].texture}setSize(t,s){const{resolutionScale:o}=this;let i=Math.max(Math.round(t*o),1),n=Math.max(Math.round(s*o),1);const{downsampleRTs:a,upsampleRTs:c}=this;for(let u=0;u<a.length;++u)i=Math.max(Math.round(i/2),1),n=Math.max(Math.round(n/2),1),a[u].setSize(i,n),u<c.length&&c[u].setSize(i,n);return this}updateBefore({renderer:t}){if(t==null)return;const{downsampleRTs:s,upsampleRTs:o,mesh:i,inputNode:n,inputTexelSize:a,downsampleNode:c}=this;y.invariant(n!=null);const{width:u,height:h}=n.value;this.setSize(u,h);const d=n.value;this.rendererState=Me(t,this.rendererState),i.material=this.downsampleMaterial;for(const l of s){const{width:p,height:v}=n.value;a.value.set(1/p,1/v),t.setRenderTarget(l),i.render(t),n.value=l.texture}i.material=this.upsampleMaterial;for(let l=o.length-1;l>=0;--l){const p=o[l],{width:v,height:x}=n.value;a.value.set(1/v,1/x),c.value=s[l].texture,t.setRenderTarget(p),i.render(t),n.value=p.texture}be(t,this.rendererState),n.value=d}setup(t){const{inputNode:s}=this;y.invariant(s!=null);const{downsampleMaterial:o,upsampleMaterial:i}=this;return o.fragmentNode=this.setupDownsampleNode(t),i.fragmentNode=this.setupUpsampleNode(t),o.needsUpdate=!0,i.needsUpdate=!0,super.setup(t)}dispose(){for(const t of this.downsampleRTs)t.dispose();for(const t of this.upsampleRTs)t.dispose();this.downsampleMaterial.dispose(),this.upsampleMaterial.dispose(),this.mesh.geometry.dispose(),super.dispose()}}const k=(r,t)=>{const s=e.uv(),o=e.vec4(1,1,-1,-1).mul(t.xyxy).add(s.xyxy).toVertexStage(),i=e.vec4(2,2,-2,-2).mul(t.xyxy).add(s.xyxy).toVertexStage(),n=o.zy,a=o.xy,c=o.zw,u=o.xw,h=e.vec2(s.x,i.y),d=e.vec2(i.z,s.y),l=e.vec2(i.x,s.y),p=e.vec2(s.x,i.w),v=i.zy,x=i.xy,g=i.zw,N=i.xw;return e.add(e.add(r.sample(s),r.sample(n),r.sample(a),r.sample(c),r.sample(u)).mul(1/8),e.add(r.sample(h),r.sample(d),r.sample(l),r.sample(p)).mul(1/16),e.add(r.sample(v),r.sample(x),r.sample(g),r.sample(N)).mul(1/32))},oe=(r,t)=>{const s=e.uv(),o=e.vec4(1,1,-1,-1).mul(t.xyxy).add(s.xyxy).toVertexStage(),i=e.vec2(s.x,o.y),n=e.vec2(o.z,s.y),a=e.vec2(o.x,s.y),c=e.vec2(s.x,o.w),u=o.zy,h=o.xy,d=o.zw,l=o.xw;return e.add(r.sample(s).mul(.25),e.add(r.sample(i),r.sample(n),r.sample(a),r.sample(c)).mul(.125),e.add(r.sample(u),r.sample(h),r.sample(d),r.sample(l)).mul(.0625))};class re extends L{static get type(){return"MipmapBlurNode"}constructor(t,s=4){super(t,s),this.resolutionScale=.5}setupDownsampleNode(t){return y.invariant(this.inputNode!=null),k(this.inputNode,this.inputTexelSize)}setupUpsampleNode(t){return y.invariant(this.inputNode!=null),oe(this.inputNode,this.inputTexelSize)}}const Re=(...r)=>new re(...r),{resetRendererState:ze,restoreRendererState:Ve}=m.RendererUtils;class Be extends P{constructor(t){super(t),this.material=new m.NodeMaterial,this.mesh=new m.QuadMesh(this.material),this.inputTexelSize=e.uniform(new f.Vector2),this.renderTarget=this.createRenderTarget(),this.outputTexture=this.renderTarget.texture}setSize(t,s){const{resolutionScale:o}=this,i=Math.max(Math.round(t*o),1),n=Math.max(Math.round(s*o),1);return this.renderTarget.setSize(i,n),this}updateBefore({renderer:t}){if(t==null)return;const{inputNode:s}=this;y.invariant(s!=null);const{width:o,height:i}=s.value;this.setSize(o,i),this.inputTexelSize.value.set(1/o,1/i),this.rendererState=ze(t,this.rendererState),t.setRenderTarget(this.renderTarget),this.mesh.render(t),Ve(t,this.rendererState)}setup(t){const{inputNode:s}=this;y.invariant(s!=null);const{material:o}=this;return o.fragmentNode=this.setupOutputNode(t),o.needsUpdate=!0,super.setup(t)}dispose(){this.renderTarget.dispose(),this.material.dispose(),this.mesh.geometry.dispose(),super.dispose()}}class q extends Be{constructor(t){super(t),this.thresholdLevel=e.uniform(5),this.thresholdRange=e.uniform(1),this.resolutionScale=.5}static get type(){return"DownsampleThresholdNode"}setupOutputNode(){const{inputNode:t,thresholdLevel:s,thresholdRange:o,inputTexelSize:i}=this;y.invariant(t!=null);const n=k(t,i),a=e.luminance(n.rgb),c=e.smoothstep(s,s.add(o),a);return e.vec4(n.rgb,a).mul(c)}}const Fe=(...r)=>new q(...r);function Q(r){if(typeof r=="string")return r;if(r.layout.name==null)throw new Error("Struct name is required.");return r.layout.name}function F({typeOnly:r=!1,...t}){return r?s=>e.Fn(s):s=>e.Fn(s).setLayout({...t,type:Q(t.type),inputs:t.inputs?.map(o=>({...o,type:Q(o.type)}))??[]})}function R(r){return e.Fn((t,s)=>{const o=r(...t);return typeof o=="function"?o(s):o})}const{resetRendererState:Pe,restoreRendererState:Ce}=m.RendererUtils;class Ae extends P{constructor(t){super(t),this.iterations=1,this.material=new m.NodeMaterial,this.mesh=new m.QuadMesh(this.material),this.inputTexelSize=e.uniform(new f.Vector2),this.direction=e.uniform(new f.Vector2),this.horizontalRT=this.createRenderTarget("Horizontal"),this.verticalRT=this.createRenderTarget("Vertical"),this.outputTexture=this.verticalRT.texture}setSize(t,s){const{resolutionScale:o}=this,i=Math.max(Math.round(t*o),1),n=Math.max(Math.round(s*o),1);return this.horizontalRT.setSize(i,n),this.verticalRT.setSize(i,n),this}updateBefore({renderer:t}){if(t==null)return;const{horizontalRT:s,verticalRT:o,mesh:i,inputNode:n,direction:a}=this;y.invariant(n!=null);const{width:c,height:u}=n.value;this.setSize(c,u),this.inputTexelSize.value.set(1/c,1/u);const h=n.value;this.rendererState=Pe(t,this.rendererState);for(let d=0;d<this.iterations;++d)a.value.set(1,0),t.setRenderTarget(s),i.render(t),n.value=s.texture,a.value.set(0,1),t.setRenderTarget(o),i.render(t),n.value=o.texture;Ce(t,this.rendererState),n.value=h}setup(t){const{inputNode:s}=this;y.invariant(s!=null);const{material:o}=this;return o.fragmentNode=this.setupOutputNode(t),o.needsUpdate=!0,super.setup(t)}dispose(){this.horizontalRT.dispose(),this.verticalRT.dispose(),this.material.dispose(),this.mesh.geometry.dispose(),super.dispose()}}function Z(r){if(y.invariant(r>=0),r===0)return new Float64Array(0);if(r===1)return new Float64Array([1]);let t=new Float64Array(r),s=new Float64Array(r),o=s;for(let i=1;i<=r;++i){for(let n=0;n<i;++n)s[n]=n===0||n===i-1?1:t[n-1]+t[n];o=s,s=t,t=o}return o}function De(r,t=2){y.invariant(r>=3);const s=r+t*2,o=t>0?Z(s).slice(t,-t):Z(s),i=Math.floor((o.length-1)/2),n=o.reduce((l,p)=>l+p,0),a=o.slice(i),c=[...Array(i+1).keys()],u=new Float64Array(Math.floor(c.length/2)),h=new Float64Array(u.length);u[0]=a[0]/n;for(let l=1,p=1;l<c.length-1;l+=2,++p){const v=c[l],x=c[l+1],g=a[l],N=a[l+1],w=g+N,M=(v*g+x*N)/w;u[p]=w/n,h[p]=M}const d=(u.reduce((l,p)=>l+p,0)-u[0]*.5)*2;if(d!==0){const l=1/d;for(let p=0;p<u.length;++p)u[p]*=l}return{offsets:h,weights:u}}class O extends Ae{static get type(){return"GaussianBlurNode"}constructor(t,s=35){super(t),this.kernelSize=s}setupOutputNode(t){const{inputNode:s,inputTexelSize:o,direction:i}=this;y.invariant(s!=null);const{offsets:n,weights:a}=De(this.kernelSize);return e.Fn(()=>{const c=e.uv(),u=i.mul(o).toVertexStage(),h=s.sample(c).mul(a[0]);for(let d=1;d<n.length;++d){const l=u.mul(n[d]);h.addAssign(e.add(s.sample(c.add(l)),s.sample(c.sub(l))).mul(a[d]))}return h})()}}const Ue=(...r)=>new O(...r),ie=r=>r.dot(e.vec2(.06711056,.00583715)).fract().mul(52.9829189).fract(),Ie=e.Fn(()=>{const r=e.vec2(e.screenCoordinate.xy).add(e.time.fract().mul(1337)),t=ie(r);return e.vec3(t,t.oneMinus(),t).sub(.5).div(255)}).once()(),je=(r,t,s=e.vec2(90,45))=>{const o=e.equirectUV(r),i=e.fwidth(o),n=t.mul(i).mul(.5),a=e.abs(o.mul(s).fract().sub(.5)).div(s),c=e.smoothstep(n,n.add(i),a).oneMinus();return c.x.add(c.y).clamp(0,1)};class ne extends m.TempNode{constructor(){super("vec3"),this.currentProjectionMatrix=e.uniform(new f.Matrix4),this.previousProjectionMatrix=e.uniform("mat4"),this.currentModelViewMatrix=e.uniform(new f.Matrix4),this.previousModelViewMatrix=e.uniform("mat4"),this.objectModelViewMatrices=new WeakMap,this.updateType=m.NodeUpdateType.FRAME,this.updateBeforeType=m.NodeUpdateType.OBJECT,this.updateAfterType=m.NodeUpdateType.OBJECT}static get type(){return"HighpVelocityNode"}update({camera:t}){if(t==null)return;const{currentProjectionMatrix:s,previousProjectionMatrix:o}=this,i=this.projectionMatrix??t.projectionMatrix;o.value==null?o.value=new f.Matrix4().copy(i):o.value.copy(s.value),s.value.copy(i)}updateBefore({object:t,camera:s}){if(t==null||s==null)return;const{currentModelViewMatrix:o,previousModelViewMatrix:i,objectModelViewMatrices:n}=this;o.value.multiplyMatrices(s.matrixWorldInverse,t.matrixWorld),i.value=n.get(t)??o.value}updateAfter({object:t}){if(t==null)return;const{currentModelViewMatrix:s,objectModelViewMatrices:o}=this;let i=o.get(t);i==null&&(i=new f.Matrix4,o.set(t,i)),i.copy(s.value)}setup(t){const s=this.currentProjectionMatrix.mul(this.currentModelViewMatrix).mul(e.positionLocal).toVertexStage(),o=this.previousProjectionMatrix.mul(this.previousModelViewMatrix).mul(e.positionPrevious).toVertexStage(),i=s.xyz.div(s.w),n=o.xyz.div(o.w);return e.sub(i,n)}}const Ge=e.nodeImmutable(ne);class ae extends L{static get type(){return"KawaseBlurNode"}constructor(t,s=4){super(t,s),this.resolutionScale=.5}setupDownsampleNode(t){const{inputNode:s,inputTexelSize:o}=this;y.invariant(s!=null);const i=e.uv(),n=e.vec4(1,1,-1,-1).mul(o.xyxy.mul(.5)).add(i.xyxy).toVertexStage(),a=n.zy,c=n.xy,u=n.xw,h=n.zw;return e.add(s.sample(i).mul(4),s.sample(a),s.sample(c),s.sample(u),s.sample(h)).mul(1/8)}setupUpsampleNode(t){const{inputNode:s,inputTexelSize:o}=this;y.invariant(s!=null);const i=e.uv(),n=e.vec4(1,1,-1,-1).mul(o.xyxy.mul(.5)).add(i.xyxy).toVertexStage(),a=n.zy,c=n.xy,u=n.xw,h=n.zw,d=e.vec2(n.z,i.y),l=e.vec2(n.x,i.y),p=e.vec2(i.x,n.y),v=e.vec2(i.x,n.w);return e.add(e.add(s.sample(a),s.sample(c),s.sample(u),s.sample(h)).mul(1/12),e.add(s.sample(d),s.sample(l),s.sample(p),s.sample(v)).mul(1/6))}}const Le=(...r)=>new ae(...r);class ke extends m.TempNode{constructor(t){super("vec3"),this.intensity=e.uniform(1e-5),this.inputNode=t}static get type(){return"LensGhostNode"}setup(t){const{inputNode:s,intensity:o}=this;y.invariant(s!=null);const i=F({name:"sampleGhost",type:"vec3",inputs:[{name:"uv",type:"vec2"},{name:"direction",type:"vec2"},{name:"color",type:"vec3"},{name:"offset",type:"float"}]})(([u,h,d,l])=>{const p=h.mul(l).add(u.oneMinus()).saturate(),v=s.sample(p).rgb.mul(d),x=e.sub(.5,p).length().mul(1/(Math.SQRT2/4)).saturate();return v.mulAssign(x.oneMinus().pow(3)),v}),n=e.uv(),a=n.sub(.5);return e.add(i(n,a,e.vec3(.8,.8,1),-5),i(n,a,e.vec3(1,.8,.4),-1.5),i(n,a,e.vec3(.9,1,.8),-.4),i(n,a,e.vec3(1,.8,.4),-.2),i(n,a,e.vec3(.9,.7,.7),-.1),i(n,a,e.vec3(.5,1,.4),.7),i(n,a,e.vec3(.5,.5,.5),1),i(n,a,e.vec3(1,1,.6),2.5),i(n,a,e.vec3(.5,.8,1),10)).mul(o)}}const{resetRendererState:qe,restoreRendererState:Oe}=m.RendererUtils;function We(){const r=new m.RenderTarget(1,1,{depthBuffer:!1,type:m.HalfFloatType,format:m.RGBAFormat}),t=r.texture;return t.minFilter=m.LinearFilter,t.magFilter=m.LinearFilter,t.generateMipmaps=!1,r}const Ee=new m.Vector2;class W extends m.TextureNode{constructor(t,s){const o=We();super(o.texture,s??e.uv()),this.resolutionScale=1,this.material=new m.NodeMaterial,this.mesh=new m.QuadMesh(this.material),this.node=t,this.renderTarget=o,this.updateBeforeType=m.NodeUpdateType.FRAME}static get type(){return"RTTextureNode"}setSize(t,s){const{resolutionScale:o}=this,i=Math.max(Math.round(t*o),1),n=Math.max(Math.round(s*o),1);return this.renderTarget.setSize(i,n),this}updateBefore({renderer:t}){if(t==null)return;const s=t.getDrawingBufferSize(Ee);this.setSize(s.x,s.y),this.rendererState=qe(t,this.rendererState),t.setRenderTarget(this.renderTarget),this.mesh.render(t),Oe(t,this.rendererState)}setup(t){const{material:s}=this;return s.fragmentNode=this.node.context(t.getContext()),s.needsUpdate=!0,super.setup(t)}dispose(){this.renderTarget.dispose(),this.material.dispose(),this.mesh.geometry.dispose(),super.dispose()}clone(){const t=new m.TextureNode(this.value,this.uvNode,this.levelNode);return t.sampler=this.sampler,t.referenceNode=this,t}}const ue=(...r)=>new W(...r),E=(r,t)=>{let s;return r.isTextureNode===!0||r.isSampleNode===!0?s=r:r.getTextureNode!=null?s=r.getTextureNode():(s=new W(r),t!=null&&(s.value.name=t)),s},{resetRendererState:He,restoreRendererState:$e}=m.RendererUtils;function Qe(){const o=document.createElement("canvas");o.width=256,o.height=32;const i=o.getContext("2d");y.invariant(i!=null),i.beginPath(),i.moveTo(0,32/2),i.lineTo(256/2,5),i.lineTo(256,32/2),i.lineTo(256/2,27),i.closePath();const n=i.createLinearGradient(0,0,256,0);return n.addColorStop(0,"#000000"),n.addColorStop(.5,"#ffffff"),n.addColorStop(1,"#000000"),i.fillStyle=n,i.fill(),new f.CanvasTexture(o)}const K=e.struct({color:"vec3",luminance:"float",position:"vec2",scale:"float",sin:"float",cos:"float"});class Ze extends P{constructor(t){super(t),this.spikePairCount=6,this.wireframe=!1,this.intensity=e.uniform(1e-5),this.sizeScale=e.uniform(new f.Vector2(1.5,.01)),this.luminanceThreshold=e.uniform(100),this.counterBuffer=new m.StorageBufferAttribute(1,1),this.instanceBuffer=e.instancedArray(1,K),this.renderTarget=this.createRenderTarget(),this.material=new m.MeshBasicNodeMaterial({depthTest:!1,depthWrite:!1,transparent:!0,blending:f.AdditiveBlending}),this.mesh=new f.Mesh(new f.PlaneGeometry(1,1),this.material),this.camera=new f.PerspectiveCamera,this.inputTexelSize=e.uniform(new f.Vector2),this.outputTexelSize=e.uniform(new f.Vector2),this.geometryRatio=e.uniform(new f.Vector2),this.inputNode=t,this.resolutionScale=.5,this.outputTexture=this.renderTarget.texture}customCacheKey(){return te.hash(this.spikePairCount,+this.wireframe)}setSize(t,s){const{resolutionScale:o}=this,i=Math.max(Math.round(t*o),1),n=Math.max(Math.round(s*o),1);this.renderTarget.setSize(i,n);const a=Math.floor(i/2),c=Math.floor(n/2),u=a*c;return this.instanceBuffer.bufferCount<u&&(this.instanceBuffer.dispose(),this.instanceBuffer=e.instancedArray(u,K),this.setupCompute(a,c),this.setupMaterial()),this}updateBefore({renderer:t}){if(t==null)return;const{inputNode:s}=this;y.invariant(s!=null);const{width:o,height:i}=s.value;this.setSize(o,i);const{computeNode:n,counterBuffer:a,renderTarget:c}=this;y.invariant(n!=null),this.inputTexelSize.value.set(1/o,1/i);const u=o/i;u>1?this.geometryRatio.value.set(1/u,1):this.geometryRatio.value.set(1,u);const{width:h,height:d}=c;this.outputTexelSize.value.set(1/h,1/d),a.array[0]=0,a.needsUpdate=!0,t.compute(n),t.getArrayBufferAsync(a).then(l=>{this.mesh.count=new Uint32Array(l)[0]}).catch(l=>{console.error(l)}),this.rendererState=He(t,this.rendererState),t.setRenderTarget(c),t.render(this.mesh,this.camera),$e(t,this.rendererState)}setupCompute(t,s){const{spikePairCount:o,inputNode:i,counterBuffer:n,instanceBuffer:a,outputTexelSize:c}=this;y.invariant(i!=null);const u=e.storage(n,"uint",n.count).toAtomic();this.computeNode=e.Fn(()=>{const h=e.uvec2(t,s);e.If(e.globalId.xy.greaterThanEqual(h).any(),()=>{e.Return()});const d=e.vec2(e.globalId.xy).mul(c).mul(2),l=i.sample(d),p=l.a;e.If(p.greaterThan(.1),()=>{const v=e.atomicAdd(u.element(0),o);for(let x=0;x<o;++x){const g=a.element(v.add(x));g.get("color").assign(l.rgb),g.get("luminance").assign(p),g.get("position").assign(e.globalId.xy),g.get("scale").assign(x%2===0?1:.5);const N=Math.PI*(3-Math.sqrt(5)),w=Math.PI/o*x+N;g.get("sin").assign(Math.sin(w)),g.get("cos").assign(Math.cos(w))}})})().compute([Math.ceil(t/8),Math.ceil(s/8),1],[8,8,1])}setupMaterial(){const{inputNode:t,spikeNode:s,instanceBuffer:o,luminanceThreshold:i,intensity:n,sizeScale:a,outputTexelSize:c,geometryRatio:u}=this;y.invariant(t!=null),y.invariant(s!=null);const h=o.element(e.instanceIndex);this.material.colorNode=this.wireframe?e.vec4(1):s.mul(h.get("color").mul(n)),this.material.vertexNode=e.Fn(()=>{const d=h.get("sin"),l=h.get("cos"),p=e.mat3(l,d,0,d.negate(),l,0,0,0,1),x=h.get("position").mul(c).mul(2),g=x.flipY().mul(2).sub(1),w=h.get("luminance").div(i).saturate(),M=e.vec2(w,1).mul(h.get("scale"),a,x.sub(.5).length().mul(2).oneMinus().mul(.5).add(.5)),B=p.mul(e.positionGeometry.mul(e.vec4(M,1,1))).mul(u).add(e.vec3(g,0));return e.vec4(B,1)})(),this.material.wireframe=this.wireframe,this.material.needsUpdate=!0}setup(t){if(this.spikeNode==null){const s=Qe();s.colorSpace=f.SRGBColorSpace,this.spikeNode=e.texture(s)}return this.setupMaterial(),super.setup(t)}dispose(){this.renderTarget.dispose(),this.material.dispose(),this.mesh.geometry.dispose(),super.dispose()}}const Ke=new f.Vector2;class _e extends m.TempNode{constructor(t){super("vec3"),this.intensity=e.uniform(1e-5),this.chromaticAberration=e.uniform(.005),this.aspectRatio=e.uniform(0),this.inputNode=t,this.updateBeforeType=m.NodeUpdateType.FRAME}static get type(){return"LensHaloNode"}updateBefore({renderer:t}){if(t==null)return;const{width:s,height:o}=t.getDrawingBufferSize(Ke);this.aspectRatio.value=s/o}setup(t){const{inputNode:s,intensity:o,chromaticAberration:i,aspectRatio:n}=this;y.invariant(s!=null);const a=F({name:"cubicRingMask",type:"float",inputs:[{name:"x",type:"float"},{name:"radius",type:"float"},{name:"thickness",type:"float"}]})(([d,l,p])=>{const v=e.min(e.abs(d.sub(l)).div(p),1);return e.mul(v,v,e.sub(3,v.mul(2))).oneMinus()}),c=F({name:"sampleHalo",type:"vec3",inputs:[{name:"uv",type:"vec2"},{name:"radius",type:"float"}]})(([d,l])=>{const p=e.vec2(n,1),v=d.sub(.5).mul(p).normalize().div(p),x=e.vec3(i).mul(e.vec3(-1,0,1)),g=e.fract(v.mul(l).add(d.oneMinus())),N=e.vec3(s.sample(v.mul(x.r).add(g)).r,s.sample(v.mul(x.g).add(g)).g,s.sample(v.mul(x.b).add(g)).b),w=d.sub(e.vec2(.5,0)).mul(p).add(e.vec2(.5,0)),M=e.distance(w,e.vec2(.5)).saturate();return N.mulAssign(a(M,.45,.25)),N}),u=e.uv();return c(u,.3).mul(o)}}const S=r=>r.greaterThanEqual(0).all().and(r.lessThanEqual(1).all()).toFloat();class H extends L{constructor(t,s=4){super(t,s),this.blendAmount=e.uniform(.85),this.resolutionScale=.5}static get type(){return"MipmapSurfaceBlurNode"}setupDownsampleNode(t){const{inputNode:s,inputTexelSize:o}=this;return y.invariant(s!=null),e.Fn(()=>{const i=e.uv(),n=e.vec4(1,1,-1,-1).mul(o.xyxy).add(i.xyxy).toVertexStage(),a=e.vec4(2,2,-2,-2).mul(o.xyxy).add(i.xyxy).toVertexStage(),c=n.zy,u=n.xy,h=n.zw,d=n.xw,l=a.zy,p=a.xy,v=a.zw,x=a.xw,g=e.vec2(i.x,a.y),N=e.vec2(a.z,i.y),w=e.vec2(a.x,i.y),M=e.vec2(i.x,a.w),B=1/4/2,z=1/9/2,V=s.sample(i).mul(z);let T;return T=e.vec4(S(c),S(u),S(h),S(d)).mul(B),V.addAssign(s.sample(c).mul(T.x),s.sample(u).mul(T.y),s.sample(h).mul(T.z),s.sample(d).mul(T.w)),T=e.vec4(S(l),S(p),S(v),S(x)).mul(z),V.addAssign(s.sample(l).mul(T.x),s.sample(p).mul(T.y),s.sample(v).mul(T.z),s.sample(x).mul(T.w)),T=e.vec4(S(g),S(N),S(w),S(M)).mul(z),V.addAssign(s.sample(g).mul(T.x),s.sample(N).mul(T.y),s.sample(w).mul(T.z),s.sample(M).mul(T.w)),V})()}setupUpsampleNode(t){const{inputNode:s,inputTexelSize:o,downsampleNode:i}=this;y.invariant(s!=null);const n=e.uv(),a=e.vec4(1,1,-1,-1).mul(o.xyxy).add(n.xyxy).toVertexStage(),c=e.vec2(n.x,a.y),u=e.vec2(a.z,n.y),h=e.vec2(a.x,n.y),d=e.vec2(n.x,a.w),l=a.zy,p=a.xy,v=a.zw,x=a.xw,g=e.add(s.sample(n).mul(1/4),e.add(s.sample(c),s.sample(u),s.sample(h),s.sample(d)).mul(1/8),e.add(s.sample(l),s.sample(p),s.sample(v),s.sample(x)).mul(1/16));return e.mix(i.sample(n),g,this.blendAmount)}}const Je=(...r)=>new H(...r);function $(r){return(r instanceof m.NodeBuilder?r.renderer.backend:"backend"in r?r.backend:r).isWebGPUBackend===!0}class ce extends m.TempNode{constructor(t){super("vec4"),this.bloomIntensity=e.uniform(.05),this.inputNode=t,this.thresholdNode=new q,this.blurNode=new O,this.ghostNode=new ke,this.haloNode=new _e,this.bloomNode=new H(null,8),this.glareNode=new Ze,this.featuresNode=ue(e.add(this.ghostNode,this.haloNode)),this.featuresNode.value.name="LensFlareNode.Features",this.featuresNode.resolutionScale=.5,this.blurNode.resolutionScale=1,this.bloomNode.resolutionScale=1,this.glareNode.resolutionScale=1}static get type(){return"LensFlareNode"}setup(t){const{inputNode:s,thresholdNode:o,blurNode:i,ghostNode:n,haloNode:a,bloomNode:c,featuresNode:u,glareNode:h}=this;y.invariant(s!=null);const d=o.getTextureNode(),l=i.getTextureNode();o.inputNode=s,i.inputNode=d,n.inputNode=l,a.inputNode=l,c.inputNode=d,h.inputNode=d;const p=c.getTextureNode().mul(this.bloomIntensity),v=h.getTextureNode();return e.Fn(()=>{const x=s;return x.addAssign(p),$(t)&&x.addAssign(v),x.add(u)})()}dispose(){this.thresholdNode.dispose(),this.blurNode.dispose(),this.ghostNode.dispose(),this.haloNode.dispose(),this.bloomNode.dispose(),this.glareNode.dispose(),this.featuresNode.dispose(),super.dispose()}}const Ye=r=>new ce(r!=null?E(r,"LensFlareNode.Input"):null),Xe=R((r,t,s,o)=>{const i=r.sub(s),n=e.dot(t,i),a=e.dot(i,i).sub(o.pow2()),c=n.pow2().sub(a).toVar(),u=e.vec2(-1);return e.If(c.greaterThanEqual(0),()=>{const h=e.sqrt(c);u.assign(e.vec2(n.negate().sub(h),n.negate().add(h)))}),u}),le=e.struct({near:"vec4",far:"vec4"},"raySpheresIntersections"),et=R((r,t,s,o)=>{const i=r.sub(s),n=e.dot(t,i),a=e.dot(i,i).sub(o.pow2()),c=n.pow2().sub(a).toVar(),u=e.vec4(-1),h=e.vec4(-1);return e.If(c.greaterThanEqual(0),()=>{const d=e.sqrt(c);u.assign(n.negate().sub(d)),h.assign(n.negate().add(d))}),le(u,h)}),tt=R((r,t,s)=>{const o=r.div(s),i=t.div(s),n=i.dot(i),a=o.dot(i),c=o.dot(o),u=a.pow2().sub(n.mul(c.sub(1))).toVar(),h=e.vec2(-1);return e.If(u.greaterThanEqual(0),()=>{const d=e.sqrt(u);h.assign(e.vec2(a.negate().sub(d),a.negate().add(d)).div(n))}),h}),st={float:e.float,int:e.int,uint:e.uint,bool:e.bool,vec2:e.vec2,ivec2:e.ivec2,uvec2:e.uvec2,bvec2:e.bvec2,vec3:e.vec3,ivec3:e.ivec3,uvec3:e.uvec3,bvec3:e.bvec3,vec4:e.vec4,ivec4:e.ivec4,uvec4:e.uvec4,bvec4:e.bvec4,mat2:e.mat2,mat3:e.mat3,mat4:e.mat4,color:e.color},ot=m.Node;function rt(r){return st[r]}class de extends m.Texture3DNode{static get type(){return"OutputTexture3DNode"}constructor(t,s){super(s),this.owner=t,this.setUpdateMatrix(!1)}setup(t){return this.owner.build(t),super.setup(t)}clone(){return new this.constructor(this.owner,this.value)}}const it=(...r)=>new de(...r),nt=R((r,t)=>{const s=e.vec2(e.textureSize(r)),o=s.reciprocal(),i=t.mul(s),n=i.sub(.5).floor().add(.5),a=i.sub(n),c=a.mul(a.mul(a.mul(.5).oneMinus()).sub(.5)),u=a.mul(a).mul(a.mul(1.5).sub(2.5)).add(1),h=a.mul(a.mul(e.sub(2,a.mul(1.5))).add(.5)),d=a.mul(a).mul(a.mul(.5).sub(.5)),l=u.add(h),p=h.div(u.add(h)),v=n.sub(1).mul(o),x=n.add(2).mul(o),g=n.add(p).mul(o);return e.add(r.sample(e.vec2(v.x,v.y)).mul(c.x).mul(c.y),r.sample(e.vec2(g.x,v.y)).mul(l.x).mul(c.y),r.sample(e.vec2(x.x,v.y)).mul(d.x).mul(c.y),r.sample(e.vec2(v.x,g.y)).mul(c.x).mul(l.y),r.sample(e.vec2(g.x,g.y)).mul(l.x).mul(l.y),r.sample(e.vec2(x.x,g.y)).mul(d.x).mul(l.y),r.sample(e.vec2(v.x,x.y)).mul(c.x).mul(d.y),r.sample(e.vec2(g.x,x.y)).mul(l.x).mul(d.y),r.sample(e.vec2(x.x,x.y)).mul(d.x).mul(d.y))});function _(r,t){let s=1,o=0;for(;r>0;)s/=t,o+=s*(r%t),r=Math.floor(r/t);return o}const J=Array.from({length:16},(r,t)=>new f.Vector2(_(t+1,2),_(t+1,3))),he=(r,t,s,{perspective:o=!0,logarithmic:i=!1}={})=>i?e.logarithmicDepthToViewZ(r,t,s):o?e.perspectiveDepthToViewZ(r,t,s):e.orthographicDepthToViewZ(r,t,s),U=(r,t,s)=>{const o=e.logarithmicDepthToViewZ(r,t,s);return e.viewZToPerspectiveDepth(o,t,s)},at=(r,t,s)=>{const o=e.perspectiveDepthToViewZ(r,t,s);return e.viewZToLogarithmicDepth(o,t,s)},ut=(r,t,s,o,i)=>{const n=o.element(e.int(2)).element(e.int(3)),a=o.element(e.int(3)).element(e.int(3)),u=e.vec4(e.vec3(r.flipY(),t).mul(2).sub(1),1).mul(s.mul(n).add(a));return i.mul(u).xyz},Y=[e.vec3(58.1375,2.7747,26.8183),e.vec3(-150.5666,4.2109,-88.5066),e.vec3(130.5887,-14.0195,109.0745),e.vec3(-42.3277,4.8052,-60.1097),e.vec3(4.5974,2.1856,12.5925),e.vec3(.1357,.0914,.1067)],pe=r=>Y.slice(1).reduce((t,s)=>s.add(r.mul(t)),Y[0]),ct=(r,t,s,o)=>{const i=he(r,t,s,o);return pe(e.viewZToLogarithmicDepth(i,t,s))},lt=r=>{const t=e.sub(.5,r.x).mul(e.PI2),s=e.sub(r.y,.5).mul(e.PI),o=e.cos(s);return e.vec3(o.mul(e.cos(t)),e.sin(s),o.mul(e.sin(t)))},{resetRendererState:dt,restoreRendererState:ht}=m.RendererUtils;function pt(r){return r.isPerspectiveCamera===!0||r.isOrthographicCamera===!0||"updateProjectionMatrix"in r&&"setViewOffset"in r&&"clearViewOffset"in r}const mt=F({name:"clipAABB",type:"vec4",inputs:[{name:"current",type:"vec4"},{name:"history",type:"vec4"},{name:"minColor",type:"vec4"},{name:"maxColor",type:"vec4"}]})(([r,t,s,o])=>{const i=o.rgb.add(s.rgb).mul(.5),n=o.rgb.sub(s.rgb).mul(.5).add(1e-7),a=t.sub(e.vec4(i,r.a)),u=a.xyz.div(n).abs(),h=e.max(u.x,u.y,u.z);return e.select(h.greaterThan(1),e.vec4(i,r.a).add(a.div(h)),t)}),X=[e.ivec2(-1,-1),e.ivec2(-1,1),e.ivec2(1,-1),e.ivec2(1,1),e.ivec2(1,0),e.ivec2(0,-1),e.ivec2(0,1),e.ivec2(-1,0)],vt=R((r,t,s,o,i)=>{const n=s.toVar(),a=s.pow2().toVar();for(const p of X){const v=r.load(t.add(p));n.addAssign(v),a.addAssign(v.pow2())}const c=e.float(X.length+1),u=n.div(c),h=e.sqrt(a.div(c).sub(u.pow2()).max(0)).mul(i),d=u.sub(h),l=u.add(h);return mt(u.clamp(d,l),o,d,l)}),ft=[e.ivec2(-1,-1),e.ivec2(-1,0),e.ivec2(-1,1),e.ivec2(0,-1),e.ivec2(0,0),e.ivec2(0,1),e.ivec2(1,-1),e.ivec2(1,0),e.ivec2(1,1)],xt=e.struct({coord:"ivec2",depth:"float"}),gt=R((r,t)=>{const s=e.float(1),o=e.ivec2(0);for(const i of ft){const n=t.add(i).toVar(),a=r.load(n).toVar();e.If(a.r.lessThan(s),()=>{o.assign(n),s.assign(a.r)})}return xt(o,s)}),ee=new f.Vector2,yt=new f.DepthTexture(1,1);class me extends m.TempNode{constructor(t,s,o,i,n){if(super("vec4"),this.temporalAlpha=e.uniform(.05),this.varianceGamma=e.uniform(1),this.velocityThreshold=e.uniform(.1),this.depthError=e.uniform(.001),this.debugShowRejection=!1,this.resolveRT=this.createRenderTarget("Resolve"),this.historyRT=this.createRenderTarget("History"),this.resolveMaterial=new m.NodeMaterial,this.copyMaterial=new m.NodeMaterial,this.mesh=new m.QuadMesh,this.needsSyncPostProcessing=!1,this.needsClearHistory=!1,this.resolveNode=e.texture(this.resolveRT.texture),this.historyNode=e.texture(this.historyRT.texture),this.previousDepthNode=e.texture(yt),this.originalProjectionMatrix=new f.Matrix4,this.jitterIndex=0,this.velocityNodeImmutable=t,this.inputNode=s,this.depthNode=o,this.velocityNode=i,!pt(n))throw new Error("The provided camera is not supported.");this.camera=n,this.textureNode=G(this,this.resolveRT.texture),this.updateBeforeType=m.NodeUpdateType.FRAME}static get type(){return"TemporalAntialiasNode"}customCacheKey(){return te.hash(this.camera.id,+this.debugShowRejection)}createRenderTarget(t){const s=new f.RenderTarget(1,1,{depthBuffer:!1,type:f.HalfFloatType,format:f.RGBAFormat}),o=s.texture;o.minFilter=f.LinearFilter,o.magFilter=f.LinearFilter,o.generateMipmaps=!1;const i=this.constructor.type;return o.name=t!=null?`${i}.${t}`:i,s}getTextureNode(){return this.textureNode}setProjectionMatrix(t){const{velocityNodeImmutable:s}=this;s!=null&&(s.projectionMatrix=t)}setSize(t,s){const{resolveRT:o,historyRT:i}=this;return(t!==i.width||s!==i.height)&&(o.setSize(t,s),i.setSize(t,s),this.needsClearHistory=!0),this}clearHistory(t){t.setRenderTarget(this.resolveRT),t.clear(),t.setRenderTarget(this.historyRT),t.clear(),t.setRenderTarget(this.historyRT),this.mesh.material=this.copyMaterial,this.mesh.render(t),this.needsClearHistory=!1}setViewOffset(t,s){const{camera:o}=this;o.updateProjectionMatrix(),this.originalProjectionMatrix.copy(o.projectionMatrix),this.setProjectionMatrix(this.originalProjectionMatrix);const i=J[this.jitterIndex],n=i.x-.5,a=i.y-.5;o.setViewOffset(t,s,n,a,t,s)}clearViewOffset(){this.camera.clearViewOffset(),this.setProjectionMatrix(null),this.jitterIndex=(this.jitterIndex+1)%J.length}copyDepthTexture(t){const s=this.depthNode.value,o=this.previousDepthTexture??=s.clone();(o.image.width!==s.width||o.image.height!==s.height)&&(o.image.width=s.width,o.image.height=s.height,o.needsUpdate=!0),t.copyTextureToTexture(s,o),this.previousDepthNode.value=o}swapBuffers(){const{resolveRT:t,historyRT:s}=this;this.resolveRT=s,this.historyRT=t,this.resolveNode.value=s.texture,this.historyNode.value=t.texture,this.textureNode.value=t.texture}updateBefore({renderer:t}){if(t==null)return;const s=t.getDrawingBufferSize(ee);this.setSize(s.x,s.y),this.rendererState=dt(t,this.rendererState),this.needsClearHistory&&this.clearHistory(t),t.setRenderTarget(this.resolveRT),this.mesh.material=this.resolveMaterial,this.mesh.render(t),ht(t,this.rendererState),$(t)&&this.copyDepthTexture(t),this.swapBuffers(),this.needsSyncPostProcessing&&this.clearViewOffset()}setupResolveNode({renderer:t}){const s=o=>{const{previousDepthNode:i}=this,n=i.load(e.ivec2(o.mul(e.textureSize(i)).sub(.5))).toVar();return t.logarithmicDepthBuffer?U(n,A(this.camera),D(this.camera)):n};return e.Fn(()=>{const o=e.ivec2(e.screenCoordinate),i=e.screenUV,n=this.inputNode.load(o),a=gt(this.depthNode,o),c=a.get("coord"),u=this.velocityNode.load(c).xyz.mul(e.vec3(.5,-.5,.5)).toVar(),h=u.xy.length().div(this.velocityThreshold).oneMinus().saturate(),d=i.sub(u.xy).toVar(),l=s(d),p=t.logarithmicDepthBuffer?U(a.get("depth"),A(this.camera),D(this.camera)):a.get("depth"),v=e.step(p.add(u.z),l.add(this.depthError)),x=h.mul(v),g=e.and(d.greaterThanEqual(0).all(),d.lessThanEqual(1).all()).toFloat(),N=a.get("depth").notEqual(1).toFloat(),w=e.vec4(0).toVar();return e.If(g.mul(N).mul(x).greaterThan(0),()=>{const M=e.texture(this.historyNode,d),B=vt(this.inputNode,o,n,M,this.varianceGamma),z=u.xy.abs().mul(e.screenSize),V=e.max(z.x,z.y).fract().mul(.5),T=e.mix(this.temporalAlpha,.8,V).saturate();w.assign(e.mix(B,n,T))}).Else(()=>{w.assign(n),this.debugShowRejection&&w.assign(e.vec3(1,0,0))}),w})()}setup(t){const{context:s}=t.getContext().postProcessing??{};if(s!=null){const{onBeforePostProcessing:n}=s;s.onBeforePostProcessing=()=>{n?.();const a=t.renderer.getDrawingBufferSize(ee);this.setViewOffset(a.width,a.height)},this.needsSyncPostProcessing=!0}const{resolveMaterial:o,copyMaterial:i}=this;return o.fragmentNode=this.setupResolveNode(t),o.needsUpdate=!0,i.fragmentNode=this.inputNode,i.needsUpdate=!0,this.textureNode.uvNode=this.inputNode.uvNode,this.textureNode}dispose(){this.resolveRT.dispose(),this.historyRT.dispose(),this.previousDepthTexture?.dispose(),this.resolveMaterial.dispose(),this.copyMaterial.dispose(),this.mesh.geometry.dispose(),super.dispose()}}const wt=r=>(t,s,o,i)=>new me(r,E(t,"TemporalAntialiasNode.Input"),s,o,i);exports.DownsampleThresholdNode=q;exports.FnLayout=F;exports.FnVar=R;exports.GaussianBlurNode=O;exports.HighpVelocityNode=ne;exports.KawaseBlurNode=ae;exports.LensFlareNode=ce;exports.MipmapBlurNode=re;exports.MipmapSurfaceBlurNode=H;exports.Node=ot;exports.OutputTexture3DNode=de;exports.OutputTextureNode=se;exports.RTTextureNode=W;exports.TemporalAntialiasNode=me;exports.cameraFar=D;exports.cameraNear=A;exports.cameraPositionWorld=ye;exports.convertToTexture=E;exports.debugFragmentNode=we;exports.debugNode=Ne;exports.debugVertexNode=Te;exports.depthToColor=ct;exports.depthToViewZ=he;exports.dithering=Ie;exports.downsampleThreshold=Fe;exports.equirectGrid=je;exports.equirectToDirectionWorld=lt;exports.gaussianBlur=Ue;exports.highpVelocity=Ge;exports.hookFunction=Se;exports.interleavedGradientNoise=ie;exports.inverseProjectionMatrix=xe;exports.inverseViewMatrix=ge;exports.isWebGPU=$;exports.kawaseBlur=Le;exports.lensFlare=Ye;exports.logarithmicToPerspectiveDepth=U;exports.mipmapBlur=Re;exports.mipmapBlurDownsample=k;exports.mipmapBlurUpsample=oe;exports.mipmapSurfaceBlur=Je;exports.node=rt;exports.outputTexture=G;exports.outputTexture3D=it;exports.perspectiveToLogarithmicDepth=at;exports.projectionMatrix=ve;exports.rayEllipsoidIntersection=tt;exports.raySphereIntersection=Xe;exports.raySpheresIntersections=et;exports.raySpheresIntersectionsStruct=le;exports.rtTexture=ue;exports.screenToPositionView=ut;exports.temporalAntialias=wt;exports.textureCatmullRom=nt;exports.turbo=pe;exports.viewMatrix=fe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("three/tsl"),f=require("three/webgpu"),g=require("three"),He=require("three/examples/jsm/csm/CSMShadowNode.js"),ce=require("./shared2.cjs"),w=require("./shared.cjs"),ee=require("three/src/nodes/core/NodeUtils.js");function Te(o){if(typeof o=="string")return o;if("layout"in o&&o.layout instanceof f.StructTypeNode){if(o.layout.name==null)throw new Error("Struct name is required.");return o.layout.name}throw new Error(`Unsupported layout type: ${o}`)}function B({typeOnly:o=!1,...t}){return o?s=>e.Fn(s):s=>e.Fn(s).setLayout({...t,type:Te(t.type),inputs:t.inputs?.map(n=>({...n,type:Te(n.type)}))??[]})}function O(o){return e.Fn((t,s)=>{const n=o(...t);return typeof n=="function"?n(s):n})}const de=O((o,t,s,n)=>i=>{s??=Z(t),n??=Y(t);const r=t?.isPerspectiveCamera===!0;return i.renderer.logarithmicDepthBuffer?e.logarithmicDepthToViewZ(o,s,n):r?e.perspectiveDepthToViewZ(o,s,n):e.orthographicDepthToViewZ(o,s,n)}),J=(o,t,s)=>{t??=e.cameraNear,s??=e.cameraFar;const n=e.logarithmicDepthToViewZ(o,t,s);return e.viewZToPerspectiveDepth(n,t,s)},Ze=(o,t,s)=>{t??=e.cameraNear,s??=e.cameraFar;const n=e.perspectiveDepthToViewZ(o,t,s);return e.viewZToLogarithmicDepth(n,t,s)},Ye=(o,t,s,n,i)=>{const r=n.element(e.int(2)).element(e.int(3)),a=n.element(e.int(3)).element(e.int(3)),c=e.vec4(e.vec3(o.flipY(),t).mul(2).sub(1),1).mul(s.mul(r).add(a));return i.mul(c).xyz},re=[[58.1375,2.7747,26.8183],[-150.5666,4.2109,-88.5066],[130.5887,-14.0195,109.0745],[-42.3277,4.8052,-60.1097],[4.5974,2.1856,12.5925],[.1357,.0914,.1067]],Re=B({name:"turbo",type:"vec3",inputs:[{name:"x",type:"float"}]})(([o])=>{const t=e.vec3(...re[0]).toVar();for(let s=1;s<re.length;++s)t.assign(e.vec3(...re[s]).add(o.mul(t)));return t}),_e=O((o,t,s,n)=>{s??=Z(t),n??=Y(t);const i=de(o,t,s,n);return Re(e.viewZToLogarithmicDepth(i,s,n))}),Xe=B({name:"equirectToDirectionWorld",type:"vec3",inputs:[{name:"uv",type:"vec2"}]})(([o])=>{const t=e.sub(.5,o.x).mul(e.PI2),s=e.sub(o.y,.5).mul(e.PI),n=e.cos(s);return e.vec3(n.mul(e.cos(t)),e.sin(s),n.mul(e.sin(t)))});let ae;function W(o,t,s){ae??=new WeakMap;let n=ae.get(o);return n==null&&(n={},ae.set(o,n)),n[t]??=s()}const Ke=o=>o!=null?W(o,"projectionMatrix",()=>e.reference("projectionMatrix","mat4",o).setName("projectionMatrix")):e.cameraProjectionMatrix,Qe=o=>o!=null?W(o,"viewMatrix",()=>e.reference("matrixWorldInverse","mat4",o).setName("viewMatrix")):e.cameraViewMatrix,Je=o=>o!=null?W(o,"inverseProjectionMatrix",()=>e.reference("projectionMatrixInverse","mat4",o).setName("inverseProjectionMatrix")):e.cameraProjectionMatrixInverse,et=o=>o!=null?W(o,"inverseViewMatrix",()=>e.reference("matrixWorld","mat4",o).setName("inverseViewMatrix")):e.cameraWorldMatrix,tt=o=>o!=null?W(o,"cameraPositionWorld",()=>e.uniform("vec3").setName("cameraPositionWorld").onRenderUpdate((t,{value:s})=>{s.setFromMatrixPosition(o.matrixWorld)})):e.cameraPosition,Z=o=>o!=null?W(o,"cameraNear",()=>e.reference("near","float",o).setName("cameraNear")):e.cameraNear,Y=o=>o!=null?W(o,"cameraFar",()=>e.reference("far","float",o).setName("cameraFar")):e.cameraFar,st=e.Fn(({camera:o})=>de(e.depth,o)).once()().toVar("viewZ"),ot=new g.Vector3,nt=new g.Plane;class it extends He.CSMShadowNode{updateBefore(t){super.updateBefore(t);const{lights:s}=this;if(s.length<2)return;const n=s[s.length-1],i=ot.subVectors(n.target.position,n.position).normalize(),r=nt.setFromNormalAndCoplanarPoint(i,n.position);for(let a=0;a<s.length-1;++a){const u=s[a];r.projectPoint(u.position,u.position),u.target.position.copy(u.position).add(i)}}}async function te(o,t){const s=new g.Mesh(new ce.QuadGeometry,t);try{return await o.debug.getShaderAsync(new g.Scene,new g.Camera,s)}catch(n){return console.error(n),{vertexShader:null,fragmentShader:null}}finally{s.geometry.dispose()}}async function rt(o,t){const{vertexShader:s,fragmentShader:n}=await te(o,t);return s!=null&&n!=null?`// Vertex shader
|
|
2
|
+
|
|
3
|
+
${s}
|
|
4
|
+
// Fragment shader
|
|
5
|
+
|
|
6
|
+
${n}`:null}async function at(o,t){return(await te(o,t)).vertexShader}async function ct(o,t){return(await te(o,t)).fragmentShader}async function ut(o,t){const s=new f.NodeMaterial;s.vertexNode=e.vec4(e.positionGeometry.xy,0,1),s.fragmentNode=t.toConst("debugNode");const n=await te(o,s);return s.dispose(),n.fragmentShader}function lt(o,t,s){const n=o[t];return o[t]=((...i)=>(s(...i),n.apply(o,i))),o}class De extends f.TextureNode{static get type(){return"OutputTextureNode"}constructor(t,s){super(s),this.owner=t,this.setUpdateMatrix(!1)}setup(t){return this.owner.build(t),super.setup(t)}clone(){return new this.constructor(this.owner,this.value)}}const se=(...o)=>new De(...o);class oe extends f.TempNode{constructor(t){super("vec4"),this.resolutionScale=1,this.renderTargets=[],this.updateBeforeType=f.NodeUpdateType.FRAME,this.inputNode=t}static get type(){return"FilterNode"}createRenderTarget(t){const s=new g.RenderTarget(1,1,{depthBuffer:!1,type:g.HalfFloatType,format:g.RGBAFormat}),n=s.texture;n.minFilter=g.LinearFilter,n.magFilter=g.LinearFilter,n.generateMipmaps=!1;const i=this.constructor.type;return n.name=t!=null?`${i}_${t}`:i,this.renderTargets.push(s),s}getTextureNode(){return w.invariant(this.textureNode!=null,"outputTexture must be specified before getTextureNode() is called."),this.textureNode}get outputTexture(){return this.textureNode?.value??null}set outputTexture(t){this.textureNode=t!=null?se(this,t):void 0}setup(t){const{inputNode:s,textureNode:n}=this;return w.invariant(s!=null,"inputNode must be specified before being setup."),w.invariant(n!=null,"outputTexture must be specified before being setup."),n.uvNode=s.uvNode,n}dispose(){for(const t of this.renderTargets)t.dispose();super.dispose()}}const{resetRendererState:dt,restoreRendererState:ht}=f.RendererUtils;class he extends oe{constructor(t,s){super(t),this.downsampleRTs=[],this.upsampleRTs=[],this.downsampleMaterial=new f.NodeMaterial,this.upsampleMaterial=new f.NodeMaterial,this.mesh=new f.QuadMesh,this.inputTexelSize=e.uniform("vec2"),this.downsampleNode=e.texture();const n=this.constructor.type.replace(/Node$/,"");this.downsampleMaterial.name=`${n}_downsample`,this.upsampleMaterial.name=`${n}_upsample`,this.mesh.name=n;for(let i=0;i<s;++i)this.downsampleRTs[i]=this.createRenderTarget(`downsample${i}`),i<s-1&&(this.upsampleRTs[i]=this.createRenderTarget(`upsample${i}`));this.outputTexture=this.upsampleRTs[0].texture}setSize(t,s){const{resolutionScale:n}=this;let i=Math.max(Math.round(t*n),1),r=Math.max(Math.round(s*n),1);const{downsampleRTs:a,upsampleRTs:u}=this;for(let c=0;c<a.length;++c)i=Math.max(Math.round(i/2),1),r=Math.max(Math.round(r/2),1),a[c].setSize(i,r),c<u.length&&u[c].setSize(i,r);return this}updateBefore({renderer:t}){if(t==null)return;const{downsampleRTs:s,upsampleRTs:n,mesh:i,inputNode:r,inputTexelSize:a,downsampleNode:u}=this;w.invariant(r!=null);const{width:c,height:h}=r.value;this.setSize(c,h);const d=r.value;this.rendererState=dt(t,this.rendererState),i.material=this.downsampleMaterial;for(const l of s){const{width:m,height:p}=r.value;a.value.set(1/m,1/p),t.setRenderTarget(l),i.render(t),r.value=l.texture}i.material=this.upsampleMaterial;for(let l=n.length-1;l>=0;--l){const m=n[l],{width:p,height:v}=r.value;a.value.set(1/p,1/v),u.value=s[l].texture,t.setRenderTarget(m),i.render(t),r.value=m.texture}ht(t,this.rendererState),r.value=d}setup(t){const{inputNode:s}=this;w.invariant(s!=null);const{downsampleMaterial:n,upsampleMaterial:i}=this;return n.fragmentNode=this.setupDownsampleNode(t),i.fragmentNode=this.setupUpsampleNode(t),n.needsUpdate=!0,i.needsUpdate=!0,super.setup(t)}dispose(){for(const t of this.downsampleRTs)t.dispose();for(const t of this.upsampleRTs)t.dispose();this.downsampleMaterial.dispose(),this.upsampleMaterial.dispose(),this.mesh.geometry.dispose(),super.dispose()}}const pe=(o,t)=>{const s=e.uv(),n=e.vec4(1,1,-1,-1).mul(t.xyxy).add(s.xyxy).toVertexStage(),i=e.vec4(2,2,-2,-2).mul(t.xyxy).add(s.xyxy).toVertexStage(),r=n.zy,a=n.xy,u=n.zw,c=n.xw,h=e.vec2(s.x,i.y),d=e.vec2(i.z,s.y),l=e.vec2(i.x,s.y),m=e.vec2(s.x,i.w),p=i.zy,v=i.xy,x=i.zw,T=i.xw;return e.add(e.add(o.sample(s),o.sample(r),o.sample(a),o.sample(u),o.sample(c)).mul(1/8),e.add(o.sample(h),o.sample(d),o.sample(l),o.sample(m)).mul(1/16),e.add(o.sample(p),o.sample(v),o.sample(x),o.sample(T)).mul(1/32))},Be=(o,t)=>{const s=e.uv(),n=e.vec4(1,1,-1,-1).mul(t.xyxy).add(s.xyxy).toVertexStage(),i=e.vec2(s.x,n.y),r=e.vec2(n.z,s.y),a=e.vec2(n.x,s.y),u=e.vec2(s.x,n.w),c=n.zy,h=n.xy,d=n.zw,l=n.xw;return e.add(o.sample(s).mul(.25),e.add(o.sample(i),o.sample(r),o.sample(a),o.sample(u)).mul(.125),e.add(o.sample(c),o.sample(h),o.sample(d),o.sample(l)).mul(.0625))};class Fe extends he{static get type(){return"MipmapBlurNode"}constructor(t,s=4){super(t,s),this.resolutionScale=.5}setupDownsampleNode(t){return w.invariant(this.inputNode!=null),pe(this.inputNode,this.inputTexelSize)}setupUpsampleNode(t){return w.invariant(this.inputNode!=null),Be(this.inputNode,this.inputTexelSize)}}const pt=(...o)=>new Fe(...o),{resetRendererState:mt,restoreRendererState:vt}=f.RendererUtils;class ft extends oe{constructor(t){super(t),this.material=new f.NodeMaterial,this.mesh=new f.QuadMesh(this.material),this.inputTexelSize=e.uniform("vec2");const s=this.constructor.type.replace(/Node$/,"");this.material.name=s,this.mesh.name=s,this.renderTarget=this.createRenderTarget(),this.outputTexture=this.renderTarget.texture}setSize(t,s){const{resolutionScale:n}=this,i=Math.max(Math.round(t*n),1),r=Math.max(Math.round(s*n),1);return this.renderTarget.setSize(i,r),this}updateBefore({renderer:t}){if(t==null)return;const{inputNode:s}=this;w.invariant(s!=null);const{width:n,height:i}=s.value;this.setSize(n,i),this.inputTexelSize.value.set(1/n,1/i),this.rendererState=mt(t,this.rendererState),t.setRenderTarget(this.renderTarget),this.mesh.render(t),vt(t,this.rendererState)}setup(t){const{inputNode:s}=this;w.invariant(s!=null);const{material:n}=this;return n.fragmentNode=this.setupOutputNode(t),n.needsUpdate=!0,super.setup(t)}dispose(){this.renderTarget.dispose(),this.material.dispose(),this.mesh.geometry.dispose(),super.dispose()}}class me extends ft{constructor(t){super(t),this.thresholdLevel=e.uniform(5),this.thresholdRange=e.uniform(1),this.resolutionScale=.5}static get type(){return"DownsampleThresholdNode"}setupOutputNode(){const{inputNode:t,thresholdLevel:s,thresholdRange:n,inputTexelSize:i}=this;w.invariant(t!=null);const r=pe(t,i),a=e.luminance(r.rgb),u=e.smoothstep(s,s.add(n),a);return e.vec4(r.rgb,a).mul(u)}}const xt=(...o)=>new me(...o),gt=o=>{const t=e.OnObjectUpdate(o);return t.updateType=f.NodeUpdateType.NONE,t},yt=o=>{const t=e.OnBeforeObjectUpdate(o);return t.updateBeforeType=f.NodeUpdateType.FRAME,t},{resetRendererState:wt,restoreRendererState:Tt}=f.RendererUtils;class Nt extends oe{constructor(t){super(t),this.iterations=1,this.material=new f.NodeMaterial,this.mesh=new f.QuadMesh(this.material),this.inputTexelSize=e.uniform("vec2"),this.direction=e.uniform("vec2");const s=this.constructor.type.replace(/Node$/,"");this.material.name=s,this.mesh.name=s,this.horizontalRT=this.createRenderTarget("horizontal"),this.verticalRT=this.createRenderTarget("vertical"),this.outputTexture=this.verticalRT.texture}setSize(t,s){const{resolutionScale:n}=this,i=Math.max(Math.round(t*n),1),r=Math.max(Math.round(s*n),1);return this.horizontalRT.setSize(i,r),this.verticalRT.setSize(i,r),this}updateBefore({renderer:t}){if(t==null)return;const{horizontalRT:s,verticalRT:n,mesh:i,inputNode:r,direction:a}=this;w.invariant(r!=null);const{width:u,height:c}=r.value;this.setSize(u,c),this.inputTexelSize.value.set(1/u,1/c);const h=r.value;this.rendererState=wt(t,this.rendererState);for(let d=0;d<this.iterations;++d)a.value.set(1,0),t.setRenderTarget(s),i.render(t),r.value=s.texture,a.value.set(0,1),t.setRenderTarget(n),i.render(t),r.value=n.texture;Tt(t,this.rendererState),r.value=h}setup(t){const{inputNode:s}=this;w.invariant(s!=null);const{material:n}=this;return n.fragmentNode=this.setupOutputNode(t),n.needsUpdate=!0,super.setup(t)}dispose(){this.horizontalRT.dispose(),this.verticalRT.dispose(),this.material.dispose(),this.mesh.geometry.dispose(),super.dispose()}}function Ne(o){if(w.invariant(o>=0),o===0)return new Float64Array(0);if(o===1)return new Float64Array([1]);let t=new Float64Array(o),s=new Float64Array(o),n=s;for(let i=1;i<=o;++i){for(let r=0;r<i;++r)s[r]=r===0||r===i-1?1:t[r-1]+t[r];n=s,s=t,t=n}return n}function bt(o,t=2){w.invariant(o>=3);const s=o+t*2,n=t>0?Ne(s).slice(t,-t):Ne(s),i=Math.floor((n.length-1)/2),r=n.reduce((l,m)=>l+m,0),a=n.slice(i),u=[...Array(i+1).keys()],c=new Float64Array(Math.floor(u.length/2)),h=new Float64Array(c.length);c[0]=a[0]/r;for(let l=1,m=1;l<u.length-1;l+=2,++m){const p=u[l],v=u[l+1],x=a[l],T=a[l+1],N=x+T,z=(p*x+v*T)/N;c[m]=N/r,h[m]=z}const d=(c.reduce((l,m)=>l+m,0)-c[0]*.5)*2;if(d!==0){const l=1/d;for(let m=0;m<c.length;++m)c[m]*=l}return{offsets:h,weights:c}}class ve extends Nt{static get type(){return"GaussianBlurNode"}constructor(t,s=35){super(t),this.kernelSize=s}setupOutputNode(t){const{inputNode:s,inputTexelSize:n,direction:i}=this;w.invariant(s!=null);const{offsets:r,weights:a}=bt(this.kernelSize);return e.Fn(()=>{const u=e.uv(),c=i.mul(n).toVertexStage(),h=s.sample(u).mul(a[0]);for(let d=1;d<r.length;++d){const l=c.mul(r[d]);h.addAssign(e.add(s.sample(u.add(l)),s.sample(u.sub(l))).mul(a[d]))}return h})()}}const St=(...o)=>new ve(...o),Ve=o=>o.dot(e.vec2(.06711056,.00583715)).fract().mul(52.9829189).fract(),Mt=e.Fn(()=>{const o=e.vec2(e.screenCoordinate.xy).add(e.time.fract().mul(1337)),t=Ve(o);return e.vec3(t,t.oneMinus(),t).sub(.5).div(255)}).once()(),zt=(o,t,s=e.vec2(90,45))=>{const n=e.equirectUV(o),i=e.fwidth(n),r=t.mul(i).mul(.5),a=e.abs(n.mul(s).fract().sub(.5)).div(s),u=e.smoothstep(r,r.add(i),a).oneMinus();return u.x.add(u.y).clamp(0,1)};class Ae extends f.TempNode{constructor(){super("vec3"),this.currentProjectionMatrix=e.uniform("mat4"),this.previousProjectionMatrix=e.uniform("mat4"),this.currentModelViewMatrix=e.uniform("mat4"),this.previousModelViewMatrix=e.uniform("mat4"),this.objectModelViewMatrices=new WeakMap,this.updateType=f.NodeUpdateType.FRAME,this.updateBeforeType=f.NodeUpdateType.OBJECT,this.updateAfterType=f.NodeUpdateType.OBJECT}static get type(){return"HighpVelocityNode"}setProjectionMatrix(t){return this.projectionMatrix=t,this}update({camera:t}){if(t==null)return;const{currentProjectionMatrix:s,previousProjectionMatrix:n}=this,i=this.projectionMatrix??t.projectionMatrix;n.value==null?n.value=new g.Matrix4().copy(i):n.value.copy(s.value),s.value.copy(i)}updateBefore({object:t,camera:s}){if(t==null||s==null)return;const{currentModelViewMatrix:n,previousModelViewMatrix:i,objectModelViewMatrices:r}=this;n.value.multiplyMatrices(s.matrixWorldInverse,t.matrixWorld),i.value=r.get(t)??n.value}updateAfter({object:t}){if(t==null)return;const{currentModelViewMatrix:s,objectModelViewMatrices:n}=this;let i=n.get(t);i==null&&(i=new g.Matrix4,n.set(t,i)),i.copy(s.value)}setup(t){const s=this.currentProjectionMatrix.mul(this.currentModelViewMatrix).mul(e.positionLocal).toVertexStage(),n=this.previousProjectionMatrix.mul(this.previousModelViewMatrix).mul(e.positionPrevious).toVertexStage(),i=s.xyz.div(s.w),r=n.xyz.div(n.w);return e.sub(i,r)}}const ue=e.nodeImmutable(Ae);class Pe extends he{static get type(){return"KawaseBlurNode"}constructor(t,s=4){super(t,s),this.resolutionScale=.5}setupDownsampleNode(t){const{inputNode:s,inputTexelSize:n}=this;w.invariant(s!=null);const i=e.uv(),r=e.vec4(1,1,-1,-1).mul(n.xyxy.mul(.5)).add(i.xyxy).toVertexStage(),a=r.zy,u=r.xy,c=r.xw,h=r.zw;return e.add(s.sample(i).mul(4),s.sample(a),s.sample(u),s.sample(c),s.sample(h)).mul(1/8)}setupUpsampleNode(t){const{inputNode:s,inputTexelSize:n}=this;w.invariant(s!=null);const i=e.uv(),r=e.vec4(1,1,-1,-1).mul(n.xyxy.mul(.5)).add(i.xyxy).toVertexStage(),a=r.zy,u=r.xy,c=r.xw,h=r.zw,d=e.vec2(r.z,i.y),l=e.vec2(r.x,i.y),m=e.vec2(i.x,r.y),p=e.vec2(i.x,r.w);return e.add(e.add(s.sample(a),s.sample(u),s.sample(c),s.sample(h)).mul(1/12),e.add(s.sample(d),s.sample(l),s.sample(m),s.sample(p)).mul(1/6))}}const Ct=(...o)=>new Pe(...o);class Rt extends f.TempNode{constructor(t){super("vec3"),this.intensity=e.uniform(1e-5),this.inputNode=t}static get type(){return"LensGhostNode"}setup(t){const{inputNode:s,intensity:n}=this;w.invariant(s!=null);const i=B({name:"sampleGhost",type:"vec3",inputs:[{name:"uv",type:"vec2"},{name:"direction",type:"vec2"},{name:"color",type:"vec3"},{name:"offset",type:"float"}]})(([c,h,d,l])=>{const m=h.mul(l).add(c.oneMinus()).saturate(),p=s.sample(m).rgb.mul(d),v=e.sub(.5,m).length().mul(1/(Math.SQRT2/4)).saturate();return p.mulAssign(v.oneMinus().pow(3)),p}),r=e.uv(),a=r.sub(.5);return e.add(i(r,a,e.vec3(.8,.8,1),-5),i(r,a,e.vec3(1,.8,.4),-1.5),i(r,a,e.vec3(.9,1,.8),-.4),i(r,a,e.vec3(1,.8,.4),-.2),i(r,a,e.vec3(.9,.7,.7),-.1),i(r,a,e.vec3(.5,1,.4),.7),i(r,a,e.vec3(.5,.5,.5),1),i(r,a,e.vec3(1,1,.6),2.5),i(r,a,e.vec3(.5,.8,1),10)).mul(n)}}const{resetRendererState:Dt,restoreRendererState:Bt}=f.RendererUtils;function Ft(){const n=document.createElement("canvas");n.width=256,n.height=32;const i=n.getContext("2d");w.invariant(i!=null),i.beginPath(),i.moveTo(0,32/2),i.lineTo(256/2,5),i.lineTo(256,32/2),i.lineTo(256/2,27),i.closePath();const r=i.createLinearGradient(0,0,256,0);return r.addColorStop(0,"#000000"),r.addColorStop(.5,"#ffffff"),r.addColorStop(1,"#000000"),i.fillStyle=r,i.fill(),new g.CanvasTexture(n)}const be=e.struct({color:"vec3",luminance:"float",position:"vec2",scale:"float",sin:"float",cos:"float"});class Vt extends oe{constructor(t){super(t),this.spikePairCount=6,this.wireframe=!1,this.intensity=e.uniform(1e-5),this.sizeScale=e.uniform(new g.Vector2(1.5,.01)),this.luminanceThreshold=e.uniform(100),this.indirectBuffer=new f.IndirectStorageBufferAttribute(new Uint32Array([6,0,0,0,0]),1),this.instanceBuffer=e.instancedArray(1,be),this.renderTarget=this.createRenderTarget(),this.material=new f.MeshBasicNodeMaterial({depthTest:!1,depthWrite:!1,transparent:!0,blending:g.AdditiveBlending}),this.mesh=new g.Mesh(new g.PlaneGeometry(1,1),this.material),this.camera=new g.PerspectiveCamera,this.inputTexelSize=e.uniform("vec2"),this.outputTexelSize=e.uniform("vec2"),this.geometryRatio=e.uniform("vec2"),this.material.name="LensGlare",this.inputNode=t,this.resolutionScale=.5,this.outputTexture=this.renderTarget.texture,this.mesh.geometry.indirect=this.indirectBuffer}customCacheKey(){return ee.hash(this.spikePairCount,+this.wireframe)}setSize(t,s){const{resolutionScale:n}=this,i=Math.max(Math.round(t*n),1),r=Math.max(Math.round(s*n),1);this.renderTarget.setSize(i,r);const a=Math.floor(i/2),u=Math.floor(r/2),c=a*u;return this.instanceBuffer.bufferCount<c&&(this.instanceBuffer.dispose(),this.instanceBuffer=e.instancedArray(c,be),this.setupCompute(a,u),this.setupMaterial()),this}updateBefore({renderer:t}){if(t==null)return;const{inputNode:s}=this;w.invariant(s!=null);const{width:n,height:i}=s.value;this.setSize(n,i);const{computeNode:r,indirectBuffer:a,renderTarget:u}=this;w.invariant(r!=null),this.inputTexelSize.value.set(1/n,1/i);const c=n/i;c>1?this.geometryRatio.value.set(1/c,1):this.geometryRatio.value.set(1,c);const{width:h,height:d}=u;this.outputTexelSize.value.set(1/h,1/d),a.array[1]=0,a.needsUpdate=!0,t.compute(r),this.rendererState=Dt(t,this.rendererState),t.setRenderTarget(u),t.render(this.mesh,this.camera),Bt(t,this.rendererState)}setupCompute(t,s){const{spikePairCount:n,inputNode:i,indirectBuffer:r,instanceBuffer:a,outputTexelSize:u}=this;w.invariant(i!=null);const c=e.storage(r,"uint",r.count).toAtomic();this.computeNode=e.Fn(()=>{const h=e.uvec2(t,s);e.If(e.globalId.xy.greaterThanEqual(h).any(),()=>{e.Return()});const d=e.vec2(e.globalId.xy).mul(u).mul(2),l=i.sample(d),m=l.a;e.If(m.greaterThan(.1),()=>{const p=e.atomicAdd(c.element(1),n);for(let v=0;v<n;++v){const x=a.element(p.add(v));x.get("color").assign(l.rgb),x.get("luminance").assign(m),x.get("position").assign(e.globalId.xy),x.get("scale").assign(v%2===0?1:.5);const T=Math.PI*(3-Math.sqrt(5)),N=Math.PI/n*v+T;x.get("sin").assign(Math.sin(N)),x.get("cos").assign(Math.cos(N))}})})().compute([Math.ceil(t/8),Math.ceil(s/8),1],[8,8,1])}setupMaterial(){const{inputNode:t,spikeNode:s,instanceBuffer:n,luminanceThreshold:i,intensity:r,sizeScale:a,outputTexelSize:u,geometryRatio:c}=this;w.invariant(t!=null),w.invariant(s!=null);const h=n.element(e.instanceIndex);this.material.colorNode=this.wireframe?e.vec4(1):s.mul(h.get("color").mul(r)),this.material.vertexNode=e.Fn(()=>{const d=h.get("sin"),l=h.get("cos"),m=e.mat3(l,d,0,d.negate(),l,0,0,0,1),v=h.get("position").mul(u).mul(2),x=v.flipY().mul(2).sub(1),N=h.get("luminance").div(i).saturate(),z=e.vec2(N,1).mul(h.get("scale"),a,v.sub(.5).length().mul(2).oneMinus().mul(.5).add(.5)),A=m.mul(e.positionGeometry.mul(e.vec4(z,1,1))).mul(c).add(e.vec3(x,0));return e.vec4(A,1)})(),this.material.wireframe=this.wireframe,this.material.needsUpdate=!0}setup(t){if(this.spikeNode==null){const s=Ft();s.colorSpace=g.SRGBColorSpace,this.spikeNode=e.texture(s)}return this.setupMaterial(),super.setup(t)}dispose(){this.renderTarget.dispose(),this.material.dispose(),this.mesh.geometry.dispose(),super.dispose()}}const At=new g.Vector2;class Pt extends f.TempNode{constructor(t){super("vec3"),this.intensity=e.uniform(1e-5),this.chromaticAberration=e.uniform(.005),this.aspectRatio=e.uniform(0),this.updateBeforeType=f.NodeUpdateType.FRAME,this.inputNode=t}static get type(){return"LensHaloNode"}updateBefore({renderer:t}){if(t==null)return;const{width:s,height:n}=t.getDrawingBufferSize(At);this.aspectRatio.value=s/n}setup(t){const{inputNode:s,intensity:n,chromaticAberration:i,aspectRatio:r}=this;w.invariant(s!=null);const a=B({name:"cubicRingMask",type:"float",inputs:[{name:"x",type:"float"},{name:"radius",type:"float"},{name:"thickness",type:"float"}]})(([d,l,m])=>{const p=e.min(e.abs(d.sub(l)).div(m),1);return e.mul(p,p,e.sub(3,p.mul(2))).oneMinus()}),u=B({name:"sampleHalo",type:"vec3",inputs:[{name:"uv",type:"vec2"},{name:"radius",type:"float"}]})(([d,l])=>{const m=e.vec2(r,1),p=d.sub(.5).mul(m).normalize().div(m),v=e.vec3(i).mul(e.vec3(-1,0,1)),x=e.fract(p.mul(l).add(d.oneMinus())),T=e.vec3(s.sample(p.mul(v.r).add(x)).r,s.sample(p.mul(v.g).add(x)).g,s.sample(p.mul(v.b).add(x)).b),N=d.sub(e.vec2(.5,0)).mul(m).add(e.vec2(.5,0)),z=e.distance(N,e.vec2(.5)).saturate();return T.mulAssign(a(z,.45,.25)),T}),c=e.uv();return u(c,.3).mul(n)}}const P=o=>o.greaterThanEqual(0).all().and(o.lessThanEqual(1).all()).toFloat();class fe extends he{constructor(t,s=4){super(t,s),this.blendAmount=e.uniform(.85),this.resolutionScale=.5}static get type(){return"MipmapSurfaceBlurNode"}setupDownsampleNode(t){const{inputNode:s,inputTexelSize:n}=this;return w.invariant(s!=null),e.Fn(()=>{const i=e.uv(),r=e.vec4(1,1,-1,-1).mul(n.xyxy).add(i.xyxy).toVertexStage(),a=e.vec4(2,2,-2,-2).mul(n.xyxy).add(i.xyxy).toVertexStage(),u=r.zy,c=r.xy,h=r.zw,d=r.xw,l=a.zy,m=a.xy,p=a.zw,v=a.xw,x=e.vec2(i.x,a.y),T=e.vec2(a.z,i.y),N=e.vec2(a.x,i.y),z=e.vec2(i.x,a.w),A=1/4/2,C=1/9/2,V=s.sample(i).mul(C);let M;return M=e.vec4(P(u),P(c),P(h),P(d)).mul(A),V.addAssign(s.sample(u).mul(M.x),s.sample(c).mul(M.y),s.sample(h).mul(M.z),s.sample(d).mul(M.w)),M=e.vec4(P(l),P(m),P(p),P(v)).mul(C),V.addAssign(s.sample(l).mul(M.x),s.sample(m).mul(M.y),s.sample(p).mul(M.z),s.sample(v).mul(M.w)),M=e.vec4(P(x),P(T),P(N),P(z)).mul(C),V.addAssign(s.sample(x).mul(M.x),s.sample(T).mul(M.y),s.sample(N).mul(M.z),s.sample(z).mul(M.w)),V})()}setupUpsampleNode(t){const{inputNode:s,inputTexelSize:n,downsampleNode:i}=this;w.invariant(s!=null);const r=e.uv(),a=e.vec4(1,1,-1,-1).mul(n.xyxy).add(r.xyxy).toVertexStage(),u=e.vec2(r.x,a.y),c=e.vec2(a.z,r.y),h=e.vec2(a.x,r.y),d=e.vec2(r.x,a.w),l=a.zy,m=a.xy,p=a.zw,v=a.xw,x=e.add(s.sample(r).mul(1/4),e.add(s.sample(u),s.sample(c),s.sample(h),s.sample(d)).mul(1/8),e.add(s.sample(l),s.sample(m),s.sample(p),s.sample(v)).mul(1/16));return e.mix(i.sample(r),x,this.blendAmount)}}const Ut=(...o)=>new fe(...o);function xe(o){return(o instanceof f.NodeBuilder?o.renderer.backend:"backend"in o?o.backend:o).isWebGPUBackend===!0}class Ue extends f.TempNode{constructor(t){super("vec4"),this.bloomIntensity=e.uniform(.05),this.inputNode=t,this.thresholdNode=new me,this.blurNode=new ve,this.ghostNode=new Rt,this.haloNode=new Pt,this.bloomNode=new fe(null,8),this.glareNode=new Vt,this.featuresNode=e.rtt(e.add(this.ghostNode,this.haloNode)),this.featuresNode.value.name="LensFlare_features",this.featuresNode.pixelRatio=.5,this.blurNode.resolutionScale=1,this.bloomNode.resolutionScale=1,this.glareNode.resolutionScale=1}static get type(){return"LensFlareNode"}setup(t){const{inputNode:s,thresholdNode:n,blurNode:i,ghostNode:r,haloNode:a,bloomNode:u,featuresNode:c,glareNode:h}=this;w.invariant(s!=null);const d=n.getTextureNode(),l=i.getTextureNode();n.inputNode=s,i.inputNode=d,r.inputNode=l,a.inputNode=l,u.inputNode=d,h.inputNode=d;const m=u.getTextureNode().mul(this.bloomIntensity),p=h.getTextureNode();return e.Fn(()=>{const v=s;return v.addAssign(m),xe(t)&&v.addAssign(p),v.add(c)})()}dispose(){this.thresholdNode.dispose(),this.blurNode.dispose(),this.ghostNode.dispose(),this.haloNode.dispose(),this.bloomNode.dispose(),this.glareNode.dispose(),this.featuresNode.dispose(),super.dispose()}}const Ot=o=>new Ue(o!=null?e.convertToTexture(o):null),It=B({name:"bvec2Not",type:"bvec2",inputs:[{name:"x",type:"bvec2"}]})(([o])=>o.notEqual(e.bool(!0))),Lt=B({name:"bvec3Not",type:"bvec3",inputs:[{name:"x",type:"bvec3"}]})(([o])=>o.notEqual(e.bool(!0))),jt=B({name:"bvec4Not",type:"bvec4",inputs:[{name:"x",type:"bvec4"}]})(([o])=>o.notEqual(e.bool(!0))),Et=e.overloadingFn([It,Lt,jt]),kt=B({name:"bvec2And",type:"bvec2",inputs:[{name:"x",type:"bvec2"},{name:"y",type:"bvec2"}]})(([o,t])=>e.bvec2(e.uvec2(o).mul(e.uvec2(t)))),qt=B({name:"bvec3And",type:"bvec3",inputs:[{name:"x",type:"bvec3"},{name:"y",type:"bvec3"}]})(([o,t])=>e.bvec3(e.uvec3(o).mul(e.uvec3(t)))),Wt=B({name:"bvec4And",type:"bvec4",inputs:[{name:"x",type:"bvec4"},{name:"y",type:"bvec4"}]})(([o,t])=>e.bvec4(e.uvec4(o).mul(e.uvec4(t)))),Gt=e.overloadingFn([kt,qt,Wt]),$t=B({name:"bvec2Or",type:"bvec2",inputs:[{name:"x",type:"bvec2"},{name:"y",type:"bvec2"}]})(([o,t])=>e.uvec2(o).add(e.uvec2(t)).notEqual(0)),Ht=B({name:"bvec3Or",type:"bvec3",inputs:[{name:"x",type:"bvec3"},{name:"y",type:"bvec3"}]})(([o,t])=>e.uvec3(o).add(e.uvec3(t)).notEqual(0)),Zt=B({name:"bvec4Or",type:"bvec4",inputs:[{name:"x",type:"bvec4"},{name:"y",type:"bvec4"}]})(([o,t])=>e.uvec4(o).add(e.uvec4(t)).notEqual(0)),Yt=e.overloadingFn([$t,Ht,Zt]),_t=O((o,t,s,n)=>{const i=o.sub(s),r=e.dot(t,i),a=e.dot(i,i).sub(n.pow2()),u=r.pow2().sub(a).toConst(),c=e.vec2(-1);return e.If(u.greaterThanEqual(0),()=>{const h=e.sqrt(u);c.assign(e.vec2(r.negate().sub(h),r.negate().add(h)))}),c}),Oe=e.struct({near:"vec4",far:"vec4"}),Xt=O((o,t,s,n)=>{const i=o.sub(s),r=e.dot(t,i),a=e.dot(i,i).sub(n.pow2()),u=r.pow2().sub(a).toConst(),c=e.vec2(u.greaterThanEqual(0)).toConst(),h=c.oneMinus().toConst(),d=e.sqrt(u.max(0)).toConst(),l=c.mul(r.negate().sub(d)).sub(h),m=c.mul(r.negate().add(d)).sub(h);return Oe(l,m)}),Kt=O((o,t,s)=>{const n=o.div(s),i=t.div(s),r=i.dot(i),a=n.dot(i),u=n.dot(n),c=a.pow2().sub(r.mul(u.sub(1))).toConst(),h=e.vec2(-1);return e.If(c.greaterThanEqual(0),()=>{const d=e.sqrt(c);h.assign(e.vec2(a.negate().sub(d),a.negate().add(d)).div(r))}),h}),Qt={float:e.float,int:e.int,uint:e.uint,bool:e.bool,vec2:e.vec2,ivec2:e.ivec2,uvec2:e.uvec2,bvec2:e.bvec2,vec3:e.vec3,ivec3:e.ivec3,uvec3:e.uvec3,bvec3:e.bvec3,vec4:e.vec4,ivec4:e.ivec4,uvec4:e.uvec4,bvec4:e.bvec4,mat2:e.mat2,mat3:e.mat3,mat4:e.mat4,color:e.color},Jt=f.Node;function es(o){return Qt[o]}class Ie extends f.Texture3DNode{static get type(){return"OutputTexture3DNode"}constructor(t,s){super(s),this.owner=t,this.setUpdateMatrix(!1)}setup(t){return this.owner.build(t),super.setup(t)}clone(){return new this.constructor(this.owner,this.value)}}const ts=(...o)=>new Ie(...o),ss=["x","y","z","w"],os=O((o,t,s=0)=>{let n;if(typeof s=="number")n=s;else if(s?.isConstNode===!0)n=s.value;else throw new Error("Component must be a constant.");const i=o.size(),r=e.ivec2(t.mul(i).sub(.5).floor()).toConst(),a=e.ivec4(r,r.add(1)).toConst(),u=ss[n];return e.vec4(o.load(a.xw)[u],o.load(a.zw)[u],o.load(a.zy)[u],o.load(a.xy)[u])}),ns=O((o,t=e.uv())=>{const s=e.vec2(o.size()),n=s.reciprocal(),i=t.mul(s),r=i.sub(.5).floor().add(.5),a=i.sub(r),u=a.mul(a.mul(a.mul(.5).oneMinus()).sub(.5)),c=a.mul(a).mul(a.mul(1.5).sub(2.5)).add(1),h=a.mul(a.mul(e.sub(2,a.mul(1.5))).add(.5)),d=a.mul(a).mul(a.mul(.5).sub(.5)),l=c.add(h),m=h.div(c.add(h)),p=r.sub(1).mul(n),v=r.add(2).mul(n),x=r.add(m).mul(n);return e.add(o.sample(e.vec2(p.x,p.y)).mul(u.x).mul(u.y),o.sample(e.vec2(x.x,p.y)).mul(l.x).mul(u.y),o.sample(e.vec2(v.x,p.y)).mul(d.x).mul(u.y),o.sample(e.vec2(p.x,x.y)).mul(u.x).mul(l.y),o.sample(e.vec2(x.x,x.y)).mul(l.x).mul(l.y),o.sample(e.vec2(v.x,x.y)).mul(d.x).mul(l.y),o.sample(e.vec2(p.x,v.y)).mul(u.x).mul(d.y),o.sample(e.vec2(x.x,v.y)).mul(l.x).mul(d.y),o.sample(e.vec2(v.x,v.y)).mul(d.x).mul(d.y))}),R=64;function Q(o){return Math.floor(Math.max(0,o)/R)}class is{constructor(){this.size=[0,0,0],this.offset={x:0,y:0}}copy(t){return[this.size[0],this.size[1],this.size[2]]=t.size,this.offset.x=t.offset.x,this.offset.y=t.offset.y,this}}const rs=new g.Vector3,as=new g.Vector4,cs=new g.Vector2,us=new g.Matrix4;class Le extends f.TempNode{constructor(t,s,n){super("float"),this.sampleCount=60,this.hardShadowSamples=4,this.fadeOutSamples=8,this.thickness=e.uniform(.005),this.shadowContrast=e.uniform(4),this.shadowIntensity=e.uniform(1),this.bilinearThreshold=e.uniform(.02),this.lightCoordinate=e.uniform("vec4"),this.dispatchOffset=e.uniform("ivec2"),this.dispatchIndex=e.uniform(0),this.dispatches=Array.from({length:8},()=>new is),this.dispatchCount=0,this.updateBeforeType=f.NodeUpdateType.FRAME,this.depthNode=t,this.camera=s,this.mainLight=n;const i=new f.StorageTexture(1,1);i.colorSpace=g.NoColorSpace,i.minFilter=g.LinearFilter,i.magFilter=g.LinearFilter,i.generateMipmaps=!1,i.name="ScreenSpaceShadow",this.outputTexture=i,this.textureNode=se(this,i),this.computeNode=this.createComputeNode()}get type(){return"ScreenSpaceShadowNode"}customCacheKey(){return ee.hash(this.camera?.id??-1,this.mainLight?.id??-1,this.sampleCount,this.hardShadowSamples,this.fadeOutSamples)}getTextureNode(){return this.textureNode}setSize(t,s){const{outputTexture:n}=this;return(t!==n.width||s!==n.height)&&(n.setSize(t,s,0),n.needsUpdate=!0),this}updateBefore(t){const{renderer:s}=t;if(s==null)return;const n=s.getDrawingBufferSize(cs);this.setSize(n.width,n.height);const{camera:i,mainLight:r}=this,a=us.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),u=rs.copy(r.position).sub(r.target.position).normalize(),c=as.set(u.x,u.y,u.z,0).applyMatrix4(a);this.updateDispatchList(c,n);for(let h=0;h<this.dispatchCount;++h){const d=this.dispatches[h];this.dispatchOffset.value.set(d.offset.x,d.offset.y),this.dispatchIndex.value=h,s.compute(this.computeNode,d.size)}}updateDispatchList(t,{width:s,height:n}){let i=t.w;const r=2e-6*R;i>=0&&i<r?i=r:i<0&&i>-r&&(i=-r),this.lightCoordinate.value.set((t.x/i*.5+.5)*s,(t.y/i*-.5+.5)*n,t.w===0?0:t.z/t.w,t.w>0?1:-1);const a=Math.round(this.lightCoordinate.value.x),u=Math.round(this.lightCoordinate.value.y),c=-a,h=-(n-u),d=s-a,l=u;let m=0;for(let p=0;p<4;++p){const v=p===0||p===3,x=(p&1)>0,T=(p&2)>0,N=Q(x?c:-d),z=Q(T?h:-l),A=R*(v?1:2)-1,C=R*(v?2:1)-1,V=Q((x?d:-c)+A),M=Q((T?l:-h)+C);if(V-N>0&&M-z>0){const U=p===2||p===3?1:0,I=p===1||p===3?1:0,y=this.dispatches[m++];y.size[0]=R,y.size[1]=V-N,y.size[2]=M-z,y.offset.x=(x?N:-V)+U,y.offset.y=(T?-M:z)+I;let D;if(p===0?D=c-h:p===1?D=d+h:p===2?D=-c-l:D=-d+l,D=(D+R-1)/R|0,D>0){const b=this.dispatches[m++].copy(y);p===0?(b.size[2]=Math.min(y.size[2],D),y.size[2]-=b.size[2],b.offset.y=y.offset.y+y.size[2],b.offset.x-=1,b.size[1]+=1):p===1?(b.size[1]=Math.min(y.size[1],D),y.size[1]-=b.size[1],b.offset.x=y.offset.x+y.size[1],b.size[2]+=1):p===2?(b.size[1]=Math.min(y.size[1],D),y.size[1]-=b.size[1],y.offset.x+=b.size[1],b.size[2]+=1,b.offset.y-=1):p===3&&(b.size[2]=Math.min(y.size[2],D),y.size[2]-=b.size[2],y.offset.y+=b.size[2],++b.size[1]),(b.size[1]<=0||b.size[2]<=0)&&b.copy(this.dispatches[--m]),(y.size[1]<=0||y.size[2]<=0)&&y.copy(this.dispatches[--m])}}}for(let p=0;p<m;++p){const v=this.dispatches[p];v.offset.x*=R,v.offset.y*=R}this.dispatchCount=m}createComputeNode(){const{depthNode:t,camera:s,sampleCount:n,hardShadowSamples:i,fadeOutSamples:r,outputTexture:a,thickness:u,shadowContrast:c,shadowIntensity:h,bilinearThreshold:d,lightCoordinate:l,dispatchOffset:m}=this,p=Math.floor(n/R)+2,v=e.workgroupArray("float",p*R),x=()=>{const T=e.ivec2(e.workgroupId.yz).mul(R).add(m).toConst(),N=l.xy.floor().add(.5).toConst(),z=l.xy.sub(N).toConst(),A=l.w.greaterThan(0),C=e.ivec2(T.sign()).toConst(),V=e.abs(T.x.add(C.y)).lessThan(e.abs(T.y.sub(C.x))).toConst(),M=e.ivec2(V.select(C.y,0),V.select(0,C.x.negate())),U=e.vec2(M.mul(e.workgroupId.x).add(T)).toConst(),I=e.abs(U.x).greaterThan(e.abs(U.y)).toConst(),y=I.select(U.x,U.y).toConst(),D=y.abs().toConst(),b=D.sub(R),L=I.select(z.x,z.y).toVar();L.assign(y.greaterThan(0).select(L.negate(),L));const E=U.add(N).toConst(),k=e.mix(l.xy,E,b.add(L).div(D.add(L))).toConst(),G=E.sub(k).toConst(),$=e.float(A.select(e.invocationLocalIndex,e.invocationLocalIndex.bitXor(R-1))).toConst(),q=e.mix(E,k,$.div(R)).toVar(),j=D.sub($).add(L).toConst();return{pixelXY:q,pixelDistance:j,xyDelta:G,xAxisMajor:I}};return e.Fn(T=>{const[N,z]=T.renderer.reversedDepthBuffer?[e.float(1),e.float(0)]:[e.float(0),e.float(1)],A=S=>{let F=t.load(S);return T.renderer.logarithmicDepthBuffer&&(F=J(F,Z(s),Y(s))),F=F.toConst(),e.and(S.greaterThanEqual(0).all(),S.lessThan(t.size()).all()).select(F,z)},{pixelXY:C,xyDelta:V,pixelDistance:M,xAxisMajor:U}=x(),I=l.w.negate(),y=N.greaterThan(z).select(-1,1).toConst(),D=e.ivec2(C.floor()).toConst();let b,L,E;for(let S=0;S<p;++S){const F=e.ivec2(C.floor()).toConst(),X=U.select(C.y,C.x).fract().sub(.5).greaterThan(0).select(1,-1).toConst(),qe=e.ivec2(U.select(0,X),U.select(X,0)),H=A(F).toConst(),ye=A(F.add(qe)).toConst(),we=z.sub(H).abs().toConst(),We=e.greaterThan(H.sub(ye).abs(),we.mul(d)),Ge=H.add(e.abs(H.sub(ye)).mul(y)),$e=We.select(H,Ge),ne=S===0?M:I.mul(R*S).add(M).toConst();let ie=$e.sub(l.z).div(ne).toConst();S>0&&(ie=ne.greaterThan(0).select(ie,1e10).toConst()),v.element(e.invocationLocalIndex.add(R*S)).assign(ie),S===0&&(b=H,L=we,E=ne),C.addAssign(V.mul(I))}e.workgroupBarrier();const k=b.sub(l.z).div(E).toVar(),G=E.add(I).min(u.reciprocal()).mul(E).div(L).toConst();k.assign(k.mul(G).sub(y));const $=e.invocationLocalIndex.add(1).toConst(),q=e.float(1).toVar();for(let S=0;S<i;++S){const F=k.sub(v.element($.add(S)).mul(G)).abs();q.assign(q.min(F))}const j=e.vec4(1).toVar();for(let S=i;S<n-r;++S){const F=k.sub(v.element($.add(S)).mul(G)).abs(),_=e.int(S&3).toConst();j.element(_).assign(j.element(_).min(F))}for(let S=n-r;S<n;++S){const F=k.sub(v.element($.add(S)).mul(G)).abs(),_=(S+1-(n-r))/(r+1)*.75,X=e.int(S&3).toConst();j.element(X).assign(j.element(X).min(F.add(_)))}const ge=c.oneMinus().toConst();q.assign(q.mul(c).add(ge).saturate()),j.assign(j.mul(c).add(ge).saturate());const K=e.float(0).toVar();K.assign(j.dot(e.vec4(.25))),K.assign(e.min(q,K)),e.textureStore(a,D,e.mix(1,K,h))})().computeKernel([R,1,1])}setup(t){return this.textureNode}dispose(){this.outputTexture.dispose()}}const ls=(...o)=>new Le(...o),ds=(()=>{const o=new f.Data3DTexture(new Uint8Array(1));return o.format=f.RedFormat,o.minFilter=f.NearestFilter,o.magFilter=f.NearestFilter,o.wrapS=f.RepeatWrapping,o.wrapT=f.RepeatWrapping,o.wrapR=f.RepeatWrapping,o.needsUpdate=!0,o})();class je extends f.Texture3DNode{constructor(){super(ds),this.url=ce.DEFAULT_STBN_URL}customCacheKey(){return ee.hashString(this.url)}setup(t){return new ce.STBNLoader().loadAsync(this.url).then(s=>{this.value=s}).catch(s=>{console.error(s)}),super.setup(t)}}const Ee=e.nodeImmutable(je),hs=e.Fn(()=>Ee.sample(e.vec3(e.screenCoordinate.xy,e.frameId.mod(64)).div(e.vec3(128,128,64))).r.toConst("stbn")).once()();class ke extends f.StorageTextureNode{static get type(){return"StorageTexture3DNode"}getDefaultUV(){return e.vec3(.5,.5,.5)}setUpdateMatrix(t){}generateUV(t,s){return s.build(t,this.sampler?"vec3":"ivec3")}generateOffset(t,s){return s.build(t,"ivec3")}}const ps=(...o)=>new ke(...o);function Se(o,t){let s=1,n=0;for(;o>0;)s/=t,n+=s*(o%t),o=Math.floor(o/t);return n}const Me=Array.from({length:16},(o,t)=>new g.Vector2(Se(t+1,2),Se(t+1,3))),{resetRendererState:ms,restoreRendererState:vs}=f.RendererUtils;function fs(o){return o.isPerspectiveCamera===!0||o.isOrthographicCamera===!0||"updateProjectionMatrix"in o&&"setViewOffset"in o&&"clearViewOffset"in o}const xs=B({name:"clipAABB",type:"vec4",inputs:[{name:"current",type:"vec4"},{name:"history",type:"vec4"},{name:"minColor",type:"vec4"},{name:"maxColor",type:"vec4"}]})(([o,t,s,n])=>{const i=n.rgb.add(s.rgb).mul(.5).toConst(),r=n.rgb.sub(s.rgb).mul(.5).add(1e-7),a=t.sub(e.vec4(i,o.a)).toConst(),c=a.xyz.div(r).abs().toConst(),h=e.max(c.x,c.y,c.z).toConst();return h.greaterThan(1).select(e.vec4(i,o.a).add(a.div(h)),t)}),ze=[[-1,-1],[-1,1],[1,-1],[1,1],[1,0],[0,-1],[0,1],[-1,0]],gs=O((o,t,s,n,i)=>{const r=s.toVar(),a=s.pow2().toVar();for(const[m,p]of ze){const v=o.load(t.add(e.ivec2(m,p))).toConst();r.addAssign(v),a.addAssign(v.pow2())}const u=ze.length+1,c=r.div(u).toConst(),h=e.sqrt(a.div(u).sub(c.pow2()).max(0)).mul(i).toConst(),d=c.sub(h).toConst(),l=c.add(h).toConst();return xs(c.clamp(d,l),n,d,l)}),ys=[[-1,-1],[-1,0],[-1,1],[0,-1],[0,0],[0,1],[1,-1],[1,0],[1,1]],ws=e.struct({closestCoord:"ivec2",closestDepth:"float"}),Ts=O((o,t)=>s=>{const n=e.ivec2(0).toVar(),i=e.float(1).toVar();for(const[r,a]of ys){const u=t.add(e.ivec2(r,a)).toConst();let c=o.load(u).r;s.renderer.reversedDepthBuffer&&(c=c.oneMinus()),c=c.toConst(),e.If(c.lessThan(i),()=>{n.assign(u),i.assign(c)})}return ws(n,i)}),Ns=O((o,t)=>{const n=o.mul(t).fract().abs(),i=e.max(n,n.oneMinus());return i.x.mul(i.y).oneMinus().div(.75)}),Ce=new g.Vector2,bs=new g.DepthTexture(1,1);class le extends f.TempNode{constructor(t,s,n,i){if(super("vec4"),this.temporalAlpha=e.uniform(.05),this.varianceGamma=e.uniform(1),this.velocityThreshold=e.uniform(.1),this.depthError=e.uniform(.001),this.debugShowRejection=!1,this.resolveRT=this.createRenderTarget("resolve"),this.historyRT=this.createRenderTarget("history"),this.resolveMaterial=new f.NodeMaterial,this.mesh=new f.QuadMesh,this.needsSyncRenderPipeline=!1,this.needsClearHistory=!1,this.resolveNode=e.texture(this.resolveRT.texture),this.historyNode=e.texture(this.historyRT.texture),this.previousDepthNode=e.texture(bs),this.originalProjectionMatrix=new g.Matrix4,this.jitterIndex=0,this.updateBeforeType=f.NodeUpdateType.FRAME,this.resolveMaterial.name="TemporalAntialias_resolve",this.mesh.name="TemporalAntialias",this.inputNode=t,this.depthNode=s,this.velocityNode=n,!fs(i))throw new Error("The provided camera is not supported.");this.camera=i,this.textureNode=se(this,this.resolveRT.texture)}static get type(){return"TemporalAntialiasNode"}customCacheKey(){return ee.hash(this.camera.id,+this.debugShowRejection)}createRenderTarget(t){const s=new g.RenderTarget(1,1,{depthBuffer:!1,type:g.HalfFloatType,format:g.RGBAFormat}),n=s.texture;n.minFilter=g.LinearFilter,n.magFilter=g.LinearFilter,n.generateMipmaps=!1;const i=this.constructor.type;return n.name=t!=null?`${i}_${t}`:i,s}getTextureNode(){return this.textureNode}setSize(t,s){const{resolveRT:n,historyRT:i}=this;return(t!==i.width||s!==i.height)&&(n.setSize(t,s),i.setSize(t,s),this.needsClearHistory=!0),this}clearHistory(t){t.setRenderTarget(this.resolveRT),t.clear(),t.setRenderTarget(this.historyRT),t.clear(),this.needsClearHistory=!1}setViewOffset(t,s){const{camera:n}=this;n.updateProjectionMatrix(),this.originalProjectionMatrix.copy(n.projectionMatrix),ue.setProjectionMatrix(this.originalProjectionMatrix);const i=Me[this.jitterIndex],r=i.x-.5,a=i.y-.5;n.setViewOffset(t,s,r,a,t,s)}clearViewOffset(){this.camera.clearViewOffset(),ue.setProjectionMatrix(null),this.jitterIndex=(this.jitterIndex+1)%Me.length}copyDepthTexture(t){const s=this.depthNode.value,n=this.previousDepthTexture??=s.clone();(n.image.width!==s.width||n.image.height!==s.height)&&(n.image.width=s.width,n.image.height=s.height,n.needsUpdate=!0),t.copyTextureToTexture(s,n),this.previousDepthNode.value=n}swapBuffers(){const{resolveRT:t,historyRT:s}=this;this.resolveRT=s,this.historyRT=t,this.resolveNode.value=s.texture,this.historyNode.value=t.texture,this.textureNode.value=t.texture}updateBefore({renderer:t}){if(t==null)return;const s=t.getDrawingBufferSize(Ce);this.setSize(s.x,s.y),this.rendererState=ms(t,this.rendererState),this.needsClearHistory&&this.clearHistory(t),t.setRenderTarget(this.resolveRT),this.mesh.material=this.resolveMaterial,this.mesh.render(t),vs(t,this.rendererState),xe(t)&&this.copyDepthTexture(t),this.swapBuffers(),this.needsSyncRenderPipeline&&this.clearViewOffset()}setupResolveNode({renderer:t}){const s=n=>{const{previousDepthNode:i}=this,r=i.load(e.ivec2(n.mul(i.size()).sub(.5))).toConst();return t.logarithmicDepthBuffer?J(r,Z(this.camera),Y(this.camera)):t.reversedDepthBuffer?r.oneMinus():r};return e.Fn(()=>{const n=e.ivec2(e.screenCoordinate),i=e.screenUV,r=Ts(this.depthNode,n).toConst(),a=r.get("closestCoord"),u=r.get("closestDepth"),c=this.velocityNode.load(a).xyz.mul(e.vec3(.5,-.5,.5)).toConst(),h=c.xy.length().div(this.velocityThreshold).oneMinus().saturate(),d=i.sub(c.xy).toConst(),l=s(d),m=t.logarithmicDepthBuffer?J(u,Z(this.camera),Y(this.camera)):u,p=e.step(m.add(c.z),l.add(this.depthError)),v=h.mul(p),x=e.and(d.greaterThanEqual(0).all(),d.lessThanEqual(1).all()).toFloat(),T=u.notEqual(1).toFloat(),N=this.inputNode.load(n).toVar();return e.If(x.mul(T).mul(v).greaterThan(0),()=>{const z=e.texture(this.historyNode,d),A=gs(this.inputNode,n,N,z,this.varianceGamma),C=e.mix(this.temporalAlpha,.4,Ns(c.xy,e.textureSize(this.inputNode))).saturate();N.assign(e.mix(A,N,C))}).Else(()=>{this.debugShowRejection&&N.assign(e.vec3(1,0,0))}),N})()}setup(t){const s=()=>{const i=t.renderer.getDrawingBufferSize(Ce);this.setViewOffset(i.width,i.height)};if(t.context.renderPipeline!=null){const{context:i}=t.context.renderPipeline;i.onBeforeRenderPipeline=s,this.needsSyncRenderPipeline=!0}if(t.context.postProcessing!=null){const{context:i}=t.context.postProcessing;i.onBeforePostProcessing=s,this.needsSyncRenderPipeline=!0}const{resolveMaterial:n}=this;return n.fragmentNode=this.setupResolveNode(t),n.needsUpdate=!0,this.textureNode.uvNode=this.inputNode.uvNode,this.textureNode}dispose(){this.resolveRT.dispose(),this.historyRT.dispose(),this.previousDepthTexture?.dispose(),this.resolveMaterial.dispose(),this.mesh.geometry.dispose(),super.dispose()}}function Ss(...o){if(o.length===1)return(r,a,u,c)=>new le(e.convertToTexture(r),a,u,c);const[t,s,n,i]=o;return new le(e.convertToTexture(t),s,n,i)}exports.CascadedShadowMapsNode=it;exports.DownsampleThresholdNode=me;exports.FnLayout=B;exports.FnVar=O;exports.GaussianBlurNode=ve;exports.HighpVelocityNode=Ae;exports.KawaseBlurNode=Pe;exports.LensFlareNode=Ue;exports.MipmapBlurNode=Fe;exports.MipmapSurfaceBlurNode=fe;exports.Node=Jt;exports.OnBeforeFrameUpdate=yt;exports.OnFrameUpdate=gt;exports.OutputTexture3DNode=Ie;exports.OutputTextureNode=De;exports.STBNTextureNode=je;exports.ScreenSpaceShadowNode=Le;exports.StorageTexture3DNode=ke;exports.TemporalAntialiasNode=le;exports.bvecAnd=Gt;exports.bvecNot=Et;exports.bvecOr=Yt;exports.cameraFar=Y;exports.cameraNear=Z;exports.cameraPositionWorld=tt;exports.debugFragmentNode=ct;exports.debugMaterial=rt;exports.debugNode=ut;exports.debugVertexNode=at;exports.depthToColor=_e;exports.depthToViewZ=de;exports.dithering=Mt;exports.downsampleThreshold=xt;exports.equirectGrid=zt;exports.equirectToDirectionWorld=Xe;exports.gaussianBlur=St;exports.highpVelocity=ue;exports.hookFunction=lt;exports.interleavedGradientNoise=Ve;exports.inverseProjectionMatrix=Je;exports.inverseViewMatrix=et;exports.isWebGPU=xe;exports.kawaseBlur=Ct;exports.lensFlare=Ot;exports.logarithmicToPerspectiveDepth=J;exports.mipmapBlur=pt;exports.mipmapBlurDownsample=pe;exports.mipmapBlurUpsample=Be;exports.mipmapSurfaceBlur=Ut;exports.node=es;exports.outputTexture=se;exports.outputTexture3D=ts;exports.perspectiveToLogarithmicDepth=Ze;exports.projectionMatrix=Ke;exports.rayEllipsoidIntersection=Kt;exports.raySphereIntersection=_t;exports.raySpheresIntersections=Xt;exports.raySpheresIntersectionsStruct=Oe;exports.screenSpaceShadow=ls;exports.screenToPositionView=Ye;exports.stbn=hs;exports.stbnTexture=Ee;exports.storageTexture3D=ps;exports.temporalAntialias=Ss;exports.textureCatmullRom=ns;exports.textureGather=os;exports.turbo=Re;exports.viewMatrix=Qe;exports.viewZ=st;
|
|
2
7
|
//# sourceMappingURL=webgpu.cjs.map
|