@takram/three-clouds 0.2.2 → 0.3.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 +18 -0
- package/README.md +12 -3
- package/build/r3f.cjs +1 -1
- package/build/r3f.cjs.map +1 -1
- package/build/r3f.js +169 -170
- package/build/r3f.js.map +1 -1
- package/build/shared.cjs +50 -37
- package/build/shared.cjs.map +1 -1
- package/build/shared.js +129 -115
- package/build/shared.js.map +1 -1
- package/package.json +3 -3
- package/src/CloudsEffect.ts +3 -1
- package/src/CloudsMaterial.ts +17 -11
- package/src/r3f/CloudLayer.tsx +64 -62
- package/src/r3f/Clouds.tsx +105 -109
- package/src/shaders/clouds.frag +37 -25
- package/src/shaders/clouds.glsl +1 -1
- package/src/shaders/clouds.vert +3 -3
- package/src/shaders/parameters.glsl +2 -1
- package/types/CloudsEffect.d.ts +1 -1
- package/types/CloudsMaterial.d.ts +3 -2
- package/types/r3f/CloudLayer.d.ts +3 -1
- package/types/r3f/Clouds.d.ts +2 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [0.3.0] - 2025-06-12
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
|
7
|
+
- Added support for absorption in haze.
|
8
|
+
- `CloudsMaterial`: Changed the default values of both `skyIrradianceScale` and `groundIrradianceScale` to 1.
|
9
|
+
- `CloudsMaterial`: Added `hazeScatteringCoefficient` and `hazeAbsorptionCoefficient` which are separated from those of the clouds.
|
10
|
+
- Removed the use of `forwardRef` and added it in props.
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
|
14
|
+
- Adjusted the scaling of irradiance for cloud particles to better reflect isotropic scattering.
|
15
|
+
- Added a workaround so that the unlit rays towards far clouds appear orange.
|
16
|
+
- Fixed incorrect handling of cloud transmittance and inscattered light when compositing into the render buffer.
|
17
|
+
- Changed the behavior of unlit rays through haze so that they don't occlude sky light.
|
18
|
+
- Improved approximation of the haze integral to reduce unnatural gradient just above the clouds at the horizon.
|
19
|
+
- Fixed scene depth conversion when logarithmic depth is used, [#66](https://github.com/takram-design-engineering/three-geospatial/pull/66).
|
20
|
+
|
3
21
|
## [0.2.2] - 2025-05-23
|
4
22
|
|
5
23
|
### Fixed
|
package/README.md
CHANGED
@@ -679,15 +679,15 @@ These values take effect only when [`accuratePhaseFunction`](#cloudsaccuratephas
|
|
679
679
|
#### skyIrradianceScale
|
680
680
|
|
681
681
|
```ts
|
682
|
-
skyIrradianceScale: number =
|
682
|
+
skyIrradianceScale: number = 1
|
683
683
|
```
|
684
684
|
|
685
|
-
The contribution of sky irradiance.
|
685
|
+
The contribution of sky irradiance. This is a fudge factor and you might adjust this value to make it look convincing to you.
|
686
686
|
|
687
687
|
#### groundIrradianceScale
|
688
688
|
|
689
689
|
```ts
|
690
|
-
groundIrradianceScale: number =
|
690
|
+
groundIrradianceScale: number = 1
|
691
691
|
```
|
692
692
|
|
693
693
|
The contribution of irradiance bouncing off the ground. This is a fudge factor and you might adjust this value to make it look convincing to you.
|
@@ -951,6 +951,15 @@ hazeExponent: number = 1e-3
|
|
951
951
|
|
952
952
|
Controls the rate at which the haze density exponentially decreases with altitude. A lower value makes it more concentrated near the ground, while a higher value spreads it more at higher altitudes.
|
953
953
|
|
954
|
+
#### clouds.hazeScatteringCoefficient, clouds.hazeAbsorptionCoefficient
|
955
|
+
|
956
|
+
```ts
|
957
|
+
hazeScatteringCoefficient: number = 0.9
|
958
|
+
hazeAbsorptionCoefficient: number = 0.5
|
959
|
+
```
|
960
|
+
|
961
|
+
The scattering coefficient ($\sigma_s$) and absorption coefficient ($\sigma_a$) for haze.
|
962
|
+
|
954
963
|
### Advanced shadow parameters
|
955
964
|
|
956
965
|
#### shadow.temporalPass
|
package/build/r3f.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("react/jsx-runtime"),S=require("@react-three/fiber"),q=require("@react-three/postprocessing"),o=require("react"),p=require("three"),m=require("@takram/three-atmosphere/r3f"),y=require("@takram/three-geospatial"),c=require("./shared.cjs"),w=o.createContext(null),P=({layers:e,disableDefault:t=!1,children:d})=>{const[l,n]=o.useState();return o.useLayoutEffect(()=>{e.set(t?Array(4).fill(c.CloudLayer.DEFAULT):c.CloudLayers.DEFAULT),n({layers:e,indexPool:[0,1,2,3],disableDefault:t})},[e,t]),l!=null&&L.jsx(w.Provider,{value:l,children:d})};function g(e,t){const[d,l]=o.useState(typeof e!="string"?e:null);return o.useEffect(()=>{if(typeof e=="string"){const n=new p.TextureLoader;(async()=>{const r=await n.loadAsync(e);r.minFilter=p.LinearMipMapLinearFilter,r.magFilter=p.LinearFilter,r.wrapS=p.RepeatWrapping,r.wrapT=p.RepeatWrapping,r.colorSpace=p.NoColorSpace,r.needsUpdate=!0,t.initTexture(r),l(r)})().catch(r=>{console.error(r)})}else l(e)},[e,t]),d}function D(e,t){const[d,l]=o.useState(typeof e!="string"?e:null);return o.useEffect(()=>{if(typeof e=="string"){const n=y.createData3DTextureLoaderClass(y.parseUint8Array,{width:t,height:t,depth:t,format:p.RedFormat,minFilter:p.LinearFilter,magFilter:p.LinearFilter,wrapS:p.RepeatWrapping,wrapT:p.RepeatWrapping,wrapR:p.RepeatWrapping,colorSpace:p.NoColorSpace}),r=new n;(async()=>{l(await r.loadAsync(e))})().catch(h=>{console.error(h)})}else l(e)},[e,t]),d}function W(e){const[t,d]=o.useState(typeof e!="string"?e:null);return o.useEffect(()=>{if(typeof e=="string"){const l=new y.STBNLoader;(async()=>{d(await l.loadAsync(e))})().catch(n=>{console.error(n)})}else d(e)},[e]),t}const j=({ref:e,disableDefaultLayers:t=!1,localWeatherTexture:d=c.DEFAULT_LOCAL_WEATHER_URL,shapeTexture:l=c.DEFAULT_SHAPE_URL,shapeDetailTexture:n=c.DEFAULT_SHAPE_DETAIL_URL,turbulenceTexture:r=c.DEFAULT_TURBULENCE_URL,stbnTexture:h=y.DEFAULT_STBN_URL,children:u,...f})=>{const{textures:i,transientStates:s,...E}=o.useContext(m.AtmosphereContext),[A,U]=m.separateProps({...c.cloudsPassOptionsDefaults,...E,...i,...f}),a=o.useMemo(()=>new c.CloudsEffect,[]);o.useEffect(()=>()=>{a.dispose()},[a]),S.useFrame(()=>{s!=null&&(a.sunDirection.copy(s.sunDirection),a.ellipsoidCenter.copy(s.ellipsoidCenter),a.ellipsoidMatrix.copy(s.ellipsoidMatrix))}),o.useEffect(()=>{if(s!=null)return s.overlay=a.atmosphereOverlay,s.shadow=a.atmosphereShadow,s.shadowLength=a.atmosphereShadowLength,()=>{s.overlay=null,s.shadow=null,s.shadowLength=null}},[a,s]);const T=o.useCallback(x=>{if(s!=null)switch(x.property){case"atmosphereOverlay":s.overlay=a.atmosphereOverlay;break;case"atmosphereShadow":s.shadow=a.atmosphereShadow;break;case"atmosphereShadowLength":s.shadowLength=a.atmosphereShadowLength;break}},[a,s]);o.useEffect(()=>(a.events.addEventListener("change",T),()=>{a.events.removeEventListener("change",T)}),[a,T]);const C=S.useThree(({gl:x})=>x),F=g(d,C),_=D(l,c.CLOUD_SHAPE_TEXTURE_SIZE),v=D(n,c.CLOUD_SHAPE_DETAIL_TEXTURE_SIZE),b=g(r,C),R=W(h),{camera:O}=o.useContext(q.EffectComposerContext);return L.jsxs(L.Fragment,{children:[L.jsx("primitive",{ref:e,object:a,mainCamera:O,...A,localWeatherTexture:F,shapeTexture:_,shapeDetailTexture:v,turbulenceTexture:b,stbnTexture:R,...U}),L.jsx(P,{layers:a.cloudLayers,disableDefault:t,children:u})]})},I=({ref:e,index:t,...d})=>{const l=o.useContext(w);if(l==null)throw new Error("CloudLayer can only be used within the Clouds component!");const{layers:n,indexPool:r,disableDefault:h}=l,[u,f]=o.useState();if(o.useLayoutEffect(()=>{if(t!=null){const i=r.indexOf(t);if(i!==-1)return r.splice(i,1),f(t),()=>{r.push(t),f(void 0)}}else{const i=r.sort((s,E)=>s-E).shift();if(i!=null)return f(i),()=>{r.push(i),f(void 0)}}},[t,n,r]),o.useLayoutEffect(()=>{if(u==null)return;const i=n[u];return()=>{i.copy(h?c.CloudLayer.DEFAULT:c.CloudLayers.DEFAULT[u])}},[n,u,h]),o.useEffect(()=>{u!=null&&(typeof e=="function"?e(n[u]):e!=null&&(e.current=n[u]))},[e,n,u]),u!=null){const i=n[u];i.copy(h?c.CloudLayer.DEFAULT:c.CloudLayers.DEFAULT[u]),i.set(d)}return null};exports.CloudLayer=I;exports.Clouds=j;
|
2
2
|
//# sourceMappingURL=r3f.cjs.map
|
package/build/r3f.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"r3f.cjs","sources":["../src/r3f/CloudLayers.tsx","../src/r3f/Clouds.tsx","../src/r3f/CloudLayer.tsx"],"sourcesContent":null,"names":["CloudLayersContext","CloudLayers","layers","disableDefault","children","context","setContext","useState","useLayoutEffect","CloudLayer","CloudLayersImpl","jsx","useTextureState","input","gl","data","setData","useEffect","loader","TextureLoader","texture","LinearMipMapLinearFilter","LinearFilter","RepeatWrapping","NoColorSpace","error","use3DTextureState","size","Loader","createData3DTextureLoaderClass","parseUint8Array","RedFormat","useSTBNTextureState","STBNLoader","Clouds","
|
1
|
+
{"version":3,"file":"r3f.cjs","sources":["../src/r3f/CloudLayers.tsx","../src/r3f/Clouds.tsx","../src/r3f/CloudLayer.tsx"],"sourcesContent":null,"names":["CloudLayersContext","CloudLayers","layers","disableDefault","children","context","setContext","useState","useLayoutEffect","CloudLayer","CloudLayersImpl","jsx","useTextureState","input","gl","data","setData","useEffect","loader","TextureLoader","texture","LinearMipMapLinearFilter","LinearFilter","RepeatWrapping","NoColorSpace","error","use3DTextureState","size","Loader","createData3DTextureLoaderClass","parseUint8Array","RedFormat","useSTBNTextureState","STBNLoader","Clouds","forwardedRef","disableDefaultLayers","localWeatherTextureProp","DEFAULT_LOCAL_WEATHER_URL","shapeTextureProp","DEFAULT_SHAPE_URL","shapeDetailTextureProp","DEFAULT_SHAPE_DETAIL_URL","turbulenceTextureProp","DEFAULT_TURBULENCE_URL","stbnTextureProp","DEFAULT_STBN_URL","props","textures","transientStates","contextProps","useContext","AtmosphereContext","atmosphereParameters","others","separateProps","cloudsPassOptionsDefaults","effect","useMemo","CloudsEffect","useFrame","handleChange","useCallback","event","useThree","localWeatherTexture","shapeTexture","CLOUD_SHAPE_TEXTURE_SIZE","shapeDetailTexture","CLOUD_SHAPE_DETAIL_TEXTURE_SIZE","turbulenceTexture","stbnTexture","camera","EffectComposerContext","jsxs","Fragment","indexProp","indexPool","index","setIndex","poolIndex","a","b","layer","CloudLayerImpl"],"mappings":"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"}
|
package/build/r3f.js
CHANGED
@@ -1,205 +1,204 @@
|
|
1
|
-
import { jsx as
|
2
|
-
import { useFrame as
|
3
|
-
import { EffectComposerContext as
|
4
|
-
import { createContext as
|
5
|
-
import { TextureLoader as
|
6
|
-
import { AtmosphereContext as
|
7
|
-
import { DEFAULT_STBN_URL as
|
8
|
-
import { c as
|
9
|
-
const
|
1
|
+
import { jsx as y, jsxs as M, Fragment as N } from "react/jsx-runtime";
|
2
|
+
import { useFrame as k, useThree as B } from "@react-three/fiber";
|
3
|
+
import { EffectComposerContext as W } from "@react-three/postprocessing";
|
4
|
+
import { createContext as j, useState as f, useLayoutEffect as x, useContext as E, useMemo as X, useEffect as h, useCallback as Z } from "react";
|
5
|
+
import { TextureLoader as $, LinearMipMapLinearFilter as q, LinearFilter as C, RepeatWrapping as p, NoColorSpace as g, RedFormat as G } from "three";
|
6
|
+
import { AtmosphereContext as J, separateProps as K } from "@takram/three-atmosphere/r3f";
|
7
|
+
import { DEFAULT_STBN_URL as Q, createData3DTextureLoaderClass as V, parseUint8Array as Y, STBNLoader as z } from "@takram/three-geospatial";
|
8
|
+
import { c as D, b as w, d as ee, e as te, D as re, f as oe, g as ae, h as se, a as ne, C as le } from "./shared.js";
|
9
|
+
const F = /* @__PURE__ */ j(null), ce = ({
|
10
10
|
layers: e,
|
11
|
-
disableDefault:
|
12
|
-
children:
|
11
|
+
disableDefault: t = !1,
|
12
|
+
children: u
|
13
13
|
}) => {
|
14
|
-
const [
|
15
|
-
return
|
14
|
+
const [n, s] = f();
|
15
|
+
return x(() => {
|
16
16
|
e.set(
|
17
|
-
|
18
|
-
),
|
17
|
+
t ? Array(4).fill(w.DEFAULT) : D.DEFAULT
|
18
|
+
), s({
|
19
19
|
layers: e,
|
20
20
|
indexPool: [0, 1, 2, 3],
|
21
|
-
disableDefault:
|
21
|
+
disableDefault: t
|
22
22
|
});
|
23
|
-
}, [e,
|
23
|
+
}, [e, t]), n != null && /* @__PURE__ */ y(F.Provider, { value: n, children: u });
|
24
24
|
};
|
25
|
-
function
|
26
|
-
const [
|
25
|
+
function S(e, t) {
|
26
|
+
const [u, n] = f(typeof e != "string" ? e : null);
|
27
27
|
return h(() => {
|
28
28
|
if (typeof e == "string") {
|
29
|
-
const
|
29
|
+
const s = new $();
|
30
30
|
(async () => {
|
31
|
-
const
|
32
|
-
|
33
|
-
})().catch((
|
34
|
-
console.error(
|
31
|
+
const r = await s.loadAsync(e);
|
32
|
+
r.minFilter = q, r.magFilter = C, r.wrapS = p, r.wrapT = p, r.colorSpace = g, r.needsUpdate = !0, t.initTexture(r), n(r);
|
33
|
+
})().catch((r) => {
|
34
|
+
console.error(r);
|
35
35
|
});
|
36
36
|
} else
|
37
|
-
|
38
|
-
}, [e,
|
37
|
+
n(e);
|
38
|
+
}, [e, t]), u;
|
39
39
|
}
|
40
|
-
function
|
41
|
-
const [
|
40
|
+
function U(e, t) {
|
41
|
+
const [u, n] = f(typeof e != "string" ? e : null);
|
42
42
|
return h(() => {
|
43
43
|
if (typeof e == "string") {
|
44
|
-
const
|
45
|
-
width:
|
46
|
-
height:
|
47
|
-
depth:
|
48
|
-
format:
|
49
|
-
minFilter:
|
50
|
-
magFilter:
|
51
|
-
wrapS:
|
52
|
-
wrapT:
|
53
|
-
wrapR:
|
54
|
-
colorSpace:
|
55
|
-
}),
|
44
|
+
const s = V(Y, {
|
45
|
+
width: t,
|
46
|
+
height: t,
|
47
|
+
depth: t,
|
48
|
+
format: G,
|
49
|
+
minFilter: C,
|
50
|
+
magFilter: C,
|
51
|
+
wrapS: p,
|
52
|
+
wrapT: p,
|
53
|
+
wrapR: p,
|
54
|
+
colorSpace: g
|
55
|
+
}), r = new s();
|
56
56
|
(async () => {
|
57
|
-
|
57
|
+
n(await r.loadAsync(e));
|
58
58
|
})().catch((i) => {
|
59
59
|
console.error(i);
|
60
60
|
});
|
61
61
|
} else
|
62
|
-
|
63
|
-
}, [e,
|
62
|
+
n(e);
|
63
|
+
}, [e, t]), u;
|
64
64
|
}
|
65
|
-
function
|
66
|
-
const [
|
65
|
+
function ue(e) {
|
66
|
+
const [t, u] = f(typeof e != "string" ? e : null);
|
67
67
|
return h(() => {
|
68
68
|
if (typeof e == "string") {
|
69
|
-
const
|
69
|
+
const n = new z();
|
70
70
|
(async () => {
|
71
|
-
|
72
|
-
})().catch((
|
73
|
-
console.error(
|
71
|
+
u(await n.loadAsync(e));
|
72
|
+
})().catch((s) => {
|
73
|
+
console.error(s);
|
74
74
|
});
|
75
75
|
} else
|
76
|
-
|
77
|
-
}, [e]),
|
76
|
+
u(e);
|
77
|
+
}, [e]), t;
|
78
78
|
}
|
79
|
-
const
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
79
|
+
const ye = ({
|
80
|
+
ref: e,
|
81
|
+
disableDefaultLayers: t = !1,
|
82
|
+
localWeatherTexture: u = re,
|
83
|
+
shapeTexture: n = oe,
|
84
|
+
shapeDetailTexture: s = ae,
|
85
|
+
turbulenceTexture: r = se,
|
86
|
+
stbnTexture: i = Q,
|
87
|
+
children: l,
|
88
|
+
...d
|
89
|
+
}) => {
|
90
|
+
const { textures: c, transientStates: o, ...L } = E(J), [_, v] = K({
|
91
|
+
...ee,
|
92
|
+
...L,
|
93
|
+
...c,
|
94
|
+
...d
|
95
|
+
}), a = X(() => new te(), []);
|
96
|
+
h(() => () => {
|
97
|
+
a.dispose();
|
98
|
+
}, [a]), k(() => {
|
99
|
+
o != null && (a.sunDirection.copy(o.sunDirection), a.ellipsoidCenter.copy(o.ellipsoidCenter), a.ellipsoidMatrix.copy(o.ellipsoidMatrix));
|
100
|
+
}), h(() => {
|
101
|
+
if (o != null)
|
102
|
+
return o.overlay = a.atmosphereOverlay, o.shadow = a.atmosphereShadow, o.shadowLength = a.atmosphereShadowLength, () => {
|
103
|
+
o.overlay = null, o.shadow = null, o.shadowLength = null;
|
104
|
+
};
|
105
|
+
}, [a, o]);
|
106
|
+
const m = Z(
|
107
|
+
(T) => {
|
101
108
|
if (o != null)
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
break;
|
113
|
-
case "atmosphereShadow":
|
114
|
-
o.shadow = s.atmosphereShadow;
|
115
|
-
break;
|
116
|
-
case "atmosphereShadowLength":
|
117
|
-
o.shadowLength = s.atmosphereShadowLength;
|
118
|
-
break;
|
119
|
-
}
|
120
|
-
},
|
121
|
-
[s, o]
|
122
|
-
);
|
123
|
-
h(() => (s.events.addEventListener("change", T), () => {
|
124
|
-
s.events.removeEventListener("change", T);
|
125
|
-
}), [s, T]);
|
126
|
-
const S = j(({ gl: y }) => y), O = U(c, S), P = g(
|
127
|
-
a,
|
128
|
-
ue
|
129
|
-
), I = g(
|
130
|
-
u,
|
131
|
-
ce
|
132
|
-
), H = U(t, S), M = he(i), { camera: N } = C(X);
|
133
|
-
return /* @__PURE__ */ k(B, { children: [
|
134
|
-
/* @__PURE__ */ x(
|
135
|
-
"primitive",
|
136
|
-
{
|
137
|
-
ref: d,
|
138
|
-
object: s,
|
139
|
-
mainCamera: N,
|
140
|
-
...b,
|
141
|
-
localWeatherTexture: O,
|
142
|
-
shapeTexture: P,
|
143
|
-
shapeDetailTexture: I,
|
144
|
-
turbulenceTexture: H,
|
145
|
-
stbnTexture: M,
|
146
|
-
...R
|
147
|
-
}
|
148
|
-
),
|
149
|
-
/* @__PURE__ */ x(
|
150
|
-
ie,
|
151
|
-
{
|
152
|
-
layers: s.cloudLayers,
|
153
|
-
disableDefault: r,
|
154
|
-
children: p
|
109
|
+
switch (T.property) {
|
110
|
+
case "atmosphereOverlay":
|
111
|
+
o.overlay = a.atmosphereOverlay;
|
112
|
+
break;
|
113
|
+
case "atmosphereShadow":
|
114
|
+
o.shadow = a.atmosphereShadow;
|
115
|
+
break;
|
116
|
+
case "atmosphereShadowLength":
|
117
|
+
o.shadowLength = a.atmosphereShadowLength;
|
118
|
+
break;
|
155
119
|
}
|
156
|
-
|
157
|
-
]
|
158
|
-
|
159
|
-
),
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
120
|
+
},
|
121
|
+
[a, o]
|
122
|
+
);
|
123
|
+
h(() => (a.events.addEventListener("change", m), () => {
|
124
|
+
a.events.removeEventListener("change", m);
|
125
|
+
}), [a, m]);
|
126
|
+
const A = B(({ gl: T }) => T), b = S(u, A), O = U(
|
127
|
+
n,
|
128
|
+
le
|
129
|
+
), R = U(
|
130
|
+
s,
|
131
|
+
ne
|
132
|
+
), P = S(r, A), I = ue(i), { camera: H } = E(W);
|
133
|
+
return /* @__PURE__ */ M(N, { children: [
|
134
|
+
/* @__PURE__ */ y(
|
135
|
+
"primitive",
|
136
|
+
{
|
137
|
+
ref: e,
|
138
|
+
object: a,
|
139
|
+
mainCamera: H,
|
140
|
+
..._,
|
141
|
+
localWeatherTexture: b,
|
142
|
+
shapeTexture: O,
|
143
|
+
shapeDetailTexture: R,
|
144
|
+
turbulenceTexture: P,
|
145
|
+
stbnTexture: I,
|
146
|
+
...v
|
180
147
|
}
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
148
|
+
),
|
149
|
+
/* @__PURE__ */ y(
|
150
|
+
ce,
|
151
|
+
{
|
152
|
+
layers: a.cloudLayers,
|
153
|
+
disableDefault: t,
|
154
|
+
children: l
|
155
|
+
}
|
156
|
+
)
|
157
|
+
] });
|
158
|
+
}, xe = ({
|
159
|
+
ref: e,
|
160
|
+
index: t,
|
161
|
+
...u
|
162
|
+
}) => {
|
163
|
+
const n = E(F);
|
164
|
+
if (n == null)
|
165
|
+
throw new Error("CloudLayer can only be used within the Clouds component!");
|
166
|
+
const { layers: s, indexPool: r, disableDefault: i } = n, [l, d] = f();
|
167
|
+
if (x(() => {
|
168
|
+
if (t != null) {
|
169
|
+
const c = r.indexOf(t);
|
170
|
+
if (c !== -1)
|
171
|
+
return r.splice(c, 1), d(t), () => {
|
172
|
+
r.push(t), d(void 0);
|
173
|
+
};
|
174
|
+
} else {
|
175
|
+
const c = r.sort((o, L) => o - L).shift();
|
176
|
+
if (c != null)
|
177
|
+
return d(c), () => {
|
178
|
+
r.push(c), d(void 0);
|
179
|
+
};
|
197
180
|
}
|
198
|
-
|
181
|
+
}, [t, s, r]), x(() => {
|
182
|
+
if (l == null)
|
183
|
+
return;
|
184
|
+
const c = s[l];
|
185
|
+
return () => {
|
186
|
+
c.copy(
|
187
|
+
i ? w.DEFAULT : D.DEFAULT[l]
|
188
|
+
);
|
189
|
+
};
|
190
|
+
}, [s, l, i]), h(() => {
|
191
|
+
l != null && (typeof e == "function" ? e(s[l]) : e != null && (e.current = s[l]));
|
192
|
+
}, [e, s, l]), l != null) {
|
193
|
+
const c = s[l];
|
194
|
+
c.copy(
|
195
|
+
i ? w.DEFAULT : D.DEFAULT[l]
|
196
|
+
), c.set(u);
|
199
197
|
}
|
200
|
-
|
198
|
+
return null;
|
199
|
+
};
|
201
200
|
export {
|
202
|
-
|
203
|
-
|
201
|
+
xe as CloudLayer,
|
202
|
+
ye as Clouds
|
204
203
|
};
|
205
204
|
//# sourceMappingURL=r3f.js.map
|
package/build/r3f.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"r3f.js","sources":["../src/r3f/CloudLayers.tsx","../src/r3f/Clouds.tsx","../src/r3f/CloudLayer.tsx"],"sourcesContent":null,"names":["CloudLayersContext","CloudLayers","layers","disableDefault","children","context","setContext","useState","useLayoutEffect","CloudLayer","CloudLayersImpl","jsx","useTextureState","input","gl","data","setData","useEffect","loader","TextureLoader","texture","LinearMipMapLinearFilter","LinearFilter","RepeatWrapping","NoColorSpace","error","use3DTextureState","size","Loader","createData3DTextureLoaderClass","parseUint8Array","RedFormat","useSTBNTextureState","STBNLoader","Clouds","
|
1
|
+
{"version":3,"file":"r3f.js","sources":["../src/r3f/CloudLayers.tsx","../src/r3f/Clouds.tsx","../src/r3f/CloudLayer.tsx"],"sourcesContent":null,"names":["CloudLayersContext","CloudLayers","layers","disableDefault","children","context","setContext","useState","useLayoutEffect","CloudLayer","CloudLayersImpl","jsx","useTextureState","input","gl","data","setData","useEffect","loader","TextureLoader","texture","LinearMipMapLinearFilter","LinearFilter","RepeatWrapping","NoColorSpace","error","use3DTextureState","size","Loader","createData3DTextureLoaderClass","parseUint8Array","RedFormat","useSTBNTextureState","STBNLoader","Clouds","forwardedRef","disableDefaultLayers","localWeatherTextureProp","DEFAULT_LOCAL_WEATHER_URL","shapeTextureProp","DEFAULT_SHAPE_URL","shapeDetailTextureProp","DEFAULT_SHAPE_DETAIL_URL","turbulenceTextureProp","DEFAULT_TURBULENCE_URL","stbnTextureProp","DEFAULT_STBN_URL","props","textures","transientStates","contextProps","useContext","AtmosphereContext","atmosphereParameters","others","separateProps","cloudsPassOptionsDefaults","effect","useMemo","CloudsEffect","useFrame","handleChange","useCallback","event","useThree","localWeatherTexture","shapeTexture","CLOUD_SHAPE_TEXTURE_SIZE","shapeDetailTexture","CLOUD_SHAPE_DETAIL_TEXTURE_SIZE","turbulenceTexture","stbnTexture","camera","EffectComposerContext","jsxs","Fragment","indexProp","indexPool","index","setIndex","poolIndex","a","b","layer","CloudLayerImpl"],"mappings":"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"}
|