@react-three/drei 9.84.3 → 9.85.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/README.md CHANGED
@@ -4476,16 +4476,49 @@ attribute vec3 color;
4476
4476
 
4477
4477
  Particle based cloud.
4478
4478
 
4479
- 👉 Note: `<Cloud />` component is not meant to be used in production environments as it relies on third-party CDN.
4479
+ ```tsx
4480
+ type CloudsProps = JSX.IntrinsicElements['group'] & {
4481
+ /** Optional cloud texture, points to a default hosted on rawcdn.githack */
4482
+ texture?: string
4483
+ /** Maximum number of segments, default: 200 (make this tight to save memory!) */
4484
+ limit?: number
4485
+ /** How many segments it renders, default: undefined (all) */
4486
+ range?: number
4487
+ /** Which material it will override, default: MeshLambertMaterial */
4488
+ material?: typeof Material
4489
+ }
4490
+
4491
+ type CloudProps = JSX.IntrinsicElements['group'] & {
4492
+ /** A seeded random will show the same cloud consistently, default: Math.random() */
4493
+ seed?: number
4494
+ /** How many segments or particles the cloud will have, default: 20 */
4495
+ segments?: number
4496
+ /** The box3 bounds of the cloud, default: [5, 1, 1] */
4497
+ bounds?: ReactThreeFiber.Vector3
4498
+ /** The general scale of the segments */
4499
+ scale?: ReactThreeFiber.Vector3
4500
+ /** The volume/thickness of the segments, default: 6 */
4501
+ volume?: number
4502
+ /** Growth factor for animated clouds (speed > 0), default: 4 */
4503
+ growth?: number
4504
+ /** Animation factor, default: 0.1 */
4505
+ speed?: number
4506
+ /** Camera distance until the segments will fade, default: 10 */
4507
+ fade?: number
4508
+ /** Opacity, default: 0.8 */
4509
+ opacity?: number
4510
+ /** Color, default: white */
4511
+ color?: ReactThreeFiber.Color
4512
+ }
4513
+ ```
4514
+
4515
+ Use the `<Clouds>` provider to glob all clouds into a single, instanced draw call.
4480
4516
 
4481
4517
  ```jsx
4482
- <Cloud
4483
- opacity={0.5}
4484
- speed={0.4} // Rotation speed
4485
- width={10} // Width of the full cloud
4486
- depth={1.5} // Z-dir depth
4487
- segments={20} // Number of particles
4488
- />
4518
+ <Clouds material={THREE.MeshBasicMaterial}>
4519
+ <Cloud segments={40} bounds={[10, 2, 2]} volume={10} color="orange" />
4520
+ <Cloud seed={1} scale={2} volume={5} color="hotpink" fade={100} />
4521
+ </Clouds>
4489
4522
  ```
4490
4523
 
4491
4524
  #### useEnvironment
package/core/Cloud.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),t=require("./Billboard.cjs.js"),a=require("./shapes.cjs.js"),n=require("./useTexture.cjs.js");function s(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("@babel/runtime/helpers/extends"),require("react-merge-refs"),require("three");var c=s(e);exports.Cloud=function({opacity:e=.5,speed:s=.4,width:o=10,depth:i=1.5,segments:u=20,texture:l="https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png",color:d="#ffffff",depthTest:f=!0,...h}){const p=c.useRef(null),m=n.useTexture(l),b=c.useMemo((()=>[...new Array(u)].map(((e,r)=>({x:o/2-Math.random()*o,y:o/2-Math.random()*o,scale:.4+Math.sin((r+1)/u*Math.PI)*(10*(.2+Math.random())),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*s})))),[o,u,s]);return r.useFrame((e=>{var r;return null==(r=p.current)?void 0:r.children.forEach(((r,t)=>{r.children[0].rotation.z+=b[t].rotation,r.children[0].scale.setScalar(b[t].scale+(1+Math.sin(e.clock.getElapsedTime()/10))/2*t/10)}))})),c.createElement("group",h,c.createElement("group",{position:[0,0,u/2*i],ref:p},b.map((({x:r,y:n,scale:s,density:o},u)=>c.createElement(t.Billboard,{key:u,position:[r,n,-u*i]},c.createElement(a.Plane,{scale:s,rotation:[0,0,0]},c.createElement("meshStandardMaterial",{map:m,transparent:!0,opacity:s/6*o*e,depthTest:f,color:d})))))))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),n=require("@react-three/fiber"),a=require("./useTexture.cjs.js"),o=require("uuid");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var i=u(e),s=c(t);const l=new r.Matrix4,d=new r.Vector3,f=new r.Quaternion,p=new r.Vector3,m=new r.Quaternion,g=new r.Vector3,h=s.createContext(null),y=s.forwardRef((({children:e,material:t=r.MeshLambertMaterial,texture:o="https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png",range:u,limit:c=200,...y},x)=>{var b,M;const v=s.useMemo((()=>class extends t{constructor(){super(),this.onBeforeCompile=e=>{e.vertexShader="attribute float opacity;\n varying float vOpacity;\n "+e.vertexShader.replace("#include <fog_vertex>","#include <fog_vertex>\n vOpacity = opacity;\n "),e.fragmentShader="varying float vOpacity;\n "+e.fragmentShader.replace("#include <opaque_fragment>","#include <opaque_fragment>\n gl_FragColor = vec4(outgoingLight, diffuseColor.a * vOpacity);\n ")}}}),[t]);n.extend({CloudMaterial:v});const w=s.useRef(null),C=s.useRef([]),E=s.useMemo((()=>new Float32Array(Array.from({length:c},(()=>1)))),[c]),A=s.useMemo((()=>new Float32Array(Array.from({length:c},(()=>[1,1,1])).flat())),[c]),O=a.useTexture(o);let j,R=0,_=0;const q=new r.Quaternion,F=new r.Vector3(0,0,1);n.useFrame(((e,t)=>{for(R=e.clock.getElapsedTime(),l.copy(w.current.matrixWorld).invert(),e.camera.matrixWorld.decompose(p,m,g),_=0;_<C.current.length;_++)j=C.current[_],j.ref.current.matrixWorld.decompose(d,f,g),d.add(j.position).applyQuaternion(f),f.copy(m).multiply(q.setFromAxisAngle(F,j.rotation+=t*j.rotationFactor)),g.addScalar(j.volume+(1+Math.sin(R*j.density*j.speed))/2*j.growth),j.matrix.compose(d,f,g).premultiply(l),j.dist=d.distanceTo(p);for(C.current.sort(((e,t)=>t.dist-e.dist)),_=0;_<C.current.length;_++)j=C.current[_],E[_]=j.opacity*(j.dist<j.fade-1?j.dist/j.fade:1),w.current.setMatrixAt(_,j.matrix),w.current.setColorAt(_,j.color);w.current.geometry.attributes.opacity.needsUpdate=!0,w.current.instanceMatrix.needsUpdate=!0,w.current.instanceColor&&(w.current.instanceColor.needsUpdate=!0)})),s.useLayoutEffect((()=>{const e=Math.min(c,void 0!==u?u:c,C.current.length);w.current.count=e,w.current.instanceMatrix.updateRange.count=16*e,w.current.instanceColor&&(w.current.instanceColor.updateRange.count=3*e),w.current.geometry.attributes.opacity.updateRange.count=e}));let P=[null!==(b=O.image.width)&&void 0!==b?b:1,null!==(M=O.image.height)&&void 0!==M?M:1],S=Math.max(P[0],P[1]);return P=[P[0]/S,P[1]/S],s.createElement("group",i.default({ref:x},y),s.createElement(h.Provider,{value:C},e,s.createElement("instancedMesh",{matrixAutoUpdate:!1,ref:w,args:[null,null,c]},s.createElement("instancedBufferAttribute",{usage:r.DynamicDrawUsage,attach:"instanceColor",args:[A,3]}),s.createElement("planeGeometry",{args:[...P]},s.createElement("instancedBufferAttribute",{usage:r.DynamicDrawUsage,attach:"attributes-opacity",args:[E,1]})),s.createElement("cloudMaterial",{key:t.name,map:O,transparent:!0,depthWrite:!1}))))})),x=s.forwardRef((({opacity:e=1,speed:t=0,bounds:a=[5,1,1],segments:u=20,color:c="#ffffff",fade:l=10,volume:d=6,growth:f=4,seed:p=Math.random(),...m},g)=>{function y(){const e=1e4*Math.sin(p++);return e-Math.floor(e)}const x=s.useContext(h),b=s.useRef(null),[M]=s.useState((()=>o.v4())),v=s.useMemo((()=>[...new Array(u)].map(((e,t)=>({segments:u,bounds:new r.Vector3(1,1,1),position:new r.Vector3,uuid:M,index:t,ref:b,dist:0,matrix:new r.Matrix4,color:new r.Color,rotation:t*(Math.PI/u)})))),[u,M]);return s.useLayoutEffect((()=>{v.forEach(((r,o)=>{n.applyProps(r,{color:c,speed:t,growth:f,opacity:e,fade:l,bounds:a,density:Math.max(.5,y()),rotationFactor:Math.max(.2,.5*y())*t}),u>1&&r.position.copy(r.bounds).multiply({x:2*y()-1,y:2*y()-1,z:2*y()-1});const i=Math.abs(r.position.x),s=Math.abs(r.position.y),p=Math.abs(r.position.z),m=Math.max(i,s,p);r.length=1,i===m&&(r.length-=i/r.bounds.x),s===m&&(r.length-=s/r.bounds.y),p===m&&(r.length-=p/r.bounds.z),r.volume=Math.max(.25,r.length)*d}))}),[a,l,c,e,f,d,p,u,t]),s.useLayoutEffect((()=>{const e=v;return x.current=[...x.current,...e],()=>{x.current=x.current.filter((e=>e.uuid!==M))}}),[v]),s.useImperativeHandle(g,(()=>b.current),[]),s.createElement("group",i.default({ref:b},m))})),b=s.forwardRef(((e,t)=>s.useContext(h)?s.createElement(x,i.default({ref:t},e)):s.createElement(y,null,s.createElement(x,i.default({ref:t},e)))));exports.Cloud=b,exports.CloudInstance=x,exports.Clouds=y;
package/core/Cloud.d.ts CHANGED
@@ -1,12 +1,32 @@
1
1
  import * as React from 'react';
2
- export declare function Cloud({ opacity, speed, width, depth, segments, texture, color, depthTest, ...props }: {
3
- [x: string]: any;
4
- opacity?: number | undefined;
5
- speed?: number | undefined;
6
- width?: number | undefined;
7
- depth?: number | undefined;
8
- segments?: number | undefined;
9
- texture?: string | undefined;
10
- color?: string | undefined;
11
- depthTest?: boolean | undefined;
12
- }): React.JSX.Element;
2
+ import { Group, Material, MeshLambertMaterial } from 'three';
3
+ import { MaterialNode, ReactThreeFiber } from '@react-three/fiber';
4
+ declare global {
5
+ namespace JSX {
6
+ interface IntrinsicElements {
7
+ cloudMaterial: MaterialNode<MeshLambertMaterial, typeof MeshLambertMaterial>;
8
+ }
9
+ }
10
+ }
11
+ type CloudsProps = JSX.IntrinsicElements['group'] & {
12
+ texture?: string;
13
+ limit?: number;
14
+ range?: number;
15
+ material?: typeof Material;
16
+ };
17
+ type CloudProps = JSX.IntrinsicElements['group'] & {
18
+ seed?: number;
19
+ segments?: number;
20
+ bounds?: ReactThreeFiber.Vector3;
21
+ scale?: ReactThreeFiber.Vector3;
22
+ volume?: number;
23
+ growth?: number;
24
+ speed?: number;
25
+ fade?: number;
26
+ opacity?: number;
27
+ color?: ReactThreeFiber.Color;
28
+ };
29
+ export declare const Clouds: React.ForwardRefExoticComponent<Omit<CloudsProps, "ref"> & React.RefAttributes<Group>>;
30
+ export declare const CloudInstance: React.ForwardRefExoticComponent<Omit<CloudProps, "ref"> & React.RefAttributes<Group>>;
31
+ export declare const Cloud: React.ForwardRefExoticComponent<Omit<CloudProps, "ref"> & React.RefAttributes<Group>>;
32
+ export {};
package/core/Cloud.js CHANGED
@@ -1,58 +1,224 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
1
2
  import * as React from 'react';
2
- import { useFrame } from '@react-three/fiber';
3
- import { Billboard } from './Billboard.js';
4
- import { Plane } from './shapes.js';
3
+ import { Quaternion, Vector3, DynamicDrawUsage, MeshLambertMaterial, Matrix4, Color } from 'three';
4
+ import { extend, useFrame, applyProps } from '@react-three/fiber';
5
5
  import { useTexture } from './useTexture.js';
6
+ import { v4 } from 'uuid';
6
7
 
7
8
  const CLOUD_URL = 'https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png';
8
- function Cloud({
9
- opacity = 0.5,
10
- speed = 0.4,
11
- width = 10,
12
- depth = 1.5,
13
- segments = 20,
9
+ const parentMatrix =
10
+ /*@__PURE__*/
11
+ /*@__PURE__*/
12
+ new Matrix4();
13
+ const translation =
14
+ /*@__PURE__*/
15
+ /*@__PURE__*/
16
+ new Vector3();
17
+ const rotation =
18
+ /*@__PURE__*/
19
+ /*@__PURE__*/
20
+ new Quaternion();
21
+ const cpos =
22
+ /*@__PURE__*/
23
+ /*@__PURE__*/
24
+ new Vector3();
25
+ const cquat =
26
+ /*@__PURE__*/
27
+ /*@__PURE__*/
28
+ new Quaternion();
29
+ const scale =
30
+ /*@__PURE__*/
31
+ /*@__PURE__*/
32
+ new Vector3();
33
+ const context = /*@__PURE__*/React.createContext(null);
34
+ const Clouds = /*@__PURE__*/React.forwardRef(({
35
+ children,
36
+ material = MeshLambertMaterial,
14
37
  texture = CLOUD_URL,
15
- color = '#ffffff',
16
- depthTest = true,
38
+ range,
39
+ limit = 200,
17
40
  ...props
18
- }) {
19
- const group = React.useRef(null);
41
+ }, fref) => {
42
+ var _image$width, _image$height;
43
+ const CloudMaterial = React.useMemo(() => {
44
+ return class extends material {
45
+ constructor() {
46
+ super();
47
+ this.onBeforeCompile = shader => {
48
+ shader.vertexShader = `attribute float opacity;
49
+ varying float vOpacity;
50
+ ` + shader.vertexShader.replace('#include <fog_vertex>', `#include <fog_vertex>
51
+ vOpacity = opacity;
52
+ `);
53
+ shader.fragmentShader = `varying float vOpacity;
54
+ ` + shader.fragmentShader.replace('#include <opaque_fragment>', `#include <opaque_fragment>
55
+ gl_FragColor = vec4(outgoingLight, diffuseColor.a * vOpacity);
56
+ `);
57
+ };
58
+ }
59
+ };
60
+ }, [material]);
61
+ extend({
62
+ CloudMaterial
63
+ });
64
+ const instance = React.useRef(null);
65
+ const clouds = React.useRef([]);
66
+ const opacities = React.useMemo(() => new Float32Array(Array.from({
67
+ length: limit
68
+ }, () => 1)), [limit]);
69
+ const colors = React.useMemo(() => new Float32Array(Array.from({
70
+ length: limit
71
+ }, () => [1, 1, 1]).flat()), [limit]);
20
72
  const cloudTexture = useTexture(texture);
21
- const clouds = React.useMemo(() => [...new Array(segments)].map((_, index) => ({
22
- x: width / 2 - Math.random() * width,
23
- y: width / 2 - Math.random() * width,
24
- scale: 0.4 + Math.sin((index + 1) / segments * Math.PI) * ((0.2 + Math.random()) * 10),
25
- density: Math.max(0.2, Math.random()),
26
- rotation: Math.max(0.002, 0.005 * Math.random()) * speed
27
- })), [width, segments, speed]);
28
- useFrame(state => {
29
- var _group$current;
30
- return (_group$current = group.current) == null ? void 0 : _group$current.children.forEach((cloud, index) => {
31
- cloud.children[0].rotation.z += clouds[index].rotation;
32
- cloud.children[0].scale.setScalar(clouds[index].scale + (1 + Math.sin(state.clock.getElapsedTime() / 10)) / 2 * index / 10);
33
- });
73
+ let t = 0;
74
+ let index = 0;
75
+ let config;
76
+ const qat = new Quaternion();
77
+ const dir = new Vector3(0, 0, 1);
78
+ useFrame((state, delta) => {
79
+ t = state.clock.getElapsedTime();
80
+ parentMatrix.copy(instance.current.matrixWorld).invert();
81
+ state.camera.matrixWorld.decompose(cpos, cquat, scale);
82
+ for (index = 0; index < clouds.current.length; index++) {
83
+ config = clouds.current[index];
84
+ config.ref.current.matrixWorld.decompose(translation, rotation, scale);
85
+ translation.add(config.position).applyQuaternion(rotation);
86
+ rotation.copy(cquat).multiply(qat.setFromAxisAngle(dir, config.rotation += delta * config.rotationFactor));
87
+ scale.addScalar(config.volume + (1 + Math.sin(t * config.density * config.speed)) / 2 * config.growth);
88
+ config.matrix.compose(translation, rotation, scale).premultiply(parentMatrix);
89
+ config.dist = translation.distanceTo(cpos);
90
+ }
91
+
92
+ // Depth-sort. Instances have no specific draw order, w/o sorting z would be random
93
+ clouds.current.sort((a, b) => b.dist - a.dist);
94
+ for (index = 0; index < clouds.current.length; index++) {
95
+ config = clouds.current[index];
96
+ opacities[index] = config.opacity * (config.dist < config.fade - 1 ? config.dist / config.fade : 1);
97
+ instance.current.setMatrixAt(index, config.matrix);
98
+ instance.current.setColorAt(index, config.color);
99
+ }
100
+
101
+ // Update instance
102
+ instance.current.geometry.attributes.opacity.needsUpdate = true;
103
+ instance.current.instanceMatrix.needsUpdate = true;
104
+ if (instance.current.instanceColor) instance.current.instanceColor.needsUpdate = true;
34
105
  });
35
- return /*#__PURE__*/React.createElement("group", props, /*#__PURE__*/React.createElement("group", {
36
- position: [0, 0, segments / 2 * depth],
37
- ref: group
38
- }, clouds.map(({
39
- x,
40
- y,
41
- scale,
42
- density
43
- }, index) => /*#__PURE__*/React.createElement(Billboard, {
44
- key: index,
45
- position: [x, y, -index * depth]
46
- }, /*#__PURE__*/React.createElement(Plane, {
47
- scale: scale,
48
- rotation: [0, 0, 0]
49
- }, /*#__PURE__*/React.createElement("meshStandardMaterial", {
106
+ React.useLayoutEffect(() => {
107
+ const updateRange = Math.min(limit, range !== undefined ? range : limit, clouds.current.length);
108
+ instance.current.count = updateRange;
109
+ instance.current.instanceMatrix.updateRange.count = updateRange * 16;
110
+ if (instance.current.instanceColor) instance.current.instanceColor.updateRange.count = updateRange * 3;
111
+ instance.current.geometry.attributes.opacity.updateRange.count = updateRange;
112
+ });
113
+ let imageBounds = [(_image$width = cloudTexture.image.width) !== null && _image$width !== void 0 ? _image$width : 1, (_image$height = cloudTexture.image.height) !== null && _image$height !== void 0 ? _image$height : 1];
114
+ let max = Math.max(imageBounds[0], imageBounds[1]);
115
+ imageBounds = [imageBounds[0] / max, imageBounds[1] / max];
116
+ return /*#__PURE__*/React.createElement("group", _extends({
117
+ ref: fref
118
+ }, props), /*#__PURE__*/React.createElement(context.Provider, {
119
+ value: clouds
120
+ }, children, /*#__PURE__*/React.createElement("instancedMesh", {
121
+ matrixAutoUpdate: false,
122
+ ref: instance,
123
+ args: [null, null, limit]
124
+ }, /*#__PURE__*/React.createElement("instancedBufferAttribute", {
125
+ usage: DynamicDrawUsage,
126
+ attach: "instanceColor",
127
+ args: [colors, 3]
128
+ }), /*#__PURE__*/React.createElement("planeGeometry", {
129
+ args: [...imageBounds]
130
+ }, /*#__PURE__*/React.createElement("instancedBufferAttribute", {
131
+ usage: DynamicDrawUsage,
132
+ attach: "attributes-opacity",
133
+ args: [opacities, 1]
134
+ })), /*#__PURE__*/React.createElement("cloudMaterial", {
135
+ key: material.name,
50
136
  map: cloudTexture,
51
137
  transparent: true,
52
- opacity: scale / 6 * density * opacity,
53
- depthTest: depthTest,
54
- color: color
55
- }))))));
56
- }
138
+ depthWrite: false
139
+ }))));
140
+ });
141
+ const CloudInstance = /*@__PURE__*/React.forwardRef(({
142
+ opacity = 1,
143
+ speed = 0,
144
+ bounds = [5, 1, 1],
145
+ segments = 20,
146
+ color = '#ffffff',
147
+ fade = 10,
148
+ volume = 6,
149
+ growth = 4,
150
+ seed = Math.random(),
151
+ ...props
152
+ }, fref) => {
153
+ function random() {
154
+ const x = Math.sin(seed++) * 10000;
155
+ return x - Math.floor(x);
156
+ }
157
+ const parent = React.useContext(context);
158
+ const ref = React.useRef(null);
159
+ const [uuid] = React.useState(() => v4());
160
+ const clouds = React.useMemo(() => {
161
+ return [...new Array(segments)].map((_, index) => ({
162
+ segments,
163
+ bounds: new Vector3(1, 1, 1),
164
+ position: new Vector3(),
165
+ uuid,
166
+ index,
167
+ ref,
168
+ dist: 0,
169
+ matrix: new Matrix4(),
170
+ color: new Color(),
171
+ rotation: index * (Math.PI / segments)
172
+ }));
173
+ }, [segments, uuid]);
174
+ React.useLayoutEffect(() => {
175
+ clouds.forEach((cloud, index) => {
176
+ applyProps(cloud, {
177
+ color,
178
+ speed,
179
+ growth,
180
+ opacity,
181
+ fade,
182
+ bounds,
183
+ density: Math.max(0.5, random()),
184
+ rotationFactor: Math.max(0.2, 0.5 * random()) * speed
185
+ });
186
+ // Only distribute randomly if there are multiple segments
187
+ if (segments > 1) cloud.position.copy(cloud.bounds).multiply({
188
+ x: random() * 2 - 1,
189
+ y: random() * 2 - 1,
190
+ z: random() * 2 - 1
191
+ });
192
+ const xDiff = Math.abs(cloud.position.x);
193
+ const yDiff = Math.abs(cloud.position.y);
194
+ const zDiff = Math.abs(cloud.position.z);
195
+ const max = Math.max(xDiff, yDiff, zDiff);
196
+ cloud.length = 1;
197
+ if (xDiff === max) cloud.length -= xDiff / cloud.bounds.x;
198
+ if (yDiff === max) cloud.length -= yDiff / cloud.bounds.y;
199
+ if (zDiff === max) cloud.length -= zDiff / cloud.bounds.z;
200
+ cloud.volume = Math.max(0.25, cloud.length) * volume;
201
+ });
202
+ }, [bounds, fade, color, opacity, growth, volume, seed, segments, speed]);
203
+ React.useLayoutEffect(() => {
204
+ const temp = clouds;
205
+ parent.current = [...parent.current, ...temp];
206
+ return () => {
207
+ parent.current = parent.current.filter(item => item.uuid !== uuid);
208
+ };
209
+ }, [clouds]);
210
+ React.useImperativeHandle(fref, () => ref.current, []);
211
+ return /*#__PURE__*/React.createElement("group", _extends({
212
+ ref: ref
213
+ }, props));
214
+ });
215
+ const Cloud = /*@__PURE__*/React.forwardRef((props, fref) => {
216
+ const parent = React.useContext(context);
217
+ if (parent) return /*#__PURE__*/React.createElement(CloudInstance, _extends({
218
+ ref: fref
219
+ }, props));else return /*#__PURE__*/React.createElement(Clouds, null, /*#__PURE__*/React.createElement(CloudInstance, _extends({
220
+ ref: fref
221
+ }, props)));
222
+ });
57
223
 
58
- export { Cloud };
224
+ export { Cloud, CloudInstance, Clouds };
package/core/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./CatmullRomLine.cjs.js"),i=require("./Line.cjs.js"),a=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),c=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),x=require("./Edges.cjs.js"),l=require("./Outlines.cjs.js"),q=require("./Trail.cjs.js"),m=require("./Sampler.cjs.js"),d=require("./ComputedAttribute.cjs.js"),h=require("./Clone.cjs.js"),C=require("./MarchingCubes.cjs.js"),M=require("./Decal.cjs.js"),S=require("./Svg.cjs.js"),P=require("./Gltf.cjs.js"),T=require("./AsciiRenderer.cjs.js"),f=require("./OrthographicCamera.cjs.js"),b=require("./PerspectiveCamera.cjs.js"),B=require("./CubeCamera.cjs.js"),g=require("./DeviceOrientationControls.cjs.js"),v=require("./FlyControls.cjs.js"),F=require("./MapControls.cjs.js"),L=require("./OrbitControls.cjs.js"),A=require("./TrackballControls.cjs.js"),k=require("./ArcballControls.cjs.js"),D=require("./TransformControls.cjs.js"),E=require("./PointerLockControls.cjs.js"),G=require("./FirstPersonControls.cjs.js"),R=require("./CameraControls.cjs.js"),w=require("./FaceControls.cjs.js"),z=require("./MotionPathControls.cjs.js"),O=require("./GizmoHelper.cjs.js"),y=require("./GizmoViewcube.cjs.js"),I=require("./GizmoViewport.cjs.js"),H=require("./Grid.cjs.js"),V=require("./useCubeTexture.cjs.js"),W=require("./useFBX.cjs.js"),Q=require("./useGLTF.cjs.js"),X=require("./useKTX2.cjs.js"),K=require("./useProgress.cjs.js"),N=require("./useTexture.cjs.js"),U=require("./useVideoTexture.cjs.js"),_=require("./useFont.cjs.js"),J=require("./Stats.cjs.js"),Y=require("./StatsGl.cjs.js"),Z=require("./useDepthBuffer.cjs.js"),$=require("./useAspect.cjs.js"),ee=require("./useCamera.cjs.js"),re=require("./useDetectGPU.cjs.js"),se=require("./useHelper.cjs.js"),te=require("./useBVH.cjs.js"),oe=require("./useContextBridge.cjs.js"),ie=require("./useAnimations.cjs.js"),ae=require("./useFBO.cjs.js"),ue=require("./useIntersect.cjs.js"),ce=require("./useBoxProjectedEnv.cjs.js"),ne=require("./BBAnchor.cjs.js"),je=require("./useTrailTexture.cjs.js"),pe=require("./useCubeCamera.cjs.js"),xe=require("./Example.cjs.js"),le=require("./SpriteAnimator.cjs.js"),qe=require("./FaceLandmarker.cjs.js"),me=require("./CurveModifier.cjs.js"),de=require("./MeshDistortMaterial.cjs.js"),he=require("./MeshWobbleMaterial.cjs.js"),Ce=require("./MeshReflectorMaterial.cjs.js"),Me=require("./MeshRefractionMaterial.cjs.js"),Se=require("./MeshTransmissionMaterial.cjs.js"),Pe=require("./MeshDiscardMaterial.cjs.js"),Te=require("./PointMaterial.cjs.js"),fe=require("./shaderMaterial.cjs.js"),be=require("./softShadows.cjs.js"),Be=require("./shapes.cjs.js"),ge=require("./Facemesh.cjs.js"),ve=require("./RoundedBox.cjs.js"),Fe=require("./ScreenQuad.cjs.js"),Le=require("./Center.cjs.js"),Ae=require("./Resize.cjs.js"),ke=require("./Bounds.cjs.js"),De=require("./CameraShake.cjs.js"),Ee=require("./Float.cjs.js"),Ge=require("./Stage.cjs.js"),Re=require("./Backdrop.cjs.js"),we=require("./Shadow.cjs.js"),ze=require("./Caustics.cjs.js"),Oe=require("./ContactShadows.cjs.js"),ye=require("./AccumulativeShadows.cjs.js"),Ie=require("./Reflector.cjs.js"),He=require("./SpotLight.cjs.js"),Ve=require("./Environment.cjs.js"),We=require("./Lightformer.cjs.js"),Qe=require("./Sky.cjs.js"),Xe=require("./Stars.cjs.js"),Ke=require("./Cloud.cjs.js"),Ne=require("./Sparkles.cjs.js"),Ue=require("./useEnvironment.cjs.js"),_e=require("./useMatcapTexture.cjs.js"),Je=require("./useNormalTexture.cjs.js"),Ye=require("./Wireframe.cjs.js"),Ze=require("./Points.cjs.js"),$e=require("./Instances.cjs.js"),er=require("./Segments.cjs.js"),rr=require("./Detailed.cjs.js"),sr=require("./Preload.cjs.js"),tr=require("./BakeShadows.cjs.js"),or=require("./meshBounds.cjs.js"),ir=require("./AdaptiveDpr.cjs.js"),ar=require("./AdaptiveEvents.cjs.js"),ur=require("./PerformanceMonitor.cjs.js"),cr=require("./RenderTexture.cjs.js"),nr=require("./Mask.cjs.js"),jr=require("./Hud.cjs.js"),pr=require("./MeshPortalMaterial.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("lodash.pick"),require("lodash.omit"),require("camera-controls"),require("maath"),require("@mediapipe/tasks-vision"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../materials/WireframeMaterial.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=o.CatmullRomLine,exports.Line=i.Line,exports.PositionalAudio=a.PositionalAudio,exports.Text=u.Text,exports.Text3D=c.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.GradientType=j.GradientType,exports.Image=p.Image,exports.Edges=x.Edges,exports.Outlines=l.Outlines,exports.Trail=q.Trail,exports.useTrail=q.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=d.ComputedAttribute,exports.Clone=h.Clone,exports.MarchingCube=C.MarchingCube,exports.MarchingCubes=C.MarchingCubes,exports.MarchingPlane=C.MarchingPlane,exports.Decal=M.Decal,exports.Svg=S.Svg,exports.Gltf=P.Gltf,exports.AsciiRenderer=T.AsciiRenderer,exports.OrthographicCamera=f.OrthographicCamera,exports.PerspectiveCamera=b.PerspectiveCamera,exports.CubeCamera=B.CubeCamera,exports.DeviceOrientationControls=g.DeviceOrientationControls,exports.FlyControls=v.FlyControls,exports.MapControls=F.MapControls,exports.OrbitControls=L.OrbitControls,exports.TrackballControls=A.TrackballControls,exports.ArcballControls=k.ArcballControls,exports.TransformControls=D.TransformControls,exports.PointerLockControls=E.PointerLockControls,exports.FirstPersonControls=G.FirstPersonControls,exports.CameraControls=R.CameraControls,exports.FaceControls=w.FaceControls,exports.useFaceControls=w.useFaceControls,exports.MotionPathControls=z.MotionPathControls,exports.useMotion=z.useMotion,exports.GizmoHelper=O.GizmoHelper,exports.useGizmoContext=O.useGizmoContext,exports.GizmoViewcube=y.GizmoViewcube,exports.GizmoViewport=I.GizmoViewport,exports.Grid=H.Grid,exports.useCubeTexture=V.useCubeTexture,exports.useFBX=W.useFBX,exports.useGLTF=Q.useGLTF,exports.useKTX2=X.useKTX2,exports.useProgress=K.useProgress,exports.IsObject=N.IsObject,exports.useTexture=N.useTexture,exports.useVideoTexture=U.useVideoTexture,exports.useFont=_.useFont,exports.Stats=J.Stats,exports.StatsGl=Y.StatsGl,exports.useDepthBuffer=Z.useDepthBuffer,exports.useAspect=$.useAspect,exports.useCamera=ee.useCamera,exports.useDetectGPU=re.useDetectGPU,exports.useHelper=se.useHelper,exports.Bvh=te.Bvh,exports.useBVH=te.useBVH,exports.useContextBridge=oe.useContextBridge,exports.useAnimations=ie.useAnimations,exports.useFBO=ae.useFBO,exports.useIntersect=ue.useIntersect,exports.useBoxProjectedEnv=ce.useBoxProjectedEnv,exports.BBAnchor=ne.BBAnchor,exports.useTrailTexture=je.useTrailTexture,exports.useCubeCamera=pe.useCubeCamera,exports.Example=xe.Example,exports.SpriteAnimator=le.SpriteAnimator,exports.FaceLandmarker=qe.FaceLandmarker,exports.FaceLandmarkerDefaults=qe.FaceLandmarkerDefaults,exports.useFaceLandmarker=qe.useFaceLandmarker,exports.CurveModifier=me.CurveModifier,exports.MeshDistortMaterial=de.MeshDistortMaterial,exports.MeshWobbleMaterial=he.MeshWobbleMaterial,exports.MeshReflectorMaterial=Ce.MeshReflectorMaterial,exports.MeshRefractionMaterial=Me.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Se.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Pe.MeshDiscardMaterial,exports.PointMaterial=Te.PointMaterial,exports.PointMaterialImpl=Te.PointMaterialImpl,exports.shaderMaterial=fe.shaderMaterial,exports.SoftShadows=be.SoftShadows,exports.Box=Be.Box,exports.Capsule=Be.Capsule,exports.Circle=Be.Circle,exports.Cone=Be.Cone,exports.Cylinder=Be.Cylinder,exports.Dodecahedron=Be.Dodecahedron,exports.Extrude=Be.Extrude,exports.Icosahedron=Be.Icosahedron,exports.Lathe=Be.Lathe,exports.Octahedron=Be.Octahedron,exports.Plane=Be.Plane,exports.Polyhedron=Be.Polyhedron,exports.Ring=Be.Ring,exports.Shape=Be.Shape,exports.Sphere=Be.Sphere,exports.Tetrahedron=Be.Tetrahedron,exports.Torus=Be.Torus,exports.TorusKnot=Be.TorusKnot,exports.Tube=Be.Tube,exports.Facemesh=ge.Facemesh,exports.FacemeshDatas=ge.FacemeshDatas,exports.FacemeshEye=ge.FacemeshEye,exports.FacemeshEyeDefaults=ge.FacemeshEyeDefaults,exports.RoundedBox=ve.RoundedBox,exports.ScreenQuad=Fe.ScreenQuad,exports.Center=Le.Center,exports.Resize=Ae.Resize,exports.Bounds=ke.Bounds,exports.useBounds=ke.useBounds,exports.CameraShake=De.CameraShake,exports.Float=Ee.Float,exports.Stage=Ge.Stage,exports.Backdrop=Re.Backdrop,exports.Shadow=we.Shadow,exports.Caustics=ze.Caustics,exports.ContactShadows=Oe.ContactShadows,exports.AccumulativeShadows=ye.AccumulativeShadows,exports.RandomizedLight=ye.RandomizedLight,exports.accumulativeContext=ye.accumulativeContext,exports.Reflector=Ie.Reflector,exports.SpotLight=He.SpotLight,exports.SpotLightShadow=He.SpotLightShadow,exports.Environment=Ve.Environment,exports.EnvironmentCube=Ve.EnvironmentCube,exports.EnvironmentMap=Ve.EnvironmentMap,exports.EnvironmentPortal=Ve.EnvironmentPortal,exports.Lightformer=We.Lightformer,exports.Sky=Qe.Sky,exports.calcPosFromAngles=Qe.calcPosFromAngles,exports.Stars=Xe.Stars,exports.Cloud=Ke.Cloud,exports.Sparkles=Ne.Sparkles,exports.useEnvironment=Ue.useEnvironment,exports.useMatcapTexture=_e.useMatcapTexture,exports.useNormalTexture=Je.useNormalTexture,exports.Wireframe=Ye.Wireframe,exports.Point=Ze.Point,exports.Points=Ze.Points,exports.PointsBuffer=Ze.PointsBuffer,exports.PositionPoint=Ze.PositionPoint,exports.Instance=$e.Instance,exports.Instances=$e.Instances,exports.Merged=$e.Merged,exports.Segment=er.Segment,exports.SegmentObject=er.SegmentObject,exports.Segments=er.Segments,exports.Detailed=rr.Detailed,exports.Preload=sr.Preload,exports.BakeShadows=tr.BakeShadows,exports.meshBounds=or.meshBounds,exports.AdaptiveDpr=ir.AdaptiveDpr,exports.AdaptiveEvents=ar.AdaptiveEvents,exports.PerformanceMonitor=ur.PerformanceMonitor,exports.usePerformanceMonitor=ur.usePerformanceMonitor,exports.RenderTexture=cr.RenderTexture,exports.Mask=nr.Mask,exports.useMask=nr.useMask,exports.Hud=jr.Hud,exports.MeshPortalMaterial=pr.MeshPortalMaterial;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./CatmullRomLine.cjs.js"),i=require("./Line.cjs.js"),a=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),c=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),l=require("./Edges.cjs.js"),x=require("./Outlines.cjs.js"),q=require("./Trail.cjs.js"),d=require("./Sampler.cjs.js"),m=require("./ComputedAttribute.cjs.js"),h=require("./Clone.cjs.js"),C=require("./MarchingCubes.cjs.js"),M=require("./Decal.cjs.js"),S=require("./Svg.cjs.js"),P=require("./Gltf.cjs.js"),T=require("./AsciiRenderer.cjs.js"),f=require("./OrthographicCamera.cjs.js"),b=require("./PerspectiveCamera.cjs.js"),B=require("./CubeCamera.cjs.js"),g=require("./DeviceOrientationControls.cjs.js"),v=require("./FlyControls.cjs.js"),F=require("./MapControls.cjs.js"),L=require("./OrbitControls.cjs.js"),A=require("./TrackballControls.cjs.js"),k=require("./ArcballControls.cjs.js"),D=require("./TransformControls.cjs.js"),E=require("./PointerLockControls.cjs.js"),G=require("./FirstPersonControls.cjs.js"),R=require("./CameraControls.cjs.js"),w=require("./FaceControls.cjs.js"),z=require("./MotionPathControls.cjs.js"),O=require("./GizmoHelper.cjs.js"),I=require("./GizmoViewcube.cjs.js"),y=require("./GizmoViewport.cjs.js"),H=require("./Grid.cjs.js"),V=require("./useCubeTexture.cjs.js"),W=require("./useFBX.cjs.js"),Q=require("./useGLTF.cjs.js"),X=require("./useKTX2.cjs.js"),K=require("./useProgress.cjs.js"),N=require("./useTexture.cjs.js"),U=require("./useVideoTexture.cjs.js"),_=require("./useFont.cjs.js"),J=require("./Stats.cjs.js"),Y=require("./StatsGl.cjs.js"),Z=require("./useDepthBuffer.cjs.js"),$=require("./useAspect.cjs.js"),ee=require("./useCamera.cjs.js"),re=require("./useDetectGPU.cjs.js"),se=require("./useHelper.cjs.js"),te=require("./useBVH.cjs.js"),oe=require("./useContextBridge.cjs.js"),ie=require("./useAnimations.cjs.js"),ae=require("./useFBO.cjs.js"),ue=require("./useIntersect.cjs.js"),ce=require("./useBoxProjectedEnv.cjs.js"),ne=require("./BBAnchor.cjs.js"),je=require("./useTrailTexture.cjs.js"),pe=require("./useCubeCamera.cjs.js"),le=require("./Example.cjs.js"),xe=require("./SpriteAnimator.cjs.js"),qe=require("./FaceLandmarker.cjs.js"),de=require("./CurveModifier.cjs.js"),me=require("./MeshDistortMaterial.cjs.js"),he=require("./MeshWobbleMaterial.cjs.js"),Ce=require("./MeshReflectorMaterial.cjs.js"),Me=require("./MeshRefractionMaterial.cjs.js"),Se=require("./MeshTransmissionMaterial.cjs.js"),Pe=require("./MeshDiscardMaterial.cjs.js"),Te=require("./PointMaterial.cjs.js"),fe=require("./shaderMaterial.cjs.js"),be=require("./softShadows.cjs.js"),Be=require("./shapes.cjs.js"),ge=require("./Facemesh.cjs.js"),ve=require("./RoundedBox.cjs.js"),Fe=require("./ScreenQuad.cjs.js"),Le=require("./Center.cjs.js"),Ae=require("./Resize.cjs.js"),ke=require("./Bounds.cjs.js"),De=require("./CameraShake.cjs.js"),Ee=require("./Float.cjs.js"),Ge=require("./Stage.cjs.js"),Re=require("./Backdrop.cjs.js"),we=require("./Shadow.cjs.js"),ze=require("./Caustics.cjs.js"),Oe=require("./ContactShadows.cjs.js"),Ie=require("./AccumulativeShadows.cjs.js"),ye=require("./Reflector.cjs.js"),He=require("./SpotLight.cjs.js"),Ve=require("./Environment.cjs.js"),We=require("./Lightformer.cjs.js"),Qe=require("./Sky.cjs.js"),Xe=require("./Stars.cjs.js"),Ke=require("./Cloud.cjs.js"),Ne=require("./Sparkles.cjs.js"),Ue=require("./useEnvironment.cjs.js"),_e=require("./useMatcapTexture.cjs.js"),Je=require("./useNormalTexture.cjs.js"),Ye=require("./Wireframe.cjs.js"),Ze=require("./Points.cjs.js"),$e=require("./Instances.cjs.js"),er=require("./Segments.cjs.js"),rr=require("./Detailed.cjs.js"),sr=require("./Preload.cjs.js"),tr=require("./BakeShadows.cjs.js"),or=require("./meshBounds.cjs.js"),ir=require("./AdaptiveDpr.cjs.js"),ar=require("./AdaptiveEvents.cjs.js"),ur=require("./PerformanceMonitor.cjs.js"),cr=require("./RenderTexture.cjs.js"),nr=require("./Mask.cjs.js"),jr=require("./Hud.cjs.js"),pr=require("./MeshPortalMaterial.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("lodash.pick"),require("lodash.omit"),require("camera-controls"),require("maath"),require("@mediapipe/tasks-vision"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=o.CatmullRomLine,exports.Line=i.Line,exports.PositionalAudio=a.PositionalAudio,exports.Text=u.Text,exports.Text3D=c.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.GradientType=j.GradientType,exports.Image=p.Image,exports.Edges=l.Edges,exports.Outlines=x.Outlines,exports.Trail=q.Trail,exports.useTrail=q.useTrail,exports.Sampler=d.Sampler,exports.useSurfaceSampler=d.useSurfaceSampler,exports.ComputedAttribute=m.ComputedAttribute,exports.Clone=h.Clone,exports.MarchingCube=C.MarchingCube,exports.MarchingCubes=C.MarchingCubes,exports.MarchingPlane=C.MarchingPlane,exports.Decal=M.Decal,exports.Svg=S.Svg,exports.Gltf=P.Gltf,exports.AsciiRenderer=T.AsciiRenderer,exports.OrthographicCamera=f.OrthographicCamera,exports.PerspectiveCamera=b.PerspectiveCamera,exports.CubeCamera=B.CubeCamera,exports.DeviceOrientationControls=g.DeviceOrientationControls,exports.FlyControls=v.FlyControls,exports.MapControls=F.MapControls,exports.OrbitControls=L.OrbitControls,exports.TrackballControls=A.TrackballControls,exports.ArcballControls=k.ArcballControls,exports.TransformControls=D.TransformControls,exports.PointerLockControls=E.PointerLockControls,exports.FirstPersonControls=G.FirstPersonControls,exports.CameraControls=R.CameraControls,exports.FaceControls=w.FaceControls,exports.useFaceControls=w.useFaceControls,exports.MotionPathControls=z.MotionPathControls,exports.useMotion=z.useMotion,exports.GizmoHelper=O.GizmoHelper,exports.useGizmoContext=O.useGizmoContext,exports.GizmoViewcube=I.GizmoViewcube,exports.GizmoViewport=y.GizmoViewport,exports.Grid=H.Grid,exports.useCubeTexture=V.useCubeTexture,exports.useFBX=W.useFBX,exports.useGLTF=Q.useGLTF,exports.useKTX2=X.useKTX2,exports.useProgress=K.useProgress,exports.IsObject=N.IsObject,exports.useTexture=N.useTexture,exports.useVideoTexture=U.useVideoTexture,exports.useFont=_.useFont,exports.Stats=J.Stats,exports.StatsGl=Y.StatsGl,exports.useDepthBuffer=Z.useDepthBuffer,exports.useAspect=$.useAspect,exports.useCamera=ee.useCamera,exports.useDetectGPU=re.useDetectGPU,exports.useHelper=se.useHelper,exports.Bvh=te.Bvh,exports.useBVH=te.useBVH,exports.useContextBridge=oe.useContextBridge,exports.useAnimations=ie.useAnimations,exports.useFBO=ae.useFBO,exports.useIntersect=ue.useIntersect,exports.useBoxProjectedEnv=ce.useBoxProjectedEnv,exports.BBAnchor=ne.BBAnchor,exports.useTrailTexture=je.useTrailTexture,exports.useCubeCamera=pe.useCubeCamera,exports.Example=le.Example,exports.SpriteAnimator=xe.SpriteAnimator,exports.FaceLandmarker=qe.FaceLandmarker,exports.FaceLandmarkerDefaults=qe.FaceLandmarkerDefaults,exports.useFaceLandmarker=qe.useFaceLandmarker,exports.CurveModifier=de.CurveModifier,exports.MeshDistortMaterial=me.MeshDistortMaterial,exports.MeshWobbleMaterial=he.MeshWobbleMaterial,exports.MeshReflectorMaterial=Ce.MeshReflectorMaterial,exports.MeshRefractionMaterial=Me.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Se.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Pe.MeshDiscardMaterial,exports.PointMaterial=Te.PointMaterial,exports.PointMaterialImpl=Te.PointMaterialImpl,exports.shaderMaterial=fe.shaderMaterial,exports.SoftShadows=be.SoftShadows,exports.Box=Be.Box,exports.Capsule=Be.Capsule,exports.Circle=Be.Circle,exports.Cone=Be.Cone,exports.Cylinder=Be.Cylinder,exports.Dodecahedron=Be.Dodecahedron,exports.Extrude=Be.Extrude,exports.Icosahedron=Be.Icosahedron,exports.Lathe=Be.Lathe,exports.Octahedron=Be.Octahedron,exports.Plane=Be.Plane,exports.Polyhedron=Be.Polyhedron,exports.Ring=Be.Ring,exports.Shape=Be.Shape,exports.Sphere=Be.Sphere,exports.Tetrahedron=Be.Tetrahedron,exports.Torus=Be.Torus,exports.TorusKnot=Be.TorusKnot,exports.Tube=Be.Tube,exports.Facemesh=ge.Facemesh,exports.FacemeshDatas=ge.FacemeshDatas,exports.FacemeshEye=ge.FacemeshEye,exports.FacemeshEyeDefaults=ge.FacemeshEyeDefaults,exports.RoundedBox=ve.RoundedBox,exports.ScreenQuad=Fe.ScreenQuad,exports.Center=Le.Center,exports.Resize=Ae.Resize,exports.Bounds=ke.Bounds,exports.useBounds=ke.useBounds,exports.CameraShake=De.CameraShake,exports.Float=Ee.Float,exports.Stage=Ge.Stage,exports.Backdrop=Re.Backdrop,exports.Shadow=we.Shadow,exports.Caustics=ze.Caustics,exports.ContactShadows=Oe.ContactShadows,exports.AccumulativeShadows=Ie.AccumulativeShadows,exports.RandomizedLight=Ie.RandomizedLight,exports.accumulativeContext=Ie.accumulativeContext,exports.Reflector=ye.Reflector,exports.SpotLight=He.SpotLight,exports.SpotLightShadow=He.SpotLightShadow,exports.Environment=Ve.Environment,exports.EnvironmentCube=Ve.EnvironmentCube,exports.EnvironmentMap=Ve.EnvironmentMap,exports.EnvironmentPortal=Ve.EnvironmentPortal,exports.Lightformer=We.Lightformer,exports.Sky=Qe.Sky,exports.calcPosFromAngles=Qe.calcPosFromAngles,exports.Stars=Xe.Stars,exports.Cloud=Ke.Cloud,exports.CloudInstance=Ke.CloudInstance,exports.Clouds=Ke.Clouds,exports.Sparkles=Ne.Sparkles,exports.useEnvironment=Ue.useEnvironment,exports.useMatcapTexture=_e.useMatcapTexture,exports.useNormalTexture=Je.useNormalTexture,exports.Wireframe=Ye.Wireframe,exports.Point=Ze.Point,exports.Points=Ze.Points,exports.PointsBuffer=Ze.PointsBuffer,exports.PositionPoint=Ze.PositionPoint,exports.Instance=$e.Instance,exports.Instances=$e.Instances,exports.Merged=$e.Merged,exports.Segment=er.Segment,exports.SegmentObject=er.SegmentObject,exports.Segments=er.Segments,exports.Detailed=rr.Detailed,exports.Preload=sr.Preload,exports.BakeShadows=tr.BakeShadows,exports.meshBounds=or.meshBounds,exports.AdaptiveDpr=ir.AdaptiveDpr,exports.AdaptiveEvents=ar.AdaptiveEvents,exports.PerformanceMonitor=ur.PerformanceMonitor,exports.usePerformanceMonitor=ur.usePerformanceMonitor,exports.RenderTexture=cr.RenderTexture,exports.Mask=nr.Mask,exports.useMask=nr.useMask,exports.Hud=jr.Hud,exports.MeshPortalMaterial=pr.MeshPortalMaterial;
package/core/index.js CHANGED
@@ -98,7 +98,7 @@ export { Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal } from
98
98
  export { Lightformer } from './Lightformer.js';
99
99
  export { Sky, calcPosFromAngles } from './Sky.js';
100
100
  export { Stars } from './Stars.js';
101
- export { Cloud } from './Cloud.js';
101
+ export { Cloud, CloudInstance, Clouds } from './Cloud.js';
102
102
  export { Sparkles } from './Sparkles.js';
103
103
  export { useEnvironment } from './useEnvironment.js';
104
104
  export { useMatcapTexture } from './useMatcapTexture.js';
@@ -145,5 +145,6 @@ import '../materials/MeshRefractionMaterial.js';
145
145
  import '../materials/DiscardMaterial.js';
146
146
  import '../helpers/environment-assets.js';
147
147
  import '../materials/SpotLightMaterial.js';
148
+ import 'uuid';
148
149
  import '../materials/WireframeMaterial.js';
149
150
  import 'react-composer';