@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 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 = 2.5
682
+ skyIrradianceScale: number = 1
683
683
  ```
684
684
 
685
- The contribution of sky irradiance. A value of 0 disables sky irradiance, while 1 represents single isotropic scattering. Since real-world sky light scatters multiple times with much more complex interactions, values greater than 1 make it more plausible.
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 = 3
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 y=require("react/jsx-runtime"),m=require("@react-three/fiber"),P=require("@react-three/postprocessing"),t=require("react"),i=require("three"),g=require("@takram/three-atmosphere/r3f"),E=require("@takram/three-geospatial"),l=require("./shared.cjs"),A=t.createContext(null),W=({layers:e,disableDefault:o=!1,children:d})=>{const[a,f]=t.useState();return t.useLayoutEffect(()=>{e.set(o?Array(4).fill(l.CloudLayer.DEFAULT):l.CloudLayers.DEFAULT),f({layers:e,indexPool:[0,1,2,3],disableDefault:o})},[e,o]),a!=null&&y.jsx(A.Provider,{value:a,children:d})};function w(e,o){const[d,a]=t.useState(typeof e!="string"?e:null);return t.useEffect(()=>{if(typeof e=="string"){const f=new i.TextureLoader;(async()=>{const r=await f.loadAsync(e);r.minFilter=i.LinearMipMapLinearFilter,r.magFilter=i.LinearFilter,r.wrapS=i.RepeatWrapping,r.wrapT=i.RepeatWrapping,r.colorSpace=i.NoColorSpace,r.needsUpdate=!0,o.initTexture(r),a(r)})().catch(r=>{console.error(r)})}else a(e)},[e,o]),d}function D(e,o){const[d,a]=t.useState(typeof e!="string"?e:null);return t.useEffect(()=>{if(typeof e=="string"){const f=E.createData3DTextureLoaderClass(E.parseUint8Array,{width:o,height:o,depth:o,format:i.RedFormat,minFilter:i.LinearFilter,magFilter:i.LinearFilter,wrapS:i.RepeatWrapping,wrapT:i.RepeatWrapping,wrapR:i.RepeatWrapping,colorSpace:i.NoColorSpace}),r=new f;(async()=>{a(await r.loadAsync(e))})().catch(p=>{console.error(p)})}else a(e)},[e,o]),d}function j(e){const[o,d]=t.useState(typeof e!="string"?e:null);return t.useEffect(()=>{if(typeof e=="string"){const a=new E.STBNLoader;(async()=>{d(await a.loadAsync(e))})().catch(f=>{console.error(f)})}else d(e)},[e]),o}const I=t.forwardRef(function({disableDefaultLayers:o=!1,localWeatherTexture:d=l.DEFAULT_LOCAL_WEATHER_URL,shapeTexture:a=l.DEFAULT_SHAPE_URL,shapeDetailTexture:f=l.DEFAULT_SHAPE_DETAIL_URL,turbulenceTexture:r=l.DEFAULT_TURBULENCE_URL,stbnTexture:p=E.DEFAULT_STBN_URL,children:L,...c},h){const{textures:u,transientStates:s,...T}=t.useContext(g.AtmosphereContext),[U,F]=g.separateProps({...l.cloudsPassOptionsDefaults,...T,...u,...c}),n=t.useMemo(()=>new l.CloudsEffect,[]);t.useEffect(()=>()=>{n.dispose()},[n]),m.useFrame(()=>{s!=null&&(n.sunDirection.copy(s.sunDirection),n.ellipsoidCenter.copy(s.ellipsoidCenter),n.ellipsoidMatrix.copy(s.ellipsoidMatrix))}),t.useEffect(()=>{if(s!=null)return s.overlay=n.atmosphereOverlay,s.shadow=n.atmosphereShadow,s.shadowLength=n.atmosphereShadowLength,()=>{s.overlay=null,s.shadow=null,s.shadowLength=null}},[n,s]);const x=t.useCallback(C=>{if(s!=null)switch(C.property){case"atmosphereOverlay":s.overlay=n.atmosphereOverlay;break;case"atmosphereShadow":s.shadow=n.atmosphereShadow;break;case"atmosphereShadowLength":s.shadowLength=n.atmosphereShadowLength;break}},[n,s]);t.useEffect(()=>(n.events.addEventListener("change",x),()=>{n.events.removeEventListener("change",x)}),[n,x]);const S=m.useThree(({gl:C})=>C),_=w(d,S),v=D(a,l.CLOUD_SHAPE_TEXTURE_SIZE),R=D(f,l.CLOUD_SHAPE_DETAIL_TEXTURE_SIZE),b=w(r,S),O=j(p),{camera:q}=t.useContext(P.EffectComposerContext);return y.jsxs(y.Fragment,{children:[y.jsx("primitive",{ref:h,object:n,mainCamera:q,...U,localWeatherTexture:_,shapeTexture:v,shapeDetailTexture:R,turbulenceTexture:b,stbnTexture:O,...F}),y.jsx(W,{layers:n.cloudLayers,disableDefault:o,children:L})]})}),M=t.forwardRef(function({index:o,...d},a){const f=t.useContext(A);if(f==null)throw new Error("CloudLayer can only be used within the Clouds component!");const{layers:r,indexPool:p,disableDefault:L}=f,[c,h]=t.useState();if(t.useLayoutEffect(()=>{if(o!=null){const u=p.indexOf(o);if(u!==-1)return p.splice(u,1),h(o),()=>{p.push(o),h(void 0)}}else{const u=p.sort((s,T)=>s-T).shift();if(u!=null)return h(u),()=>{p.push(u),h(void 0)}}},[o,r,p]),t.useLayoutEffect(()=>{if(c==null)return;const u=r[c];return()=>{u.copy(L?l.CloudLayer.DEFAULT:l.CloudLayers.DEFAULT[c])}},[r,c,L]),t.useEffect(()=>{c!=null&&(typeof a=="function"?a(r[c]):a!=null&&(a.current=r[c]))},[a,r,c]),c!=null){const u=r[c];u.copy(L?l.CloudLayer.DEFAULT:l.CloudLayers.DEFAULT[c]),u.set(d)}return null});exports.CloudLayer=M;exports.Clouds=I;
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","forwardRef","disableDefaultLayers","localWeatherTextureProp","DEFAULT_LOCAL_WEATHER_URL","shapeTextureProp","DEFAULT_SHAPE_URL","shapeDetailTextureProp","DEFAULT_SHAPE_DETAIL_URL","turbulenceTextureProp","DEFAULT_TURBULENCE_URL","stbnTextureProp","DEFAULT_STBN_URL","props","forwardedRef","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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"}
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 x, jsxs as k, Fragment as B } from "react/jsx-runtime";
2
- import { useFrame as W, useThree as j } from "@react-three/fiber";
3
- import { EffectComposerContext as X } from "@react-three/postprocessing";
4
- import { createContext as Z, useState as L, useLayoutEffect as E, forwardRef as F, useContext as C, useMemo as $, useEffect as h, useCallback as q } from "react";
5
- import { TextureLoader as G, LinearMipMapLinearFilter as J, LinearFilter as D, RepeatWrapping as f, NoColorSpace as _, RedFormat as K } from "three";
6
- import { AtmosphereContext as Q, separateProps as V } from "@takram/three-atmosphere/r3f";
7
- import { DEFAULT_STBN_URL as Y, createData3DTextureLoaderClass as z, parseUint8Array as ee, STBNLoader as te } from "@takram/three-geospatial";
8
- import { c as w, b as A, d as re, e as oe, D as ae, f as se, g as ne, h as le, a as ce, C as ue } from "./shared.js";
9
- const v = /* @__PURE__ */ Z(null), ie = ({
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: r = !1,
12
- children: c
11
+ disableDefault: t = !1,
12
+ children: u
13
13
  }) => {
14
- const [a, u] = L();
15
- return E(() => {
14
+ const [n, s] = f();
15
+ return x(() => {
16
16
  e.set(
17
- r ? Array(4).fill(A.DEFAULT) : w.DEFAULT
18
- ), u({
17
+ t ? Array(4).fill(w.DEFAULT) : D.DEFAULT
18
+ ), s({
19
19
  layers: e,
20
20
  indexPool: [0, 1, 2, 3],
21
- disableDefault: r
21
+ disableDefault: t
22
22
  });
23
- }, [e, r]), a != null && /* @__PURE__ */ x(v.Provider, { value: a, children: c });
23
+ }, [e, t]), n != null && /* @__PURE__ */ y(F.Provider, { value: n, children: u });
24
24
  };
25
- function U(e, r) {
26
- const [c, a] = L(typeof e != "string" ? e : null);
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 u = new G();
29
+ const s = new $();
30
30
  (async () => {
31
- const t = await u.loadAsync(e);
32
- t.minFilter = J, t.magFilter = D, t.wrapS = f, t.wrapT = f, t.colorSpace = _, t.needsUpdate = !0, r.initTexture(t), a(t);
33
- })().catch((t) => {
34
- console.error(t);
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
- a(e);
38
- }, [e, r]), c;
37
+ n(e);
38
+ }, [e, t]), u;
39
39
  }
40
- function g(e, r) {
41
- const [c, a] = L(typeof e != "string" ? e : null);
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 u = z(ee, {
45
- width: r,
46
- height: r,
47
- depth: r,
48
- format: K,
49
- minFilter: D,
50
- magFilter: D,
51
- wrapS: f,
52
- wrapT: f,
53
- wrapR: f,
54
- colorSpace: _
55
- }), t = new u();
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
- a(await t.loadAsync(e));
57
+ n(await r.loadAsync(e));
58
58
  })().catch((i) => {
59
59
  console.error(i);
60
60
  });
61
61
  } else
62
- a(e);
63
- }, [e, r]), c;
62
+ n(e);
63
+ }, [e, t]), u;
64
64
  }
65
- function he(e) {
66
- const [r, c] = L(typeof e != "string" ? e : null);
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 a = new te();
69
+ const n = new z();
70
70
  (async () => {
71
- c(await a.loadAsync(e));
72
- })().catch((u) => {
73
- console.error(u);
71
+ u(await n.loadAsync(e));
72
+ })().catch((s) => {
73
+ console.error(s);
74
74
  });
75
75
  } else
76
- c(e);
77
- }, [e]), r;
76
+ u(e);
77
+ }, [e]), t;
78
78
  }
79
- const Ee = /* @__PURE__ */ F(
80
- function({
81
- disableDefaultLayers: r = !1,
82
- localWeatherTexture: c = ae,
83
- shapeTexture: a = se,
84
- shapeDetailTexture: u = ne,
85
- turbulenceTexture: t = le,
86
- stbnTexture: i = Y,
87
- children: p,
88
- ...n
89
- }, d) {
90
- const { textures: l, transientStates: o, ...m } = C(Q), [b, R] = V({
91
- ...re,
92
- ...m,
93
- ...l,
94
- ...n
95
- }), s = $(() => new oe(), []);
96
- h(() => () => {
97
- s.dispose();
98
- }, [s]), W(() => {
99
- o != null && (s.sunDirection.copy(o.sunDirection), s.ellipsoidCenter.copy(o.ellipsoidCenter), s.ellipsoidMatrix.copy(o.ellipsoidMatrix));
100
- }), h(() => {
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
- return o.overlay = s.atmosphereOverlay, o.shadow = s.atmosphereShadow, o.shadowLength = s.atmosphereShadowLength, () => {
103
- o.overlay = null, o.shadow = null, o.shadowLength = null;
104
- };
105
- }, [s, o]);
106
- const T = q(
107
- (y) => {
108
- if (o != null)
109
- switch (y.property) {
110
- case "atmosphereOverlay":
111
- o.overlay = s.atmosphereOverlay;
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
- ), Ce = F(
160
- function({ index: r, ...c }, a) {
161
- const u = C(v);
162
- if (u == null)
163
- throw new Error(
164
- "CloudLayer can only be used within the Clouds component!"
165
- );
166
- const { layers: t, indexPool: i, disableDefault: p } = u, [n, d] = L();
167
- if (E(() => {
168
- if (r != null) {
169
- const l = i.indexOf(r);
170
- if (l !== -1)
171
- return i.splice(l, 1), d(r), () => {
172
- i.push(r), d(void 0);
173
- };
174
- } else {
175
- const l = i.sort((o, m) => o - m).shift();
176
- if (l != null)
177
- return d(l), () => {
178
- i.push(l), d(void 0);
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
- }, [r, t, i]), E(() => {
182
- if (n == null)
183
- return;
184
- const l = t[n];
185
- return () => {
186
- l.copy(
187
- p ? A.DEFAULT : w.DEFAULT[n]
188
- );
189
- };
190
- }, [t, n, p]), h(() => {
191
- n != null && (typeof a == "function" ? a(t[n]) : a != null && (a.current = t[n]));
192
- }, [a, t, n]), n != null) {
193
- const l = t[n];
194
- l.copy(
195
- p ? A.DEFAULT : w.DEFAULT[n]
196
- ), l.set(c);
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
- return null;
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
- Ce as CloudLayer,
203
- Ee as Clouds
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","forwardRef","disableDefaultLayers","localWeatherTextureProp","DEFAULT_LOCAL_WEATHER_URL","shapeTextureProp","DEFAULT_SHAPE_URL","shapeDetailTextureProp","DEFAULT_SHAPE_DETAIL_URL","turbulenceTextureProp","DEFAULT_TURBULENCE_URL","stbnTextureProp","DEFAULT_STBN_URL","props","forwardedRef","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":";;;;;;;;AAiBa,MAAAA,sBACiD,IAAI,GAQrDC,KAAoC,CAAC;AAAA,EAChD,QAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,UAAAC;AACF,MAAM;AACJ,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAkC;AAEhE,SAAAC,EAAgB,MAAM;AACb,IAAAN,EAAA;AAAA,MACLC,IACI,MAAM,CAAC,EAAE,KAAKM,EAAW,OAAO,IAChCC,EAAgB;AAAA,IACtB,GACWJ,EAAA;AAAA,MACT,QAAAJ;AAAA,MACA,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,MACtB,gBAAAC;AAAA,IAAA,CACD;AAAA,EAAA,GACA,CAACD,GAAQC,CAAc,CAAC,GAGzBE,KAAW,QACR,gBAAAM,EAAAX,EAAmB,UAAnB,EAA4B,OAAOK,GACjC,UAAAD,GACH;AAGN;ACLA,SAASQ,EACPC,GACAC,GACoC;AAC9B,QAAA,CAACC,GAAMC,CAAO,IAAIT,EAAS,OAAOM,KAAU,WAAWA,IAAQ,IAAI;AACzE,SAAAI,EAAU,MAAM;AACV,QAAA,OAAOJ,KAAU,UAAU;AACvB,YAAAK,IAAS,IAAIC,EAAc;AAChC,OAAC,YAAY;AACZ,cAAMC,IAAU,MAAMF,EAAO,UAAUL,CAAK;AAC5C,QAAAO,EAAQ,YAAYC,GACpBD,EAAQ,YAAYE,GACpBF,EAAQ,QAAQG,GAChBH,EAAQ,QAAQG,GAChBH,EAAQ,aAAaI,GACrBJ,EAAQ,cAAc,IAItBN,EAAG,YAAYM,CAAO,GAEtBJ,EAAQI,CAAO;AAAA,MAAA,KACZ,MAAM,CAASK,MAAA;AAClB,gBAAQ,MAAMA,CAAK;AAAA,MAAA,CACpB;AAAA,IAAA;AAED,MAAAT,EAAQH,CAAK;AAAA,EACf,GACC,CAACA,GAAOC,CAAE,CAAC,GAEPC;AACT;AAEA,SAASW,EACPb,GACAc,GAC4C;AACtC,QAAA,CAACZ,GAAMC,CAAO,IAAIT,EAAS,OAAOM,KAAU,WAAWA,IAAQ,IAAI;AACzE,SAAAI,EAAU,MAAM;AACV,QAAA,OAAOJ,KAAU,UAAU;AACvB,YAAAe,IAASC,EAA+BC,IAAiB;AAAA,QAC7D,OAAOH;AAAA,QACP,QAAQA;AAAA,QACR,OAAOA;AAAA,QACP,QAAQI;AAAA,QACR,WAAWT;AAAA,QACX,WAAWA;AAAA,QACX,OAAOC;AAAA,QACP,OAAOA;AAAA,QACP,OAAOA;AAAA,QACP,YAAYC;AAAA,MAAA,CACb,GACKN,IAAS,IAAIU,EAAO;AACzB,OAAC,YAAY;AACZ,QAAAZ,EAAQ,MAAME,EAAO,UAAUL,CAAK,CAAC;AAAA,MAAA,KAClC,MAAM,CAASY,MAAA;AAClB,gBAAQ,MAAMA,CAAK;AAAA,MAAA,CACpB;AAAA,IAAA;AAED,MAAAT,EAAQH,CAAK;AAAA,EACf,GACC,CAACA,GAAOc,CAAI,CAAC,GAETZ;AACT;AAEA,SAASiB,GACPnB,GACsB;AAChB,QAAA,CAACE,GAAMC,CAAO,IAAIT,EAAS,OAAOM,KAAU,WAAWA,IAAQ,IAAI;AACzE,SAAAI,EAAU,MAAM;AACV,QAAA,OAAOJ,KAAU,UAAU;AACvB,YAAAK,IAAS,IAAIe,GAAW;AAC7B,OAAC,YAAY;AACZ,QAAAjB,EAAQ,MAAME,EAAO,UAAUL,CAAK,CAAC;AAAA,MAAA,KAClC,MAAM,CAASY,MAAA;AAClB,gBAAQ,MAAMA,CAAK;AAAA,MAAA,CACpB;AAAA,IAAA;AAED,MAAAT,EAAQH,CAAK;AAAA,EACf,GACC,CAACA,CAAK,CAAC,GAEHE;AACT;AAwBO,MAAMmB,KAAuB,gBAAAC;AAAA,EAClC,SACE;AAAA,IACE,sBAAAC,IAAuB;AAAA,IACvB,qBAAqBC,IAA0BC;AAAA,IAC/C,cAAcC,IAAmBC;AAAA,IACjC,oBAAoBC,IAAyBC;AAAA,IAC7C,mBAAmBC,IAAwBC;AAAA,IAC3C,aAAaC,IAAkBC;AAAA,IAC/B,UAAA1C;AAAA,IACA,GAAG2C;AAAA,KAELC,GACA;AACA,UAAM,EAAE,UAAAC,GAAU,iBAAAC,GAAiB,GAAGC,EAAa,IACjDC,EAAWC,CAAiB,GAExB,CAACC,GAAsBC,CAAM,IAAIC,EAAc;AAAA,MACnD,GAAGC;AAAA,MACH,GAAGN;AAAA,MACH,GAAGF;AAAA,MACH,GAAGF;AAAA,IAAA,CACJ,GAEKW,IAASC,EAAQ,MAAM,IAAIC,GAAa,GAAG,CAAA,CAAE;AACnD,IAAA3C,EAAU,MACD,MAAM;AACX,MAAAyC,EAAO,QAAQ;AAAA,IACjB,GACC,CAACA,CAAM,CAAC,GAEXG,EAAS,MAAM;AACb,MAAIX,KAAmB,SACdQ,EAAA,aAAa,KAAKR,EAAgB,YAAY,GAC9CQ,EAAA,gBAAgB,KAAKR,EAAgB,eAAe,GACpDQ,EAAA,gBAAgB,KAAKR,EAAgB,eAAe;AAAA,IAC7D,CACD,GAEDjC,EAAU,MAAM;AACd,UAAIiC,KAAmB;AACrB,eAAAA,EAAgB,UAAUQ,EAAO,mBACjCR,EAAgB,SAASQ,EAAO,kBAChCR,EAAgB,eAAeQ,EAAO,wBAC/B,MAAM;AACX,UAAAR,EAAgB,UAAU,MAC1BA,EAAgB,SAAS,MACzBA,EAAgB,eAAe;AAAA,QACjC;AAAA,IACF,GACC,CAACQ,GAAQR,CAAe,CAAC;AAE5B,UAAMY,IAAeC;AAAA,MACnB,CAACC,MAAmC;AAClC,YAAId,KAAmB;AAGvB,kBAAQc,EAAM,UAAU;AAAA,YACtB,KAAK;AACH,cAAAd,EAAgB,UAAUQ,EAAO;AACjC;AAAA,YACF,KAAK;AACH,cAAAR,EAAgB,SAASQ,EAAO;AAChC;AAAA,YACF,KAAK;AACH,cAAAR,EAAgB,eAAeQ,EAAO;AACtC;AAAA,UAAA;AAAA,MAEN;AAAA,MACA,CAACA,GAAQR,CAAe;AAAA,IAC1B;AACA,IAAAjC,EAAU,OACDyC,EAAA,OAAO,iBAAiB,UAAUI,CAAY,GAC9C,MAAM;AACJ,MAAAJ,EAAA,OAAO,oBAAoB,UAAUI,CAAY;AAAA,IAC1D,IACC,CAACJ,GAAQI,CAAY,CAAC;AAEzB,UAAMhD,IAAKmD,EAAS,CAAC,EAAE,IAAAnD,QAASA,CAAE,GAC5BoD,IAAsBtD,EAAgByB,GAAyBvB,CAAE,GACjEqD,IAAezC;AAAA,MACnBa;AAAA,MACA6B;AAAA,IACF,GACMC,IAAqB3C;AAAA,MACzBe;AAAA,MACA6B;AAAA,IACF,GACMC,IAAoB3D,EAAgB+B,GAAuB7B,CAAE,GAC7D0D,IAAcxC,GAAoBa,CAAe,GAEjD,EAAE,QAAA4B,EAAA,IAAWrB,EAAWsB,CAAqB;AACnD,WAEI,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,MAAA,gBAAAjE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKqC;AAAA,UACL,QAAQU;AAAA,UACR,YAAYe;AAAA,UACX,GAAGnB;AAAA,UACJ,qBAAAY;AAAA,UACA,cAAAC;AAAA,UACA,oBAAAE;AAAA,UACA,mBAAAE;AAAA,UACA,aAAAC;AAAA,UACC,GAAGjB;AAAA,QAAA;AAAA,MACN;AAAA,MACA,gBAAA5C;AAAA,QAACV;AAAA,QAAA;AAAA,UACC,QAAQyD,EAAO;AAAA,UACf,gBAAgBtB;AAAA,UAEf,UAAAhC;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,GACF;AAAA,EAAA;AAGN,GCxPaK,KAAa0B;AAAA,EACxB,SAAoB,EAAE,OAAO0C,GAAW,GAAG9B,KAASC,GAAc;AAC1D,UAAA3C,IAAU+C,EAAWpD,CAAkB;AAC7C,QAAIK,KAAW;AACb,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAGF,UAAM,EAAE,QAAAH,GAAQ,WAAA4E,GAAW,gBAAA3E,EAAmB,IAAAE,GACxC,CAAC0E,GAAOC,CAAQ,IAAIzE,EAAiB;AAmD3C,QAjDAC,EAAgB,MAAM;AACpB,UAAIqE,KAAa,MAAM;AACf,cAAAI,IAAYH,EAAU,QAAQD,CAAS;AAC7C,YAAII,MAAc;AACN,iBAAAH,EAAA,OAAOG,GAAW,CAAC,GAC7BD,EAASH,CAAS,GACX,MAAM;AACX,YAAAC,EAAU,KAAKD,CAAS,GACxBG,EAAS,MAAS;AAAA,UACpB;AAAA,MACF,OACK;AAGCD,cAAAA,IAAQD,EAAU,KAAK,CAACI,GAAGC,MAAMD,IAAIC,CAAC,EAAE,MAAM;AACpD,YAAIJ,KAAS;AACX,iBAAAC,EAASD,CAAK,GACP,MAAM;AACX,YAAAD,EAAU,KAAKC,CAAK,GACpBC,EAAS,MAAS;AAAA,UACpB;AAAA,MACF;AAAA,IAED,GAAA,CAACH,GAAW3E,GAAQ4E,CAAS,CAAC,GAEjCtE,EAAgB,MAAM;AACpB,UAAIuE,KAAS;AACX;AAEI,YAAAK,IAAQlF,EAAO6E,CAAK;AAC1B,aAAO,MAAM;AACL,QAAAK,EAAA;AAAA,UACJjF,IAAiBkF,EAAe,UAAUpF,EAAY,QAAQ8E,CAAK;AAAA,QACrE;AAAA,MACF;AAAA,IACC,GAAA,CAAC7E,GAAQ6E,GAAO5E,CAAc,CAAC,GAElCc,EAAU,MAAM;AACd,MAAI8D,KAAS,SAGT,OAAO/B,KAAiB,aACbA,EAAA9C,EAAO6E,CAAK,CAAC,IACjB/B,KAAgB,SACZA,EAAA,UAAU9C,EAAO6E,CAAK;AAAA,IAEpC,GAAA,CAAC/B,GAAc9C,GAAQ6E,CAAK,CAAC,GAG5BA,KAAS,MAAM;AACX,YAAAK,IAAQlF,EAAO6E,CAAK;AACpB,MAAAK,EAAA;AAAA,QACJjF,IAAiBkF,EAAe,UAAUpF,EAAY,QAAQ8E,CAAK;AAAA,MACrE,GACAK,EAAM,IAAIrC,CAAK;AAAA,IAAA;AAGV,WAAA;AAAA,EAAA;AAEX;"}
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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"}